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

Навигация

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

Нет описания правки
 
(не показано 6 промежуточных версий 3 участников)
Строка 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-канальный]]
Строка 190: Строка 190:
Ползунок Safety Timer позволяет задать время отключения (в секундах) всех выходов при отсутствии обмена данными с Wiren Board (0 – таймер безопасности отключен). При возобновлении связи с контроллером выключившиеся реле останутся выключенными. Ползунком удобно управлять с помощью клавиш со стрелками, предварительно сфокусировавшись на нем мышью: перемещение ползунка с помощью мыши не обеспечивает достаточную точность. Таймер безопасности позволяет остановить технологические процессы в случае, если контроль над модулем утрачен (например, перебит кабель RS-485). Если реле останутся включенными, то, например, не закроется клапан подачи жидкости, что приведет к переполнению резервуара и затоплению помещения. Всегда учитывайте возможность потери связи с контроллером при проектировании систем управления.
Ползунок Safety Timer позволяет задать время отключения (в секундах) всех выходов при отсутствии обмена данными с Wiren Board (0 – таймер безопасности отключен). При возобновлении связи с контроллером выключившиеся реле останутся выключенными. Ползунком удобно управлять с помощью клавиш со стрелками, предварительно сфокусировавшись на нем мышью: перемещение ползунка с помощью мыши не обеспечивает достаточную точность. Таймер безопасности позволяет остановить технологические процессы в случае, если контроль над модулем утрачен (например, перебит кабель RS-485). Если реле останутся включенными, то, например, не закроется клапан подачи жидкости, что приведет к переполнению резервуара и затоплению помещения. Всегда учитывайте возможность потери связи с контроллером при проектировании систем управления.


== Управление по Modbus ==
<!-- НЕ ТРОГАТЬ -->
<!-- НЕ ТРОГАТЬ -->
== Параметры Modbus ==
 
=== Modbus-адрес ===
[[Файл:modbus_address_mr14.png|150px|thumb|left|Modbus-адрес, установленный на производстве]]
Modbus-адрес устройств Wiren Board легко определить — он нанесен на наклейке (адрес указан в десятичном формате). Новый адрес устройства записывается командой WRITE_SINGLE_REGISTER в регистр хранения (holding register) с адресом 128 (0x80). Подробно о том, как определить или изменить Modbus-адрес модуля, написано на странице [[Определение_и_изменение_Modbus-адреса_устройств_Wirenboard]].
 
=== Команды Modbus, поддерживаемые устройством ===
 
 
{|  border="1" class="wikitable" style="text-align:center"
!Команда
!десятичный код
|-
|READ_COIL
| 1
|-
|READ DISCRETE INPUTS
| 2
|-
|WRITE_SINGLE_COIL || 5
|-
|WRITE_MULTI_COILS || 15
|-
|READ_HOLDING_REGISTERS || 3
|-
|WRITE_SINGLE_REGISTER || 6
|-
|WRITE_MULTI_REGISTERS || 16
|-
|}
 
=== Безопасный режим ===
В этом режиме при прекращении обмена данными по Modbus устройство отключает реле по прошествии заданного времени.
 
Для включения безопасного режима (Safety timer) нужно записать значение, отличное от 0, в регистр хранения командой WRITE_SINGLE_REGISTER по адресу 2. Это значение &mdash; таймаут в секундах. Значение "0" отключает безопасный режим.
 
=== Цифровые входы  ===
 
Поддерживается три режима работы цифровых входов:
* Режим 0: прямое управление каналами, выключатели без фиксации (кнопки). Нажатие на кнопку изменяет состояние реле.
* Режим 1: прямое управление каналами, выключатели с фиксацией. Переключение выключателя с фиксацией устанавливает состояние реле в соответствии с положением выключателя.
* Режим 3: управление каналами отключено.
 
Поведением по умолчанию является прямое управление каналами реле (режим 0). Установить режим для всех каналов можно, записав соответствующее число в регистр хранения с адресом 5.
Режим можно устанавливать отдельно для каждого канала с помощью регистров 9—22. Настройки для каждого канала учитываются только в том случае, если регистр 5 (общие настройки режимов входов) находится в состоянии "0", т.е. имеет значение по умолчанию.
 
В любом режиме работы текущее состояние кнопок можно получить чтением регистров Discrete Inputs 0—13 (см. таблицу ниже).
 
=== Карта регистров ===
 
{|  border="1" class="wikitable" style="text-align:center"
!Регистр / адрес
!тип
!чтение/запись
!значение по умолчанию
!формат
!назначение
|-
| 0—13 || coil || RW || - || 1 или 0|| состояние реле 1—14
|-
| 0—13 || discrete || R || - ||  1 или 0
|| состояние входа 1—14
|-
| 5 || holding || RW || 0 ||  '''0''': кнопки без фиксации
'''1''': выключатель с фиксацией
'''3''': отключить управление
|| режим работы кнопок
|-
| 6
(только в прошивках 1.5.3 и позднее)
|| holding || RW || 0 ||  '''0''': не сохранять состояние реле при отключении питания
'''1''': сохранять состояние реле при отключении питания
|| режим работы реле при отключении питания
|-
| 8 || holding || RW || 0 || секунды || таймаут для безопасного режима
|-
| 9—22 || holding || RW || 0 || '''0''': кнопки без фиксации
'''1''': выключатель с фиксацией
 
'''3''': отключить управление
|| режим работы входа N;
в регистре 5 должен быть записан "0"
|-
| 32—45||  input || R || 0 || 16-bit unsigned int || счетчик нажатий входа 1—14
|-
| 120 (0x78) || holding || RW || 0 ||  отличное от 0 || запись в регистр вызывает перезагрузку модуля без сохранения состояния
|-
| 121 (0x79) || holding || R || - ||  мВ || текущее напряжение питания модуля
|-
| 128 (0x80) || holding || RW || 1 || 1—247
|| Modbus-адрес устройства
|-
| 200-206 || holding || R || {'W','B','M','R','1','4'} ||  || сигнатура
|-
| 220-241 || holding || R || ||  __date__ __time__||  дата сборки прошивки
|-
|}
 
По адресу 200 лежит сигнатура релейного модуля длиной 6 байт, соответствующая строке "WBMR14". Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus.
Для получения сигнатуры нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3.
Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Oct 10 2016 13:31:55'). Длина записи — 21 регистр.


Подробно о работе с модулем по протоколу Modbus написано в разделе [[Relay Module Modbus Management|Управление модулями реле Wirenboard по протоколу Modbus]].
Значение состояния каждого реле хранится в регистрах флагов (coil). У 1-го реле адрес регистра 0, у 2-го &mdash; 1 и т.д.
Там же можно найти карту регистров устройства.


== Примеры программирования ==
== Примеры программирования ==
Строка 214: Строка 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
Строка 257: Строка 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 (управление только контроллером).


translator, wb_editors
4218

правок