WB-MSx Consumer IR Manual: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
'''Внимание! Пока что управление возможно только с небольшого расстояния (до 1 метра).''' | '''Внимание! Пока что управление возможно только с небольшого расстояния (до 1 метра).''' | ||
=== Принцип работы === | === Принцип работы === | ||
Сигнал с пульта ДУ сигнал записывается ИК-приёмником и хранится в памяти устройства, откуда может быть воспроизведён. Можно хранить несколько сигналов. Также сигнал может быть записан не с пульта ДУ, а передан в виде последовательности чисел по Modbus. Сохранённый сигнал воспроизводится ИК-передатчиком при получении специальной команды по Modbus. | |||
Устройство имеет два режима работы: постоянный и оперативный. | |||
В постоянном режиме записанные команды хранятся в ПЗУ устройства. В устройстве можно хранить не более <code>number_of_banks</code> сигналов (это значение варьируется в зависимости от версии прошивки, но составляет не менее 6). Записанные в ПЗУ сигналы сохраняются при отключении питания. Однако при каждой перезаписи сигнала на новый расходуется лимит ПЗУ - всего можно перезаписать сигнал не более 1000 раз. | |||
В оперативном режиме команда (только одна) находится в оперативной памяти устройства. Она записывается туда Modbus-командой с внешнего устройства (например, контроллера [[Wiren Board]]). Она может быть воспроизведена из оперативной памяти и затем перезаписана новой. Лимит перезаписей ПЗУ при этом не расходуется. При отключении питания команда не сохраняется. | |||
====Технические детали==== | ====Технические детали==== | ||
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 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. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно - смотрите в [[#Карта регистров флагов (Coils)]].''' | '''Внимание! Номера используемых Modbus регистров менялись, начиная с версии прошивки 3.2.0. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно - смотрите в [[#Карта регистров флагов (Coils)]].''' |
Версия 20:00, 3 февраля 2017
Назначение
Инфракрасный приёмопередатчик, установленный в устройствах WB-MS/WB-MSW/WB-MSW2 модификации I, предназначен для записи сигналов с бытовых пультов ДУ и дальнейшего управления бытовой техникой, в том числе кондиционерами, телевизорами и т.д.
Внимание! Пока что управление возможно только с небольшого расстояния (до 1 метра).
Принцип работы
Сигнал с пульта ДУ сигнал записывается ИК-приёмником и хранится в памяти устройства, откуда может быть воспроизведён. Можно хранить несколько сигналов. Также сигнал может быть записан не с пульта ДУ, а передан в виде последовательности чисел по Modbus. Сохранённый сигнал воспроизводится ИК-передатчиком при получении специальной команды по Modbus.
Устройство имеет два режима работы: постоянный и оперативный.
В постоянном режиме записанные команды хранятся в ПЗУ устройства. В устройстве можно хранить не более number_of_banks
сигналов (это значение варьируется в зависимости от версии прошивки, но составляет не менее 6). Записанные в ПЗУ сигналы сохраняются при отключении питания. Однако при каждой перезаписи сигнала на новый расходуется лимит ПЗУ - всего можно перезаписать сигнал не более 1000 раз.
В оперативном режиме команда (только одна) находится в оперативной памяти устройства. Она записывается туда Modbus-командой с внешнего устройства (например, контроллера Wiren Board). Она может быть воспроизведена из оперативной памяти и затем перезаписана новой. Лимит перезаписей ПЗУ при этом не расходуется. При отключении питания команда не сохраняется.
Технические детали
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 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 |