Вход

Просмотр полной версии : ПР-200 и обмен по Modbus



lyamzin
02.03.2022, 10:27
Здравствуйте!
Я новичок, прошу помощи у профессионалов.

Поставлена задача прочитать значения датчиков давления и передать их в ПР-200.
Есть - модуль PROMODEM MODBUS Slave ZigBee 485-20ma - к нему подключены два датчика давления ПД-Р 4-20. Значение токового сигнала около 3.8ma - физически давления нет, просто лежит на столе.
Также есть модуль PROMODEM Modbus Master ZigBee 485 - он связан витой парой с ПР-200 и по беспроводному каналу ZigBee с модулем Slave описанным выше.

Связь есть, опрос ведется, судя по индикации на модулях.

При настройках опроса в ZigBee Modbus создаётся таблица, в которой прописывается адрес устройства и адрес датчика. Адрес устройства (т.е. модуль Slave) я задал 32, и датчики 1 и 3 соответственно.

В Owen Logic в настройках опроса настроил так:
59517
59518
59516

В руководстве по эксплуатации на модемы есть таблица:
59519

А сама программа примитивна, важнее скорее научиться сочетать беспроводные и проводные интерфейсы между собой.

59521

Думаю, проблема где-то либо в программе, либо в несоответствии типов/регистров/адресов.

Буду очень благодарен, если кто-либо поможет или подскажет где можно прочитать максимально просто о работе и настройке Modbus.
С уважением!

kondor3000
02.03.2022, 11:02
Опрашиваете датчики переменной с плавающей запятой, а в программе у вас Var1 и Var2 вдруг стали целочисленные. Как вы их целочисленными сделали? И суммируете уже целочисленные.
В модеме написано приём значений в милливольтах, там входы для чего предназначены? Полученное значение ещё надо разделить на 59.
Где это сделано? Как вы границы диапазона давлений будете задавать в ПР? Они у вас в милливольтах, а не в мА.

lyamzin
02.03.2022, 12:35
Спасибо за замечания.
Ошибку с типом переменной исправил. Связался со службой техподдержки компании Promodem, они посредством программы ZigBee Modbus проверили настройки:
59522

Далее через ModbusPoll проверили сам опрос с такими настройками:
59523

Опрос идет, значения 229 и 231 это значения напряжения с первого и второго датчика соответственно, которые потом при делении на 59 (по формуле из РЭ) преобразуются в значение токового сигнала.

Теперь не могу разобраться, какие настройки записать в ПР-200, чтобы начать опрос:
59524

Программа теперь выглядит таким образом:
59525

Но в режиме онлайн-отладки все равно не показывает значение.

melky
02.03.2022, 13:02
А разве в онлайн будет опрос идти с устройством?

У вас del никуда не привязана, сделайте ее энергонезависимой или подключите к переменной экрана или временно к выходу любому.

И да, когда будете потом программу составлять, переменные опроса не должны быть импульсными.

kondor3000
02.03.2022, 14:36
Тогда переменные Var1 и Var2 ставьте целочисленными и 1 регистр для каждого. Адрес устройства 16, Адрес регистров 0 и 1. Обе переменные надо разделить на 59, а выходы сделать энергонезависимыми или привязать к экрану.

lyamzin
02.03.2022, 14:45
А разве в онлайн будет опрос идти с устройством?

У вас del никуда не привязана, сделайте ее энергонезависимой или подключите к переменной экрана или временно к выходу любому.

И да, когда будете потом программу составлять, переменные опроса не должны быть импульсными.

Честно говоря, думал что по аналогии с Codesys 2.3 при подключении к контроллеру будет опрос происходить. В таком случае я изначально ошибся, думал что в онлайн режиме можно будет отслеживать показания с датчиков. Спасибо.

Можете пояснить, что значит "переменные опроса не должны быть импульсными"? Необходимо увеличить время опроса?

lyamzin
02.03.2022, 14:46
Тогда переменные Var1 и Var2 ставьте целочисленными и 1 регистр для каждого. Адрес устройства 16, Адрес регистров 0 и 1. Обе переменные надо разделить на 59, а выходы сделать энергонезависимыми или привязать к экрану.

Спасибо, сегодня проверить уже не получится - завтра с утра попробую и отпишусь здесь о результатах.

melky
02.03.2022, 15:05
lyamzin если у вас опрос по переменной и вы подадите импульс логической 1-цы, то никакого опроса не произойдет. 1-ца должна быть на весь период опроса выставлена. А период увеличен до максимума или более времени опроса. Поищите видео от Юрия Ревака, он это показывал в видео.

з.ы. мне такой подход тоже не очень нравится, по мне было бы корректнее подать импульс в программе, а ПР сам должен провести весь опрос и получить ответ и только потом заткнуться...

lyamzin
03.03.2022, 05:58
Доброе утро всем!
Все получилось настроить, опросить, вывести на экран.
Распишу по пунктам, вдруг кому пригодится (типа новичков вроде меня) :)

1. Выполняем физические подключения модемов и датчиков. У меня два модема Promodem Modbus Slave ZigBee 485-20mA-DC24G и один Promodem Modbus Master Zigbee 485-AC.
К каждому из Slave-модемов подключаем датчик давления БД ПД-Р в соответствии со схемой.
Подключаем Modbus-модем к головному устройству (в моем случае это Овен ПР-200) по интерфейсу RS-485.
Подаем соответствующее питание.

2. Через преобразователь RS485-USB подключаемся к Master-модему, запускаем ПО "Promodem ZigBee Modbus".
Устанавливаем стандартные сетевые настройки - скорость 9600, биты данных 8, четность Нет, число стоп-бит 1.
В приложении запускаем обнаружение, в поле обнаружения должны появиться изображения Slave-модемов. Перетаскиваем их в таблицу соответствия.
Присваиваем каждому slave-модему в графе "устройство" идентификационный номер для сети ZigBee (как я понял, по ним Master-модем будет опрашивать устройства в сети)
Присваиваем в графе "датчик" Modbus-адрес, тот, по которому мы будем опрашивать из головного устройства (ПР-200). Двум аналоговым каналам на slave-модеме соотвествует один modbus-адрес. Опрос будет проводиться по регистрам (0 и 1 для датчиков 1 и 2 канала соответственно)
59531

3. Производим настройку в Owen Logic.
В настройках прибора ПР-200 делаем мастером, указываем параметры сети такие же, как в настройках Master-модема.
59532
Далее добавляем два slave-устройства, называем их чтобы не запутаться
В каждом из устройств проводим настройку опроса, вводим в поле адрес тот Modbus-адрес, который прописывали в графе "датчик" ПО по настройке Master-модема.
Создаем переменные, указываем тип (целочисленная), регистр (0 для 1 аналогового канала, 1 для 2 канала), функцию (чтение 0х04), функцию запуска чтения и состояния для этой переменной, и переменные для запуска опроса/состояния устройства в целом.
59533
59534
В поле программы привязываем константы со значением 1 к переменным отвечающим за запуск опроса, для того, чтобы при запуске программы опрос начинался сразу.
Сетевые переменные передают значение в mV, для преобразования значения напряжения на входе канала необходимо разделить это значение на 59.
Результатом деления будет искомое значение, переменную которой для отображения в режиме онлайн-отладки необходимо сделать энергонезависимой, либо вывести на экран.
59535

Результатом всего этого является увеличение дальности связи между датчиками и контроллером, без необходимости прокладывания шины RS-485.

Всем огромное спасибо за советы по решению данной проблемы!

kondor3000
03.03.2022, 08:29
Немного неправильно вы сделали , у вас вместо 3.95 - 4.0 мА получилось 3 мА ( вы потеряли 1/4 часть показаний давления). Надо было 229 сразу перевести во флоат, а потом уже делить на 59.0.