Дошли руки до modbus_client, все хотелось разобраться с подключением RS-485 по USB (MAP3H).
Вчера отключил wb-mqtt-serial, попробовал постучать в /dev/ttyUSB0 но ничего не добился ( для всех Кодов функций чтения и записи регистров присутствует ошибка несовпадения CRC). Для сравнения постучал в /dev/ttyRS485-1 с двумя работающими MAP3H , тоже ничего вразумительного в ответ не получил ( Connection timed out: select). Закончил с этим, стартанул wb-mqtt-serial, перестали присылать показания до этого корректно работающих два MAP3H. Все метрики теперь выделены красным шрифтом. Они подключены напрямую на контроллер в RS-485. Вобщем ничего улучшить не удалось, только навредил…
В вебинтерфейсе все вроде бы ровно, ничего не менял.
Как я понял из общения в чате мои действия виде команд привели к изменению настроек порта которые нельзя отследить в вебинтерфейсе либо в конфигурационных файлах.
Ниже часть лога. Там кстати с тойже проблемой болтается еще датчик температуры, как я понял. В таблице устройств его метрики тоже красным выделены давно.
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: device modbus:21 disconnected
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: device modbus:22 disconnected
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:21: Serial protocol error: request timed out
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 3 input(s) @ 4349 of device modbus:23: Serial protocol error: malformed response: invalid data size
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: device modbus:103 disconnected
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:22: Serial protocol error: request timed out
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:22: Serial protocol error: request timed out
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: device modbus:21 disconnected
Jan 21 17:05:39 wirenboard-A2XJYHNI user.notice serial: device modbus:22 disconnected
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:21: Serial protocol error: request timed out
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: device modbus:21 disconnected
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: device modbus:22 disconnected
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 3 holding(s) @ 6 of device modbus:103: Serial protocol error: request timed out
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:22: Serial protocol error: request timed out
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:21: Serial protocol error: request timed out
Jan 21 17:05:40 wirenboard-A2XJYHNI user.notice serial: device modbus:103 disconnected
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:21: Serial protocol error: request timed out
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: device modbus:21 disconnected
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: device modbus:22 disconnected
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:22: Serial protocol error: request timed out
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: device modbus:21 disconnected
Jan 21 17:05:41 wirenboard-A2XJYHNI user.notice serial: device modbus:22 disconnected
Цитата Выполните service wb-mqtt-serial status и пришлите результат.
root@wirenboard-A2XJYHNI:~# service wb-mqtt-serial status
● wb-mqtt-serial.service - LSB: MQTT Driver for serial devices
Loaded: loaded (/etc/init.d/wb-mqtt-serial; generated; vendor preset: enabled)
Active: active (running) since Tue 2020-01-21 16:40:59 MSK; 24min ago
Docs: man:systemd-sysv-generator(8)
Process: 22221 ExecStop=/etc/init.d/wb-mqtt-serial stop (code=exited, status=0/SUCCESS)
Process: 22230 ExecStart=/etc/init.d/wb-mqtt-serial start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/wb-mqtt-serial.service
├─22237 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
├─22238 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
└─22239 logger -t serial
Jan 21 16:40:59 wirenboard-A2XJYHNI systemd[1]: Starting LSB: MQTT Driver for serial devices...
Jan 21 16:40:59 wirenboard-A2XJYHNI systemd[1]: Started LSB: MQTT Driver for serial devices.
Раз уж тема создана, также обозначу вопрос, ради которого я начал эксперименты с modbus_client.
Есть вышеупомянутое устройство-хаб FTDI USB-COM485-PLUS1, получали как и остальное оборудование от вас.
В проекте требуется иметь количество портов больше чем 2, их столько на контроллере WirenBoard.
Был взят usb-хаб и MAP3H который также работал до этого на одном из портов контроллера WB. после подключения через хаб стал выдавать некорректные значения. Поэтому решился послушать порт usb-rs485 через modbus_client. С этим тоже нужно разобраться.
Предлагаю всё, что фактически не подключено, убрать в настройках, чтобы лог был чище.
Но в целом по нему видно, что ни одно устройство не отзывается. Предлагаю физически оставить один счётчик на одном порту, остановить wb-mqtt-serial, и найти счётчик перебором всех параметров - смотрите скрипт внизу страницы Настройка параметров подключения по RS-485 для Modbus-устройств Wiren Board — Wiren Board
Возможно, стоило соединить не только A и B (кстати, подключение точно верное?), но и GND портов RS-485 адаптера и счётчика (их в целом нужно соединять для надёжной работы).
Хм, у нас такого никогда не было. А точно от нас (от кого именно)?
GND сделали, А и B подключено как Data+ и Data- соотв. Изменений нет.
От компании из Таганрога, нам они поставляли само оборудование WirenBoard и USB-хабы.
Вариант с платой расширения не подойдет, они уже заняты платами расширения RS-232 (тоже нужно больше).
Вариант с WB-MGE возможен, если нужно добавить 1 порт RS-485. 2 и более потребуют добавление в схему коммутатора (наш вариант). Как альтернативу рассматриваем сторонний хаб RS-485 по Ethernet. Его тестирование планировалось после тестов хаба через USB, Евгений говорил что для наших нужд можно изготовить подобные устройства в DIN исполнении.
Ответы тех команд не сохранились, завтра продублирую несколько снова и сохраню.
Воспроизвел ответы от команд из истории, которые ранее выкладывал.
Также произвел перебор портов скриптом. Вся информация во вложенном текстовом файле.
Судя по всему настройки MAP3H как MODBUS устройства не сбиты, но измерения не поступают, все метрики подсвечены красным шрифтом. Не понятно, в чем проблема.
Jan 23 17:45:47 wirenboard-A2XJYHNI user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 input(s) @ 4248 of device modbus:21: Serial protocol error: request timed out
что означают эти цифры 4248?
они также есть в логе после каждой перезагрузки контроллера
Jan 23 17:45:32 wirenboard-A2XJYHNI user.notice serial: address: 4248
Обратил внимание что в wb-mqtt-serial.conf после path идут сразу devices, не странно? В одном из дефолтных конфигов которые лежат в /etc после path идут параметры соединения.
Попробовал переставить строки как показано на скриншоте.
Трабл был в том что я не учел перевод адресов из десятичного в шестнадцатиричный изначально. Из-за чего в последствии еще больше запутался.
Меня как человека далекого от командной строки и программирования фраза "Значения параметров (адрес, таймаут, тип функции и т.д.) можно указывать как в шестнадцатеричном (0x**), так и в десятичном виде." не насторожила.
Также получилось решить вопрос с подключением MAP3H через вышеуказанный USB-хаб. Устройство было не найдено в ком строке через modbus_client по той же причине.