Добрый день. Есть проблема с ошибками на линии 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 в сутки - вообще незначительно. Я бы не пытался получить лучший результат.
Тут уже улучшать просто некуда.