Пока безуспешно пытаюсь настроить считывание данных с ардуино в Majordomo через modbus. Контроллер Ардуино прошит с применением библиотеки SimpleModbusSlave из файла
shemnik69, подключен через USB-RS485 к Orangepi с Ubuntu, на который установлен Ser2Net на порту 502. Настройки в /etc/ser2net.conf - 502:raw:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT . Опрос (через "03 Read Holding Registers") и запись (через "16 Write multiple registers") регистров на этой связке orangepi- USB-RS485-ардуино с помощью Modbus Poll с другого компьютера в сети происходит успешно, светодиод Rx ардуины мигает, данные в 50 используемых регистрах сохраняются/изменяются как и задумано.
Уточню, Modbus Poll подключается только через Modbus RTU Over TCP/IP.
А вот запросы через модуль ModBus с ручным обновлением из majordomo с обращением к localhost (а также запросы с majordomo с другого компьютера в сети) выдают один и тот же ответ в байтовом представлении "97,100,121,32,105,110,32,117,115,101,10,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ".
Причём вне зависимости от запрашиваемых стартовых адресов, количества элементов и даже номеров существующих и не существующих слейвов (с типом запроса FC3) .Светодиод Rx ардуины не мигает.
Автоматический 5-секундный цикл ModBus выдаёт пустое значение связанного свойства с ошибкой:
Код: Выделить всё
2016-04-18 23:57:03 FC3 Error: <pre>readMultipleRegisters: START
Connected
Packet: c7da00000006010300010001
Send
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
Wait data ...
</pre> exception 'Exception' with message 'Watchdog time expired [ 5 sec]!!! Connection to localhost is not established.' in /var/www/html/modules/modbus/ModbusMaster.php:166
Stack trace:
#0 /var/www/html/modules/modbus/ModbusMaster.php(442): ModbusMaster->rec()
#1 /var/www/html/modules/modbus/modbus.class.php(240): ModbusMaster->readMultipleRegisters('1', '1', '1')
#2 /var/www/html/modules/modbus/modbus.class.php(176): modbus->poll_device('2')
#3 /var/www/html/scripts/cycle_modbus.php(41): modbus->readAll()
#4 {main}
Как я понимаю, доступа из majordomo к ser2net не происходит и длинная строка с числами – что-то вроде сообщения об ошибке или «Port already in use». Безрезультатно пробовал менять настройки в /etc/ser2net.conf . Мыслей, как обойти проблему с ser2net больше нет, поэтому обращаюсь за советом к пользующимся подобной связкой программ – куда смотреть?