Wb-mqtt-serial: closed due to repetetive errors (WB-MGE)

Доброго времени.

Есть WB-MGE v.2, но никак не могу его заставить работать с WB6 (wb-2207).
MGE пробовал с serial TCP/ModBUS TCP. Всегда одна и та же ошибка:

Oct 13 21:40:09 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:15 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:20 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:25 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:30 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:35 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:40 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors
Oct 13 21:40:46 trailer-wb6 wb-mqtt-serial[28657]: WARNING: <192.168.88.27:20110>: closed due to repetetive errors

Устройство на RS485 не “читается”.

Включен в WB6 ethernet’ом. Потерь пакетов нет. Сторона RS485 по параметрам соответствует подключенным устройствам (разные пробовал) - в норме. 120 Ом включал, не решает вопрос.

“Прибив” wb-mqtt-serial, устройство (регистры) легко и без вопросов читается через socat/modbus_client . Включаю wb-mqtt-serial – “closed due to repetetive errors”.

На сколько я помню, этот MGE у меня был в качестве ЗИП. И никогда не использовался, на сколько я помню (с ноября 2021).

Как быть? Куда копать? Что делать?
Спасибо!

Добрый день. Как настроен wb-mqtt-serial и, соответственно, какие параметры используются для socat перенаправления?

Добрый!

socat -d -d -d -x PTY,raw,ispeed=9600,ospeed=9600,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.89.46:20110

    {
      "address" : "192.168.88.27",
      "connection_max_fail_cycles" : 2,
      "connection_timeout_ms" : 5000,
      "devices" : 
      [
        {
          "device_type" : "WB-MSW2",
          "slave_id" : "33"
        }
      ],
      "enabled" : true,
      "port" : 20110,
      "port_type" : "tcp",
      "response_timeout_ms" : 500
    }

А тут

Это разные устройства?

Это я переносил из одной сети в другую:
192.168.88.0/24 - общая L2 с контроллером)
192.168.89… - через маршрутизацию. Но потерь пакетов так и так - нет; не в этом проблема, как выяснилось.

За MGE подключен только WB-MSW2?

Так, включите debug для порта и посмотрите в лог, все ли зопросы неудачны?

Подключал иные устройства. И вместо, и в месте.

Те не менее, если что-то работает modbus_client и не работает с wb-mqtt-serial - первый раз вижу.

В том-то и дело, что меня это тоже сильно смутило.

Похоже, разобрался, собрав в один файл все команды и параметры. У меня “пляшет” от конфы к конфе параметра стопового бита.

В MGE 9600N2.
В socat то cstopb=2, то cstopb=1 (пробовал варианты, видимо - смотрю в history).
В modbus_client -s1 всегда бил так. :see_no_evil: На сайте -s2.

От того, при поиске устройств получал неправильные адреса (устройства не с живого объекта, а из загашника, наклейки с адресами невалидны):

for i in {1..247}; do echo -n "$i - "; D=`modbus_client -mrtu /dev/ttyRS485-5 --debug -b9600 -pnone -s**1** -a$i -t3 -o100 -r200 -c6 2>/dev/null | grep Data: | awk 'gsub("Data:","")' | sed -e 's/0x00/\\\x/g' -e 's/\s//g'`; echo -e $D; done
1 - 
2 - 
3 - 
4 - 
5 - 
6 - 
7 - 
8 - 
9 - 
10 - 
11 - 
12 - 
13 - 
14 - 
15 - 
16 - 
17 - 
18 - 
19 - 
20 - 
21 - 
22 - 
23 - 
24 - 
25 - 
26 - 
27 - 
28 - 
29 - 
30 - 
31 - 
32 - 
33 - WBMSW2
34 -
35 - 
36 - 
37 - 
38 - 
39 - 
40 - ^C

Выполнил напрямую modbus_client с -a33, получив таймаут. Посмотрел (без debug я этого сообщения не видел :roll_eyes:) в журнал “DEBUG: [modbus] failed to read 1 input(s) @ 121 of device modbus:33: Serial protocol error: request timed out”, осознал…

Что, что-то не так. Начал всматриваться, и…
echo -e modbus_client -mrtu /dev/ttyRS485-5 --debug -b9600 -pnone -s2 -a32 -t3 -o100 -r200 -c6 2>/dev/null | grep Data: | awk 'gsub("Data:","")' | sed -e 's/0x00/\\\x/g' -e 's/\s//g'
WBMSW2

Вот-таки пироги.
Спасибо за наводку. О-опыт.

1 лайк

Вот это да, хорошо что решилось!
Но я сам последнее время предпочитаю использовать шлюзы именно как Modbus TCP…

1 лайк

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.