|
|
Строка 194: |
Строка 194: |
| == Параметры Modbus == | | == Параметры Modbus == |
|
| |
|
| === Modbus-адрес ===
| | Подробно о работе с модулем по протоколу Modbus написано в разделе [[Relay Module Modbus Management|Управление модулями реле Wirenboard по протоколу 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. Это значение — таймаут в секундах. Значение "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 регистр.
| |
| | |
| Значение состояния каждого реле хранится в регистрах флагов (coil). У 1-го реле адрес регистра 0, у 2-го — 1 и т.д.
| |
|
| |
|
| == Управление модулем из командной строки == | | == Управление модулем из командной строки == |