Соединили устройство WB-MIR v.2 с компьютером через АС-4.При отправке команд по ModBus RTU согласно данной таблице Карта регистров WB-MIR v2 — Wiren Board все ответы приходят корректно и успешно.
Чтобы отредактировать сигнал под номером i или записать его по Modbus (без пульта ДУ), запишите 1 в регистр флага по адресу 5200 + i. После этого сигнал в виде последовательности натуральных чисел (смотрите рисунок "Пример содержимого оперативного буфера WB-MIR") будет записан в подряд идущие регистры хранения, начиная с регистра 2000. В конце последовательности будут два подряд идущих регистра хранения, содержащих 0. Если сигнал под номером i не был записан ранее, в регистрах хранения 2000 и 2001 будут находиться 0
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 .
Да, а какими командами записываете? Обратите внимание - coil, запись командой 0x05.
Попробуйте вот прямо из консоли выполнить, только адрес и порт смените.
Добрый день!
Можно ли упростить запись с одного и того-же пульта в разные устройства wb-mir v2, чтобы не повторять одни и те же действия?
Можно ли копировать с одного устройства wb-mir v2 на другое устройство wb-mir v2 ИК-коды?
Было бы удобно, если можно было бы создавать некую базу своих устройств в ИК-командами, а потом с этой базы заливать уже на устройства wb-mir v2
Да, конечно. Достаточно “прочитать” из банка памяти MIR коды из регистров и записатьт их в банк другого.
Главное - не более максимальной длины пакета за операцию.
Порлучается вот так: