Добрый день!
Пытаюсь записать команды с пультов в память(RAM, ROM) датчика WB-MSW v3. Если это делать через интерфейс, то не происходит вообще ничего при перемещении ползунка "Записать команду в RAM (ROM).
Если я делаю это через modbus_client, то следующая история:
root@wirenboard-A4EITCUP:~# systemctl stop wb-mqtt-serial
root@wirenboard-A4EITCUP:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a85 -t5 -r5301 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[55][05][14][B5][FF][00][95][F8]
Waiting for a confirmation…
<55><05><14><00><95>
SUCCESS: written 1 elements!
Но по факту ничего не записывается.
Пробую следующие пульты: ТВ Sharp, кондиционер Electrolux, привод штор DOOYA, пульт от ТВ приставки.
Результат одинаков, ошибок в реестре нет. Датчик нормально работает, параметры показывает и т.д.
Запишу что-то в третий банк. Активирую запись, нажимаю кнопку, деактивирую:
modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5302 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][14][B6][FF][00][61][BF]
Waiting for a confirmation...
<62><05><14><B6><FF><00><61><BF>
SUCCESS: written 1 elements!
<тут нажата кнопка>
root@wirenboard-AGH767IU:~# modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5302 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][14][B6][00][00][20][4F]
Waiting for a confirmation...
<62><05><14><B6><00><00><20><4F>
SUCCESS: written 1 elements!
Проверяю длину записанной команды:
modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x04 -r5402 -c1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][04][15][1A][00][01][1D][92]
Waiting for a confirmation...
<62><04><02><01><8E><FC><CC>
SUCCESS: read 1 of elements:
Data: 0x018e
Воспроизвожу:
modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5102 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][13][EE][FF][00][E1][18]
Waiting for a confirmation...
<62><05><13><EE><FF><00><E1><18>
SUCCESS: written 1 elements!
Ну и воспроизводится, вполне удачно.
Какая прошивка на устройстве? Какой релиз на контроллере?
Релиз ПО - обычно ниже.
В любом случае рекомендую обновить как ПО контроллера так и прошивку самого WB-MSW. Высоковероятно: WB-MSW v.3: Errata — Wiren Board
Далее запускаю команду по Вашему образцу выше. После запуска modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 85 -t0x05 -r5302 1 появляется ошибка, ERROR Connection timed out: select. ERROR occured!, нет выражения: SUCCESS: written 1 elements!.
Ошибка означает: Ждем подтверждения…
ОШИБКА Время ожидания подключения истекло: выберите
Произошла ошибка! Но нет времени нажимать ошибка появляется мгновенно после запуска команды.
Добрый день!
Вчера удалось записать сигнал только с одного пульта из трёх.
На форуме прочитал, что возможно вручную корректировать коды, так как их длина больше.
Подскажите как это делать? Спасибо!
У вас вряд ли скорость на шине такая же как у меня. Как я видел - дефолтная, 9600.
Тут вы вместо того чтобы прочитать длину сохраненной в банк команды (регистр input, используется для чтения функция 0x04) записываете в него “1” функцией 05.
Собственно чтение длины я показал как самый простой способ убедиться что записалось.
Так через интерфейс все ж делать это проще. Ну и сразу можно (на период настройки, естественно) включить чтение длин записанных команд.
Это устарело, сейчас сохраняются в два раза более длинные, в актуальных прошивках.
Идея такая? Команда пишется в RAM банк, она, даже если не помещается в него полностью - то все равно остается.
Вот тут про это: WB-MIR v.2 не записывает в ROM - #9 от пользователя BrainRoot
Но, повторюсь, неактуально.
“не записываются” - что в регистрах RAM банка? То есть - запишите в RAM и проверьте - есть ли что-то. Пульты могут использовать не ту частоту модуляции, например. Обычно помогает вплотную поднести.