+1
Voting

драйвер Modbus TCP/RTU/ASCII

Борис Фридман 2 years ago in Products / Modbus updated by Aleksandr Romanov (CTO) 2 years ago 1

У меня возник вопрос по драйверу Modbus TCP.

Я взялся написать модуль и сканер для российской компании, производящей оборудование DALI. В том числе шлюз на TCP/RTU.

В процессе выяснилось, что их оборудование работает нестандартно, периодически выпадая в глухую ошибку при циклическом опросе регистров.

Пообщался с разработчиками шлюза и выяснил причину такого поведения.

Суть проблемы в том, что команды из Modbus напрямую пробрасываются в шину DALI. Шина намного медленнее, чем Modbus TCP и в результате ответ от устройств приходит максимум за 2 секунды. При этом шлюз выдаёт ошибку, если процедура Poll не дождавшись ответа от устройства начинает опрашивать другие регистры.

Если я опрашиваю один регистр с единственного подключенного устройства в шине DALI, то стандартный драйвер работает без проблем. Если же я добавляю хотя бы ещё один регистр - шлюз уходит в ошибку и перестаёт выдавать какие-либо данные.

Можно сделать клон драйвера Modbus TCP с управляемым циклическим опросом регистров Варианты:
          - с ожиданием ответа от регистра в процессе опроса (параметр у драйвера ???)
          - с регулируемой паузой между опросами регистров (параметр у драйвера)
          - программно исключать из цикла опроса регистры (параметр в Feedback)... Это даст возможность создать статический список фидбэков и на лету включать/отключать