|
Метка: новое перенаправление |
(не показано 5 промежуточных версий этого же участника) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Шлюз Modbus RTU}}
| | #REDIRECT [[Modbus RTU/TCP Slave]] |
| Контроллеры Wiren Board могут выступать в роли Slave-устройства и транслировать сообщения из выбранных MQTT-топиков в регистры Modbus RTU. Для каждого топика или группы можно указать свой modbus-адрес и номера регистров.
| |
| | |
| Функция трансляции топиков может быть полезна для настройки взаимодействия между контроллером Wiren Board и внешним программным обеспечением, например, SCADA-системы с поддержкой Modbus RTU.
| |
| | |
| {{Wbincludes:Installation wb-mqtt-mbgate}}
| |
| | |
| == Настройка ==
| |
| | |
| [[File:Modbus-RTU-settings-mbgate.png|right|thumb|300 px|Настройка Modbus-RTU шлюза в веб-интерфейсе контроллера Wiren Board]] | |
| | |
| После установки <code>wb-mqtt-mbgate</code> нужно указать топики, отображаемые в регистры Modbus RTU, уточнить их адреса и выбрать формат регистров.
| |
| | |
| Чтобы открыть настройку шлюза, в веб-интерфейсе перейдите в раздел '''Settings''' → '''Configs''' → '''MQTT to Modbus TCP and RTU slave gateway configuration'''
| |
| | |
| === Modbus binding ===
| |
| Выберите здесь тип шлюза — '''RTU''', а также serial-порт, на котором будет доступен шлюз и параметры соединения:
| |
| * '''Path to device''' — адрес serial-порта контроллера,
| |
| * '''Baud rate''' — скорость соединения,
| |
| * '''Parity''' — контроль четности,
| |
| * '''Data bits''' — биты данных,
| |
| * '''Stop bits''' — стоп-биты.
| |
| | |
| === MQTT connection ===
| |
| Здесь можно настроить параметры для подключения к брокеру сообщений MQTT. По умолчанию шлюз использует MQTT-брокер контроллера. Также вы можете настроить аутентификацию при подключении к брокеру.
| |
| | |
| Обязательные параметры:
| |
| * '''Address''' — адрес брокера сообщений. По умолчанию: <code>localhost</code> — подключение к брокеру контроллера.
| |
| * '''Port''' — номер порта, по которому доступен брокер. По умолчанию: <code>1883</code>.
| |
| | |
| Нажав на кнопку '''Properties''' вы можете включить дополнительные параметры:
| |
| * '''Keep-alive interval''' — интервал ожидания ответа от брокера. Если сообщение не пришло — запрос повторяется.
| |
| * '''Enable username+password authentification''' — если брокер требует аутентификации с помощью логина и пароля, установите этот флаг. Также потребуется указать данные учетной записи:
| |
| ** '''Login''' — имя пользователя.
| |
| ** '''Password''' — пароль.
| |
| | |
| === Register bindings ===
| |
| | |
| В этом разделе можно настроить соответствия топиков и регистров.
| |
| | |
| Раздел содержит список всех найденных каналов в очереди сообщений MQTT, распределённых по типу. Каналы определяются по имени топика: в список вносятся все топики, соответствующие шаблону <code>/devices/+/controls/+</code>, при этом в списке они отображаются как <code>+/+</code>. Например, если в брокере сообщений обнаружено сообщение с топиком <code>/devices/alarms/controls/alarm_test</code>, то в этом списке канал будет записан как <code>alarms/alarm_test</code>.
| |
| | |
| Если в брокере сообщений появились новые каналы, например, при подключении нового устройства — они будут добавлены в список при перезапуске службы. Чтобы перезапустить службу, сохраните конфигурацию или перезапустите контроллер.
| |
| | |
| Каналы распределены по четырем группам — типам регистров в Modbus:
| |
| * '''Discrete inputs''' — дискретные входы. Двоичные значения <code>1/0</code>, доступные только на чтение. Например, состояния входов GPIO.
| |
| * '''Coils''' — регистры флагов. Двоичные значения, доступные на чтение и на запись: переключатели состояний реле и т.п.
| |
| * '''Input registers''' — регистры ввода. Численные значения, доступные только на чтение: значение с датчика температуры, давления и т.п.
| |
| * '''Holding registers''' — регистры хранения. Численные значения, доступные на чтение и на запись: яркость освещения, уставки температуры и т.п.
| |
| | |
| Распределение происходит автоматически на основании описания канала в топиках: <code>/devices/+/controls/+/meta/+</code>.
| |
| | |
| '''Remap addresses after edit''' — если произошло наложение адресов, то обновить адреса устройств. Если установить флаг и сохранить настройки, то файл будет проанализирован на наложение адресов. Если наложения будут обнаружены, сервис попытается устранить их и после операции снимет флаг. Обновите страницу клавишами <code>Ctrl+Shift+R</code>, чтобы считать внесенные сервисом изменения.
| |
| | |
| '''ВНИМАНИЕ:''' используйте флаг '''Remap addresses after edit''' только на настраиваемой системе — адреса любых каналов могут измениться, в том числе и настроенных ранее.
| |
| | |
| === Discrete inputs and Coils ===
| |
| Для дискретных и числовых регистров доступны параметры:
| |
| * '''Enabled''' — флаг, включающий привязку канала к регистру. По умолчанию все каналы отключены.
| |
| * '''MQTT Device''' — имя канала в формате <code>+/+</code>, как соответствие <code>/devices/+/controls/+/</code>.
| |
| * '''Meta-type''' — тип канала, полученный из очереди MQTT. Параметр отображен только «для пользователя», не влияет на работу службы.
| |
| * '''Modbus unit ID''' и '''Start address''' — адресные поля Modbus RTU. Определяются хешированием от имени канала. Таким образом, одинаковые каналы на разных контроллерах с большой вероятностью будут иметь одинаковые адресные поля. Адреса 1 и 2 зарезервированы за пользователем, поэтому ни один канал не будет назначен на них автоматически.
| |
| | |
| === Input- и Holding-registers ===
| |
| | |
| Для Input- и Holding-регистров, доступны все параметры [[#Discrete inputs and Coils |дискретных и числовых]], а также дополнительно:
| |
| | |
| * '''Register format''' — тип хранимых данных:
| |
| ** ''Signed integer'' — знаковое целое;
| |
| ** ''Unsigned integer'' — беззнаковое целое;
| |
| ** ''BCD'' — двоично-десятичное беззнаковое целое. Например, десятичное значение 123 будет кодироваться как <code>0x123 == 291</code>;
| |
| ** ''IEEE 754 float'' — число с плавающей точкой;
| |
| ** ''Varchar'' — текстовое поле фиксированного размера (1 символ на регистр).
| |
| | |
| * '''Size (in bytes)''' — размер данных в байтах. Нужно учитывать, что для всех типов, кроме текстового, в один регистр укладывается два байта:
| |
| ** для целочисленных типов — 2, 4 и 8 байт — это будет 1, 2 и 4 регистра соответственно;
| |
| ** для чисел с плавающей точкой — 4 и 8 байт, то есть 2 и 4 регистра соответственно;
| |
| ** для текстовых полей — любое неотрицательное значение.
| |
| | |
| * '''Maximum value''' — максимальное значение поля. Требуется для каналов типа ''range''. Все значения больше максимума будут заменены на максимальное.
| |
| | |
| * '''Value scale''' — множитель значения. Например, если множитель равен 2 и в канале появилось значение 10, значение регистра будет 20. И наоборот, если в регистр было записано значение 30, в брокер уйдёт сообщение со значением 15.
| |
| | |
| * '''Byte swap''' — поменять порядок байт в modbus-регистрах. По умолчанию значения записываются в регистры в формате ''big-endian''. Если установить этот флаг, регистр будет интерпретироваться как ''little-endian''. ''Важно:'' флаг действует только на отдельные регистры; в случае составных значений (размером больше 2 байт), меняется порядок только в каждом двухбайтном слове. Например, значение <code>0x12345678</code> будет записываться как <code>0x34127856</code>,
| |
| | |
| * '''Word swap''' — поменять порядок слов для составных значений. Например, значение <code>0x12345678</code> будет записываться как <code>0x56781234</code>.
| |
| | |
| Таким образом, чтобы записать значение в формате ''little-endian'', нужно установить оба последних флага.
| |