WB-M1W2 1-Wire to Modbus Temperature Measurement Module: различия между версиями

Материал из Wiren Board
м
(не показаны 183 промежуточные версии 20 участников)
Строка 1: Строка 1:
[[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]]
{{DISPLAYTITLE:WB-M1W2 Преобразователь для термометров 1-Wire}}
{{DISPLAYTITLE:WB-M1W2 Преобразователь для термометров 1-Wire}}
{{PDF}}
<!--T:1-->
[[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]]
<!--T:2-->
'''[https://wirenboard.com/ru/product/WB-M1W2/ Купить в интернет-магазине]'''
'''[https://wirenboard.com/ru/product/WB-M1W2/ Купить в интернет-магазине]'''
== Назначение==
WB-M1W2 — компактный преобразователь, предназначенный для опроса '''двух''' цифровых термометров [[1-Wire | 1-Wire]] (DS18B20) по протоколу Modbus RTU по шине RS-485.


{{Wbincludes:WB-MS and WB-M1W2 Gosreestr}}
WB-M1W2 - компактный преобразователь, предназначенный для опроса двух цифровых термометров 1-Wire (DS18B20) по протоколу Modbus RTU по шине RS-485.
 
== Входы ==
Питание модуля подается на винтовые зажимы V+ и GND, линия RS-485 подключается к входам A и B.


В устройстве универсальные входы, которые могут работать в режимах 1-Wire или «сухой контакт» с функциями подсчёта срабатываний и распознавания нажатий.
Два внешних датчика температуры DS18B20 подключаются по паразитной схеме питания, когда выводы +5В и GND объединены и подключены к клемме GND, вывод данных подключается к зажиму 1-W.
== Меры безопасности ==
Так же в устройстве присутствует внутренний датчик температуры (NTC термистор).
{{Wbincludes:Safety|low_voltage=true}}
 
==Монтаж==
 
Преобразователь устанавливается в кабель-каналы, короба, распаечные коробки. Рекомендуемая длина линий от преобразователя до выносных датчиков 1-Wire - не более 30 метров.


== Технические характеристики ==
== Технические характеристики ==
Строка 21: Строка 22:
! colspan="2" |Питание
! colspan="2" |Питание
|-
|-
|Напряжение питания интерфейсной части
|Напряжение питания
|9 В – 28 В постоянного тока
|9 — 24 В постоянного тока
|-
|-
|Потребляемая мощность
|Потребляемая мощность
|
|
0.1 Вт
0.1 Вт  
|-
|Дальнодействие передатчика
| < 1м
|-
|-
! colspan="2" |Датчики
! colspan="2" |Датчики
|-
|-
| Внешние датчики
| Внешние датчики
| Можно подключить два цифровых датчика температуры DS18B20.
| Возможность подключения двух цифровых датчиков температуры DS18B20.
|-
|-
! colspan="2" |Входы (подключаются вместо внешних датчиков)
|Внутренний датчик
|Встроенный NTC-термистор
|-
|-
|Количество дискретных входов
! colspan="2" |Управление
|2
|-
|Интерфейс управления
|RS-485
|-
|Изоляция интерфейса
|Неизолированный
|-
|-
|Тип входов
|Протокол обмена данными
|«Сухой контакт», неизолированные
|Modbus RTU, адрес задается программно, заводские настройки указаны на наклейке
|-
|-
|Напряжение в разомкнутом состоянии
|Параметры интерфейса RS-485
|3.3 В
|  
скорость 9600 бит/с; данные — 8 бит; четность N; стоп-биты 2;
Начиная с версии прошивки '''3.1.0''' параметры интерфейсы могут быть настроены программно:
*Скорость: 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200 бит/с <br>([[UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]])
*Данные: 8 бит
*Проверка чётности: нет (по умолчанию), 1 - нечётный (odd), 2 - чётный (even)
*Стоповых бит: 2 (по умолчанию), 1
|-
|-
{{Wbincludes:Control}}
{{Wbincludes:Operating conditions}}
{{Wbincludes:Klemmy. Input}}
! colspan="2" |Габариты
! colspan="2" |Габариты
|-
|-
| Габариты
| Габариты
|
|
57 x 18 x 12 мм
* 40x15x11 мм;
{{Wbincludes:Weight}} 15 г
|-
! colspan="2" |Условия эксплуатации
|-
| Температура воздуха
| -40°С до +80°С
|-
| Относительная влажность воздуха
| до 98%,без конденсата влаги
|}
|}


== Общий принцип работы ==
== Дополнительные Функции==
При работе в режиме 1-Wire модуль опрашивает подключённые к входам датчики и помещает полученные значения в Modbus-регистры. Некоторые датчики DS18B20 иногда могут выдавать случайные значения, которые сильно отличаются от верных, поэтому в модуле есть фильтр подозрительных значений, который позволяет эти значения отбросить.


В режиме дискретных входов модуль опрашивает входы и помещает в регистры их состояние, а также количество срабатываний в виде счётчиков. Разрядность счетчиков — 16 бит. Для сброса количества срабатываний входов нужно записать в регистр 100 число 1.
'''Смена адреса''' производится широковещательный (slave_id 0) командой записи (WRITE_SINGLE_REGISTER) в holding register с адресом 128 (0x80).


== Распознавание типов нажатий ==
По адресу 200 лежит '''сигнатура''' длинной 6 байт. Сигнатура уникальна для каждой модели устройства и позволяет идентифицировать модель.
{{Anchor|press-events}}
Для получения сигнатуры нужно выполнить READ_HOLDING_REGISTERS адрес 200 длина 6. 
{{note|note|Распознавание типов нажатий появилось в прошивке 4.32.0.}}
Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается ошибка 3.
{{Wbincludes:Inputs Press Events|no_outputs=true}}


Счётчики нажатий и состояние входов получать событиями через Быстрый Modbus — минимум задержек при любой загруженности шины. Читайте подробнее в разделе [[#modbus|Работа по Modbus]].
== Карты регистров ==


[[Rule_Examples#press-actions|Пример правила с обработкой счётчиков нажатий]]
{| class="wikitable"
! rowspan="2" |Регистр/ адрес
! rowspan="2" |Тип
! rowspan="2" |Чтение/ запись
! rowspan="2" |Значение по умолчанию
! rowspan="2" |Формат
! rowspan="2" |Назначение
!Версии
прошивки
|-
!
|-
|6
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с встроенного датчика
|
|-
|7
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с первого внешнего датчика 1-Wire
|
|-
|8
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с второго внешнего датчика 1-Wire
|
|-
|
|
|
|
|
|
|
|-


==Монтаж== <!--T:9-->
|99||holding||RW||16|| 1 = 0.0625C
{{Wbincludes:Mount "V+ GND A B"}}
||(доступно с версии прошивки 3.10.0)
Фильтр подозрительных значений для датчиков 1-Wire (85.000C, 127.937C).
Значения отбрасываются, если предыдущее отличается от подозрительного больше, чем на значение регистра*0.0625C.
Запишите 0, чтобы отключить фильтр.
|3.10.0
|-


Преобразователь устанавливается в кабель-каналы, короба, распаечные коробки. Рекомендуемая длина линий от преобразователя до выносных датчиков 1-Wire - не более 30 метров. Не рекомендуется использовать экранированный кабель для подключения датчиков температуры.


<gallery mode="packed" heights="250px">
Image: WB-M1W2+DS18B20.png | Подключение датчиков DS18B20 к модулям WB-M1W2 v.1 (слева) и v.2 (справа)
Image: WB-M1W2+Buttons.png | Подключение кнопок к модулю WB-M1W2 v.2
</gallery>


==Представление в веб-интерфейсе контроллера Wiren Board==
=== Выбор шаблона ===
{{WebUIAddDevice
| template=WB-M1W2
}}


Если вы используете ''wb-mqtt-serial < 2.25.0'', то для работы с 1-Wire используйте шаблон '''WB-M1W2''', а для дискретного режима — '''WB-M1W2 DI'''.


=== Управление устройством и просмотр значений ===
|110
{{Wbincludes:WebUIControlDevice}}
|holding
 
|RW
Описание каналов, доступных по умолчанию:
|96
* External Sensor x — температура внешнего цифрового датчика, подключенного к порту x. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|baud rate / 100
* Discrete Input x — состояние входа x. 0 — разомкнут, 1 — замкнут на GND
|скорость порта RS-485, '''делённая на 100'''. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
* Counter x — счётчик входа x.
| rowspan="3" |>3.1.0
* Serial NO — серийный номер устройства
|-
 
|111
<gallery mode="traditional" widths ="388px" heights="203px" caption="Модуль WB-M1W2 в веб-интерфейсе контроллера">
|holding
Image: M1w2 webui devices 1W.png | Оба входа в режиме 1-Wire
|RW
Image: M1w2 webui devices Discrete.png | Оба входа в дискретном режиме
|0
</gallery>
|
 
|настройка бита чётности порта RS-485. Допустимые значения: 0 - нет бита чётности (none), 1 - нечётный (odd), 2 - чётный (even)
== Настройка ==
|-
[[File:WB-M1W2 Web UI Congigure Inputs.png|350px|thumb|right||Выбор режима для одного их входов WB-M1W1 в веб-интерфейсе контроллера Wiren Board {{SupportedSinceRelease|release=wb-2110|nobanner=true}}]]
|112
{{Wbincludes:WebUIDeviceSetUp}}
|holding
 
|RW
=== Режимы цифровых входов ===
|2
С версии прошивки 4.0.0 преобразователь WB-M1W2 позволяет конфигурировать каждый из двух входов как дискретный. Для этого нужно выбрать режим в параметре '''Input x'''.
|
 
|количество стоп-битов порта RS-485. Допустимые значения: 1, 2
<!--T:25-->
|-
{{note|note| Если вы используете wb-mqtt-serial < 2.25.0 и в веб-интерфейсе нет возможности выбрать режим для входа, то для работы с дискретными входами установите режим в регистрах 275-276 и выберите шаблон '''WB-M1W2 DI'''.}}
|
 
|
{{Wbincludes:1-Wire DI mode}}
|
 
|
=== Антидребезг ===
|
{{Anchor|debounce}}
|
{{note|note|Время подавления дребезга можно изменять начиная с прошивки 4.32.0.}}
|
{{SupportedSinceRelease
|-
| release = wb-2310
|120 (0x78)
|content=
|holding
Для любого из входов вы можете настроить фильтр антидребезга в параметре '''Время подавления дребезга'''. Возможные значения от 0 до 100 мс, значение по умолчанию — 50 мс.
|RW
}}
|0
 
|отличное от 0
=== Период опроса датчиков температуры ===
|запись в регистр вызывает перезагрузку модуля без сохранения состояния
{{Anchor|poll_period}}
|
{{note|note|Период опроса датчиков можно изменять начиная с прошивки 4.33.1.}}
|-
{{SupportedSinceRelease
|121 (0x79)
| release = wb-2404
|input
|content=
|R
Для любого из входов вы можете настроить период опроса датчика в параметре '''Период опроса датчиков температуры'''. Возможные значения от 1 до 60 с, значение по умолчанию — 2 с. Этот параметр добавлен для уменьшения потребления устройства и минимизации возможности возникновения проблемы [[WB-M1W2:_Errata|ERRM1W2003]].
| -
}}
|mV
 
|текущее напряжение питания модуля
=== Счёт и детектирование нажатий ===
|
{{Anchor|counting-and-press-actions}}
|-
{{note|note|Распознавание типов нажатий появилось в прошивке 4.32.0.}}
|128 (0x80)
{{SupportedSinceRelease
|holding
| release = wb-2310
|RW
|content=
|1
При выборе режима '''Счет и детектирование нажатий''', вы сможете настроить передачу счётчиков нажатий на контроллер. Как это работает, смотрите в разделе [[#press-events | Распознавание типов нажатий]].
|
 
|Modbus-адрес устройства
Доступны настройки:
|
{{Wbincludes:Inputs Press Events Settings}}
|-
}}
|200-206
 
|input
{{Wbincludes:Modbus|s_tolerance=true}}
|R
 
|см. [[Sensors Modbus Management|Сигнатура устройства]]
===Расширение Быстрый Modbus===
|
{{note|note| Начиная с версии прошивки '''4.23.0''' устройство поддерживает расширение Быстрый Modbus.}}
|сигнатура
 
|
{{Wbincludes:Fast Modbus Description}}
 
=== Карта регистров ===
Устройство WB-M1W2 выпускалось в разных ревизиях и некоторые из них больше не обновляются из-за ограниченных ресурсов микроконтроллера, поэтому есть две таблицы регистров:
* [[M1W2_Registers| Карта регистров WB-M1W2 для ревизий 2.1F и новее]]
* [[M1W2_Registers_fw_4.30 | Карта регистров WB-M1W2 для ревизий 2.1E и старее]]
 
Ревизию устройства можно посмотреть на наклейке на корпусе сбоку, а даты выпуска в таблице ревизий ниже на этой странице.
 
==Обновление прошивки и сброс настроек==
{{Modbus Device Firmware Update
| lose=true
| old=true
|changelog= WB-M1W2: Changelog}}
 
==Известные неисправности==
[[WB-M1W2: Errata | Аппаратные ошибки/особенности WB-M1W2]], найденные при эксплуатации устройства.
 
== Ревизии устройства ==
{{Wbincludes:Revision}}
|-
|-
|2.5
|220-241
|v2.5A, v2.5B, v2.5C, v2.5C/1, v2.5D, v2.5E, v2.5F -  ...
|input
|01.2023 - ...
|R
|
|__date__ __time__
|дата сборки прошивки
|
|
*Новая микросхема памяти EEPROM, другой вид серийных номеров
|-
|-
|2.4
|245
|v2.4A, v2.4A/2, v2.4A/2M, v2.4A/2M1
|holding
|10.2022 - 12.2022
|RW
|216
|°C × 100 (signed)
|Компенсация самонагрева встроенного датчика температуры.
Значение регистра вычитается из температуры, измеренной встроенным датчиком (регистр 6)
|
|
*Четырехслойная плата
|-
|-
|2.1
|250-269
|v2.1F - v2.1I
|input
|09.2021 - 09.2022
|R
|
|строка, null-terminated
|версия прошивки
|
|
* На микроконтроллере GD32 вместо STM32
|-
|-
!colspan="4" | '''Новые функции не добавляются, последняя версия прошивки 4.30.0'''
|270-271
|input
|R
|
|32-bit unsigned int
|уникальный идентификатор (S/N)
|
|-
|-
|2.1
|v2.1B - v2.1E
|09.2020 - 09.2021
|
|
*Микросхема трансивера интерфейса RS-485 заменена на TP8485E-SR (со встроенным fail-safe bias)
|
|
|
|
|
|
|-
|-
|2.1
|275
|v2.1A
|holding
|05.2020 - 09.2020
|RW
|0
|0 или 1
|Режим входа №1: 0 - 1-wire, 1 - дискретный вход
| rowspan="6" |>=3.11.3
|-
|276
|holding
|RW
|0
|0 или 1
|Режим входа №2: 0 - 1-wire, 1 - дискретный вход
|-
|277
|input
|R
|
|
*Уровни сигналов 1-wire изменены с 3.3V на 5V
|16-bit unsigned int
|Счетчик срабатываний для входа №1
|-
|-
|2.0
|278
|326, v2.0A - v2.0F
|input
|12.2018 - 05.2020
|R
|
|
*Изменена конфигурация входов 1-wire, добавлен выход 5V
|16-bit unsigned int
|Счетчик срабатываний для входа №2
|-
|-
|1.7
|2
|195, 199, 212, 234, 245, 269, 274, 287,
|discrete
|12.2017 - 11.2018
|R
|
|
*Первая версия: с двойными разъемными клеммниками, только фантомное питание датчиков
|
|Текущее состояние входа №1: 0 - разомкнут, 1 - замкнут на GND. Если для входа выбран режим 1-wire, значение всегда равно 0.
|-
|-
|3
|discrete
|R
|
|
|Текущее состояние входа №2: 0 - разомкнут, 1 - замкнут на GND. Если для входа выбран режим 1-wire, значение всегда равно 0.
|}
|}


==Изображения и чертежи устройства== <!--T:33-->
==Сигнатура устройства ==
 
По адресу 200 лежит сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:


{{Wbincludes:CDR lib}}
{| class="wikitable"
! style="font-weight: bold;" | Модуль
! style="font-weight: bold;" | Сигнатура
|-
| WB-M1W2
| WBMIR'0x00'
|}
 
Для получения сигнатуры нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00.
Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.
 
== Работа преобразователя с контроллером Wiren Board ==
Для преобразователя WB-M1W2 в контроллере Wiren Board предусмотрен соответствующий шаблон.
 
Описание каналов шаблона
{| class="wikitable"
! Название канала
!Назначение
|-
|Input Voltage||Напряжение питания модуля
|-
|Internal Temperature Sensor||Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|External Sensor 1
|Температура внешнего цифрового датчика, подключенного к порту 1. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|External Sensor 2
|Температура внешнего цифрового датчика, подключенного к порту 2. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|Serial NO||Серийный номер модуля, может потребоваться при обращении в техподдержку.
|-
|}


'''SVG:''' [[File:WB-M1W2.svg.zip]]
== Управление модулем из командной строки ==
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].


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


'''Autocad PDF:''' [[File:WB-M1W2.pdf]]
<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>


{{Wbincludes: AutoCAD_base}}
В результате выполнения команды получаем строку, например '''WBM1W2'''. В этом примере модуль WB-M1W2 имеет Modbus-адрес 1.

Версия 13:58, 7 августа 2018

Модуль WB-M1W2

Купить в интернет-магазине

WB-M1W2 - компактный преобразователь, предназначенный для опроса двух цифровых термометров 1-Wire (DS18B20) по протоколу Modbus RTU по шине RS-485.

Входы

Питание модуля подается на винтовые зажимы V+ и GND, линия RS-485 подключается к входам A и B.

Два внешних датчика температуры DS18B20 подключаются по паразитной схеме питания, когда выводы +5В и GND объединены и подключены к клемме GND, вывод данных подключается к зажиму 1-W. Так же в устройстве присутствует внутренний датчик температуры (NTC термистор).

Монтаж

Преобразователь устанавливается в кабель-каналы, короба, распаечные коробки. Рекомендуемая длина линий от преобразователя до выносных датчиков 1-Wire - не более 30 метров.

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

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

0.1 Вт

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

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

Габариты
Габариты
  • 40x15x11 мм;
Условия эксплуатации
Температура воздуха -40°С до +80°С
Относительная влажность воздуха до 98%,без конденсата влаги

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

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

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

Карты регистров

Регистр/ адрес Тип Чтение/ запись Значение по умолчанию Формат Назначение Версии

прошивки

6 input R 0x7FFF °C × 16 (signed) Температура с встроенного датчика
7 input R 0x7FFF °C × 16 (signed) Температура с первого внешнего датчика 1-Wire
8 input R 0x7FFF °C × 16 (signed) Температура с второго внешнего датчика 1-Wire
99 holding RW 16 1 = 0.0625C (доступно с версии прошивки 3.10.0)

Фильтр подозрительных значений для датчиков 1-Wire (85.000C, 127.937C). Значения отбрасываются, если предыдущее отличается от подозрительного больше, чем на значение регистра*0.0625C. Запишите 0, чтобы отключить фильтр.

3.10.0
110 holding RW 96 baud rate / 100 скорость порта RS-485, делённая на 100. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 >3.1.0
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 см. Сигнатура устройства сигнатура
220-241 input R __date__ __time__ дата сборки прошивки
245 holding RW 216 °C × 100 (signed) Компенсация самонагрева встроенного датчика температуры.

Значение регистра вычитается из температуры, измеренной встроенным датчиком (регистр 6)

250-269 input R строка, null-terminated версия прошивки
270-271 input R 32-bit unsigned int уникальный идентификатор (S/N)
275 holding RW 0 0 или 1 Режим входа №1: 0 - 1-wire, 1 - дискретный вход >=3.11.3
276 holding RW 0 0 или 1 Режим входа №2: 0 - 1-wire, 1 - дискретный вход
277 input R 16-bit unsigned int Счетчик срабатываний для входа №1
278 input R 16-bit unsigned int Счетчик срабатываний для входа №2
2 discrete R Текущее состояние входа №1: 0 - разомкнут, 1 - замкнут на GND. Если для входа выбран режим 1-wire, значение всегда равно 0.
3 discrete R Текущее состояние входа №2: 0 - разомкнут, 1 - замкнут на GND. Если для входа выбран режим 1-wire, значение всегда равно 0.

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

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

Модуль Сигнатура
WB-M1W2 WBMIR'0x00'

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

Работа преобразователя с контроллером Wiren Board

Для преобразователя WB-M1W2 в контроллере Wiren Board предусмотрен соответствующий шаблон.

Описание каналов шаблона

Название канала Назначение
Input Voltage Напряжение питания модуля
Internal Temperature Sensor Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
External Sensor 1 Температура внешнего цифрового датчика, подключенного к порту 1. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
External Sensor 2 Температура внешнего цифрового датчика, подключенного к порту 2. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
Serial NO Серийный номер модуля, может потребоваться при обращении в техподдержку.

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

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

В результате выполнения команды получаем строку, например WBM1W2. В этом примере модуль WB-M1W2 имеет Modbus-адрес 1.