Разные устройства на одной шине

Добрый день. Подскажите пожалуйста новичку :pray:
Есть шина, начинается из первого порта rs485 контролера wb 8.5. Контакты A B. На конце висит счетчик Меркурий 230 со встроенным питанием шины , то есть подключен тоже А В. В устройствах вижу, регистры передаёт по шаблону из коробки . Чуть позже между счетчиком и контроллером в шину добавился mcm8, питание от отдельного внешнего БП 24 в. К счетчику подключены импульсный выход устройства. Опрос идет. На конце шины после Меркурия 230 висит терминатор. Суть проблемы, после установки mcm8, начали появляться в логах предупреждения о таймауте опроса Меркурия на короткий срок, в устройствах первый регистр на какой то момент загорается красным, потом опять черным и показания передаются. Лог прилагаю. Пробовал играться с временем опроса , так тогда следующие регистры так же пляшут в Меркурии.

2025-11-18T20:02:23.636Z [wb-mqtt-serial] WARNING: [serial device] TSerialDevice::ReadRegister(): Serial protocol error: request timed out [slave_id is mercury230:223]
2025-11-18T20:02:12.045Z [wb-mqtt-serial] WARNING: [serial device] TSerialDevice::ReadRegister(): Serial protocol error: request timed out [slave_id is mercury230:223]

Добрый день!

На данном этапе могу порекомендовать отключить быстрый Modbus для wm-mcm8.

Так же может помочь увеличение таймаута ответа для счетчика.

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Доброе утро.
Прилагаю диагностическую информацию и скрин настроек mcm8
Я пробовал менять время опроса на 100 и 200 мс, тогда красным загорается следующие в списке опроса регистры

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

Минусы блоков питания устройств, подключенных к одной шине, соединены между собой?

1 лайк

Я бы порекомендовал в настройках самого WM-MCM8 установить параметр “stop_bits” : 1.

Вижу, что на порту 192.168.1.111 тоже есть счетчики с протоколом mercury230 и WB-MCM8 на одной шине и работают без ошибок.

Проверьте физическое подключение и сравните настройки порта на шлюзе 192.168.1.111 и на RS485-1 контроллера.

На шине два устройства mcm8 и счётчик Меркурий с питанием шины, там нет возможности ноль подкинуть

Спасибо, вы полагаете после mcm8 дребезг контакта и поэтому связь то есть, то нет?
Буду признателен если подскажите где выставить стоп бит, у меня в настройках порта на контроллере стоит стоп бит 1, а на mcm8 нашел только где указывается скорость

Не ноль, а минусы (gnd) блоков питания устройств и контроллера. Этого требует стандарт (помимо A и B).

1 лайк

На контроллере gnd понятно где, на mcm8 тоже , а на Меркурий 230 нет, там счетчик сам питает шину

Клемма номер 18:
https://wiki.wirenboard.com/wiki/Mercury_230

Спасибо, буду пробовать

Добрый день!

Удалось воспроизвести вашу ситуацию. Объединение минусов внешнего БП и встроенного в ПУ, к сожалению, не дало положительного результата.

Попробую различные варианты настроек и отпишусь вам.

Вот это сработало:

в шаблоне к устройству WM-MCM8 в /usr/share/wb-mqtt-serial/templates/ нужно установить:

“sporadic”: true,

на

“sporadic”: false,

Ссылка об этом есть в письме выше.

Дополнительно, для порта рекомендую еще установить задержку перед записью в порт (мкс): “guard_interval_us”: 4000,

это нужно делать в каждом “name”: “Input 6 counter”, и тд ?

Только там где встречается “sporadic”

поменял, перезагрузил контроллер, так же моргает красным

Добрый день!

А вышлите, пожалуйста еще раз диагархив, с включенной отладкой в wb-mqtt-serial, где будет видно момент возникновения ошибки.

В секции “devices” добавил

     "force_frame_timeout" : true,
      "frame_timeout_ms" : 50,
 "devices" : 
      [
        {
          "channels" : 
          [
            {
              "enabled" : false,
              "name" : "KU1"
            },
            {
              "enabled" : false,
              "name" : "KU2"
            },
            {
              "enabled" : false,
              "name" : "KU3"
            },
            {
              "enabled" : false,
              "name" : "Temperature"
            }
          ],
          "device_type" : "mercury230",
          "force_frame_timeout" : true,
          "frame_timeout_ms" : 50,
          "slave_id" : "98"
        },

После этого уже в течении часа ошибок не наблюдаю.

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

Попробуйте этот конфиг:

wb-mqtt-serial.conf (15,1 КБ)