WB-MGE v.2 и v.3 ни с чем не живёт на одной шине

Здравствуйте! Я параллельно Александру ещё подключусь к вопросу - буду воспроизводить пытаться.

Подскажите, какая срочность вопроса?

Первый тикет по этой теме 9 февраля так что не жмёт :slight_smile:

Просто раз не получается раскидать на две шины, то всё остальное повешено на первую где нет MGE

И там уже на уровне “через край” - последнее устройство добавлял - 203 регистра

А чуть поколдую и будет ещё 6 по 28 регистров т.е. ещё +168

Можно конечно попробовать пробовать 115200 вместо 57600

Добрый день.

Давайте попробуем щадящий вариант.

Шаг №1. Установим wb-cli, это наша утилита командной строки.

apt update

apt install wb-cli

Шаг №2. Запустим

wb-cli --json serial-debug --port /dev/ttyRS485-2 --seconds 120 > /mnt/data/debug-rs485-2.json

Эта команда на 120 секунд включит отладочный вывод на порту №2, результаты запишет в файл формата json в директории /mnt/data. Прошу пойти по принципу “один файл - один эксперимент” и указывать, какая именно сейчас конфигурация, что работает, а что нет. Файл(ы) потом отправить сюда.

Прекрасно, буду гонять, но не ранее пятницы

Не воспроизвелось в том виде как описывал - отвал одного устройтства целиков.

Или фаза Луны или свежие обновления поставленные перед опытами.

Но ошибки были.

205 - MSW4 на стороне контроллера шлейфом после ближнего MGEv3

Все остальные устройства - MSWv4 за дальним MGEv3

Начальное состояние - в шаблоне MSW semi-sporadic закоментированы и wb-mqtt-serial перезапущен.

mge.zip (307.3 KB)

  • 0_sporadic_off.json - начальное состояние

  • 1_msw_205_attached.json - 205 подключён к шине (момент подключения в начале файла)

  • 2_msw_205_pooling_on.json - включён опрос 205 (момент включения в начале файла)

  • 2_msw_205_pooling_on_2.json - просто с включённым опросом 205

  • 3_msw_205_pooling_off.json - вЫключён опрос 205 (момент выключения в начале файла)

  • 3_msw_205_pooling_off_2.json - просто с выключённым опросом 205

  • 4_msw_205_pooling_on.json - включён опрос 205

  • 4_msw_205_pooling_on_2.json - с включённым 205

  • 5_msw_205_pooling_off.json - выключен опрос 205

  • 5_msw_205_pooling_off_2.json - с выключенным 205

  • 6_msw_205_dettached.json - 205 отсоединён от шины (момент отключения в начале файла)

  • 7_tranquility.json - просто после отсоединения 205

Добрый день.

Спасибо за уделенное на эксперименты время. Судя по логам, стабильно “отваливается” 28ой девайс. В какой части дальнего участка он расположен? Какая версия прошивки сейчас на нем?

На дальнем конце всё также - MGEv3 - WB-BUSHUB- 6*MSWv4

2026-07-06 10:41:44,683 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (28, /dev/ttyRS485-2))
2026-07-06 10:41:46,935 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (41, /dev/ttyRS485-2))
2026-07-06 10:41:49,204 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (42, /dev/ttyRS485-2))
2026-07-06 10:41:51,532 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (168, /dev/ttyRS485-2))
2026-07-06 10:41:53,786 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (43, /dev/ttyRS485-2))
2026-07-06 10:41:56,027 Is actual: 4.37.1 → 4.37.1 (WB-MSW v.4 (50, /dev/ttyRS485-2))

До всех 2-4 метра.

Нарисуйте, пожалуйста, звезду дальнего участка. Не нашел этой информации в нашей теме.

У меня была одна гипотеза, но логи показывают, что 28ой девайс опрашивается вторым, не первым и не последним… Еще раз благодарю за проделанную работу. Мне необходимо время на раздумия, что надо еще проверить…

Повторил на всякий случай - опять отваливается чтение 28го устройста 2х регистров начиная с 97го (10.json, 11.json)

Попробовал отключить опрос 97го и 98го реистров (11.json) - у 28го устройства отвалилось чтение 8ми регистров начиная с 3го

Попробовал отключить опрос только 97го регистра (11.json,12.json) - начался какой-то треш с невозможностью удалить топики, вернул опрос 97 и 98

mge2.zip (415.4 KB)

приложен диагностический архив, доступен только сотрудникам поддержки
(484.6 KB)

А вот это уже интереснее. В девайсе с адресом 28 включен Continious read, в отличии от других девайсов на дальнем конце. Он прописывается в холдинге 114.

Если режим включен, драйвер читает все регистры устройства одним большим запросом вместо нескольких коротких. Ускоряет опрос на прямой шине, но через мост MGE такой запрос значительно длиннее и чаще вылетает за таймаут.

Значения:

  • 0 — отключён (по умолчанию)

  • 1 — включён (не сохраняется после перезагрузки)

  • 2 — включён и сохраняется после перезагрузке

Пропишите туда 0, отключите этот режим и давайте проверим, так же с приложением логов и диагностики. )

28, кстати, это минимальный из всех номеров MSW

Сегодняшняя гипотеза куда интереснее, проверьте ее, пожалуйста )

Чтение

for i in 28 41 42 168 43 50
do 
  echo === $i
  modbus_client_rpc  -m rtu -c 1 -r 114 -t 3  -b 57600 -d 8 -s 2 -a $i -p none /dev/ttyRS485-2
done

говорит что он у всех включён

=== 28
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 41
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 42
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 168
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 43
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 50
SUCCESS: read 1 elements:
        Data: 0x0001

при чём судя по описанию состояния 1 его что-то софтовое включило

типа оптимизатор опроса модбаса

я-то не включал, а относительно недавно всё выключалось по питанию

записал 0 в 114 только 28му и включил опрос 205

упсссссс

Jul 07 16:56:30 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:31 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:32 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 14 input(s) @ 270 of device modbus:43: Serial protocol error: request timed out
Jul 07 16:56:32 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 1 input(s) @ 366 of device modbus:43: Serial protocol error: malformed response: invalid crc
Jul 07 16:56:32 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:33 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:33 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [serial client] </dev/ttyRS485-2 57600 8 N 2> Register read rate limit is exceeded
Jul 07 16:56:34 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:35 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:36 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:36 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:37 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 8 input(s) @ 3 of device modbus:43: Serial protocol error: request timed out
Jul 07 16:56:37 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 14 input(s) @ 270 of device modbus:43: Serial protocol error: malformed response: invalid crc
Jul 07 16:56:37 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:38 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:39 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:40 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:41 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:42 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:42 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:43 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:44 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:45 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:46 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:47 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:48 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:48 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:49 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:50 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:51 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:52 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out
Jul 07 16:56:53 wirenboard-AFRC2C6E wb-mqtt-serial[3865128]: WARNING: [modbus] failed to read 2 holding(s) @ 97 of device modbus:28: Serial protocol error: request timed out

потому что упсс-2 - его что-то включает - я проверял что там 0 после записи

for i in 28 41 42 168 43 50; do echo === $i ; modbus_client_rpc  -m rtu -c 1 -r 114 -t 3  -b 57600 -d 8 -s 2 -a $i -p none /dev/ttyRS485-2 ; done
=== 28
SUCCESS: read 1 elements:
        Data: 0x0000 <-------------------------
=== 41
SUCCESS: read 1 elements:
        Data: 0x0001
=== 42
SUCCESS: read 1 elements:
        Data: 0x0001
=== 168
SUCCESS: read 1 elements:
        Data: 0x0001
=== 43
SUCCESS: read 1 elements:
        Data: 0x0001                                                                                                                                                                                                                                                                     === 50
SUCCESS: read 1 elements:
        Data: 0x0001

root@wirenboard-AFRC2C6E:~# for i in 28 41 42 168 43 50; do echo === $i ; modbus_client_rpc  -m rtu -c 1 -r 114 -t 3  -b 57600 -d 8 -s 2 -a $i -p none /dev/ttyRS485-2 ; done
=== 28
SUCCESS: read 1 elements:
        Data: 0x0001  <---------------------------
=== 41
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 42
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 168
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 43
SUCCESS: read 1 elements:
        Data: 0x0001 
=== 50
SUCCESS: read 1 elements:
        Data: 0x0001 

предположим что 1 туда пишется как результат изменения настроек при включении опроса 205

запишем туда 0 ещё раз уже после этого

по прежнему не прочесть 2 регистра начиная с 97го

но хотя бы в 114м не затирается записаный 0

запишем туда 0 всем - ошибка 2@97 у 28 остаётся

отключим опрос 205 что бы логи не забивало

у всех стало 1 в 114

Похоже, стоит директива принудительно включать это непрерывное чтение.

Необходимо снова поправить config-wb-msw_v4.json

Заменить в шаблоне:

json

"enable_wb_continuous_read": true

на:

json

"enable_wb_continuous_read": false

Файл находится на контроллере по пути:

/usr/share/wb-mqtt-serial/templates/config-wb-msw_v4.json

После изменения — перезапустить драйвер:

bash

systemctl restart wb-mqtt-serial

И проверить, что регистр 114 у всех устройств остался 0 после рестарта (раньше драйвер сразу писал туда 1):

bash

for i in 28 41 42 168 43 50; do echo === $i; modbus_client_rpc -m rtu -c 1 -r 114 -t 3 -b 57600 -d 8 -s 2 -a $i -p none /dev/ttyRS485-2; done

Если после рестарта у всех стало 0 — значит флаг из шаблона действительно управлял записью в регистр. После этого включать опрос 205 и смотреть, воспроизводится ли проблема с slave 28.