Сообщение от
guravlev-2
Добрый день. Я не сильно программист. ПР 200 в режиме мастер ModBusRTU по RS 485. Есть два разных китайских реле, управляемых по RS 485 modbus. У них есть дискретные входы (регистры Discrete Input Contacts), дискретные выходы и аналоговые входа и выхода. При настройке опроса такого устройства и управления им все работает замечательно, кроме опроса дискретных входов(функция чтения 02 , адрес в сети 1). При настройке опроса, ПР200 в порт посылает следующие строки (пишу без кода CRC):
-1 вход 01 02 0000 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 0
-2 вход 01 02 0001 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 1
-3 вход 01 02 0002 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 2
и т.д.
Если оставляю считывать только первый вход(активирую отражение на эране ПР200 только первой переменной = первый вход), все работает, ПР 200 его читает. Как только активирую считывание любого следующего входа, в ответ (при мониторинге порта) получаю от китайца ответ об ошибке код 02. Получается китаец не воспринимает команду 01 02 0001 0001 или 01 02 0002 0001, он видит только команды типа 01 02 0000 0001 или 01 02 0000 0002, 01 02 0000 0003 и т.д. то есть он видит только пакетное считывание начиная с 0-го адреса с заданием количества адресов считывания.
При этом с китайской панелью оператора это реле отлично работает, потому что при настройке опроса в панеле оператора нескольких битовых переменных, привязанных к входам реле (к примеру четырех), эта панель формирует к реле только один запрос 01 02 0000 0004.
Это происходит на обоих китайских реле. Они очень дешевые, интересно было бы их поэтому использовать.
Что я делаю не так? Или это особенность работы ПР200. Может китайцы используют старый протокол…
Может можно в лоджике поправить, чтобы при опросе регистров Discrete Input Contacts командой 02 он посылал только один запрос считывания для всех битовых переменных, начиная с нулевого адреса.
Спасибо за внимание.
P.S. У китайцев нашел еще такие реле, у которых все регистры памяти(все входа-выхода, находятся в области Holding Registers и конечно с ними при опросе с ПР200 нет проблем.
Средняя цена на такие устройства через алиэкспресс к примеру 8 DI и 8 DO около 1200 руб, столько же примерно стоит 4 AI и 2DO. Есть очень много разных модификаций с небольшим варьированием цены вопроса. С аналоговыми выходами стоят подороже.