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

Материал из Wiren Board
(Новая страница: «{{DISPLAYTITLE:Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MS/WB-MSW/WB-MSW2}} Управл…»)
 
Строка 1: Строка 1:
{{DISPLAYTITLE:Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MS/WB-MSW/WB-MSW2}}
{{DISPLAYTITLE:Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MS/WB-MSW/WB-MSW2}}
== Управление ==


Управление '''IR-приемопередатчиком''' осуществляется через регистры флагов Modbus (см. [[#Карта регистров флагов (Coils)|карту регистров флагов]]). Устройство может хранить <code>number_of_banks</code> банков команд (это значение может варьироваться в зависимости от сборки). Всего 3 типа операций можно выполнить с IR-приемопередатчиком: чтение/запись, воспроизведение и запись с IR-приёмника. В одно и то же время можно оперировать лишь над одним банком и выполнять только одну функцию. Т.е. среди всех регистров флагов, относящихся к IR-приемопередатчику, только один регистр может быть установлен в единицу. Попытка записать единицу в регистры флагов IR при уже имеющейся единице приведёт к ошибке <code>BUSY</code>. Содержимое банка, с которым в данное время проводится оперирование, отображается в регистры хранения по адресу 2000 (см. [[#Карта регистров хранения (Holding Registers)|карту регистров хранения]]). Значение каждого регистра - продолжительность периода логических нуля или единицы в квантах по 10 микросекунд. Отсюда максимальная длительность одного периода <code>2^16 * 10 мкс = 655360 мск = 0,655 с</code>. Самый первый период соответствует логической единице. Конец последовательности маркируется двумя периодами продолжительностью 0.
Управление '''IR-приемопередатчиком''' осуществляется через регистры флагов Modbus (см. [[#Карта регистров флагов (Coils)|карту регистров флагов]]). Устройство может хранить <code>number_of_banks</code> банков команд (это значение может варьироваться в зависимости от сборки). Всего 3 типа операций можно выполнить с IR-приемопередатчиком: чтение/запись, воспроизведение и запись с IR-приёмника. В одно и то же время можно оперировать лишь над одним банком и выполнять только одну функцию. Т.е. среди всех регистров флагов, относящихся к IR-приемопередатчику, только один регистр может быть установлен в единицу. Попытка записать единицу в регистры флагов IR при уже имеющейся единице приведёт к ошибке <code>BUSY</code>. Содержимое банка, с которым в данное время проводится оперирование, отображается в регистры хранения по адресу 2000 (см. [[#Карта регистров хранения (Holding Registers)|карту регистров хранения]]). Значение каждого регистра - продолжительность периода логических нуля или единицы в квантах по 10 микросекунд. Отсюда максимальная длительность одного периода <code>2^16 * 10 мкс = 655360 мск = 0,655 с</code>. Самый первый период соответствует логической единице. Конец последовательности маркируется двумя периодами продолжительностью 0.
Строка 16: Строка 18:


Банки команд нумеруются с нуля (0).
Банки команд нумеруются с нуля (0).
== Регистры, связанные с ИК ==
=== Карта регистров хранения (Holding Registers)===
В процессе наполнения.
{|  border="1" class="wikitable" style="text-align:center"
!Регистр / адрес
!тип
!чтение/запись
!значение по умолчанию
!формат
!назначение
!В модификациях
|-
| 0 || input || R || 0x7FFF ||°C × 10 (signed)||Температура с встроенного датчика
|T
|-
|1|| input || R || 0xFFFF ||<blockquote>%RH × 10 (signed)</blockquote>||Относительная влажность с встроенного датчика
|H
|-
|2
|input
|R
|<nowiki>-</nowiki>
|lux
|Освещённость с встроенного датчика
|L
|-
|3
|input
|R
|<nowiki>-</nowiki>
|dB
|Уровень шума
|S
|-
|4
|input
|R
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|
|-
|5
|input
|R
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|
|-
|6
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с внешнего датчика
|D
|-
|7
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с внешнего датчика
|D
|-
|||||||||||
|
|-
|||||||||||
|
|-
|||||||||||
|
|-
|90||holding||RW||20 (200 ms)||× 10 ms||Время усреднения освещённости
|<blockquote>L</blockquote>
|-
|91||holding||RW||20 (200 ms)||× 10 ms
||Время усреднения шума
|S
|-
|100
||input
||R||||raw_val * 16||Сырое усреднённое значение с АЦП микрофона
|S
|-
| 120 (0x78) || holding || RW || 0 ||  отличное от 0 || запись в регистр вызывает перезагрузку МК без сохранения состояния
|все
|-
| 121 (0x79) || input || R || - ||  mV || текущее напряжение питания модуля
|все
|-
| 128 (0x80) || holding || RW || 1 || || Modbus-адрес устройства
|все
|-
| 200-206 || input || R || {'W','B','M','S',0,0} ||  || сигнатура
|все
|-
| 220-241 || input || R || ||  __date__ __time__||  дата сборки прошивки
|все
|-
| 250-269 || input || R || ||  строка, null-terminated ||  версия прошивки
|все
|-
| 270-271 || input || R || ||  32-bit unsigned int ||  уникальный идентификатор (S/N)
|все
|-
| 2000-2509 || holding || RW || || || Буфер периодов IR-приемопередатчика
|I
|-
|}
===Карта регистров флагов (Coils)===
{|  border="1" class="wikitable" style="text-align:center"
!Начальный адрес || Количество || Назначение
!В модификациях
|-
| 0 || number_of_banks || style="text-align:left" |Воспроизведение ИК-команды из соответствующего банка
|I
|-
| 1000 || number_of_banks|| style="text-align:left" |Чтение и запись в банки команд IR
|I
|-
| 2000 || number_of_banks || style="text-align:left" |Запись в банк команд IR использую IR-приёмник
|I
|-
| 5000 || 1 || style="text-align:left" |Очистка всех банков ИК-команд
|I
|-
| 5001 || 1 || style="text-align:left" |Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509), без сохранения в банк команд
|I
|-
| 5002 || 1 || style="text-align:left" |Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509)
|I
|-
|}

Версия 12:24, 2 сентября 2016


Управление

Управление IR-приемопередатчиком осуществляется через регистры флагов Modbus (см. карту регистров флагов). Устройство может хранить number_of_banks банков команд (это значение может варьироваться в зависимости от сборки). Всего 3 типа операций можно выполнить с IR-приемопередатчиком: чтение/запись, воспроизведение и запись с IR-приёмника. В одно и то же время можно оперировать лишь над одним банком и выполнять только одну функцию. Т.е. среди всех регистров флагов, относящихся к IR-приемопередатчику, только один регистр может быть установлен в единицу. Попытка записать единицу в регистры флагов IR при уже имеющейся единице приведёт к ошибке BUSY. Содержимое банка, с которым в данное время проводится оперирование, отображается в регистры хранения по адресу 2000 (см. карту регистров хранения). Значение каждого регистра - продолжительность периода логических нуля или единицы в квантах по 10 микросекунд. Отсюда максимальная длительность одного периода 2^16 * 10 мкс = 655360 мск = 0,655 с. Самый первый период соответствует логической единице. Конец последовательности маркируется двумя периодами продолжительностью 0.

Для того, чтобы прочитать содержимое банка i и/или внести изменение в него, необходимо записать единицу в регистр флагов по адресу 1000 + i. Далее, если необходимо прочитать содержимое банка, нужно прочитать регистры хранения, начиная с адреса 2000. Конец последовательности определяется маркером из двух последовательных нулей, как это было сказано выше. Если банк пуст, в первых двух регистрах (2000 и 2001) будут храниться нули. Для внесения изменений в последовательность нужно записать данные в интересующие регистры с помощью команд WRITE_SINGLE_REGISTER и WRITE_MULTI_REGISTERS. В конце изменённой последовательности всё также должен быть маркер конца последовательности. Для удаления содержимого банка необходимо записать в первые два регистра нули (2000 и 2001). Для фиксации изменений и просто завершения операции чтения банка i необходимо записать ноль в регистр флагов по адресу 1000 + i.

Для того, чтобы воспроизвести команду, хранящуюся в банке i, необходимо записать единицу в регистр флагов по адресу i. В случае отсутствия команды в банке i будет возвращена ошибка. Пока идёт воспроизведение, регистр флага по адресу i будет установлен в единицу. Никакие другие операции с IR-приемопередатчиком по Modbus не будут доступны.

Для того, чтобы записать команду с пульта дистанционного управления (ПДУ) в банк i, необходимо записать единицу в регистр флагов по адресу 2000 + i. После чего направьте ПДУ на IR-приёмник и нажмите кнопку на пульте. После того, как отпустите кнопку, необходимо записать ноль в регистр флагов по адресу 2000 + i. Остановка записи может прекратиться самостоятельно, если буфер команды будет заполнен. Тогда регистр флагов по адресу 2000 + i самостоятельно установится в ноль. После записи команды ПДУ в банк i, можно читать, изменять и воспроизводить эту команду, как это описано выше.

Для того, чтобы записать команду с пульта дистанционного управления (ПДУ) в регистры хранения без записи в банк необходимо установить регистр флага по адресу 5001 в единицу. Далее действия происходят как описано выше. После прекращения записи в регистрах хранения по адресу 2000 и дальше будет храниться команда ПДУ, конец которой будет маркирован двумя последовательными нулями.

Для того, чтобы воспроизвести команду, хранящуюся в регистрах хранения, необходимо записать единицу в регистр флагов по адресу 5002. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение, регистр флага по адресу 5002 будет установлен в единицу. Никакие другие операции с IR-приемопередатчиком по Modbus не будут доступны.

Для того, чтобы очистить все банки команд, достаточно записать единицу в регистр флагов по адресу 5000.

Банки команд нумеруются с нуля (0).

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

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

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

Регистр / адрес тип чтение/запись значение по умолчанию формат назначение В модификациях
0 input R 0x7FFF °C × 10 (signed) Температура с встроенного датчика T
1 input R 0xFFFF

%RH × 10 (signed)

Относительная влажность с встроенного датчика H
2 input R - lux Освещённость с встроенного датчика L
3 input R - dB Уровень шума S
4 input R - - -
5 input R - - -
6 input R 0x7FFF °C × 16 (signed) Температура с внешнего датчика D
7 input R 0x7FFF °C × 16 (signed) Температура с внешнего датчика D
90 holding RW 20 (200 ms) × 10 ms Время усреднения освещённости

L

91 holding RW 20 (200 ms) × 10 ms Время усреднения шума S
100 input R raw_val * 16 Сырое усреднённое значение с АЦП микрофона S
120 (0x78) holding RW 0 отличное от 0 запись в регистр вызывает перезагрузку МК без сохранения состояния все
121 (0x79) input R - mV текущее напряжение питания модуля все
128 (0x80) holding RW 1 Modbus-адрес устройства все
200-206 input R {'W','B','M','S',0,0} сигнатура все
220-241 input R __date__ __time__ дата сборки прошивки все
250-269 input R строка, null-terminated версия прошивки все
270-271 input R 32-bit unsigned int уникальный идентификатор (S/N) все
2000-2509 holding RW Буфер периодов IR-приемопередатчика I

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

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