WB-M1W2 1-Wire to Modbus Temperature Measurement Module: различия между версиями
Treissler (обсуждение | вклад) м |
|||
(не показано 189 промежуточных версий 20 участников) | |||
Строка 1: | Строка 1: | ||
[[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]] | [[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]] | ||
{{DISPLAYTITLE:WB-M1W2 Преобразователь для термометров 1-Wire}} | |||
'''[https://wirenboard.com/ru/product/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 метров. | |||
== Технические характеристики == | == Технические характеристики == | ||
{| class="wikitable" | {| class="wikitable" | ||
Строка 26: | Строка 22: | ||
! colspan="2" |Питание | ! colspan="2" |Питание | ||
|- | |- | ||
|Напряжение питания | |Напряжение питания | ||
|9 | |9 — 24 В постоянного тока | ||
|- | |- | ||
|Потребляемая мощность | |Потребляемая мощность | ||
| | | | ||
0.1 Вт | 0.1 Вт | ||
|- | |||
|Дальнодействие передатчика | |||
| < 1м | |||
|- | |- | ||
! colspan="2" |Датчики | ! colspan="2" |Датчики | ||
|- | |- | ||
| Внешние датчики | | Внешние датчики | ||
| | | Возможность подключения двух цифровых датчиков температуры DS18B20. | ||
|- | |- | ||
|Внутренний датчик | |||
|Встроенный NTC-термистор | |||
|- | |- | ||
| | ! colspan="2" |Управление | ||
| | |- | ||
|Интерфейс управления | |||
|RS-485 | |||
|- | |||
|Изоляция интерфейса | |||
|Неизолированный | |||
|- | |- | ||
| | |Протокол обмена данными | ||
| | |Modbus RTU, адрес задается программно, заводские настройки указаны на наклейке | ||
|- | |- | ||
| | |Параметры интерфейса RS-485 | ||
|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 | |||
|- | |- | ||
! colspan="2" |Габариты | ! colspan="2" |Габариты | ||
|- | |- | ||
| Габариты | | Габариты | ||
| | | | ||
* 40x15x11 мм; | |||
|- | |||
! colspan="2" |Условия эксплуатации | |||
|- | |||
| Температура воздуха | |||
| -40°С до +80°С | |||
|- | |||
| Относительная влажность воздуха | |||
| до 98%,без конденсата влаги | |||
|} | |} | ||
== | == Дополнительные Функции== | ||
'''Смена адреса''' производится широковещательный (slave_id 0) командой записи (WRITE_SINGLE_REGISTER) в holding register с адресом 128 (0x80). | |||
По адресу 200 лежит '''сигнатура''' длинной 6 байт. Сигнатура уникальна для каждой модели устройства и позволяет идентифицировать модель. | |||
Для получения сигнатуры нужно выполнить READ_HOLDING_REGISTERS адрес 200 длина 6. | |||
Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается ошибка 3. | |||
== Карты регистров == | |||
{| 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 | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
= | |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 | |||
| rowspan="3" |>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 | |||
|см. [[Sensors Modbus Management|Сигнатура устройства]] | |||
| | |||
|сигнатура | |||
| | |||
|- | |||
|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 - дискретный вход | |||
| rowspan="6" |>=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 | |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: | |||
{| 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||Серийный номер модуля, может потребоваться при обращении в техподдержку. | |||
|- | |||
|} | |||
== Управление модулем из командной строки == | |||
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]]. | |||
=== Пример чтения регистров === | |||
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный ответ из шестнадцатеричных цифр в символьную строку: | |||
''' | <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> | |||
В результате выполнения команды получаем строку, например '''WBM1W2'''. В этом примере модуль WB-M1W2 имеет Modbus-адрес 1. |
Версия 13:58, 7 августа 2018
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 параметры интерфейсы могут быть настроены программно:
|
Габариты | |
Габариты |
|
Условия эксплуатации | |
Температура воздуха | -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.