Не корректная работа диммера DDM845R по modbus

Добрый день. Столкнулись с проблемой запуска диммера DDM845R на контроллере WB6.

При добавлении устройства с собственным файлом конфигурации на контроллер, получили не корректный опрос адресов. Постоянно происходит отказ некоторых переменных, которые со временем приходят в норму (загораются красным и со временем становятся черными шрифты). Из-за такой работы иногда не передаются значения в диммере и он отказывается регулировать, возвращая значение которое было изначально.

На шине modbus есть и другие устройства, которые работают корректно. Пересечения адресов нет. При попытке через консоль опрашивать адреса иногда прилетает ошибка timeout, как и в логах. Когда опрашиваем диммер на прямую через COM порт компьютера опрос идет корректно и без ошибок и нареканий. С контроллеров другого производства нет проблем в управлении. Интервал ставили даже 300ms, ошибка сохраняется. Также сохраняется ошибка при одном устройстве на линии и опросе всего одного адреса.

Хотелось бы узнать решение данной проблемы.

Fedor.ka, добрый день! Постараемся помочь.

Но нужно больше информации.

Расскажите, пожалуйста, поподробнее, как вы опрашиваете устройство через консоль? Какими командами? Когда опрашиваете, есть ли на шине другие устройства?
Останавливаете ли вы перед этим wb-mqtt-serial?
“Интервал ставили даже 300ms” – а пробовали ли вы увеличивать тайм-аут?

Как уже писал выше, пробовали опросить один адрес при одном устройстве. С остановкой драйвера, при быстрых повторах запросов иногда так же проскакивают таймауты.
Команда:
modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a34 -t0x03 -r0x40

Увеличивать время не целесообразно в плане комфорта и удобства использования со стороны пользователя. С таким же и меньшим таймаутом (всего 10) на других контроллерах и просто используя modbus-poll на ПК, работает корректно и без проблем.

Давайте попробуем так:

  1. включите в настройках порта в Web-интерфейсе режим отладки;
  2. задайте для порта таймаут 1000 мс (не интервал опроса, а именно таймаут);
  3. пришлите фрагмент лога /var/log/messages на момент, когда что-то покраснело в Web-интерфейсе.

По умолчанию оставил 3000 таймаут, добавил интервал между опросами на 100 и получаем такиеже фрагменты:

Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 2 of device modbus:34
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 02 00 01 5b 59
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 01 01 01 9B CC
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 3 of device modbus:34
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 03 00 01 0a 99
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 coil(s) @ 3 of device modbus:34: Serial protocol error: request timed out
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 0 of device modbus:34
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 00 00 01 83 59
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 03 02 00 22 FD 9A
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 40 of device modbus:34
Feb 20 10:35:09 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 28 00 01 03 51
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 holding(s) @ 40 of device modbus:34: Serial protocol error: request timed out
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 41 of device modbus:34
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 29 00 01 52 91
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 03 02 00 00 7D 83
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 42 of device modbus:34
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 2a 00 01 a2 91
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 holding(s) @ 42 of device modbus:34: Serial protocol error: request timed out
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 43 of device modbus:34
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 2b 00 01 f3 51
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 03 02 00 00 7D 83
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 0 of device modbus:34
Feb 20 10:35:10 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 00 00 01 fa 99
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 coil(s) @ 0 of device modbus:34: Serial protocol error: request timed out
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 1 of device modbus:34
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 01 00 01 ab 59
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 01 01 00 5A 0C
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 2 of device modbus:34
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 02 00 01 5b 59
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 coil(s) @ 2 of device modbus:34: Serial protocol error: request timed out
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 coil(s) @ 3 of device modbus:34
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: Write: 22 01 00 03 00 01 0a 99
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: ReadFrame: 22 01 01 00 5A 0C
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: modbus: read 1 holding(s) @ 0 of device modbus:34
Feb 20 10:35:11 wirenboard-AQM5XQ53 user.notice serial: Write: 22 03 00 00 00 01 83 59


Попробуйте увеличить интервал между обращениями к регистрам:


Терминатор вам вряд ли поможет, но если есть резистор номинала 120 Ом (плис-минус), попробуйте установить его.

Изменять интервал в большую сторону не имеет смысла. Как пользователь будет пользоваться диммером, который опрашивает канал с интервалом в секунду с учетом плавного регулирования с долгим зажатием кнопки? И это хорошо, если опрос будет без ошибок, но даже сейчас при использовании скриптов у нас возвращается старая переменная из диммера и регулирование вернется на тот уровень который опросился успешно. Итого получим ~10 секунд на регулирование до 50% яркости и еще мы не сможем визуально отследить плавность изменения яркости, что в итоге просто не приемлемо.

Вариант с резистором рассмотрим, но об увеличении интервалов не может быть и речи.

Вариант с резистором не помог.

Смотрите, сейчас мы пытаемся добиться корректной работы на уровне RS-485 и настраиваем разные тайминги опроса. У нас, к сожалению, нет разумдомовского диммера, поэтому я предлагаю вам варианты решения проблемы с опросом устройства.
Кроме “Interval between register reads” (в микросекундах) есть еще параметр “Frame timeout (ms)”, его тоже можно изменять для устройства.
По опыту устройства Разумдом иногда не отвечают в течение какого-то интервала времени после здания, например, команды, на изменение яркости.
Предполагаю, что корректные тайминги позволят вам сохранить приемлемые интервалы опроса устройства и обеспечить надежную коммуникацию.

Какие возможно корректные тайминги? Случайный перебор, даже до 3000 между всеми видами операций, не дал никаких положительных результатов.

Для

попробуйте начать с 100000 микросекунд.

Доброго времени, у меня подобная ситуация с данным диммиром. Попытки добиться стабильности не увенчались успехом. Так как ещё в стадии чернового ремонта, а до чистовой электрики далеко, могу дать(отправить) на тесты свой диммер.

1 лайк

SAA, спасибо! Готовы принять ваш диммер для тестирования. Свяжитесь, пожалуйста, на нашими менеджерами, чтобы обсудить детали доставки/возврата. https://wirenboard.com/ru/pages/contacts
Сошлитесь на эту тему на форуме, сажите, что вы со мной это обсуждали. Я всех предупредил.

Посылка отправлена, на почту отправлена копия накладной.

Ждем, спасибо!

SAA, добрый день!

Нам удалось справится с диммером, установив задержки в опросах регистров и увеличив количество одновременно опрашиваемых регистров.
Скоро шаблон для диммера будет в продакшене, пока есть тестовая версия.config-ddm845r.json (2.1 КБ)

Переключение режима работы выходов диммера и изменение частоты ШИМ “налету” приводят к проблемам с обменом по Modbus. Поэтому мы не вынесли контролы этих параметров в шаблон.
Эти значения надо задавать один раз, при настройке устройства.

У вас есть экземпляр, на котором вы можете проверить текущий шаблон?

Супер )) второго нет. Завтра закажу, на следующей неделе придет

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

Да у вас. Как буду до заказывать оборудования вернём одним пакетом. Ещё один димер заказал. На следующей неделе придет

доброго времени, получил подопотного. Что необходимо сделать?