В электрощите установлены 4 устройства MDM3 и контроллер WB7.
Версия ПО testing, все прошивки MDM3 - обновил.
Скорость обмена 115200, 8 бит , без четности, 1 стоп, шина из экранированного патч кабеля STP 5е, длина менее метра.
Подключил нагрузку: по одной LED лампе gauss по 8 ват. Как только включаю нагрузку начинает терять пакеты.
Что можно предпринять?
В логе полно записей такого плана:
02-09-2022 21:49:50.655 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 discrete(s) @ 4 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:50.014 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 holding(s) @ 0 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:50.014 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 holding(s) @ 0 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:49.094 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 coil(s) @ 2 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:48.093 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 discrete(s) @ 3 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:47.522 [wb-mqtt-serial]
WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:46.963 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 input(s) @ 97 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:46.032 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 discrete(s) @ 5 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:45.472 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 coil(s) @ 2 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:44.912 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 input(s) @ 123 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:44.341 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 input(s) @ 32 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:43.421 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 discrete(s) @ 3 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:43.421 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 discrete(s) @ 3 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:42.850 [wb-mqtt-serial]
WARNING: [modbus] failed to read 16 input(s) @ 250 of device modbus:97: Serial protocol error: request timed out
02-09-2022 21:49:42.270 [wb-mqtt-serial]
WARNING: [modbus] failed to read 1 holding(s) @ 2 of device modbus:97: Serial protocol error: request timed out
Вот общий вид (от контроллера кабель оттянут в сторонку). Его подключение к кабелю, идущему к 4-м MDM3. Терминирующий резистор на колодке к которой планируется подключать кабель идущий к MDM3 второго этажа.
Так… А на устройствах тоже установлен 1 стопбит, на всех?
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в инструкции.
Ну и сам файл /etc/wb-mqtt-serial.conf тоже.
На всех портах включен один стопбит. Все устройства также сконфигурированы?
Переключите порт на 2 стандартных стопбита.
Ну и укажите “guard_interval_us” : 100
Не помогло.
Скажите, а в шаблонах диммеров нет описание регистров для настройки стоп битов.
Руками записывал туда значения на один стоп бит, когда еще у меня не было контроллера.
Означает ли то, что на порту контроллера установил 2 стоп бита и диммеры сами подстроились под это (обмен то ведь с ними ведется)?
Или нужно опять таки руками залезть и установить в диммерах 2 стоп бита?
Выставил всем диммерам 2 стоп бита в настройках - не помогло.
В ходе экспериментов заметил, что пакеты теряются вне зависимости от того подключена нагрузка или нет. Обнаружил, когда включил нагрузку у диммера к которому совсем не подключена ни одна лампочка.
И теряются они ровно на том устройстве у которого включено димирование. Т.е. как только включаю - начинает терять пакеты.
Еще, заметил что при снижении уровня диммирования (к примеру до 50%) пакеты также перестают теряться.
Что делать - не понятно. Снижать скорость обмена на короткой линии очень не хочется.
Тут очень помог бы осциллограф или анализатор, чтобы посмотреть что наводится на линию. Для проверки советую подключить (оставить на шине) одно устройство, отдельным кабелем. Ну и отключить опрос остальных естественно.
Осциллографа у меня нет
Но вот “идеальный” кабель мне сделать по силам (метр длинны, экран подключенный к GND, терминирующий резистор). Что тоже не помогло.
Но вот, что заметил так это то, что пакеты теряются когда хотя бы один уровень диммирования задран в 100%, стоит снизить до 99% - “полет нормальный”.
Есть ощущение, что такой уровень диммирования переводит устройство в режим в котором он либо что-то усилено просчитывает, либо аппаратная часть генерирует “мега” помехи.
С кабелем, который заложен в щиток, обмен при 100% диммирования нормально идет только на скорости 19200.
При отключенном питании нагрузки пакеты - не теряются.
При подключенном питании нагрузки, не зависимо от того подключено что-то к каналам диммера или нет при 100% уровне диммирования и скорости порта 115200 (2-х стоп бита, без контроля четности) начинают теряться пакеты.
При необходимости готов устроить демонстрацию того как это “работает”. Например, через ZOOM.
Демонстрация без измерения не особо полезна.
У меня не воспроизводится. Повоторите пожалуйста на столе эксперимент, снимите контроллер, его БП, один из диммеров. И подключите на столе, отдельно, вдалеке от кабелей.