драйвер Modbus TCP/RTU/ASCII
У меня возник вопрос по драйверу Modbus TCP.
Я взялся написать модуль и сканер для российской компании, производящей оборудование DALI. В том числе шлюз на TCP/RTU.
В процессе выяснилось, что их оборудование работает нестандартно, периодически выпадая в глухую ошибку при циклическом опросе регистров.
Пообщался с разработчиками шлюза и выяснил причину такого поведения.
Суть проблемы в том, что команды из Modbus напрямую пробрасываются в шину DALI. Шина намного медленнее, чем Modbus TCP и в результате ответ от устройств приходит максимум за 2 секунды. При этом шлюз выдаёт ошибку, если процедура Poll не дождавшись ответа от устройства начинает опрашивать другие регистры.
Если я опрашиваю один регистр с единственного подключенного устройства в шине DALI, то стандартный драйвер работает без проблем. Если же я добавляю хотя бы ещё один регистр - шлюз уходит в ошибку и перестаёт выдавать какие-либо данные.
Можно сделать клон драйвера Modbus TCP с управляемым циклическим опросом регистров Варианты:
- с ожиданием ответа от регистра в процессе опроса (параметр у драйвера ???)
- с регулируемой паузой между опросами регистров (параметр у драйвера)
- программно исключать из цикла опроса регистры (параметр в Feedback)... Это даст возможность создать статический список фидбэков и на лету включать/отключать
Сервис поддержки клиентов работает на платформе UserEcho