в итоге не могу пользоваться этими устройствами, точнее заказчик не может. из-за отсутствия адекватной поддержки от производителя (они во всем винят меня, хотя я все делаю по инструкции) я хочу взорвать эти модули и купить заказчику за свой счет ваши модули. но это случится не скоро, поэтому если у вас есть возможность помочь мне с этими модулями то буду очень благодарен
Добрый день.
По скриншоту видно что устройство с адресом 6 ответило, с адресом 5 - на вторую попытку запроса прислало два байта. Картина похожа на неконтакт в одном из проводов шины.
Как у вас физически организована шина от контроллера к модулям (фото, лучше всего)? Точно ли соединены GND клеммы всех устройств?
Устройства “разумдом” опрашиваются, обычно, без каких-либо проблем.
Для проверки - можно взять отдельный, заведомо исправный кусок кабеля UTP и подключить одно устройство на порт, используя для шины по проводу из одной пары, для GND - целую пару.
С контактом всё хорошо, модули здесь работали, до тех пор пока вчера мы не сбросили модуль к заводским. При этом физически ничего не трогалось.
Фото запрошу, позже отправлю
Смотрите, я поочерёдно на всех модулях присвоил адрес modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0 2
а для ddm845r modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a34 -t0x06 -r0 3
Затем также поочерёдно задал тип работы modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a5 -t0x06 -r2691 2
Включаю шину, они красные, но работают с задержкой. Выключаю шину, пытаюсь увеличить скорость командой modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a2 -t0x06 -r1 0x0101
но команда записывается только на 2 модуля, на всех остальных ошибка.
Заново сбрасываю модуль, опять все записывается, опять работает с задержкой. Тобиш как мне кажется проблема возникает после выкл-вкл шины.
Еще раз попробовали добавить модули. WB модули идеально добавляются в контроллер. Идеально работают. разумдом нифига не работает.
Снова опишу что делаю:
выключаю шину
сбрасываю в ноль модуль
задаю адреса “modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0 2” для drm88r и " modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a34 -t0x06 -r0 3" для ddm845r. всего у меня 4 шт drm88r и 2 шт ddm845r, адреса естественно не повторяются.
выкл/вкл чтобы адрес запомнился
задаю режим работы “modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a5 -t0x06 -r2691 2”
включаю шину, добавляю модуль в wb-mqtt-serial.conf, проверяю работу, работает с большой задержкой или не работает вообще.
Начинаю сначала, снова сбрасываю, снова задаю режим работы, снова меняю скорость и прочие параметры. И не работает всё равно. Уже раз 100500 повторял эту операцию, менял порты - безрезультатно. Сброс контроллера не помог.
Причем 2 модуля drm88r вообще перестали реагировать на какие-либо команды.
Мы как-то, хз зачем, купили много подобных модулей. На всех объектах были танцы с бубном, пришлось даже ехать за свой счет в Тулу чтобы они прошивали свои модули. Только после этого что-то как-то заработало и работает по сей день. На данном проекте в Тулу ездили только диммеры и фактически мы вот только приступили к полноценной настройке оборудования.
После того как 100500 раз была проведена указанная выше операция мы снова будем снимать эти модули и отправлять в Тулу, так как 2 модуля вообще не работают. Но перед этим хочется разобраться в следующих вопросах:
почему устройства любых параметрах скорости, битов, четности и т.п. работают с задержкой и красные в интерфейсе или не работают вообще
почему я выключаю шину, задаю параметры, они записываются, потом включаю шину и снова выключаю и параметры уже не записываются? Разумеется, повторную команду я отправляю по новым реквизитам скорости и это не помогает никак.
Да, шину проверили, контакт везде хороший. После первого отключения wb-mqtt-serial.conf всё записывается нормально, после включения работает с большими задержками, после выключения уже не записывается.
Nov 30 18:09:07 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: WARNING: </dev/ttyRS485-1 19200 8 N 1>: closed due to repetetive errors
Nov 30 18:09:09 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [modbus] Init: Input 0 type: setup register <modbus:6:holding: 1> <-- 1 (0x1)
Nov 30 18:09:09 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [modbus] Init: Input 0 module: setup register <modbus:6:holding: 3> <-- 3 (0x3)
Nov 30 18:09:09 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [serial device] device modbus:6 is connected
Nov 30 18:09:10 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: WARNING: [register handler] failed to write: <modbus:6:coil: 4>: Serial protocol error: request timed out
Nov 30 18:09:12 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [serial device] device modbus:5 is disconnected
Nov 30 18:09:13 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: WARNING: </dev/ttyRS485-1 19200 8 N 1>: closed due to repetetive errors
Nov 30 18:09:15 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [serial device] device modbus:7 is disconnected
Nov 30 18:09:17 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [serial device] device modbus:4 is disconnected
Nov 30 18:09:25 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: WARNING: [register handler] failed to write: <modbus:3:holding: 42>: Serial protocol error: request timed out
Nov 30 18:09:27 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: WARNING: </dev/ttyRS485-1 19200 8 N 1>: closed due to repetetive errors
Nov 30 18:09:28 wirenboard-AFNMM6MG wb-mqtt-serial[31042]: INFO: [serial device] device modbus:3 is disconnected
Возможно, устройство не успевает отвечать?
В документации по этому поводу описано:
// Дополнительная задержка перед каждой отправкой данных в порт в микросекундах
// Если при работе с устройством теряются пакеты — попробуйте увеличить значение этого параметра.
// Для соответствия протоколу Modbus RTU, установите этот параметр в значение не менее 3.5 символа при выбранной скорости — это не нужно для устройств Wiren Board, но может потребоваться для устройств сторонних производителей. Нужное значение рассчитывается по формуле: guard_interval_us = (3.5*11*106)/(скорость в бит/с). Например, для скорости 9600 бит/с guard_interval_us = (3.5*11*106)/9600 = 4000 мкс.
"guard_interval_us": 1000,
“выключение шины” - это остановка wb-mqtt-serial?
В логе вижу для устройства с адресом 6, которое опимсано в конфиге как
В качестве эксперимента - если оставить модули на стандартной скорости - они работают в wb-mqtt-serial? Есть ли ошибки?
Если несколько раз останавливать-запускать wb-mqtt-serial - есть ошибки, модули продолжают отвечать?
Если да - тогда надо поменять настройки скрости,
затем попробовать опросить их с помощью modbus_client, выключить-включить питание модулей и снова попробовать опрос modbus_client. Если успешно - вкелючить в wb-mqtt-serial.сщта debug и запустить его.