WB-MIR v2 - Modbus IR Remote Control: различия между версиями

Материал из Wiren Board
(не показано 211 промежуточных версий 14 участников)
Строка 1: Строка 1:
<languages/>
[[File:WB-MIR-sample.png |300px|thumb|right| Модуль WB-MIR]]
{{DISPLAYTITLE:Устройство ИК-управления WB-MIR v.2}}
[[File:Wb-MIR-sample_internals.png |300px|thumb|right| Внутренее устройство модуля. Видны подписи контактов на разъёмах]]
[[Файл:M-IR front 2.png |200px|thumb|right| Модуль WB-MIR v.2. IR Learn — ИК-приёмник для записи команд]]
[[File:Wb-mir-ir-transmitter.png |300px|thumb|right| Отверстие ИК-передатчика на задней стороне модуля]]
'''[https://wirenboard.com/ru/product/WB-MIR/ Купить в интернет-магазине]'''
 
{{PDF}}
<!--T:1-->
'''Эта страница описывает устройство WB-MIR v.2, которое выпускается с 11.2017. Описание предыдущей модели: [[WB-MIR v1 - Modbus IR Remote Control|WB-MIR v.1]].'''
== Назначение==
[[File:Wbmir_transmitter_mount.png|300px|thumb|right|Пример монтажа ИК-излучателя модуля WB-MIR v.2 на приемнике кондиционера под декоративной крышкой]]
Обучаемый модуль с ИК-приёмопередатчиком для управления по ИК-каналу различными устройствами, включая кондиционеры, телевизоры и т.п.
Обучаемый модуль с ИК-приёмопередатчиком для управления по ИК-каналу различными устройствами, включая кондиционеры, телевизоры и т.п.
Управление производится с контроллера или ПК по шине RS-485 командами по протоколу Modbus RTU.
Управление модулем производится с контроллера или ПК по шине RS-485 командами по протоколу MODBUS.
== Меры безопасности ==
 
{{Wbincludes:Safety|low_voltage=true}}
== Входы ==
Питание модуля подается на винтовые зажимы V+ и GND, линия RS-485 подключается к входам A и B. Внешний датчик температуры DS18B20 подключается по паразитной схеме питания, когда выводы +5В и GND объединены и подключены к клемме GND, вывод данных подключается к зажиму 1-W.
D некоторых моделях присутствует внутренний датчик температуры DS18B20 в корпусе TO-92, распаянный в верхней левой части платы модуля (вид сверху корпуса датчика нанесен в этом месте шелкографией).
 
==Монтаж==
Модуль монтируется на кондиционер на двусторонний скотч таким образом, чтобы небольшое отверстие излучающего диода с обратной стороны располагалось бы напротив ИК-приемника кондиционера, не закрывая приемник от основного пульта устройства. Положение подбирается экспериментальным путем ввиду огромного множества конструкций корпусов кондиционеров. То же относится и к любым бытовым устройствам, управляемым по ИК-каналу.


== Технические характеристики == <!--T:7-->
== Технические характеристики ==
{| class="wikitable"
{| class="wikitable"
! style="text-align: center;" | Параметр
! style="text-align: center;" | Параметр
Строка 21: Строка 21:
|-
|-
|Напряжение питания
|Напряжение питания
|9 — 28 В постоянного тока
|9 — 24 В постоянного тока
|-
|-
|Потребляемая мощность
|Потребляемая мощность
|
|
0.1 Вт  
0,1 Вт в холостом режиме, 0,1 Вт при передаче ИК-команд
|-
|-
|Дальнодействие передатчика
|Дальнодействие передатчика
|< 1 м
| <
|-
|-
| Внешние датчики
| Внешние датчики
| Можно подключить цифровой датчик температуры DS18B20.
| Возможность подключения цифрового датчика температуры DS18B20.
|-
! colspan="2" |Управление
|-
|Интерфейс управления
|RS-485
|-
|Изоляция интерфейса
|Неизолированный
|-
|-
! colspan="2" | ИК-команды
|Протокол обмена данными
|Modbus RTU, адрес задается программно, заводские настройки указаны на наклейке
|-
|-
| Частота передатчика
|Параметры интерфейса RS-485
| 38 кГц
|  
скорость 9600 бит/с; данные — 8 бит; четность N; стоп-биты 2;
Начиная с версии прошивки '''3.1.0''' параметры интерфейсы могут быть настроены программно:
*Скорость: 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200 бит/с
*Данные: 8 бит
*Проверка чётности: нет (по умолчанию), 1 - нечётный (odd), 2 - чётный (even)
*Стоповых бит: 2 (по умолчанию), 1
|-
|-
|Количество запоминаемых команд
! colspan="2" |Габариты
| 80
|-
|-
|Длительность команд
| Габариты
| Максимальная длина команды — до 1000 символов (508 символов до прошивки 4.22.0).
| 45x35x14 мм
Каждый регистр кодирует длительность высокого или низкого уровня сигнала (последовательно) в микросекундах.
|-
|-
{{Wbincludes:Control}}
! colspan="2" |Условия эксплуатации
{{Wbincludes:Operating conditions}}
{{Wbincludes:Klemmy. Input}}
! colspan="2" | Габариты
|-
|-
| Д x Ш x В
| Температура воздуха
|
| -40°С до +80°С
40x15x11 мм; длина разъема кабеля передатчика добавляет +30 мм к ширине корпуса
|-
|-
{{Wbincludes:Weight}} 25 г
| Относительная влажность воздуха
| до 98%,без конденсата влаги
|}
|}


== Общий принцип работы ==
== Принцип работы ==
Записываете управляющий сигнал с пульта дистанционного управления устройством (ПДУ) в память модуля и потом воспроизво&#x301;дите его.


Для записи сигнала направьте ПДУ на ИК-приёмник модуля, который подписан как '''IR learn'''. Для передачи управляющего сигнала, подключите к входу '''IR out''' (3.5мм) внешний ИК-передатчик, который нужно разместить на ИК-приёмнике управляемого устройства.
Сигнал с пульта ДУ записывается ИК-приёмником и хранится в памяти устройства, откуда может быть воспроизведён. В текущей модификации устройство может хранить до 7 сигналов в постоянной памяти и один — в оперативном буфере. ИК-сигнал может быть также записан не с пульта ДУ, а передан в виде последовательности чисел по Modbus. Сохранённый сигнал воспроизводится ИК-передатчиком при получении специальной команды по Modbus.


К входу '''1W''' можно подключить внешний датчик температуры [https://wirenboard.com/product/1wire-DS18B20/ DS18B20] или [[#Режим работы цифрового входа |изменить режим входа]] и использовать его как счётный вход. Сигнал с датчика удобно использовать для контроля за состоянием управляемых устройств с помощью правил [[wb-rules]] или сценариев [[Node-Red]]. Например, можно настроить включение/отключение кондиционера в зависимости от температуры с датчика DS18B20.
Устройство имеет два режима работы: постоянный и оперативный.


Подробнее о записи и воспроизведении сигналов читайте в статье [[WB-MSx_Consumer_IR_Manual|Инструкция по работе с ИК-приёмопередатчиком]].
В постоянном режиме записанные сигналы хранятся в Flash-ПЗУ устройства. В устройстве можно хранить не более 7 сигналов (в текущей версии прошивки 3.4.0). Сигналы, записанные в ПЗУ, сохраняются при отключении питания. Стоит отметить. что при каждой перезаписи сигнала расходуется физический ресурс ПЗУ процессора устройства — всего можно перезаписать сигнал не более 1000 раз.


==Монтаж== <!--T:6-->
В оперативном режиме сигнал (только один) находится в оперативной памяти устройства. Он записывается туда Modbus-командой с внешнего устройства (например, контроллера [[Wiren Board]]). Сигнал может быть воспроизведён из оперативной памяти и затем перезаписан; ресурс ПЗУ при этом не расходуется. При отключении питания сигнал в оперативной памяти не сохраняется.
[[Image: WM-MIR_1wire.png |250px|thumb|right| Подключение датчика DS18B20 и датчика с выходом «сухой контакт»]]
Модуль устанавливается рядом или внутри корпуса управляемого устройства, например, кондиционера. Если планируется дальнейшее обучение или переобучение WB-MIR v.2, то расположите модуль в доступном месте. ИК-передатчик, вынесенный на проводе длиной ~140 см, крепится рядом с ИК-приемником управляемого устройства на двусторонний скотч (в комплекте). Не загораживайте ИК-приемник устройства полностью, чтобы сохранить управление с пульта. Проверьте устойчивую передачу ИК-команд.


{{Wbincludes:Mount "V+ GND A B"}}
==Способ хранения сигнала==
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более <code>65535 * 10 мкс = 655350 мкс = 0,655 секунд</code>. Первое число последовательности — длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.


Внешний датчик температуры [[1-Wire | DS18B20]] подключается к WB-MIR v.2 по паразитной схеме питания, когда выводы датчика +5В и GND объединены и подключены к клемме GND, вывод данных подключается к клемме 1W.


Также ко входу 1-Wire можно подключить датчик с выходом типа «сухой контакт». При подключении такого датчика нужно переключить режим [[#Режим работы цифрового входа | работы входа]] 1-Wire на «дискретный».
== Обучение и использование модуля ==


==Представление в веб-интерфейсе контроллера Wiren Board==
Подробное описание и использования модуля, а также карта регистров, описаны в разделе [[WB-MSx_Consumer_IR_Manual]].


=== Выбор шаблона ===
=== Дополнительные Функции===
{{WebUIAddDevice
| template=WB-MIR v.2
}}
=== Управление устройством и просмотр значений ===
{{Wbincludes:WebUIControlDevice}}


<!--T:22-->
'''Смена адреса''' производится широковещательный (slave_id 0) командой записи (WRITE_SINGLE_REGISTER) в holding register с адресом 128 (0x80).
Рассмотрим основные органы управления WB-MIR v.2 и их назначение.


<!--T:23-->
По адресу 200 лежит '''сигнатура''' длинной 6 байт. Сигнатура уникальна для каждой модели устройства и позволяет идентифицировать модель.
{| class="wikitable"
Для получения сигнатуры нужно выполнить READ_HOLDING_REGISTERS адрес 200 длина 6. 
! Название элемента управления
Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается ошибка 3.
!Назначение
 
== Управление по Modbus ==
 
Подробно о работе с модулем по протоколу Modbus написано в разделе [[Sensors_Modbus_Management|Управление датчиками Wirenboard по протоколу Modbus]].
Карта регистров устройства выглядит следующим образом:
 
=== Карта регистров хранения (Holding Registers)===
 
{| border="1" class="wikitable" style="text-align:center"
!Регистр/ адрес
!тип
!чтение/ запись
!значение по умолчанию
!формат
!назначение
|-
|6
|input
|R
|0x7FFF — датчик не подключен или неисправен
|°C × 16 (signed)
|Температура с внешнего датчика
|-
|7
|input
|R
|0x7FFF — датчик не подключен или неисправен
|°C × 16 (signed)
|Температура с внешнего датчика
|-
| 110 || holding || RW || 96 (0x60) ||  baud rate / 100 || скорость порта RS-485, '''делённая на 100'''. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
|-
| 111 || holding || RW || 0 || || настройка бита чётности порта RS-485. Допустимые значения: 0 - нет бита чётности (none), 1 - нечётный (odd), 2 - чётный (even)
|-
|-
|Input Voltage||Напряжение питания модуля
| 112 || holding || RW || 2 || || количество стоп-битов порта RS-485. Допустимые значения: 1, 2
|-
|-
|Learn to RAM||Запись ИК-сигнала в оперативный буфер (см. раздел [[#Оперативный режим|Оперативный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF. 
| 120 (0x78) || holding || RW || 0 || отличное от 0 || запись в регистр вызывает перезагрузку модуля без сохранения состояния
|-
|-
|Play from RAM||Воспроизведение ИК-сигнала из оперативного буфера (см. раздел [[#Оперативный режим|Оперативный режим]]).
| 121 (0x79) || input || R || - ||  mV || текущее напряжение питания модуля
|-
|-
|Learn to ROMx||Запись ИК-сигнала в соответствующую ячейку ПЗУ (см. раздел [[#Постоянный режим|Постоянный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF.
| 128 (0x80) || holding || RW || 1 || || Modbus-адрес устройства
|-
|-
|Play from ROMx||Воспроизведение ИК-сигнала из соответствующей ячейки ПЗУ (см. раздел [[#Постоянный режим|Постоянный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF.
| 200-206 || input || R || {'W','B','M','I',R,0} ||  || сигнатура
|-
|-
|ROMx -> RAM||Копирование данных из соответствующей ячейки ПЗУ в оперативный буфер для редактирования (см. раздел [[#Постоянный режим|Постоянный режим]]). Для редактирования контрол переводится в положение ON, после редактирования — OFF.
| 220-241 || input || R || ||  __date__ __time__||  дата сборки прошивки
|-
|-
|Internal/External Temperature Sensor||Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
| 250-269 || input || R || ||  строка, null-terminated ||  версия прошивки
|-
|-
|Serial NO||Серийный номер модуля WB-MIR может потребоваться при обращении в техподдержку.
| 270-271 || input || R || ||  32-bit unsigned int ||  уникальный идентификатор (S/N)
|-
|-
|Reset all ROM||Сброс содержимого всех ячеек памяти. '''Будьте внимательны, очистка ПЗУ будет выполнена без запроса на подтверждение!'''
| 2000-2509 || holding || RW || || || Буфер периодов IR-приемопередатчика
|-
|-
|}
|}
[[File:WB-MIR-2-WEB_Cut.png|1039px|thumb|center|Веб-интерфейс WB-MIR v.2]]
== Настройка ==
{{Wbincludes:WebUIDeviceSetUp}}


=== Обучение и использование модуля === <!--T:8-->
==Карта регистров флагов (Coils)==


<!--T:9-->
{|  border="1" class="wikitable" style="text-align:center"
ИК-приемник для обучения расположен прямо под красным круглым окном на корпусе модуля, подписанным “IR learn”
!Начальный адрес || Количество || Назначение
|-
| 5000 || 1 || style="text-align:left" | Очистка всех банков ИК-команд
|-
| 5001 || 1 || style="text-align:left" | Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509), без сохранения в банк команд
|-
| 5002 || 1 || style="text-align:left" | Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509)
|-
| 5100 (в прошивке 3.1.0 и ранее - 0) || number_of_banks || style="text-align:left" | Воспроизведение ИК-команды из соответствующего банка
|-
| 5200 (в прошивке 3.1.0 и ранее - 1000) || number_of_banks|| style="text-align:left" | Чтение и запись в банки команд IR 
|-
| 5300 (в прошивке 3.1.0 и ранее - 2000)|| number_of_banks || style="text-align:left" | Запись в банк команд IR использую IR-приёмник
|-
|}


Подробное описание и использование WB-MIR v.2 приведены в разделе [[WB-MSx_Consumer_IR_Manual|Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MS, WB-MSW, WB-MIR]].
===Сигнатура устройства ===


=== Режим работы цифрового входа === <!--T:8-->
По адресу 200 лежит сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:
[[Image: WB-MIR v.2 WebUI Config.png |350px|thumb|right| Выбор режима для входа W1 в веб-интерфейсе контроллера Wiren Board {{SupportedSinceRelease|release=wb-2110|nobanner=true}}]]
Вход '''1W''' устройства можно сконфигурировать как счётный вход, для этого нужно изменить режим в параметре '''Inpit x'''.


{{Wbincludes:1-Wire DI mode}}
{| class="wikitable"
! style="font-weight: bold;" | Модуль
! style="font-weight: bold;" | Сигнатура
|-
| WB-MIR
| WBMIR


{{Wbincludes:Modbus|s_tolerance=true}}
|}


===Расширение Быстрый Modbus===
Для получения сигнатуры нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00.
{{note|note| Начиная с версии прошивки '''4.23.0''' устройство поддерживает расширение Быстрый Modbus.}}
Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.


{{Wbincludes:Fast Modbus Description}}
== Управление модулем из web-интерфейса ==


=== Карта регистров ===
В настоящий момент для подключения модуля WB-MIR имеется два шаблона '''WB-MIR''' и '''WB-MIR (simple)'''. Шаблон '''WB-MIR''' предоставляет полный набор к функциям модуля из веб-интерфейса, включая обучение, а упрощенная версия '''WB-MIR (simple)''' может использоваться с уже обученным пультом и содержит гораздо меньшее количество элементов управления.


[[WB-MIR v2 Registers| '''Карта регистров модуля WB-MIR v.2''']]
{| class="wikitable"
|[[File:Web_wb_mir.png |600px|thumb|right|Веб-интерфейс модуля WB-MIR]]
|[[File:Web-wb-mir-simple.png|300px|thumb|right|Упрощенный веб-интерфейс модуля WB-MIR]]  
|}


==Обновление прошивки и сброс настроек==
{{Modbus Device Firmware Update
| new-fw=true
| fw-version=4.18.10
| MS=true
| old=true
|changelog=WB-MSW v.3: Changelog}}


==Известные неисправности==
На примере полнофункционального модуля рассмотрим основные органы управления модулем и их назначение.
[[WB-MIR v2: Errata | Аппаратные ошибки/особенности WB-MIR v.2]], найденные при эксплуатации устройства.
{| class="wikitable"
 
! Название элемента управления
== Ревизии устройства ==
!Назначение
[[WB-MIR_v2_-_Modbus_IR_Remote_Control_Revisions | Список ревизий]]
|-
 
|Input Voltage||Напряжение питания модуля
== Изображения и чертежи устройства == <!--T:29-->
|-
|Learn to RAM||Запись ИК-сигнала в оперативный буфер (см. раздел [[#Оперативный режим|Оперативный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF. 
|-
|Play from RAM||Воспроизведение ИК-сигнала из оперативного буфера (см. раздел [[#Оперативный режим|Оперативный режим]]).
|-
|Learn to ROMx||Запись ИК-сигнала в соотв. ячейку ПЗУ (см. раздел [[#Постоянный режим|Постоянный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF.
|-
|Play from ROMx||Воспроизведение ИК-сигнала из соотв. ячейки ПЗУ (см. раздел [[#Постоянный режим|Постоянный режим]]). Для обучения контрол переводится в положение ON, после обучения — OFF.
|-
|ROMx -> RAM||Копирование данных из соотв. ячейки ПЗУ в оперативный буфер для редактирования (см. раздел [[#Постоянный режим|Постоянный режим]]). Для редактирования контрол переводится в положение ON, после редактирования — OFF.
|-
|Internal/External Temperature Sensor||Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|Serial NO||Серийный номер модуля WB-MIR, может потребоваться при обращении в техподдержку.
|-
|Reset all ROM||Сброс содержимого всех ячеек памяти. '''Будьте внимательны, очистка ПЗУ будет выполнена без запроса на подтверждение!'''
|-
|}


{{Wbincludes:CDR lib}}
== Управление модулем из командной строки ==
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].


'''SVG:''' [[File:WB-MIR.svg.zip]]
=== Пример чтения регистров ===
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный ответ из шестнадцатеричных цифр в символьную строку:


'''Autocad 2013 DXF:''' [[File:WB-MIR.dxf.zip]]
<syntaxhighlight lang="bash">echo  -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 \
-a1 -t0x03 -r200 -c 6 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight>


'''Autocad PDF:''' [[File:WB-MIR.pdf]]
В результате выполнения команды получаем строку, например '''WBMIR'''. В этом примере модуль WB-MIR имеет Modbus-адрес 1.


{{Wbincludes: AutoCAD_base}}
=== Перезагрузка ===
В ряде случаев может потребоваться перезагрузка модуля. Для этого в регистр 120 (0x78) необходимо записать любое значение, отличное от нуля:
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x06 -r0x78 100
</syntaxhighlight>
Такая перезагрузка равносильна сбросу по питанию и изменению адреса устройства на 0x01. Предварительно, конечно, необходимо остановить сервис wb-mqtt-serial. Перезагрузку лучше делать с одним устройством на шине.

Версия 13:07, 24 апреля 2017

Модуль WB-MIR
Внутренее устройство модуля. Видны подписи контактов на разъёмах
Отверстие ИК-передатчика на задней стороне модуля

Обучаемый модуль с ИК-приёмопередатчиком для управления по ИК-каналу различными устройствами, включая кондиционеры, телевизоры и т.п. Управление модулем производится с контроллера или ПК по шине RS-485 командами по протоколу MODBUS.

Входы

Питание модуля подается на винтовые зажимы V+ и GND, линия RS-485 подключается к входам A и B. Внешний датчик температуры DS18B20 подключается по паразитной схеме питания, когда выводы +5В и GND объединены и подключены к клемме GND, вывод данных подключается к зажиму 1-W. D некоторых моделях присутствует внутренний датчик температуры DS18B20 в корпусе TO-92, распаянный в верхней левой части платы модуля (вид сверху корпуса датчика нанесен в этом месте шелкографией).

Монтаж

Модуль монтируется на кондиционер на двусторонний скотч таким образом, чтобы небольшое отверстие излучающего диода с обратной стороны располагалось бы напротив ИК-приемника кондиционера, не закрывая приемник от основного пульта устройства. Положение подбирается экспериментальным путем ввиду огромного множества конструкций корпусов кондиционеров. То же относится и к любым бытовым устройствам, управляемым по ИК-каналу.

Технические характеристики

Параметр Значение
Питание
Напряжение питания 9 — 24 В постоянного тока
Потребляемая мощность

0,1 Вт в холостом режиме, 0,1 Вт при передаче ИК-команд

Дальнодействие передатчика < 1м
Внешние датчики Возможность подключения цифрового датчика температуры DS18B20.
Управление
Интерфейс управления RS-485
Изоляция интерфейса Неизолированный
Протокол обмена данными Modbus RTU, адрес задается программно, заводские настройки указаны на наклейке
Параметры интерфейса RS-485

скорость 9600 бит/с; данные — 8 бит; четность N; стоп-биты 2; Начиная с версии прошивки 3.1.0 параметры интерфейсы могут быть настроены программно:

  • Скорость: 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200 бит/с
  • Данные: 8 бит
  • Проверка чётности: нет (по умолчанию), 1 - нечётный (odd), 2 - чётный (even)
  • Стоповых бит: 2 (по умолчанию), 1
Габариты
Габариты 45x35x14 мм
Условия эксплуатации
Температура воздуха -40°С до +80°С
Относительная влажность воздуха до 98%,без конденсата влаги

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

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

Устройство имеет два режима работы: постоянный и оперативный.

В постоянном режиме записанные сигналы хранятся в Flash-ПЗУ устройства. В устройстве можно хранить не более 7 сигналов (в текущей версии прошивки 3.4.0). Сигналы, записанные в ПЗУ, сохраняются при отключении питания. Стоит отметить. что при каждой перезаписи сигнала расходуется физический ресурс ПЗУ процессора устройства — всего можно перезаписать сигнал не более 1000 раз.

В оперативном режиме сигнал (только один) находится в оперативной памяти устройства. Он записывается туда Modbus-командой с внешнего устройства (например, контроллера Wiren Board). Сигнал может быть воспроизведён из оперативной памяти и затем перезаписан; ресурс ПЗУ при этом не расходуется. При отключении питания сигнал в оперативной памяти не сохраняется.

Способ хранения сигнала

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


Обучение и использование модуля

Подробное описание и использования модуля, а также карта регистров, описаны в разделе WB-MSx_Consumer_IR_Manual.

Дополнительные Функции

Смена адреса производится широковещательный (slave_id 0) командой записи (WRITE_SINGLE_REGISTER) в holding register с адресом 128 (0x80).

По адресу 200 лежит сигнатура длинной 6 байт. Сигнатура уникальна для каждой модели устройства и позволяет идентифицировать модель. Для получения сигнатуры нужно выполнить READ_HOLDING_REGISTERS адрес 200 длина 6. Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается ошибка 3.

Управление по Modbus

Подробно о работе с модулем по протоколу Modbus написано в разделе Управление датчиками Wirenboard по протоколу Modbus. Карта регистров устройства выглядит следующим образом:

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

Регистр/ адрес тип чтение/ запись значение по умолчанию формат назначение
6 input R 0x7FFF — датчик не подключен или неисправен °C × 16 (signed) Температура с внешнего датчика
7 input R 0x7FFF — датчик не подключен или неисправен °C × 16 (signed) Температура с внешнего датчика
110 holding RW 96 (0x60) baud rate / 100 скорость порта RS-485, делённая на 100. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
111 holding RW 0 настройка бита чётности порта RS-485. Допустимые значения: 0 - нет бита чётности (none), 1 - нечётный (odd), 2 - чётный (even)
112 holding RW 2 количество стоп-битов порта RS-485. Допустимые значения: 1, 2
120 (0x78) holding RW 0 отличное от 0 запись в регистр вызывает перезагрузку модуля без сохранения состояния
121 (0x79) input R - mV текущее напряжение питания модуля
128 (0x80) holding RW 1 Modbus-адрес устройства
200-206 input R {'W','B','M','I',R,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-приемопередатчика

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

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

Сигнатура устройства

По адресу 200 лежит сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:

Модуль Сигнатура
WB-MIR WBMIR

Для получения сигнатуры нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00. Начиная с регистра 220 записана дата сборки прошивки, в формате "числоx00времяx00" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.

Управление модулем из web-интерфейса

В настоящий момент для подключения модуля WB-MIR имеется два шаблона WB-MIR и WB-MIR (simple). Шаблон WB-MIR предоставляет полный набор к функциям модуля из веб-интерфейса, включая обучение, а упрощенная версия WB-MIR (simple) может использоваться с уже обученным пультом и содержит гораздо меньшее количество элементов управления.

Веб-интерфейс модуля WB-MIR
Упрощенный веб-интерфейс модуля WB-MIR


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

Название элемента управления Назначение
Input Voltage Напряжение питания модуля
Learn to RAM Запись ИК-сигнала в оперативный буфер (см. раздел Оперативный режим). Для обучения контрол переводится в положение ON, после обучения — OFF.
Play from RAM Воспроизведение ИК-сигнала из оперативного буфера (см. раздел Оперативный режим).
Learn to ROMx Запись ИК-сигнала в соотв. ячейку ПЗУ (см. раздел Постоянный режим). Для обучения контрол переводится в положение ON, после обучения — OFF.
Play from ROMx Воспроизведение ИК-сигнала из соотв. ячейки ПЗУ (см. раздел Постоянный режим). Для обучения контрол переводится в положение ON, после обучения — OFF.
ROMx -> RAM Копирование данных из соотв. ячейки ПЗУ в оперативный буфер для редактирования (см. раздел Постоянный режим). Для редактирования контрол переводится в положение ON, после редактирования — OFF.
Internal/External Temperature Sensor Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
Serial NO Серийный номер модуля WB-MIR, может потребоваться при обращении в техподдержку.
Reset all ROM Сброс содержимого всех ячеек памяти. Будьте внимательны, очистка ПЗУ будет выполнена без запроса на подтверждение!

Управление модулем из командной строки

Программное обеспечение контроллера 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/ttyAPP1 \
-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.

Перезагрузка

В ряде случаев может потребоваться перезагрузка модуля. Для этого в регистр 120 (0x78) необходимо записать любое значение, отличное от нуля:

modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x06 -r0x78 100

Такая перезагрузка равносильна сбросу по питанию и изменению адреса устройства на 0x01. Предварительно, конечно, необходимо остановить сервис wb-mqtt-serial. Перезагрузку лучше делать с одним устройством на шине.