Привет.
Пытаюсь осознать, как замостить сторонний контроллер (который отдает мне параметры на WB6 по modbus/tcp) на mqtt. Обратный мост вроде бы есть, аж конфигурится в вебморде, но прямого почему-то пока не нашел…
Пробую modbus_client. Натолкнулся на глюк: независимо от адреса сервера (если это не localhost с запущенным wb_mqtt_mbgate), modbus_client не может с ним соединиться, выдавая:
0x000a Connecting to 0.0.0.0
Connection failed: Connection refused
хотя я указываю реальный айпишник сервера, порт итд. Фильтрации пакетов нет, устройства в одной локалке, icmp идет.
Похоже, клиент баговит… не парсит адрес сервера. Поправите?
Спасибо!
Я уже забрался в конфиг wb-mqtt-serial с призрачной надеждой найти там tcp - и, к удивлению, нашел!!! - но тоже не пашет, хотя и несколько иначе. Встать tcpdump’ом пока некуда, но есть сильнейшее подозрение, что вместо шапки MBAP шлется шапка RTU…
Тут, если что, поправить совсем ерунда по времени.
wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d
address: 2
address: 3
Warning: no devices defined for port </dev/ttyRS485-1 9600 8 N2 timeout 500> . Skipping.
Warning: no devices defined for port </dev/ttyRS485-2 9600 8 N2 timeout 500> . Skipping.
Setting up devices at <192.168.0.111:502 timeout 500>
CreateDevice: saia2 (SAIA-BURGESS) @ 2 – protocol: modbus
AddRegister: 0x8042d788
AddRegister: 0x8042da38
Adding range: 1 input(s) @ 2 of device modbus:2
Adding range: 1 input(s) @ 3 of device modbus:2
modbus: read 1 input(s) @ 2 of device modbus:2
Connected with code 0
Write: 02 04 00 02 00 01 90 39
Subscription succeeded.
Subscription succeeded.
ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 2 of device modbus:2: Serial protocol error: request timed out
modbus: read 1 input(s) @ 3 of device modbus:2
Write: 02 04 00 03 00 01 c1 f9
ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 3 of device modbus:2: Serial protocol error: request timed out
modbus: read 1 input(s) @ 2 of device modbus:2
Write: 02 04 00 02 00 01 90 39
ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 2 of device modbus:2: Serial protocol error: request timed out
modbus: read 1 input(s) @ 3 of device modbus:2
Write: 02 04 00 03 00 01 c1 f9
Connected with code 0
Subscription succeeded.
Subscription succeeded.
ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 3 of device modbus:2: Serial protocol error: request timed out
device modbus:2 disconnected