PDA

Просмотр полной версии : ПЛК110+МВ110-8А+МВ110-8АС+ИП320



ztox
15.01.2022, 17:28
Доброго дня, Уважаемые коллеги. Первый раз имею дело с оборудованием OWEN, поэтому заранее извиняюсь за глупые вопросы.
Подскажите, пожалуйста, в чем может быть затык.
Задача: связать по ModBus ПЛК110+МВ110-8А+МВ110-8АС+ИП320.
ПЛК110- мастер.
К модулям аналогового ввода подключены датчики тока- показания с которых мы сравниваем в ПЛК с уставками, при превышении стоп-машина.
Уставки задаем с панели и на ней же выводим текущие значения + кнопка квитировать и аварийные сообщения.
Для чтения из панели использую:
кнопка квитировать- 8bit output module (0x01 Read Coils Status) (1 регистр + 1 сдвиг для выравнивания)
задание уставок- Real input module (0x03 Read holding Registers) (2 регистра начиная с чётного (0,1-2,3-4,5 и т.д.)
Для записи в панель использую:
аварийных сообщений- 8bit input module (0x0f Force multiply Status) (1 регистр + 1 сдвиг для выравнивания)
задание уставок- Real output module (0x10 Preset multiply Registers) (2 регистра начиная с чётного, аналогично входным регистрам).
В итоге: при передаче значения тока с модуля в ПЛК, значение в ПЛК отображается корректно, а при передаче в панель получается совсем какая-то муть, ещё и с минусом.
При записи значения уставки- в панели отображается корректно, а в плк что-то, аля 1,52е-32.
Такое чувство, что или неправильно настроены поля в панели (хотя перепробовал все возможные варианты) или сдвигаются регистры ( регистр поля в панели соответствует регистру указанному в универсальном устройстве модбас).
Подскажите, пожалуйста в чем может быть дело? Или хоть направьте куда копать. Заранее благодарю:)

kondor3000
15.01.2022, 23:58
Доброго дня, Уважаемые коллеги. Первый раз имею дело с оборудованием OWEN, поэтому заранее извиняюсь за глупые вопросы.
Подскажите, пожалуйста, в чем может быть затык.
Задача: связать по ModBus ПЛК110+МВ110-8А+МВ110-8АС+ИП320.

Подскажите, пожалуйста в чем может быть дело? Или хоть направьте куда копать. Заранее благодарю:)

1) Все регистры 4 байт и Float, в конфигурации должны быть с чётными адресами. Советую сразу ставить 2 шт. 8 бит(это будет регистр 0), потом все Register Input (Output, каждый считается за 1 регистр), а потом все Float ( считается за 2 регистра) и проследить, что адреса чётные.
2) Нет скринов UMD, их настройки важны, для чтения и записи. В кратце, чтение делается циклически и Native для флоатов, запись по изменению.
3) Для правильного отображения Float, иногда надо переставить местами регистры (иногда и байты). Здесь я выкладывал программу чтения регистров МВА8А, в ней есть ФБ, для перестановки местами регистров WORD в переменной Float, можете использовать https://owen.ru/forum/showthread.php?t=35094
4) Советую на будущее упаковывать отдельные биты в маску и передавать их до 16 шт. одним регистром WORD. При приёме распаковать и использовать.
5) Расстановка регистров по порядку, позволяет передавать, принимать до 40 однотипных регистров за одну посылку, что и реализовано в моём примере. Это намного ( в несколько раз) ускоряет обмен.
6) Сразу в настройках ПЛК, измените цикл с 1 мс до 3-5 мс. Можно добавить модуль статистики и посмотреть загрузку ПЛК и температуру процессора.
Лучше бы сразу выложили проект, было бы быстрее)

ztox
16.01.2022, 00:27
1) Все регистры 4 байт и Float, в конфигурации должны быть с чётными адресами. Советую сразу ставить 2 шт. 8 бит(это будет регистр 0), потом все Register Input (Output, каждый считается за 1 регистр), а потом все Float ( считается за 2 регистра) и проследить, что адреса чётные.
2) Нет скринов UMD, их настройки важны, для чтения и записи в панель из панели.
3)Для правильного отображения Float, иногда надо переставить местами регистры ( байты). Здесь я выкладывал программу чтения регистров МВА8А, в ней есть ФБ, для перестановки местами регистров WORD в переменной Float, можете использовать https://owen.ru/forum/showthread.php?t=35094

Лучше бы сразу выложили проект, было бы быстрее)

Спасибо большое, регистры все четные вроде(
Про проекты не подумал:(
Во вложении.
p.s. извиняюсь, но что есть UMD?)

kondor3000
16.01.2022, 02:07
Спасибо большое, регистры все четные вроде(
Про проекты не подумал:(
Во вложении.
p.s. извиняюсь, но что есть UMD?)

UMD это Universal Modbus Devise. Добавил ещё пункты в первом сообщении.

Посмотрел программу, это жесть какая то)))))))
Зачем такие длинные названия?
OverLimitCurrentTransporter6 можно записать OLCT6 и если надо расшифровку (* превышение предельного тока транспортёра 6 *) или PrItr6
OverLimitCurrentTransporter2Panel - OLCT2_p (* превышение предельного тока транспортёра 2 на панель *) или PrItr2_p

Уже эти короткие названия можно вставлять в конфигурации вместо АТ по щелчку мыши, и обращаться к переменным как к глобальным по имени. Тогда всё что написано в глобальных можно выкинуть, все эти
CurrentTransporter1 AT %QD6.3.0.0 : REAL; писать не надо. Больше половины проекта можно было вообще не писать)

В FBD это выглядит как фильм ужасов) Не пробовали на CFC схему нарисовать сократив названия? Если на ST не получается.

kondor3000
16.01.2022, 12:03
Там в блоке REAL собирается из двух WORD, код надо немного модифицировать, чтобы переставлялись регистры в переменной REAL 58741

FUNCTION_BLOCK SW_WORD
VAR_INPUT
rIn:REAL; (*входная переменная типа REAL*)
END_VAR
VAR_OUTPUT
rOut : REAL; (* выходная переменная типа REAL*)
END_VAR
VAR
ptr_In : POINTER TO ARRAY [0..1] OF WORD; (*указатель на входную переменную*)
ptr_Out : POINTER TO ARRAY[0..1] OF WORD; (*указатель на выходную переменную*)
END_VAR
__________________________________________________ _____________
ptr_In :=ADR(rIn);
ptr_Out := ADR( rOut);

ptr_Out^[ 0 ] :=ptr_In^[ 1 ] ;
ptr_Out^[ 1 ] :=ptr_In^ [0] ;

ztox
16.01.2022, 17:57
спасибо большое) буду пробовать. А возможно ли общаться ПЛК-ИП320 по RS-232 (панель мастер) и ПЛК-МВ по RS485 (ПЛК мастер), одновременно?

kondor3000
16.01.2022, 18:10
спасибо большое) буду пробовать. А возможно ли общаться ПЛК-ИП320 по RS-232 (панель мастер) и ПЛК-МВ по RS485 (ПЛК мастер), одновременно?

Почему нет? Можно конечно, вы же по разным портам подключаетесь.
Только я большого смысла не вижу. Чем вас не устраивает данная конфигурация? И скорость можно было сделать 115 200 вместо 9600. Только надо все блоки перепрограммировать будет.
Панель мастер при любом сбое в обмене, может начать подвисать не по детски.

Кстати, почему у вас у МВ110-8А и у МВ110-8АС в программе одинаковые адреса чтения? Вообще то они разные.
У МВ110-8АС 1 канал REAL адрес 288

ztox
17.01.2022, 16:54
Поправил все как советовали. Итог тот же, лимиты из панели в ПЛК читаются без проблем, данные в Панель писать не хочет( Помогите, разобраться...

kondor3000
17.01.2022, 18:15
Поправил все как советовали. Итог тот же, лимиты из панели в ПЛК читаются без проблем, данные в Панель писать не хочет( Помогите, разобраться...

Проверяете небось по 1 каналу

Опять 25, на первом конвейере, в панели Значение тока адрес 4Х2 стоит флоат и 1 регистр.
На 2 конвейере Уставка тока, адрес 4Х28 стоит флоат и 1 регистр

В контроллере UMD запись в панель, стоит By Poll Time ( циклически) а должно быть By vallue Chang ( по изменению)

И ещё в панели, в Сервисе/Настройки проекта/ снимите галку Порядок регистров

В модуле МВ110-8АС опять ареса неправильные, Ток конвейера 1 адрес, 16#100- это 256 регистр, в котором целочисленное значение.
Написал же 1 регистр флоат в модуле 16#120 адрес 288.
Калькулятор в режим Программист поставьте, набираете в HEX, число 120, переключаете в DEC и получаете 288

Мало того, что настройки который раз неправильные поставили, так ещё и подаёте целочисленное значение на регистр REAL.
( тип REAL, 2 регистра, представление Float ) Откройте справку по F1, и вызубрите уже типы переменных)

kondor3000
17.01.2022, 22:19
Дальше ещё круче. Вы пишите, что всё читает с панели.
Запускаю программу в эмуляции, пытаюсь записать число в Уставку тока ( чтение из панели, Конвейер 1). Она тут же перезаписывается из блока LimitCurrentPanel, потому, что в эту же переменную присваивается другая и так во всех уставках.
Как у вас вообще что-то читаться может? 58758
Если бы, как уже писал, дали регистру имя, то не надо было бы искать откуда ваша переменная перезаписывается.

Советую создать чистый проект, добавить два UMD, в них по 1 шт. Real Input, Real Output и добиться чтения записи из панели.
С этого вообще то и надо было начать писать проект.
Когда заработает, добавляйте остальные блоки и добивайтесь правильной работы.
В эмуляции почти всё проверяется, кроме переворота регистров Float при передаче по Модбас.

ztox
18.01.2022, 09:08
Я уже тоже подумал о том, чтобы начисто собрать проект. Сейчас до объекта доеду и сделаю, потом отпишусь по результатам.