Сбились настройки порта RS-485 и MAP3H

Дошли руки до 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. Вобщем ничего улучшить не удалось, только навредил…

В вебинтерфейсе все вроде бы ровно, ничего не менял.

Как я понял из общения в чате мои действия виде команд привели к изменению настроек порта которые нельзя отследить в вебинтерфейсе либо в конфигурационных файлах.

Работу с modbus_client проводил по вики ссылке https://wirenboard.com/wiki/index.php/Modbus-client

Дальше второго шага не продвинулся, сообщения SUCCESS так и не получил, ни для /dev/ttyUSB0 ни для /dev/ttyRS485-1.

Куда двигаться теперь, чтобы восстановить работу двух MAP3H?

История команд прилагается

441  service wb-mqtt-serial stop
442  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23
443  modbus_client
444  modbus_client
445  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 0x01
446  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a1
447  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23
448  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x06 -r0x80
449  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x01 -r0x80
450  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x01
451  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23
452  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x01
453  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x00
454  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x02
455  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x02
456  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x02
457  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a22 -t0x02
458  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a21 -t0x02
459  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a21 -t0x02
460  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x02
461  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x07
462  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x06
463  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x0023 -t0x06
464  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x999 -t0x06
465  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x20 -t0x06
466  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x33 -t0x06
467  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x33 -t0x06
468  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x21 -t0x01
469  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x06
470  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a21 -t0x02
471  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a21 -t0x06
472  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -0x00 -t0x06 0x23
473  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x06 0x23
474  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x03
475  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x03 -r0x80
476  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x03 -r0x80 0x23
477  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x06 -r0x80 0x23
478  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a0x00 -t0x06 -r0x80 0x21
479  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a21 -t0x03 -r0x80
480  modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a23 -t0x03 -r0x80
481  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x03 -r0x80
482  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x01 -r0x80
483  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x02 -r0x80
484  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x03 -r0x80
485  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x04 -r0x80
486  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x05 -r0x80
487  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a23 -t0x06 -r0x80
488  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x23 -t0x06 -r0x80
489  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x06 -r0x80 0x23
490  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x01 -r0x80 0x23
491  modbus_client --debug -mrtu -pnone -s2 /dev/ttyUSB0 -a0x00 -t0x02 -r0x80 0x23
492  history | grep find
493  find / -name zabbix
494  service wb-mqtt-serial start

Какой адаптер использовали? Как подключали? Сфотографируйте целиком, чтобы было видно всё подключение.

Что пишет в /var/log/messages?
Выполните service wb-mqtt-serial status и пришлите результат.

ЦитатаКакой адаптер использовали? Как подключали? Сфотографируйте целиком, чтобы было видно всё подключение.

FTDI USB-COM485-PLUS1
Приложил 2 фото

Цитата Что пишет в /var/log/messages ?

Ниже часть лога. Там кстати с тойже проблемой болтается еще датчик температуры, как я понял. В таблице устройств его метрики тоже красным выделены давно.

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 адаптера и счётчика (их в целом нужно соединять для надёжной работы).

Хм, у нас такого никогда не было. А точно от нас (от кого именно)?

К имеющимся двум можно удобно добавить ещё два через установку модулей расширения Модуль расширения WBE2-I-RS485-ISO - Wiren Board. Потом можно добавлять через USB и Преобразователь интерфейсов WB-MGE v.2 - Wiren Board.

Здесь везде нужны полные выводы команд.

Попробуем, отпишусь позже

GND сделали, А и B подключено как Data+ и Data- соотв. Изменений нет.

От компании из Таганрога, нам они поставляли само оборудование WirenBoard и USB-хабы.

Вариант с платой расширения не подойдет, они уже заняты платами расширения RS-232 (тоже нужно больше).
Вариант с WB-MGE возможен, если нужно добавить 1 порт RS-485. 2 и более потребуют добавление в схему коммутатора (наш вариант). Как альтернативу рассматриваем сторонний хаб RS-485 по Ethernet. Его тестирование планировалось после тестов хаба через USB, Евгений говорил что для наших нужд можно изготовить подобные устройства в DIN исполнении.

Ответы тех команд не сохранились, завтра продублирую несколько снова и сохраню.

Воспроизвел ответы от команд из истории, которые ранее выкладывал.
Также произвел перебор портов скриптом. Вся информация во вложенном текстовом файле.

Перед тестом кстати, были отключены все устройства RS-481 кроме MAP3H с адресом 21.
Также приложил логи messages.messages22012020.txt (64 КБ)
история команд modbus_client __ и перебор портов.txt (20.1 КБ)

Судя по всему настройки MAP3H как MODBUS устройства не сбиты, но измерения не поступают, все метрики подсвечены красным шрифтом. Не понятно, в чем проблема.

Значит, что получилось: скрипт перебора нашёл счётчик, его адрес 0x21, параметры, скорее всего, заводские, то есть 9600 8N2.

Предлагаю при остановленном wb-mqtt-serial руками узнать настройки стоп-бит, то есть

modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyAPP1 -a0x21 -t0x03 -r112

(порт поменяйте соответственно), и пришлите вывод.

root@wirenboard-A2XJYHNI:~# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a0x21 -t0x03 -r112
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[21][03][00][70][00][01][82][B1]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!

1 Like

в логе messages постоянно идет ошибка

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 идут параметры соединения.
Попробовал переставить строки как показано на скриншоте.


21 и 23 отозвались, а 22 почему-то молчит.

в связи с этим, выложу
wb-mqtt-serial.conf (3.4 КБ)
Посмотрите, с ним явно что-то не так.

Задача решена.

Трабл был в том что я не учел перевод адресов из десятичного в шестнадцатиричный изначально. Из-за чего в последствии еще больше запутался.
Меня как человека далекого от командной строки и программирования фраза "Значения параметров (адрес, таймаут, тип функции и т.д.) можно указывать как в шестнадцатеричном (0x**), так и в десятичном виде." не насторожила.

Также получилось решить вопрос с подключением MAP3H через вышеуказанный USB-хаб. Устройство было не найдено в ком строке через modbus_client по той же причине.

1 Like