Запись команд ДУ в WB-MIR v.2

Добрый день.

Соединили устройство WB-MIR v.2 с компьютером через АС-4.При отправке команд по ModBus RTU согласно данной таблице Карта регистров WB-MIR v2 — Wiren Board все ответы приходят корректно и успешно.

При внесении команд согласно данной статье Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR — Wiren Board ни одна команда не записывается.

Последовательность действий:

1.Записали в параметр (к примеру 5301) значение 1;

2.Поднесли пульт к IR и отправили команду;

3.Записали в параметр (к примеру 5301) значение 0;

4.Записали в параметр (к примеру 5101) значение 1 для отправки команды по ИК;

Команда не передается(Проверяли камерой,не светится).При проверке буфера по параметру 5400 в ответ приходит 0.
Как решить данную проблему?

пульт LG 6711A90023C

А посмотрите - есть ли что-то в регистрах,

Чтобы отредактировать сигнал под номером i или записать его по Modbus (без пульта ДУ), запишите 1 в регистр флага по адресу 5200 + i. После этого сигнал в виде последовательности натуральных чисел (смотрите рисунок "Пример содержимого оперативного буфера WB-MIR") будет записан в подряд идущие регистры хранения, начиная с регистра 2000. В конце последовательности будут два подряд идущих регистра хранения, содержащих 0. Если сигнал под номером i не был записан ранее, в регистрах хранения 2000 и 2001 будут находиться 0

UPD: А прошивка-то какой версии?

В регистрах пусто.
Версия 1.8C

Другой пульт пробовали? Сейчас подключу такое ж устройство - воспроизведу.

Пробовали,та же история

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

Так. Проверяем что пусто:

Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][14][51][FF][00][DD][8D]
Waiting for a confirmation...
<37><05><14><51><FF><00><DD><8D>
SUCCESS: written 1 elements!
root@wirenboard-ACAX3M6K:~# for i in {2000..2050}; do  echo "register $i data $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x03 -r$i | grep Data:)"; done
register 2000 data 	Data: 0x0000 
register 2001 data 	Data: 0x0000 
register 2002 data 	Data: 0x0000 
register 2003 data 	Data: 0x0000 
register 2004 data 	Data: 0x0000 
register 2005 data 	Data: 0x0000 
register 2006 data 	Data: 0x0000 
register 2007 data 	Data: 0x0000 
register 2008 data 	Data: 0x0000 
register 2009 data 	Data: 0x0000 
register 2010 data 	Data: 0x0000 
register 2011 data 	Data: 0x0000 
register 2012 data 	Data: 0x0000 
register 2013 data 	Data: 0x0000 
register 2014 data 	Data: 0x0000 
register 2015 data 	Data: 0x0000 
register 2016 data 	Data: 0x0000 
register 2017 data 	Data: 0x0000 
register 2018 data 	Data: 0x0000 
register 2019 data 	Data: 0x0000 
register 2020 data 	Data: 0x0000 
register 2021 data 	Data: 0x0000 
register 2022 data 	Data: 0x0000 
register 2023 data 	Data: 0x0000 
register 2024 data 	Data: 0x0000 
register 2025 data 	Data: 0x0000 
register 2026 data 	Data: 0x0000 
register 2027 data 	Data: 0x0000 
register 2028 data 	Data: 0x0000 
register 2029 data 	Data: 0x0000 
register 2030 data 	Data: 0x0000 
register 2031 data 	Data: 0x0000 
register 2032 data 	Data: 0x0000 
register 2033 data 	Data: 0x0000 
register 2034 data 	Data: 0x0000 
register 2035 data 	Data: 0x0000 
register 2036 data 	Data: 0x0000 
register 2037 data 	Data: 0x0000 
register 2038 data 	Data: 0x0000 
register 2039 data 	Data: 0x0000 
register 2040 data 	Data: 0x0000 
register 2041 data 	Data: 0x0000 
register 2042 data 	Data: 0x0000 
register 2043 data 	Data: 0x0000 
register 2044 data 	Data: 0x0000 
register 2045 data 	Data: 0x0000 
register 2046 data 	Data: 0x0000 
register 2047 data 	Data: 0x0000 
register 2048 data 	Data: 0x0000 
register 2049 data 	Data: 0x0000 
register 2050 data 	Data: 0x0000 

Для начала попробуем в RAM записать. Стартуем запись:

modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a55 -t5 -r5001 1
Data to write: 0x0
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][13][89][00][00][1D][32]
Waiting for a confirmation...
<37><05><13><89><00><00><1D><32>
SUCCESS: written 1 elements!

Нажимаем кнопку пульта, отключаем:

modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a55 -t5 -r5001 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][13][89][00][00][1D][32]
Waiting for a confirmation...
<37><05><13><89><00><00><1D><32>
SUCCESS: written 1 elements!

Проверяем:

root@wirenboard-ACAX3M6K:~# for i in {2000..2050}; do  echo "register $i data $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x03 -r$i | grep Data:)"; done
register 2000 data 	Data: 0x01c6 
register 2001 data 	Data: 0x01bb 
register 2002 data 	Data: 0x003f 
register 2003 data 	Data: 0x009b 
register 2004 data 	Data: 0x003d 
register 2005 data 	Data: 0x0031 
register 2006 data 	Data: 0x003b 
register 2007 data 	Data: 0x009f 
register 2008 data 	Data: 0x003c 
register 2009 data 	Data: 0x009f 
register 2010 data 	Data: 0x003c 
register 2011 data 	Data: 0x0031 
register 2012 data 	Data: 0x003c 
register 2013 data 	Data: 0x0031 
register 2014 data 	Data: 0x003b 
register 2015 data 	Data: 0x009f 
register 2016 data 	Data: 0x003c 
register 2017 data 	Data: 0x0032 
register 2018 data 	Data: 0x003c 
register 2019 data 	Data: 0x0031 
register 2020 data 	Data: 0x003c 
register 2021 data 	Data: 0x009e 
register 2022 data 	Data: 0x003c 
register 2023 data 	Data: 0x0032 
register 2024 data 	Data: 0x003c 
register 2025 data 	Data: 0x0031 
register 2026 data 	Data: 0x003c 
register 2027 data 	Data: 0x009e 
register 2028 data 	Data: 0x003d 
register 2029 data 	Data: 0x009e 
register 2030 data 	Data: 0x003c 
register 2031 data 	Data: 0x0031 
register 2032 data 	Data: 0x003c 
register 2033 data 	Data: 0x009f 
register 2034 data 	Data: 0x003c 
register 2035 data 	Data: 0x0031 
register 2036 data 	Data: 0x003c 
register 2037 data 	Data: 0x009f 
register 2038 data 	Data: 0x003b 
register 2039 data 	Data: 0x009f 
register 2040 data 	Data: 0x003c 
register 2041 data 	Data: 0x009f 
register 2042 data 	Data: 0x003c 
register 2043 data 	Data: 0x009e 
register 2044 data 	Data: 0x003c 
register 2045 data 	Data: 0x0031 
register 2046 data 	Data: 0x003c 
register 2047 data 	Data: 0x009f 
register 2048 data 	Data: 0x003c 
register 2049 data 	Data: 0x009e 
register 2050 data 	Data: 0x003c 

Воспроизводим:

odbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a55 -t5 -r5002 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][13][8A][FF][00][AC][C2]
Waiting for a confirmation...
<37><05><13><8A><FF><00><AC><C2>
SUCCESS: written 1 elements!

При этом передатчик мограет, в камеру видно.
У вас прошивка какая?

Это HW аппаратная версия.
Ниже FW Написано - там что?
Да, обратите внимание:

Как и в случае работы с регистрами постоянного хранения, в каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке BUSY .

Вот такие команды покажут состояния регистров.
echo “register 5001 $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x01 -r5001 | grep Data:)”
echo “register 5101 $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x01 -r5101 | grep Data:)”
echo “register 5201 $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x01 -r5201 | grep Data:)”
echo “register 5301 $(modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a55 -t0x01 -r5301 | grep Data:)”

Регистры “воспроизведения” автоматически обнуляются по его завершении, проверять не надо.
UPD: поправил адреса регистров.

Да, а какими командами записываете? Обратите внимание - coil, запись командой 0x05.
Попробуйте вот прямо из консоли выполнить, только адрес и порт смените.

Добрый день!
Можно ли упростить запись с одного и того-же пульта в разные устройства wb-mir v2, чтобы не повторять одни и те же действия?
Можно ли копировать с одного устройства wb-mir v2 на другое устройство wb-mir v2 ИК-коды?
Было бы удобно, если можно было бы создавать некую базу своих устройств в ИК-командами, а потом с этой базы заливать уже на устройства wb-mir v2

Да, конечно. Достаточно “прочитать” из банка памяти MIR коды из регистров и записатьт их в банк другого.
Главное - не более максимальной длины пакета за операцию.
Порлучается вот так:

modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x10 -r2000 0x0387 0x01cc 0x0039 0x00ae 0x003a 0x00ae 0x0039 0x003b 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x003a 0x00ae 0x003a 0x00ae 0x0039 0x003b 0x0039 0x003c 0x0039 0x003b 0x0039 0x003b 0x003a 0x003a 0x003a 0x00ae 0x0039 0x00ae 0x003a 0x003b 0x0039 0x003b 0x003a 0x0039 0x003c 0x003a 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x003a 0x003a 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x003a 0x003a 0x003a 0x003a 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x003c 0x0036 0x003b 0x003b 0x003a 0x003a 0x003a 0x0038 0x003f 0x0038 0x0039 0x003b 0x0039 0x00ae 0x003a 0x003a 0x0037 0x00b1 0x0037 0x003d 0x003a 0x003a 0x003a 0x003a 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x003a 0x003b 0x0039 0x003b 0x0037 0x003d 0x003a 0x003a 0x003a 0x003b 0x0039 0x003b 0x0039 0x003b 0x0039 0x00ae


modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x10 -r2110  0x003a 0x003b 0x0039 0x0039 0x003b 0x003b 0x003a 0x003a 0x003a 0x003a 0x003a 0x0039 0x003b 0x003b 0x0039 0x0039 0x003b 0x003b 0x0039 0x003b 0x003a 0x003a 0x003a 0x003b 0x003a 0x003a 0x003a 0x0037 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x003a 0x0039 0x0039 0x003a 0x00ac 0x003a 0x0039 0x0039 0x003a 0x0037 0x003b 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x0039 0x003a 0x0039 0x0039 0x00af 0x0038 0x003d 0x003a 0x00ad 0x003a 0x003a 0x003a 0x003a 0x003a 0x003b 0x0039 0x0039 0x003b 0x0039 0x003b 0x003b 0x0037 0x003d 0x003a 0x003a 0x003a 0x00ae 0x0039 0x003b 0x0039 0x003b 0x0039 0x003b 0x0039 0x003b 0x0039 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

То есть “отображаем” нужный банк команды в регистры RAM, записываем в него команду, отключаем отображение. Все.

Спасибо за ответ! Так то, конечно, много телодвижений, проще, наверно, все таки в каждый раз обучать заново с пульта.

Зато если набор команд стандартный - можно седлать скрипты, и обучать за парау секунд.

Можете сделать пример скрипта?

В этой теме есть ссылка на скрыпты: Запись ик команд в модуль wb-mir - #24 от пользователя Alexandr_B

1 Like