WB-MSx Consumer IR Manual: различия между версиями

Материал из Wiren Board
Строка 9: Строка 9:
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более <code>65535 * 10 мкс = 655350 мкс = 0,655 секунд</code>. Первое число последовательности - длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более <code>65535 * 10 мкс = 655350 мкс = 0,655 секунд</code>. Первое число последовательности - длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.
=== Управление модулем по Modbus ===
=== Управление модулем по Modbus ===
'''Внимание! Номера используемых Modbus регистров менялись, начиная с версии прошивки 3.2.0. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно - смотрите в карте регистров внизу.'''
'''Внимание! Номера используемых Modbus регистров менялись, начиная с версии прошивки 3.2.0. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно - смотрите в [[#Карта регистров флагов (Coils)]].'''


Устройство может хранить <code>number_of_banks</code> ИК-сигналов. Это значение варьируется в зависимости от версии прошивки, но составляет не менее 6. Сигналы нумеруются с 0 до <code>number_of_banks - 1</code>.
Устройство может хранить <code>number_of_banks</code> ИК-сигналов. Это значение варьируется в зависимости от версии прошивки, но составляет не менее 6. Сигналы нумеруются с 0 до <code>number_of_banks - 1</code>.

Версия 19:36, 3 февраля 2017

Назначение

Инфракрасный приёмопередатчик, установленный в устройствах WB-MS/WB-MSW/WB-MSW2 модификации I, предназначен для записи сигналов с бытовых пультов ДУ и дальнейшего управления бытовой техникой, в том числе кондиционерами, телевизорами и т.д.

Внимание! Пока что управление возможно только с небольшого расстояния (до 1 метра).

Принцип работы

С пульта ДУ сигнал записывается ИК-приёмником и хранится в памяти устройства в виде последовательности натуральных чисел, где каждое число - продолжительность логического 0 или 1. В память может быть записано несколько сигналов. Кроме этого, сигнал может быть записан в память без пульта ДУ - передан в виде последовательности чисел по Modbus. Сохранённый сигнал воспроизводится ИК-передатчиком при получении специальной команды по Modbus.

Технические детали

Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более 65535 * 10 мкс = 655350 мкс = 0,655 секунд. Первое число последовательности - длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.

Управление модулем по Modbus

Внимание! Номера используемых Modbus регистров менялись, начиная с версии прошивки 3.2.0. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно - смотрите в #Карта регистров флагов (Coils).

Устройство может хранить number_of_banks ИК-сигналов. Это значение варьируется в зависимости от версии прошивки, но составляет не менее 6. Сигналы нумеруются с 0 до number_of_banks - 1.

Управление ИК-приёмопередатчиком производится через регистры флагов Modbus (полный список можно найти в #Карта регистров флагов (Coils)). Есть 3 типа операций с сигналами:

  • запись сигнала в память с пульта ДУ,
  • воспроизведение сигнала из памяти,
  • редактирование сигнала в памяти.

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

Запись сигнала в память с пульта ДУ

Чтобы записать сигнал под номером i с пульта ДУ в память, запишите 1 в регистр флагов по адресу 5300 + i. Затем направьте пульт ДУ на ИК-приёмник и нажмите кнопку на пульте. После отпускания кнопки, завершите запись сигнала, записав 0 в регистр флагов по адресу 5300 + i.

#Начинаем запись сигнала с номером 1. Устройство подключено к порту /dev/ttyAPP1 и имеет Modbus-адрес 16
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyAPP1 -a16 -t5 -r5301 1
#Нажимаем кнопку на пульте ДУ
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyAPP1 -a16 -t5 -r5301 0
#Завершаем запись сигнала с номером 1

Воспроизведение сигнала из памяти

Чтобы воспроизвести сигнал под номером i из памяти, запишите 1 в регистр флага по адресу 5100 + i. Если сигнал под номером i не был записан ранее, будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу 5100 + i будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.

#Отдаём команду воспроизвести сигнал с номером 1. Устройство подключено к порту /dev/ttyAPP1 и имеет Modbus-адрес 16
root@wirenboard:~# modbus_client --debug -m rtu -b9600 -s2 -pnone /dev/ttyAPP1 -a16 -t5 -r5101 1

Редактирование сигнала в памяти

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

Специальные команды

  • Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу 5000.
  • Чтобы записать сигнал с пульта в регистры хранения, начиная с 2000, не помещая при этом в память - запишите 1 в регистр флага по адресу 5001. Далее действия происходят так же, как описано выше для записи сигнала в память. После прекращения записи в регистрах хранения по адресу 2000 и дальше будет храниться сигнал в виде последовательности чисел. Эту последовательность можно редактировать, как описано выше. Внимание: содержимое этих регистров хранения не сохраняется при отключении питания устройства!
  • Чтобы воспроизвести сигнал из регистров хранения, начиная с 2000, запишите 1 в регистр флага по адресу 5002. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу 5002 будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.

Регистры, связанные с ИК

Карта регистров хранения (Holding Registers)

В процессе наполнения.

Регистр / адрес тип чтение/запись значение по умолчанию формат назначение В модификациях
2000-2509 holding RW Буфер периодов IR-приемопередатчика I

Карта регистров флагов (Coils)

Начальный адрес Количество Назначение В модификациях
5000 1 Очистка всех банков ИК-команд I
5001 1 Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509), без сохранения в банк команд I
5002 1 Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509) I
5100 (в прошивке 3.1.0 и ранее - 0) number_of_banks Воспроизведение ИК-команды из соответствующего банка I
5200 (в прошивке 3.1.0 и ранее - 1000) number_of_banks Чтение и запись в банки команд IR I
5300 (в прошивке 3.1.0 и ранее - 2000) number_of_banks Запись в банк команд IR использую IR-приёмник I