Ошибка на шине RS-485 - Serial protocol error: request timed out

Добрый день. Есть проблема с ошибками на линии rs-485 с пожарными датчиками, которую не могу победить, ошибка вида:
WARNING: [modbus] failed to read 1 holding(s) @ 2 of device modbus:59: Serial protocol error: request timed out

Подключение: WirenBoard + плата расширения rs-485 → RS-485 HUB → Пожарные датчики (схематично нарисовал как все подключено).

Т.к. изначально проводка была проложена под схему “звезда”, пришлось использовать RS-485 HUB. Везде работает все корректно, если на линии не больше 2-х датчиков (последовательное подключение). Если их 3 - то с теми, что по середине - начинаются проблемы с указанными выше ошибками.

Блоки питания у WirenBoard и Хаб RS-485+датчики - разные, но “-” между ними соединен (как вы указываете в рекомендациях в документации). Резистор 120 Ом нигде не установлен.

Пробовал увеличивать таймауты в настройках - ошибкок становится меньше - но они полностью не пропадают. Также пробовал заменить датчик на новый - это вообще никак не повлияло на ситуацию.

Подскажите пожалуйста в чем может быть проблема и как ее исправить?

Датчики использую такие: https://aliexpress.ru/item/1005001710491162.html?spm=a2g2w.orderdetail.0.0.23144aa6uQ7XAr&sku_id=12000017247667176
Хаб использую такой: https://aliexpress.ru/item/1005005974595910.html?spm=a2g2w.orderdetail.0.0.2e6d4aa6Hr2HqO&sku_id=12000037219645729

Сразу прикладываю диагностический архив.
diag_output_A7ZZ6YTU_2024-03-09-10.12.29.zip (2,3 МБ)

Добрый день.
К сожалению в архиве мало лога wb-mqtt-serial.

Вижу что настроен

 "read_period_ms" : 10000

А добавление, например

"guard_interval_us": 20000,
  • меняет поведение?
    И, как правило, в случае когда x устройств на шине работают - а x+1 - нет - нужно посмотреть на саму шину. Как меняет поведение добавление терминатора? Если подключить три датчика непосредственно к порту контроллера - то работают так же, с ошибками когда более двух устройств?

Добрый день.

Спасибо, буду пробовать. Отпишу тогда.

Подскажите, а где настраивать параметр guard_interval_us? Не вижу такого.

Можно и через веб-интерфейс.
“Дополнительная задержка перед записью в порт”
В любом случае надо полностью прочитать документацию.

@BrainRoot

Добрый день. Попробовал разные варианты. Добавление параметра guard_interval_us вообще никак не повлияло на ситуацию.

Попробовал добавить еще резисторы на шине 120 ом в начале и конце (оба варианта как пробовал - на скринах ниже). Вот вариант 2 помог, но не до конца, т.е. ошибки стали сильно реже (1-3 раза в сутки).

Самое интересное что шина организована по витой паре, а на двух других парах этого же кабеля висят WB-MSW v.4 (правда их на шине только 2 штуки и подключены так же через другой RS-485 HUB) и там такой проблемы нет.

Что еще можно проверить?

Вариант 1 (с одним резистором)

Вариант 2 (с двумя резисторами)

1-3 в сутки - вообще незначительно. Я бы не пытался получить лучший результат.
Тут уже улучшать просто некуда.