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

Нет описания правки
(не показано 155 промежуточных версий 18 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:WB-M1W2 Преобразователь для термометров 1-Wire}}
{{PDF}}
<!--T:1-->
[[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]]
[[Файл:WB-M1W2.jpg|мини|Модуль WB-M1W2]]
[[Файл:WB-M1W2_new.png|мини|Модуль WB-M1W2, версия 2]]
<!--T:2-->
{{DISPLAYTITLE:WB-M1W2 Преобразователь для термометров 1-Wire}}{{#vardefine:ProductFullName1|Преобразователь для термометров 1-Wire WB-M1W2}} {{#vardefine:FileName1|WB-M1W2}} {{#vardefine:ProductName1|WB-M1W2}}
'''[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.


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


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


== Технические характеристики ==
== Технические характеристики ==
Строка 29: Строка 21:
! colspan="2" |Питание
! colspan="2" |Питание
|-
|-
|Напряжение питания
|Напряжение питания интерфейсной части
|9 — 24 В постоянного тока
|9 В – 28 В постоянного тока
|-
|-
|Потребляемая мощность
|Потребляемая мощность
|
|
0.1 Вт  
0.1 Вт
|-
|-
! colspan="2" |Датчики
! colspan="2" |Датчики
|-
|-
| Внешние датчики
| Внешние датчики
| Возможность подключения двух цифровых датчиков температуры DS18B20.
| Можно подключить два цифровых датчика температуры DS18B20.
|-
|Внутренний датчик
|Встроенный NTC-термистор
|-
|-
! colspan="2" |Входы (подключаются вместо внешних датчиков)
! colspan="2" |Входы (подключаются вместо внешних датчиков)
Строка 50: Строка 39:
|-
|-
|Тип входов
|Тип входов
|"Сухой контакт", неизолированные
|«Сухой контакт», неизолированные
|-
|-
|Напряжение в разомкнутом состоянии
|Напряжение в разомкнутом состоянии
|3.3 V
|3.3 В
|-
! colspan="2" |Управление
|-
|Интерфейс управления
|RS-485
|-
|Изоляция интерфейса
|Неизолированный
|-
|Протокол обмена данными
|Modbus RTU, адрес задается программно, заводские настройки указаны на наклейке
|-
|Параметры интерфейса RS-485
|
скорость 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" |Габариты
|-
|-
| Габариты
| Габариты
|
|
* 40x15x11 мм;
57 x 18 x 12 мм
|-
{{Wbincludes:Weight}} 15 г
! colspan="2" |Условия эксплуатации
|-
| Температура воздуха
| -40°С до +80°С
|-
| Относительная влажность воздуха
| до 98%,без конденсата влаги
|}
|}


== Дополнительные Функции==
== Общий принцип работы ==
При работе в режиме 1-Wire модуль опрашивает подключённые к входам датчики и помещает полученные значения в Modbus-регистры. Некоторые датчики DS18B20 иногда могут выдавать случайные значения, которые сильно отличаются от верных, поэтому в модуле есть фильтр подозрительных значений, который позволяет эти значения отбросить.
 
В режиме дискретных входов модуль опрашивает входы и помещает в регистры их состояние, а также количество срабатываний в виде счётчиков. Разрядность счетчиков — 16 бит. Для сброса количества срабатываний входов нужно записать в регистр 100 число 1.
 
== Распознавание типов нажатий ==
{{Anchor|press-events}}
{{note|note|Распознавание типов нажатий появилось в прошивке 4.32.0.}}
{{Wbincludes:Inputs Press Events|no_outputs=true}}
 
Счётчики нажатий и состояние входов получать событиями через Быстрый Modbus — минимум задержек при любой загруженности шины. Читайте подробнее в разделе [[#modbus|Работа по Modbus]].
 
[[Rule_Examples#press-actions|Пример правила с обработкой счётчиков нажатий]]
 
==Монтаж== <!--T:9-->
{{Wbincludes:Mount "V+ GND A B"}}
 
Преобразователь устанавливается в кабель-каналы, короба, распаечные коробки. Рекомендуемая длина линий от преобразователя до выносных датчиков 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'''.
 
=== Управление устройством и просмотр значений ===
{{Wbincludes:WebUIControlDevice}}
 
Описание каналов, доступных по умолчанию:
* External Sensor x — температура внешнего цифрового датчика, подключенного к порту x. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
* Discrete Input x — состояние входа x. 0 — разомкнут, 1 — замкнут на GND
* Counter x — счётчик входа x.
* Serial NO — серийный номер устройства
 
<gallery mode="traditional" widths ="388px" heights="203px" caption="Модуль WB-M1W2 в веб-интерфейсе контроллера">
Image: M1w2 webui devices 1W.png | Оба входа в режиме 1-Wire
Image: M1w2 webui devices Discrete.png | Оба входа в дискретном режиме
</gallery>
 
== Настройка ==
[[File:WB-M1W2 Web UI Congigure Inputs.png|350px|thumb|right||Выбор режима для одного их входов WB-M1W1 в веб-интерфейсе контроллера Wiren Board {{SupportedSinceRelease|release=wb-2110|nobanner=true}}]]
{{Wbincludes:WebUIDeviceSetUp}}
 
=== Режимы цифровых входов ===
С версии прошивки 4.0.0 преобразователь WB-M1W2 позволяет конфигурировать каждый из двух входов как дискретный. Для этого нужно выбрать режим в параметре '''Input x'''.
 
<!--T:25-->
{{note|note| Если вы используете wb-mqtt-serial < 2.25.0 и в веб-интерфейсе нет возможности выбрать режим для входа, то для работы с дискретными входами установите режим в регистрах 275-276 и выберите шаблон '''WB-M1W2 DI'''.}}
 
{{Wbincludes:1-Wire DI mode}}


'''Смена адреса''' производится широковещательный (slave_id 0) командой записи (WRITE_SINGLE_REGISTER) в holding register с адресом 128 (0x80).
=== Антидребезг ===
{{Anchor|debounce}}
{{note|note|Время подавления дребезга можно изменять начиная с прошивки 4.32.0.}}
{{SupportedSinceRelease
| release = wb-2310
|content=
Для любого из входов вы можете настроить фильтр антидребезга в параметре '''Время подавления дребезга'''. Возможные значения от 0 до 100 мс, значение по умолчанию — 50 мс.
}}
=== Счёт и детектирование нажатий ===
{{Anchor|counting-and-press-actions}}
{{note|note|Распознавание типов нажатий появилось в прошивке 4.32.0.}}
{{SupportedSinceRelease
| release = wb-2310
|content=
При выборе режима '''Счет и детектирование нажатий''', вы сможете настроить передачу счётчиков нажатий на контроллер. Как это работает, смотрите в разделе [[#press-events | Распознавание типов нажатий]].


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


== Карты регистров ==
{{Wbincludes:Modbus|s_tolerance=true}}


{| class="wikitable"
===Расширение Быстрый Modbus===
! rowspan="2" |Регистр/ адрес
{{note|note| Начиная с версии прошивки '''4.23.0''' устройство поддерживает расширение Быстрый Modbus.}}
! 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
{{Wbincludes:Fast Modbus Description}}
||(доступно с версии прошивки 3.10.0)
Фильтр подозрительных значений для датчиков 1-Wire (85.000C, 127.937C).
Значения отбрасываются, если предыдущее отличается от подозрительного больше, чем на значение регистра*0.0625C.
Запишите 0, чтобы отключить фильтр.
|3.10.0
|-


=== Карта регистров ===
Устройство WB-M1W2 выпускалось в разных ревизиях и некоторые из них больше не обновляются из-за ограниченных ресурсов микроконтроллера, поэтому есть две таблицы регистров:
* [[M1W2_Registers| Карта регистров WB-M1W2 для ревизий 2.1F и новее]]
* [[M1W2_Registers_fw_4.30 | Карта регистров WB-M1W2 для ревизий 2.1E и старее]]


|104-105 || input || R || || 32-bit unsigned int
Ревизию устройства можно посмотреть на наклейке на корпусе сбоку, а даты выпуска в таблице ревизий ниже на этой странице.
|| Время работы устройства (uptime counter) в секундах
|
|-


==Обновление прошивки и сброс настроек==
{{Modbus Device Firmware Update
| lose=true
| old=true
|changelog= WB-M1W2: Changelog}}


==Известные неисправности==
[[WB-M1W2: Errata | Аппаратные ошибки/особенности WB-M1W2]], найденные при эксплуатации устройства.


|110
== Ревизии устройства ==
|holding
{{Wbincludes:Revision}}
|RW
|96
|baud rate / 100
|скорость порта RS-485, '''делённая на 100'''. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
| rowspan="3" |>3.1.0
|-
|-
|111
|2.5
|holding
|v2.5A, v2.5B, v2.5C, v2.5C/1, v2.5D, v2.5E, v2.5F -  ...
|RW
|01.2023 - ...
|0
|
|
|настройка бита чётности порта RS-485. Допустимые значения: 0 - нет бита чётности (none), 1 - нечётный (odd), 2 - чётный (even)
*Новая микросхема памяти EEPROM, другой вид серийных номеров
|-
|-
|112
|2.4
|holding
|v2.4A, v2.4A/2, v2.4A/2M, v2.4A/2M1
|RW
|10.2022 - 12.2022
|2
|
|
|количество стоп-битов порта RS-485. Допустимые значения: 1, 2
*Четырехслойная плата
|-
|-
|2.1
|v2.1F - v2.1I
|09.2021 - 09.2022
|
|
|
* На микроконтроллере GD32 вместо STM32
|
|
|
|
|
|-
|120 (0x78)
|holding
|RW
|0
|отличное от 0
|запись в регистр вызывает перезагрузку модуля без сохранения состояния
|
|-
|-
|121 (0x79)
!colspan="4" | '''Новые функции не добавляются, последняя версия прошивки 4.30.0'''
|input
|R
| -
|mV
|текущее напряжение питания модуля
|
|-
|-
|128 (0x80)
|2.1
|holding
|v2.1B - v2.1E
|RW
|09.2020 - 09.2021
|1
|
|Modbus-адрес устройства
|
|
*Микросхема трансивера интерфейса RS-485 заменена на TP8485E-SR (со встроенным fail-safe bias)
|-
|-
|200-206
|2.1
|input
|v2.1A
|R
|05.2020 - 09.2020
|см. [[Sensors Modbus Management|Сигнатура устройства]]
|
|сигнатура
|
|
*Уровни сигналов 1-wire изменены с 3.3V на 5V
|-
|-
|220-241
|2.0
|input
|326, v2.0A - v2.0F
|R
|12.2018 - 05.2020
|
|__date__ __time__
|дата сборки прошивки
|
|
*Изменена конфигурация входов 1-wire, добавлен выход 5V
|-
|-
|245
|1.7
|holding
|195, 199, 212, 234, 245, 269, 274, 287,
|RW
|12.2017 - 11.2018
|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" |>=4.0.0
|-
|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
|-
|0
|discrete
|R
|
|0 или 1
|Текущее состояние входа №1: 0 - разомкнут, 1 - замкнут на GND. Если для входа выбран режим 1-wire, значение всегда равно 0.
|-
|1
|discrete
|R
|
|0 или 1
|Текущее состояние входа №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 предусмотрен соответствующий шаблон WB-M1W2.
 
Описание каналов шаблона
{| class="wikitable"
! Название канала
!Назначение
|-
|Input Voltage||Напряжение питания модуля
|-
|Internal Temperature Sensor||Температура внутреннего/внешнего цифрового датчика. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|External Sensor 1
|Температура внешнего цифрового датчика, подключенного к порту 1. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|External Sensor 2
|Температура внешнего цифрового датчика, подключенного к порту 2. Если датчик отсутствует или неисправен, его название выделяется красным цветом.
|-
|Serial NO||Серийный номер модуля, может потребоваться при обращении в техподдержку.
|-
|-
|}
|}


С версии прошивки 4.0.0 преобразователь WB-M1W2 позволяет конфигурировать каждый из двух входов как дискретный вход. Режим входа задаётся в регистрах 275-276 (см. таблицу выше). В контроллерах Wiren Board этот режим настраивается через Setup-секцию драйвера.
==Изображения и чертежи устройства== <!--T:33-->
 
Для отображения регистров, соответствующих дискретным входам, нужно выбрать шаблон "WB-M1W2 DI":
 
[[File:M1w2 as discrete inputs example.png|400px|thumb|center|Пример настройки WB-M1W2 на дискретные входы.]]
 
Каналы дискретных входов (не забудьте перевести входы в режим дискретных, как написано выше):
{| class="wikitable"
! Название канала
!Назначение
|-
|Discrete Input 1
||Состояние входа 1. 0 - разомкнут, 1 - замкнут на GND
|-
|Discrete Input 2
||Состояние входа 2. 0 - разомкнут, 1 - замкнут на GND
|-
|Counter 1
|Счётчик срабатываний входа 1
|-
|Counter 2
|Счётчик срабатываний входа 2
|}


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


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


<syntaxhighlight lang="bash">echo  -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 \
'''Autocad 2013 DXF:''' [[File:WB-M1W2.dxf.zip]]
-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.
'''Autocad PDF:''' [[File:WB-M1W2.pdf]]


== Изображения и чертежи устройства ==
{{Wbincludes: AutoCAD_base}}
{{Wbincludes:WBPicturesNoDrawing|1}}
wb_editors
3

правки