Перейти к содержанию

Навигация

WB-MR14 Modbus 14 Channel Relay Module: различия между версиями

Нет описания правки
 
(не показаны 42 промежуточные версии 8 участников)
Строка 1: Строка 1:
'''Модель снята с производства, но вы можете [[Центр документации#Релейные модули | подобрать другие модели реле]]'''
{{DISPLAYTITLE:WB-MR14 модуль реле 14-канальный}}
{{DISPLAYTITLE:WB-MR14 модуль реле 14-канальный}}
[[Файл:MR14-2.jpg| thumb | 300px|WB-MR14 модуль реле 14-канальный]]
[[Файл:MR14-2.jpg| thumb | 300px|WB-MR14 модуль реле 14-канальный]]


'''Магазин: [http://contactless.ru/modbus-actuators-and-sensors/ Исполнительные устройства и датчики для шины RS-485 Modbus RTU]'''
==Общая информация==
==Общая информация==


Строка 23: Строка 22:


=== Входы ===
=== Входы ===
На безвинтовые зажимы модуля выведены 14 входов типа "сухой контакт", не изолированные от источника питания. Для устранения дребезга контактов на каждой входной линии применяются RC-цепочки. Входы подтянуты резисторами к линии питания +5V. Кнопки или выключатели с фиксацией подключаются между выводами GND и соответствующим входом Inputs. Входы могут использоваться как входы общего назначения, для счета сигналов и для прямого управления каналами реле. Программно можно выбрать три режима работы входов: управление кнопкой без фиксации или по Modbus; управление выключателем (с фиксацией) или по Modbus; управление только по Modbus. По умолчанию включен режим управления кнопкой без фиксации.
На безвинтовые зажимы модуля выведены 14 входов типа "сухой контакт", не изолированные от источника питания. Для устранения дребезга контактов на каждой входной линии применяются RC-цепочки. Входы подтянуты резисторами к линии питания +5 В. Кнопки или выключатели с фиксацией подключаются между выводами GND и соответствующим входом Inputs. Входы могут использоваться как входы общего назначения, для счета сигналов и для прямого управления каналами реле. Программно можно выбрать три режима работы входов: управление кнопкой без фиксации или по Modbus; управление выключателем (с фиксацией) или по Modbus; управление только по Modbus. По умолчанию включен режим управления кнопкой без фиксации.


=== Технические характеристики ===
=== Технические характеристики ===
Строка 40: Строка 39:
|
|
*В режиме холостого хода (со всеми выключенными реле) — 0,5 Вт
*В режиме холостого хода (со всеми выключенными реле) — 0,5 Вт
*Пиковое значение — до 12 Вт
*Со всеми включенными реле — 2,5 Вт
*Пиковое значение (при включении всех реле одновременно) — до 11 Вт в течение 20 мс
|-
|-
! colspan="2" |'''Выходы'''
! colspan="2" |'''Выходы'''
Строка 65: Строка 65:
|Максимальный коммутируемый ток на каждый канал  
|Максимальный коммутируемый ток на каждый канал  
|
|
* для резистивной нагрузки — 10 А
* Для резистивной нагрузки — 10 А
* для ёмкостной и индуктивной нагрузки — 400 мА
* Для ёмкостной и индуктивной нагрузки — 400 мА
|-
|-
|Сопротивление канала в открытом состоянии
|Сопротивление контактов
|< 100 мОм
|< 100 миллиом
|-
|-
|Напряжение изоляции между контроллером и выходом
|Напряжение изоляции между контроллером и выходом
Строка 132: Строка 132:
|-
|-
|Температура воздуха
|Температура воздуха
|От -20 до +50 °С
|От -40 до +50 °С
|-
|-
|Относительная влажность
|Относительная влажность
Строка 140: Строка 140:


=== Габаритные размеры модуля ===
=== Габаритные размеры модуля ===
[[File:DIN 6U.png |450px|thumb|center|Габаритные размеры]]
[[File:DIN 6U.png |450px|thumb|center|Габаритные размеры]]


=== Обмен данными ===
=== Обмен данными ===


На физическом уровне модуль подключается через интерфейс [[RS-485]]. Для управления WB-MR14 используется протокол Modbus RTU. В устройствах Wirenboard данные Modbus передаются по линиям связи RS-485. Подробнее смотрите страницу [[Протокол Modbus]]. Modbus-адрес модуля задается на заводе и нанесен на наклейке на его боковой стороне. Адрес может быть изменен программно. Подробно смотрите в разделе [[#Параметры_Modbus]]
На физическом уровне модуль подключается через интерфейс [[RS-485]]. Для управления WB-MR14 используется протокол Modbus RTU. В устройствах Wirenboard данные Modbus передаются по линиям связи RS-485. Подробнее смотрите страницу [[Протокол Modbus]]. Modbus-адрес модуля задается на заводе и расположен на боковой стороне устройства. Адрес может быть изменен программно. Подробно смотрите в разделе [[#Параметры_Modbus]]


== Монтаж ==
== Монтаж ==
Строка 161: Строка 159:
Модуль необходимо устанавливать таким образом, чтобы удовлетворять требованиям электробезопасности и не допускать случайного касания контактов, находящихся под высоким напряжением. Модуль должен эксплуатироваться при рекомендованных условиях окружающей среды.
Модуль необходимо устанавливать таким образом, чтобы удовлетворять требованиям электробезопасности и не допускать случайного касания контактов, находящихся под высоким напряжением. Модуль должен эксплуатироваться при рекомендованных условиях окружающей среды.


[[File:Installation_WB14.png|550px|thumb|center|Образец монтажа и подключения модуля (у последнего модуля на линии устанавливается терминирующий резистор). Выбор качественного блока питания очень важен для работы модуля.]]
[[File:Installation_WB14.png|550px|thumb|center|Образец монтажа и подключения модуля (у последнего модуля на линии устанавливается терминирующий резистор). Выбор качественного блока питания очень важен для работы модуля]]


== Добавление модуля в web-интерфейс контроллера Wiren Board==
== Добавление модуля в веб-интерфейс контроллера Wiren Board==
[[Файл:The_new_device.png|300px|thumb|Новый модуль WB-MR14 в web-интерфейсе]]
[[Файл:The_new_device.png|300px|thumb|Новый модуль WB-MR14 в веб-интерфейсе]]
Новое устройство добавляется в web-интерфейс в раздел соответствующего порта RS-485. В web-интерфейсе на панели справа выбираем пункт Configs -> Serial Device Driver Configuration. В настройках порта /dev/ttyAPP1 добавляем новое устройство, нажав на кнопку '''+ Serial device''' в разделе List of Devices. Затем указываем адрес устройства и выбираем его тип. Подробно о настройке устройств в web-интерфейсе Wiren Board смотрите страницу [[RS-485:Настройка_через_веб-интерфейс]].
Новое устройство добавляется в веб-интерфейс, в раздел соответствующего порта RS-485. В веб-интерфейсе, на панели справа выбираем пункт Configs -> Serial Device Driver Configuration. В настройках порта /dev/ttyAPP1 добавляем новое устройство, нажав на кнопку '''+ Serial device''' в разделе List of Devices. Затем указываем адрес устройства и выбираем его тип. Подробно о настройке устройств в веб-интерфейсе Wiren Board смотрите страницу [[RS-485:Настройка_через_веб-интерфейс]].


В разделе Devices появилось новое устройство, название составлено из типа устройства и адреса: '''WB-MR14 1'''  
В разделе Devices появилось новое устройство, название составлено из типа устройства и адреса: '''WB-MR14 1'''  


Обратите внимание: желтый индикатор Status на WB_MR14 начал периодически мигать, это означает, что Wiren Board обменивается данными с модулем реле. В web-интерфейсе можно следить за параметром Supply voltage (напряжение питания модуля реле) — он меняется почти при каждом опросе модуля.
Обратите внимание: желтый индикатор Status на WB_MR14 начал периодически мигать, это означает, что Wiren Board обменивается данными с модулем реле. В веб-интерфейсе можно следить за параметром Supply voltage (напряжение питания модуля реле) — он меняется почти при каждом опросе модуля.


Устройство WB-MR14 стандартное, поэтому его описание задано в шаблоне, который хранится на контроллере Wiren Board в файле /usr/share/wb-mqtt-serial/templates/config-wb-mr14.json.
Устройство WB-MR14 стандартное, поэтому его описание задано в шаблоне, который хранится на контроллере Wiren Board в файле /usr/share/wb-mqtt-serial/templates/config-wb-mr14.json.


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


Пример управления релейного модуля WB-MR14 контроллером Wiren Board 5 и программирования сценариев управления мы рассмотрим на простом макете, когда релейный модуль является единственным устройством, подключенным к контроллеру. Нормально разомкнутая кнопка без фиксации подключена ко входу 1 и GND. Питание 12 В подается на входы V+(+) и GND (-). Входы/выходы RS-485 A и B первого порта контроллера и модуля WB-MR14 соединены.  
Пример управления релейным модулем WB-MR14 контроллером Wiren Board 5 и программирования сценариев управления мы рассмотрим на простом макете, когда релейный модуль является единственным устройством, подключенным к контроллеру. Нормально разомкнутая кнопка без фиксации подключена ко входу 1 и GND. Питание 12 В подается на входы V+(+) и GND (-). Входы/выходы RS-485 A и B первого порта контроллера и модуля WB-MR14 соединены.  
[[Файл:Lab_mr14_2.png|800px|thumb|center|Лабораторный макет]]
[[Файл:Lab_mr14_2.png|800px|thumb|center|Лабораторный макет]]


Строка 187: Строка 185:




С помощью виртуальных выключателей в web-интерфейсе K1-K14 можно управлять соответствующими выходами модуля и следить за их состоянием. Если реле будет включено или выключено через внешний вход, это отразится и в web-интерфейсе.
С помощью виртуальных выключателей в веб-интерфейсе K1-K14 можно управлять соответствующими выходами модуля и следить за их состоянием. Если реле будет включено или выключено через внешний вход, это отразится и в веб-интерфейсе.
Текущее состояние входов показывают флажки Input1 — Input14 (на них нельзя щелкнуть, чтобы изменить состояние). Счетчики нажатий/включений отображаются в полях  Input 1 counter – Input 14 counter. Значения счетчиков хранятся в оперативной памяти микроконтроллера модуля реле и обнуляются при выключении/включении питания и сбросе.
Текущее состояние входов показывают флажки Input1 — Input14 (на них нельзя щелкнуть, чтобы изменить состояние). Счетчики нажатий/включений отображаются в полях  Input 1 counter – Input 14 counter. Значения счетчиков хранятся в оперативной памяти микроконтроллера модуля реле и обнуляются при выключении/включении питания и сбросе.


Ползунок Safety Timer позволяет задать время отключения (в секундах) всех выходов при отсутствии обмена данными с Wiren Board (0 – таймер безопасности отключен). При возобновлении связи с контроллером выключившиеся реле останутся выключенными. Ползунком удобно управлять с помощью клавиш со стрелками, предварительно сфокусировавшись на нем мышью: перемещение ползунка с помощью мыши не обеспечивает достаточную точность. Таймер безопасности позволяет остановить технологические процессы в случае, если контроль над модулем утрачен (например, перебит кабель RS-485). Если реле останутся включенными, то, например, не закроется клапан подачи жидкости, что приведет к переполнению резервуара и затоплению помещения. Всегда учитывайте возможность потери связи с контроллером при проектировании систем управления.
Ползунок Safety Timer позволяет задать время отключения (в секундах) всех выходов при отсутствии обмена данными с Wiren Board (0 – таймер безопасности отключен). При возобновлении связи с контроллером выключившиеся реле останутся выключенными. Ползунком удобно управлять с помощью клавиш со стрелками, предварительно сфокусировавшись на нем мышью: перемещение ползунка с помощью мыши не обеспечивает достаточную точность. Таймер безопасности позволяет остановить технологические процессы в случае, если контроль над модулем утрачен (например, перебит кабель RS-485). Если реле останутся включенными, то, например, не закроется клапан подачи жидкости, что приведет к переполнению резервуара и затоплению помещения. Всегда учитывайте возможность потери связи с контроллером при проектировании систем управления.


<!-- НЕ ТРОГАТЬ -->
<!-- НЕ ТРОГАТЬ -->
== Параметры Modbus ==
== Параметры Modbus ==


Строка 207: Строка 207:
|READ_COIL  
|READ_COIL  
| 1
| 1
|-
|READ DISCRETE INPUTS
| 2
|-
|-
|WRITE_SINGLE_COIL || 5
|WRITE_SINGLE_COIL || 5
Строка 238: Строка 241:


=== Карта регистров ===
=== Карта регистров ===
{|  border="1" class="wikitable" style="text-align:center"
{|  border="1" class="wikitable" style="text-align:center"
!Регистр / адрес
!Регистр / адрес
Строка 255: Строка 259:
'''3''': отключить управление  
'''3''': отключить управление  
|| режим работы кнопок
|| режим работы кнопок
|-
| 6
(только в прошивках 1.5.3 и позднее)
|| holding || RW || 0 ||  '''0''': не сохранять состояние реле при отключении питания
'''1''': сохранять состояние реле при отключении питания
|| режим работы реле при отключении питания
|-
|-
| 8 || holding || RW || 0 || секунды || таймаут для безопасного режима
| 8 || holding || RW || 0 || секунды || таймаут для безопасного режима
Строка 285: Строка 295:


Значение состояния каждого реле хранится в регистрах флагов (coil). У 1-го реле адрес регистра 0, у 2-го &mdash; 1 и т.д.
Значение состояния каждого реле хранится в регистрах флагов (coil). У 1-го реле адрес регистра 0, у 2-го &mdash; 1 и т.д.
== Управление модулем из командной строки ==
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].
=== Чтение регистров ===
Проверим, верно ли, что мы подключились именно к WB-MR14. По адресу 200 хранится уникальная для WB-MR14 сигнатура длиной в 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>
В результате выполнения команды получаем строку '''WBMR14'''. Всё верно -- это релейный модуль WB-MR14.
=== Перезагрузка ===
В ряде случаев может потребоваться перезагрузка модуля. Для этого в регистр 120 (0x78) необходимо записать любое значение, отличное от нуля:
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x06 -r0x78 100
</syntaxhighlight>
Такая перезагрузка равносильна сбросу по питанию и изменению адреса устройства на 0x01. Все реле при этом выключаются. Предварительно, конечно, необходимо остановить сервис wb-mqtt-serial и убедиться, что к контроллеру не подключены другие Modbus-устройства.
=== Выбор типа управления внешними входами ===
В модуле WB-MR14 предусмотрено два режима управления каналами реле: с помощью внешних входов и по протоколу RS-485.
В WB-MR14 можно выбрать режим 0, когда ко внешнему входу подключена кнопка (без фиксации), или режим 1, когда для управления используется обычный выключатель (с фиксацией). Режим 3 отключает внешнее управление, но при этом все равно сохраняется возможность управления по RS-485 и чтение состояния внешних входов. По умолчанию включен режим 0.
В режиме внешнего управления реле срабатывает по падению логического уровня: к внешним входам подключены резисторы подтяжки к линии +5V и реле соответствующего канала срабатывает при соединении входа с GND.
Состояние реле каждого канала хранится в памяти контроллера до перезагрузки, по умолчанию при включении питания все реле выключены. После инициализации модуля опрашиваются внешние входы и реле всех каналов переводятся в соответствующее состояние.
Тип внешнего управления можно выбрать для каждого канала отдельно через регистры 9—22. Для этого в holding-регистре 5 должно быть записано значение 0:
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x06 -r5 0
</syntaxhighlight>
Инициализировать регистр при старте можно и через настройки web-интерфейса, смотрите страницу [[RS-485:Настройка_через_веб-интерфейс]].
<!--
== Конструкция релейного модуля WB-MR14 ==
Физически контроллер состоит из двух плат: платы реле и контактов и платы управления, питания и индикации. Платы расположены под прямым углом и соединены пайкой. Платы установлены в пластиковом корпусе для монтажа на DIN-рейку. На корпусе имеется доступ к индикаторам и контактам.
[[Файл:Armstm32F.png|250px|thumb|right|Центральный процессор модуля]]
В основе устройства лежит 32-битный RISC-процессор STM32F051R8T6 с ядром Cortex-M0, функционирующий на частоте 16 МГц.
На плате управления предусмотрено место для установки разъема для перепрограммирования контроллера. Разъем не распаян.
На плате контактов и реле расположены 12 реле HF32F-G, коммутирующие соответствующие 12 выходов, выведенных на винтовые зажимы.
Контакты реле объединены в две группы, каждая со своим общим проводом, COM1 и COM2. На общий провод отводится две винтовых клеммы, соединенных на плате.
В случае активной (резистивной) нагрузки реле могут коммутировать до 10 А/230 В переменного тока и до 10 А/30 В постоянного. В случае реактивной (ёмкостной или индуктивной) нагрузки (двигатели, импульсные блоки питания и т.д.) не следует коммутировать ток больше 400 мА. Используйте внешние контакторы, рассчитанные на соответствующую нагрузку.
Каждый контакт реле защищен от образования дуги при замыкании/размыкании симметричным TVS-диодом.
Микропроцессор управляет реле и индикаторами через модули ULN2003A, состоящие  из дарлингтоновских транзисторных сборок и защитных диодов, гасящих ток самоиндукции катушек реле. Для устранения дребезга контактов на каждой входной линии применяются RC-цепочки. Входы подтянуты резисторами к линии питания +5V.
-->


== Примеры программирования ==
== Примеры программирования ==
=== Пишем простой скрипт ===
=== Пишем простой скрипт ===
Попробуем перенести логику управления контактами реле модуля на контроллер Wiren Board. Для этого мы перейдем в режим, когда внешнее управление релейным модулем отключено, и будем считывать состояние входов модуля и соответствующим образом переключать реле. <!--Оценим затем, насколько этот способ управления окажется дольше, чем при переключении средствами релейного модуля.-->
Попробуем перенести логику управления контактами реле модуля на контроллер Wiren Board. Для этого мы перейдем в режим, когда внешнее управление релейным модулем отключено, и будем считывать состояние входов модуля и соответствующим образом переключать реле. <!--Оценим затем, насколько этот способ управления окажется дольше, чем при переключении средствами релейного модуля.-->
MQTT-названия устройств и их элементов управления можно найти в разделе Settings web-интерфейса (см. [[MQTT]]).
MQTT-названия устройств и их элементов управления можно найти в разделе Settings веб-интерфейса (см. [[MQTT]]).


В качестве альтернативного способа мы можем в командной строке строке подписаться на все топики (/#) командой
В качестве альтернативного способа можно в командной строке подписаться на все топики (/#) командой
<syntaxhighlight lang="bash">mosquitto_sub -v -t /#</syntaxhighlight>
<syntaxhighlight lang="bash">mosquitto_sub -v -t /#</syntaxhighlight>
и очень скоро понимаем, что имя нашего устройства '''wb-mr14_1'''.
Очень скоро станет ясно, что имя нашего устройства '''wb-mr14_1'''.
Теперь мы можем подписаться только на сообщения данного устройства и без труда определить названия элементов управления:
Теперь мы можем подписаться только на сообщения данного устройства и без труда определить названия элементов управления:
<syntaxhighlight lang="bash">mosquitto_sub -v -t /devices/wb-mr14_1/#</syntaxhighlight>
<syntaxhighlight lang="bash">mosquitto_sub -v -t /devices/wb-mr14_1/#</syntaxhighlight>
Строка 351: Строка 315:
service wb-mqtt-serial start
service wb-mqtt-serial start
</syntaxhighlight>
</syntaxhighlight>
Проверяем реле модуля не должны реагировать на нажатие кнопки, соединяющей выводы 1 и GND. Однако при этом в очереди публикуются сообщения о состоянии входа Input 1:
Проверяем: реле модуля не должны реагировать на нажатие кнопки, соединяющей выводы 1 и GND. Однако при этом в очереди публикуются сообщения о состоянии входа Input 1:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
/devices/wb-mr14_1/controls/Input 1 1
/devices/wb-mr14_1/controls/Input 1 1
Строка 394: Строка 358:
<!-- TODO: это всё конечно адский ад и набор плохих практик. Так делать не стоит, раздел переписать. Правильный способ - смотреть на изменение Input 1 Counter. -->
<!-- TODO: это всё конечно адский ад и набор плохих практик. Так делать не стоит, раздел переписать. Правильный способ - смотреть на изменение Input 1 Counter. -->


Давайте усложним задачу и напишем скрипт, который будет включать и выключать основное освещение (реле 3), но если кнопка нажата два раза подряд в течение полутора секунд, то будет включено дополнительное освещение (реле 4). Нажатие на кнопку через продолжительное время отключает основное, а повторное нажатие в течение полутора секунд и дополнительное освещение. Для этого мы используем компонент Input 3 counter и таймер, управляемый функциями setTimeout()/clearTimeout)() (подробнее смотрите на [https://github.com/contactless/wb-rules странице описания wb-rules в Github.])
Давайте усложним задачу и напишем скрипт, который будет включать и выключать основное освещение (реле 3), но если кнопка нажата два раза подряд в течение полутора секунд, то будет включено дополнительное освещение (реле 4). Нажатие на кнопку через продолжительное время отключает основное освещение, а повторное нажатие в течение полутора секунд - дополнительное. Для этого мы используем компонент Input 3 counter и таймер, управляемый функциями setTimeout()/clearTimeout)() (подробнее смотрите на [https://github.com/contactless/wb-rules странице описания wb-rules в Github.])
В модуле реле WB-MR14 режим работы можно задавать не только для всех входов сразу, но и для отдельных входов. При этом общий режим (регистр хранения 5) должен быть 0. А для отдельного входа 3 (и 4) — значение 3 (управление только контроллером).
В модуле реле WB-MR14 режим работы можно задавать не только для всех входов сразу, но и для отдельных входов. При этом общий режим (регистр хранения 5) должен быть 0. А для отдельного входа 3 (и 4) — значение 3 (управление только контроллером).


Строка 441: Строка 405:
});
});
</syntaxhighlight>
</syntaxhighlight>
[[Периферийные устройства с интерфейсом RS-485 серии WB-xxxx |Назад к списку периферийных устройств]]
translator, wb_editors
4218

правок