WB-MSx Consumer IR Manual/en: различия между версиями
Admin (обсуждение | вклад) |
(Новая страница: «{| border="1" class="wikitable" style="text-align:center" !Starting address || Type || Quantity || Purpose || In modifications |- | 5000 || coil|| 1 || style="tex…») |
||
(не показано 9 промежуточных версий 1 участника) | |||
Строка 28: | Строка 28: | ||
'''Warning!''' Numbers used Modbus registers have changed since firmware version '''3.2.0'''. The instructions stated the new numbers of registers. If you are using a device with older firmware, the general principle remains the same, but the numbers of the registers are shifted; as it is — see the [[#Map registers, flags, and inputs (Inputs and Coils)|Map registers, flags, and inputs (Coils and Inputs)]]. A full description of IR device registers can be found in this article under [[#Register map|Register map]]. | '''Warning!''' Numbers used Modbus registers have changed since firmware version '''3.2.0'''. The instructions stated the new numbers of registers. If you are using a device with older firmware, the general principle remains the same, but the numbers of the registers are shifted; as it is — see the [[#Map registers, flags, and inputs (Inputs and Coils)|Map registers, flags, and inputs (Coils and Inputs)]]. A full description of IR device registers can be found in this article under [[#Register map|Register map]]. | ||
At the physical level, the module is connected via [[RS-485/en| RS-485]] interface. Modbus RTU Protocol is used to control the devices. In Wiren Board devices, Modbus data is transmitted over RS-485 communication lines. See the [[Протокол Modbus/en|Modbus Protocol]] page for details. Modbus-address of the device is set at the factory and marked on the label. The address can be changed programmatically. | At the physical level, the module is connected via [[RS-485/en| RS-485]] interface. Modbus RTU Protocol is used to control the devices. In Wiren Board devices, Modbus data is transmitted over RS-485 communication lines. See the [[Протокол Modbus/en|Modbus Protocol]] page for details. Modbus-address of the device is set at the factory and marked on the label. The address can be changed programmatically. Details refer to the [[#Modbus control| Modbus control]]. | ||
In devices with firmware version "'3.1.0"' and later it is also possible to change the settings of data exchange parameters — see [[# | In devices with firmware version "'3.1.0"' and later it is also possible to change the settings of data exchange parameters — see [[#register Map|Modbus register map]]. | ||
The control of the IR receiver is made through the flags of Modbus registers; a full list can be found in the description of the map registers. There are 3 types of operations with signals: | The control of the IR receiver is made through the flags of Modbus registers; a full list can be found in the description of the map registers. There are 3 types of operations with signals: | ||
Строка 68: | Строка 68: | ||
=== Recording the signal to the RAM from the remote control === | === Recording the signal to the RAM from the remote control === | ||
To write a signal (only one) from the remote control to the RAM without putting it in the ROM - write 1 in the flag register at <code>5001</code>. Further actions occur in the same way as described above to record the signal in ROM. After the recording is stopped in the storage registers at <code>2000</code>, the signal will be stored as a sequence of numbers. You can edit this sequence as described above. Note: the contents of these storage registers are not stored when the device is powered off! | To write a signal (only one) from the remote control to the RAM without putting it in the ROM - write 1 in the flag register at <code>5001</code>. Further actions occur in the same way as described above to record the signal in ROM. After the recording is stopped in the storage registers at <code>2000</code>, the signal will be stored as a sequence of numbers. You can edit this sequence as described above. Note: the contents of these storage registers are not stored when the device is powered off! | ||
=== Playing a signal from memory === | = = = = Playing a signal from memory === | ||
To play the signal from memory, write 1 to the flag register at <code>5002</code>. The signal recorded in the storage registers starting with <code>2000</code>will be played. In the absence of the marker of the end of the command will return an error. While the signal is playing, the flag register at <code>5002</code> will be set to 1 and then set to 0. While the signal is being played, no other operations with the IR transceiver via Modbus will be available. | To play the signal from memory, write 1 to the flag register at <code>5002</code>. The signal recorded in the storage registers starting with <code>2000</code>will be played. In the absence of the marker of the end of the command will return an error. While the signal is playing, the flag register at <code>5002</code> will be set to 1 and then set to 0. While the signal is being played, no other operations with the IR transceiver via Modbus will be available. | ||
The control of the IR receiver is made through the Modbus registers flags (a full list can be found in [[# | The control of the IR receiver is made through the Modbus registers flags (a full list can be found in [[#Coils|Coils]]). There are 3 types of operations with signals: | ||
* entry signal in the memory with the remote control, | * entry signal in the memory with the remote control, | ||
* play a signal from memory, | * play a signal from memory, | ||
Строка 108: | Строка 108: | ||
|Temperature from external sensor | |Temperature from external sensor | ||
|- | |- | ||
| 110 || holding || RW || 96 (0x60) || baud rate / 100 || RS-485 port speed, "'divided by 100"'. Permissible speeds: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 <br>([[UART_Communication_Settings | | 110 || holding || RW || 96 (0x60) || baud rate / 100 || RS-485 port speed, "'divided by 100"'. Permissible speeds: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 <br>([[UART_Communication_Settings|configure RS-485 communication parameters for wiren Board modbus devices]]) | ||
|- | |- | ||
| 111 || holding || RW|| 0 || || configure the RS-485 port parity bit. Valid values: 0 - no parity bit (none), 1 - odd (odd), 2 - even (even) | | 111 || holding || RW|| 0 || || configure the RS-485 port parity bit. Valid values: 0 - no parity bit (none), 1 - odd (odd), 2 - even (even) | ||
Строка 154: | Строка 154: | ||
|} | |} | ||
В последних версиях прошивок значение number_of_banks равняется 80, то есть, например, регистры размера команд имеют значения от 5400 до 5479. | |||
== | == Управление модулем из командной строки == | ||
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]]. | |||
=== | === Пример чтения регистров === | ||
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный ответ из шестнадцатеричных цифр в символьную строку: | |||
<syntaxhighlight lang="bash">echo -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 \ | <syntaxhighlight lang="bash">echo -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 \ | ||
Строка 166: | Строка 166: | ||
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight> | grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight> | ||
В результате выполнения команды получаем строку, например '''WBMIR'''. В этом примере модуль WB-MIR имеет Modbus-адрес 1. |
Версия 11:37, 19 июля 2019
Instructions for IR transceiver settings for WB-MS, WB-MSW, WB-MIR devices
Purpose
Infrared transceiver, installed in devices WB-MS, WB-MSW modification I and WB-MIR, is designed to record signals from IR remote controls of household devices and further control of household appliances: air conditioners, TVs, etc. Modules WB-MIR V. 2 and WB-MSW V. 3 supports about 80 IR commands (depends on the amount of memory).
Warning! All modules (except for WB-MSW v.3) IR control is only possible with short distances (< 1 m).
Operating principle
The signal from the remote control is recorded by the IR receiver and stored in the device memory, where it can be played on command from the controller or other control devices. All signals in the devices are stored in permanent memory (ROM) and one in the operational buffer (RAM). The IR signal can also be recorded not from the remote control, but transmitted as a sequence of numbers via Modbus. The stored signal is reproduced by the IR transmitter when the corresponding Modbus command is received.
The device has two modes of operation: permanent (working with ROM-buffers) and operational (RAM-buffer).
In continuous mode (ROM), the recorded signals are stored in the Flash ROM of the device and stored when the power is turned off. Every time the signal is overwritten, the physical resource of the device's processor ROM is consumed — in total, the signal can be overwritten no more than 1000 times.
Method of signal presentation and storage
The signal is stored in the device memory as a sequence of natural numbers (each from 0 to 65535), where each number is the duration of the logical 0 or 1 in the signal in quanta of 10 microseconds. Therefore, the maximum duration of each zero or unit must be no more than 65535 * 10 µs = 655350 µs = 0.655 seconds
. The first number of the sequence is the duration of the first logical unit. The end of the sequence is marked with two periods of duration 0.
In operating mode, the IR signal (only one) is stored in the device's memory. It is recorded there from the control panel when the corresponding Modbus command is given or by writing values to the appropriate registers from an external Modbus device (e.g. from the controller Wiren Board 6/en), and the IR signal can be copied from a Flash ROM. The IR signal can be played from the RAM and then overwritten; the ROM resource is not consumed. When the power is turned off, the signal is not stored in the RAM.
The latest firmware versions of WB-MIR v.2 and WB-MSW v.3 sequences of commands are compressed by a special algorithm to provide a higher storage density. The sequences are unzipped before playback.
Modbus module control
Warning! Numbers used Modbus registers have changed since firmware version 3.2.0. The instructions stated the new numbers of registers. If you are using a device with older firmware, the general principle remains the same, but the numbers of the registers are shifted; as it is — see the Map registers, flags, and inputs (Coils and Inputs). A full description of IR device registers can be found in this article under Register map.
At the physical level, the module is connected via RS-485 interface. Modbus RTU Protocol is used to control the devices. In Wiren Board devices, Modbus data is transmitted over RS-485 communication lines. See the Modbus Protocol page for details. Modbus-address of the device is set at the factory and marked on the label. The address can be changed programmatically. Details refer to the Modbus control.
In devices with firmware version "'3.1.0"' and later it is also possible to change the settings of data exchange parameters — see Modbus register map.
The control of the IR receiver is made through the flags of Modbus registers; a full list can be found in the description of the map registers. There are 3 types of operations with signals:
- entry signal in the memory with the remote control,
- play a signal from memory,
- edit the signal in memory.
Only one operation can be performed on only one signal at a time. Since during the execution of any operation one of the registers of flags is set to 1, and after the operation is completed there is set to 0, at any time among all the registers of flags related to the IR transceiver, only one register can be set to one. Attempting to write 1 to IR-related flag registers with an existing unit will result in a BUSY
error.
Constant mode
In constant mode, the IR commands are stored in the device memory and are available after a power reset. Each command is stored in a separate "Bank" of memory. The number of memory banks depends on the device flashing. Prior to firmware 3.7.2 inclusive, the devices had 7 memory banks of IR commands. Starting with version 4.4.0 32 banks are supported. Intermediate versions allowed to record up to 80 commands, but in some cases did it incorrectly.
Signal record in ROM with the remote control
Note: For more about work in command line mode, see the section Control module from the command line.
To write the signal number i
from the remote control to memory, write 1 to the flag register at 5300 + i
. Then point the remote control at the IR receiver and press the button on the remote. After releasing the button, complete the signal recording by writing 0 to the flag register at 5300 + i
.
#Start recording signal number 1. The device connected to port /dev/ttyRS485-1 has Modbus 16
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 1
#Direct the remote to the receiver window and press the button on the remote control
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 0
#Finish the entry signal number 1
Playback of a signal from ROM
To play back the signal number i
from memory, write 1 to the flag register at 5100 + i
. If the signal number i
has not been recorded before, an error will be returned. While the signal is playing, the flag register at 5100 + i
will be set to 1 and then set to 0. While the signal is being played, no other operations with the IR transceiver via Modbus will be available.
#Give the command to play the signal with the number 1. The device connected to port /dev/ttyRS485-1 has Modbus 16
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1
Edit the signal in ROM
To edit the signal number i
or record it via Modbus (without remote control), write 1 in the flag register at 5200 + i
. After that, the signal in the form of a sequence of natural numbers (see the figure "Example of the contents of the WB-MIR operational buffer") will be written to the consecutive storage registers, starting with the register 2000
. At the end of the sequence there will be two consecutive storage registers containing 0. If the signal number i
has not been recorded before, the storage registers 2000
and 2001
will contain 0. To make changes to the sequence (including writing a Modbus command), you must write the correct sequence to the storage registers using the WRITE_SINGLE_REGISTER
and WRITE_MULTI_REGISTERS
commands. At the end of the modified sequence, there must also be an end-of-sequence marker - two consecutive storage registers containing 0. To remove the signal, write 0 in the first two storage registers (2000
and 2001
). After editing, write 0 in the flag register at 5200 + i
. Until the flags register at the address 5200 + i
will not be a 0, no other operations, including over other signals will not be available.
Removing all signals from ROM
To remove all recorded signals, write 1 to the flag register at 5000
.
Operating mode
Recording the signal to the RAM from the remote control
To write a signal (only one) from the remote control to the RAM without putting it in the ROM - write 1 in the flag register at 5001
. Further actions occur in the same way as described above to record the signal in ROM. After the recording is stopped in the storage registers at 2000
, the signal will be stored as a sequence of numbers. You can edit this sequence as described above. Note: the contents of these storage registers are not stored when the device is powered off!
= = = Playing a signal from memory ==
To play the signal from memory, write 1 to the flag register at 5002
. The signal recorded in the storage registers starting with 2000
will be played. In the absence of the marker of the end of the command will return an error. While the signal is playing, the flag register at 5002
will be set to 1 and then set to 0. While the signal is being played, no other operations with the IR transceiver via Modbus will be available.
The control of the IR receiver is made through the Modbus registers flags (a full list can be found in Coils). There are 3 types of operations with signals:
- entry signal in the memory with the remote control,
- play a signal from memory,
- edit signal in memory.
- in future versions it is expected to implement direct write from the operational buffer to ROM.
As in the case of registers of the permanent storage every time you can only perform one operation only one signal. Since during the execution of any operation one of the registers of flags is set to 1, and after the operation is completed there is set to 0, at any time among all the registers of flags related to the IR transceiver, only one register can be set to one. Attempting to write 1 to IR-related flag registers with an existing unit will result in a BUSY
error
Removing all signals from permanent memory
To delete all recorded signals, write 1 to the flag register at 5000
.
Register map
Holding Registers
Register/ address | type | read-write | default | format | appointment |
---|---|---|---|---|---|
6 | input | R | 0x7FFF — sensor not connected or defective | °C × 16 (signed) | Temperature from external sensor |
7 | input | R | 0x7FFF — sensor is not connected or defective | °C × 16 (signed) | Temperature from external sensor |
110 | holding | RW | 96 (0x60) | baud rate / 100 | RS-485 port speed, "'divided by 100"'. Permissible speeds: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 (configure RS-485 communication parameters for wiren Board modbus devices) |
111 | holding | RW | 0 | configure the RS-485 port parity bit. Valid values: 0 - no parity bit (none), 1 - odd (odd), 2 - even (even) | |
112 | holding | RW | 2 | number of stop bits of RS-485 port. Valid values: 1, 2 | |
120 (0x78) | holding | RW | 0 | non-0 | writing to the register causes the module to restart without saving state |
121 (0x79) | input | R | - | mV | current supply voltage of the module |
128 (0x80) | holding | RW | 1 | Modbus device address | |
200-206 | input | R | | | signature | ||
220-241 | input | | | | _date__ _time__ | firmware build date | ||
250-269 | input | | | / string, null-terminated | firmware version | ||
270-271 | input | R | 32-bit unsigned int | unique identifier (S/N) | |
2000-2509 | holding | RW | IR transceiver period Buffer (2000-2201 in WB-MIR firmware versions up to 4.1.0) |
Map registers, flags, and inputs (Inputs and Coils)
Starting address | Type | Quantity | Purpose | In modifications |
---|---|---|---|---|
5000 | coil | 1 | Clear all IR command banks | I |
5001 | coil | 1 | Write IR commands from IR receiver to Modbus storage registers (2000-2509) (RAM), without saving to command Bank | I |
5002 | coil | 1 | Play IR command from Modbus storage registers (2000-2509) (RAM) | I |
5100 (firmware 3.1.0 and earlier - 0) | coil | number_of_banks | Play IR command from the corresponding ROM Bank (Play) | I |
5200 (firmware 3.1.0 and earlier - 1000) | coil | number_of_banks | edit IR commands (ROM) with copying to RAM (ROM -> RAM) | I |
5300 (in firmware 3.1.0 and earlier - 2000) | coil | number_of_banks | Write to IR command Bank using IR receiver (Learn) | I |
5400 | input | number_of_banks | IR command data Size in bytes | I |
В последних версиях прошивок значение number_of_banks равняется 80, то есть, например, регистры размера команд имеют значения от 5400 до 5479.
Управление модулем из командной строки
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице Modbus-client. Доступ к командной строке описан в статье SSH.
Пример чтения регистров
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный ответ из шестнадцатеричных цифр в символьную строку:
echo -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 \
-a1 -t0x03 -r200 -c 6 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'`
В результате выполнения команды получаем строку, например WBMIR. В этом примере модуль WB-MIR имеет Modbus-адрес 1.