Управление модулями реле Wirenboard по протоколу Modbus

From Wiren Board
Jump to: navigation, search
This page contains changes which are not marked for translation.

Other languages:
English • ‎русский


Шина Modbus RTU

Устройства Wirenboard управляются по протоколу Modbus RTU. На физическом уровне модуль подключается через интерфейс RS-485. Устройствами поддерживается следующий набор команд:

Код функции HEX Название Действие
1 0x01 Read Coils Чтение значений нескольких регистров флагов
2 0x02 Read Discrete Inputs Чтение значений нескольких дискретных входов
3 0x03 Read Holding Registers Чтение значений нескольких регистров хранения
4 0x04 Read Input Registers Чтение значений нескольких регистров ввода
5 0x05 Write Single Coil Запись одного регистра флагов
6 0x06 Write Single Register Запись одного регистра (ввода или хранения)
15 0x0F Write Multiple Coils Запись нескольких регистров флагов
16 0x10 Write Multiple Register Запись нескольких регистров (ввода или хранения)


Настроить параметры модуля можно двумя способами: через командную строку с помощью утилиты modbus_client и через setup-секцию в Web интферфейсе

Параметры порта

По умолчанию устройства имеют следующие настройки :

  • Скорость: 9600
  • Четность: нет
  • Количество стоп битов: 2

При необходимости их можно изменить Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board


Modbus-адрес

Каждое устройство на линии имеет уникальный адрес 1-247. Адрес устройства установленный на заводе указан на наклейке на боку устройства. На заводе устройствам Wirenboard в одной партии присваиваются разные адреса, потому в вашем заказе скорее всего адреса не будут повторятся.

Адрес можно изменить записав новое значение в holding регистр 128(0x80). Запись значения адреса возможна широковещательной командой по адресу 0.

Если адрес устройства неизвестен и его необходимо выяснить можно использовать способ описаный в этой статье: Определение и изменение Modbus-адреса устройств Wirenboard

Настройка устройства

Безопасный режим

В этом режиме при прекращении обмена данными по Modbus устройство отключает реле по прошествии заданного времени.

Для включения безопасного режима (Safety timer) нужно записать значение, отличное от 0, в регистр хранения командой WRITE_SINGLE_REGISTER по адресу 8. Это значение — таймаут в секундах. Значение "0" отключает безопасный режим.

Режим работы реле в случае отключении питания

Для устройств WB-MR существует возможность запоминать состояние выхода при отключении питания. Режим контролируется Modbus-регистром 6. Если в регистре записано значение '0', то состояние выходов не сохраниться и при подаче питания все реле буду выключены. Если в регистре записана единица, то после возобновления питания все включенные до аварии реле включатся снова. Этот функционал появился в модулях с прошивкой, начиная с версии 1.5.3.

Цифровые входы

Состояние входа можно получить чтением регистров Discrete Inputs 0—x (где x = (количество управляемых каналов - 1)). Если вход соединён с GND, значение регистра равно 1, если не соединён - 0.

Режимы взаимодействия цифровых входов с релейными выходами

В релейном модуле можно включить прямое управление релейными выходами с цифровых входов. Есть несколько вариантов такого управления:

  • Простые:
    • Режим 0: управление выключателем без фиксации (кнопкой "с самостоятельным отжатием обратно"). Вы нажимаете на кнопку (замыкаете цифровой вход с GND), она сама "отжимается обратно", состояние реле переключается на противоположное.
    • Режим 1: управление выключателем с фиксацией. Реле всегда устанавливается в соответствии с положением выключателя. Если выключатель "включён" (замыкает цифровой вход с GND), реле тоже замкнуто. Если выключатель "выключен", реле разомкнуто.
    • Режим 3: управление релейным выходом с цифрового входа отключено.
  • Сложные:
    • Mapping-матрица (смотрите подробное описание ниже)

Режим можно установить отдельно для каждого канала. Для этого в регистре 5 должно находиться значение "0", а режим для каждого канала записывается в регистры хранения, начиная с адреса 9 для первого канала и т.д.

Есть устаревший способ - установка режима для всех каналов одновременно. Для этого запишите соответствующее число в регистр хранения с адресом 5.

Mapping-матрица

Начиная с прошивки 1.9.0 для отдельных каналов предусмотрен также режим 2 -- отключить все выходы, и режимы работы (4 и 5) в соответствии с mappig-матрицей (смотри далее). В этой и более поздних версиях прошивок в модулях реализована возможность более гибкой настройки взаимодействия входов и выходов релейных модулей при помощи специальной mapping-матрицы: таблицы, в которой для каждого входа при изменении его состояния кодируется изменение состояние любого релейного выхода. Подробное описание можно найти в статье I/O_Mapping_Matrix.

Карта регистров модулей реле

В таблице:

  • x — количество релейных выходов;
  • y — количество цифровых входов.

(для модулей WB-MRM2 карту регистров смотрите на странице описания этого модуля)

Регистр / адрес Тип Чтение/запись Значение по умолчанию Формат Назначение Примечание
0 .. (x-1) coil RW - 1 или 0 состояние реле с номером 1 .. x
0 .. (y-1) discrete R - 1 или 0 состояние входа с номером 1 .. y
5 holding RW 0
  • 0: кнопки без фиксации
  • 1: выключатель с фиксацией
  • 3: отключить взаимодействие
режим взаимодействия цифровых входов с релейными выходами. Регистры состояний входов и счётчик нажатий продолжают работать во всех режимах. Регистр использовался в старом механизме настройки. Рекомендуется оставлять в нём значение 0, а входы настраивать через отдельные регистры 9 .. (9+x-1)
6 holding RW
  • 0: не восстанавливать состояние реле после восстановления питания
  • 1: восстанавливать состояние реле после восстановления питания
режим работы реле в случае отключении питания (только в прошивках 1.5.3 и позднее)
8 holding RW 0 секунды таймаут для безопасного режима
9 .. (9+x-1) holding RW 0
  • 0: кнопки без фиксации
  • 1: выключатель с фиксацией
  • 3: отключить взаимодействие
режим взаимодействия отдельного цифрового входа с соответствующим релейным выходом;

в регистре 5 должен быть записан "0"

  • 2: отключать все реле при нажатии
  • 4: управлять в соответствии с mapping-матрицей
  • 5: управлять в соответствии с mapping-матрицей, через 20 минут повторно имитировать состояние ввода
Начиная с прошивки 1.9.0
1 Начиная с прошивки 1.12.0
16 holding RW
  • 0: кнопки без фиксации
  • 1: выключатель с фиксацией
  • 3: отключить взаимодействие
режим работы цифрового входа 0 для отключения всех реле
2
  • 2: отключать все реле при нажатии
  • 4: управлять в соответствии с mapping-матрицей
  • 5: управлять в соответствии с mapping-матрицей, через 20 минут повторно имитировать состояние ввода
режим работы цифрового входа 0; в регистре 5 должен быть записан "0" Начиная с прошивки 1.9.0
20 .. (20+x-1) holdreg RW 50 0 - 100 время защиты от дребезга в миллисекундах Начиная с прошивки 1.13.0
32 .. (32+y-1) input R 0 16-bit unsigned int счетчик срабатываний входа 1 .. y
384-447 holding RW 0 регистры mapping-матрицы Начиная с версии прошивки 1.9.0


Регистры, общие для всех устройств Wiren Board c Modbus RTU

Регистр/ адрес тип чтение/ запись значение по умолчанию формат назначение
104-105 input R 32-bit unsigned int время работы устройства с момента загрузки в в секундах
110 holding RW 96 baud rate / 100 скорость порта RS-485, делённая на 100. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
(Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board)
111 holding RW 0 0 - 2 настройка бита чётности порта RS-485. Допустимые значения: 0 - нет бита чётности (none), 1 - нечётный (odd), 2 - чётный (even)
112 holding RW 2 1 - 2 количество стоп-битов порта RS-485. Допустимые значения: 1, 2
120 (0x78) holding RW 0 отличное от 0 запись в регистр вызывает перезагрузку МК без сохранения состояния
121 (0x79) input R 16-bit unsigned int мВ текущее напряжение питания модуля
128 (0x80) holding RW написан на наклейке на корпусе 1 - 247 Modbus-адрес устройства
129 (0x81) holding RW 0 отличное от 0 запись в регистр вызывает переход МК в режим обновления прошивки на 2 минуты
200-206 input R строка, null-terminated модель устройства
220-241 input R строка, null-terminated время и дата сборки прошивки
220-248 хэш коммита и название ветки откуда собрана прошивка (2 символа в регистре)
250-265 input R строка, null-terminated версия прошивки
266-269 input R 64-bit unsigned int расширение уникального идентификатора
270-271 input R 32-bit unsigned int уникальный идентификатор (S/N)
290-301 input R строка, null-terminated сигнатура прошивки
330-337 input R строка, null-terminated версия загрузчика

Регистры настройки параметров обмена данными по RS-485 поддерживаются начиная с прошивки версии 1.6.0