wb_editors
480
правок
м (Слил статьи по Modbus RTU и Modbus TCP) |
(→Input- и Holding-registers: исправил информацию для текстовых полей) |
||
(не показано 12 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Modbus RTU/TCP | {{DISPLAYTITLE: Шлюз Modbus RTU/TCP}} | ||
== Описание == | == Описание == | ||
Контроллеры Wiren Board могут выступать в роли Slave-устройства и транслировать сообщения из выбранных MQTT-топиков по протоколам Modbus RTU, Modbus TCP | Контроллеры Wiren Board могут выступать в роли Slave-устройства и транслировать сообщения из выбранных MQTT-топиков по протоколам Modbus RTU, Modbus TCP. | ||
Функция трансляции топиков может быть полезна для настройки взаимодействия между контроллером Wiren Board и внешним программным обеспечением, например, SCADA-системы с поддержкой Modbus RTU/TCP. | Функция трансляции топиков может быть полезна для настройки взаимодействия между контроллером Wiren Board и внешним программным обеспечением, например, SCADA-системы с поддержкой Modbus RTU/TCP. | ||
Для создания шлюза Modbus RTU/TCP служит сервис [https://github.com/wirenboard/wb-mqtt-mbgate wb-mqtt-mbgate]. Перед использованием нужно указать топики, отображаемые в регистры Modbus RTU/TCP, уточнить их адреса и выбрать формат регистров. | |||
Настройки шлюза хранятся в файле <code>/etc/wb-mqtt-mbgate.conf</code> и могут быть изменены через веб-интерфейс. Чтобы открыть настройку шлюза, перейдите в веб-интерфейсе в раздел '''Settings''' → '''Configs''' → '''MQTT to Modbus TCP and RTU slave gateway configuration'''. | Настройки шлюза хранятся в файле <code>/etc/wb-mqtt-mbgate.conf</code> и могут быть изменены через веб-интерфейс. Чтобы открыть настройку шлюза, перейдите в веб-интерфейсе в раздел '''Settings''' → '''Configs''' → '''MQTT to Modbus TCP and RTU slave gateway configuration'''. | ||
{{Note|info| Обратите внимание, что порт, выбранный для работы в режиме Modbus-slave, не должен использоваться в настройках опроса драйвера wb-mqtt-serial!}} | |||
== Modbus TCP binding == | == Modbus TCP binding == | ||
[[Image:web-mbgate-settings.png| | [[Image:web-mbgate-settings.png|300 px|thumb|right|Настройка Modbus TCP шлюза в веб-интерфейсе контроллера Wiren Board]] | ||
Выберите здесь тип шлюза — '''TCP''', а также укажите IP-адрес и порт создаваемого сервера: | Выберите здесь тип шлюза — '''TCP''', а также укажите IP-адрес и порт создаваемого сервера: | ||
* Bind address — IP-адрес по которому будет доступен сервер Modbus TCP. По умолчанию: <code>*</code> — возможно подключение к любому IP-адресу контроллера. | * Bind address — IP-адрес по которому будет доступен сервер Modbus TCP. По умолчанию: <code>*</code> — возможно подключение к любому IP-адресу контроллера. | ||
Строка 17: | Строка 18: | ||
== Modbus RTU binding == | == Modbus RTU binding == | ||
[[Image:Modbus-RTU-settings-mbgate.png| | [[Image:Modbus-RTU-settings-mbgate.png|300 px|thumb|right|Настройка Modbus RTU шлюза в веб-интерфейсе контроллера Wiren Board]] | ||
Выберите здесь тип шлюза — '''RTU''', а также укажите serial-порт и параметры соединения: | |||
Выберите здесь тип шлюза — '''RTU''', а также укажите serial-порт | * Path to device — адрес serial-порта контроллера, на котором будет доступен шлюз. | ||
* Path to device — адрес serial-порта контроллера, | * Baud rate — скорость соединения. | ||
* Baud rate — скорость соединения | * Parity — контроль четности. | ||
* Parity — контроль четности | * Data bits — биты данных. | ||
* Data bits — биты данных | |||
* Stop bits — стоп-биты. | * Stop bits — стоп-биты. | ||
Строка 65: | Строка 65: | ||
* MQTT Device — имя канала в формате <code>+/+</code>, как соответствие <code>/devices/+/controls/+/</code>. | * MQTT Device — имя канала в формате <code>+/+</code>, как соответствие <code>/devices/+/controls/+/</code>. | ||
* Meta-type — тип канала, полученный из очереди MQTT. Параметр отображен только «для пользователя», не влияет на работу службы. | * Meta-type — тип канала, полученный из очереди MQTT. Параметр отображен только «для пользователя», не влияет на работу службы. | ||
* Modbus unit ID и Start address — | * Modbus unit ID и Start address — адрес slave-устройства в сети Modbus RTU/TCP и адрес его регистра. Определяются хешированием от имени канала. Таким образом, одинаковые каналы на разных контроллерах с большой вероятностью будут иметь одинаковые адресные поля. Адреса 1 и 2 зарезервированы за пользователем, поэтому ни один канал не будет назначен на них автоматически. | ||
'''Важно для Modbus TCP:''' Так как контроллер является шлюзом, то он назначает разным устройствам, которые к нему подключены разные Unit ID. Некоторое программное обеспечение рассчитано на работу с одним Unit ID (например 1) на одном IP-адресе. В некоторых программах стартовый адрес считается начинающимся с 1, а не с 0. В таком случае к стартовому адресу из конфигурации шлюза надо добавлять 1 при указании его в вашем ПО. | '''Важно для Modbus TCP:''' Так как контроллер является шлюзом, то он назначает разным устройствам, которые к нему подключены разные Unit ID. Некоторое программное обеспечение рассчитано на работу с одним Unit ID (например 1) на одном IP-адресе. В некоторых программах стартовый адрес считается начинающимся с 1, а не с 0. В таком случае к стартовому адресу из конфигурации шлюза надо добавлять 1 при указании его в вашем ПО. | ||
Строка 80: | Строка 80: | ||
** ''Varchar'' — текстовое поле фиксированного размера (1 символ на регистр). | ** ''Varchar'' — текстовое поле фиксированного размера (1 символ на регистр). | ||
* Size (in bytes) — размер данных в байтах. Нужно учитывать, что для всех типов | * Size (in bytes) — размер данных в байтах. Нужно учитывать, что для всех типов в один регистр укладывается два байта: | ||
** ''для целочисленных типов'' — 2, 4 и 8 байт — это будет 1, 2 и 4 регистра соответственно; | ** ''для целочисленных типов'' — 2, 4 и 8 байт — это будет 1, 2 и 4 регистра соответственно; | ||
** ''для чисел с плавающей точкой'' — 4 и 8 байт, то есть 2 и 4 регистра соответственно; | ** ''для чисел с плавающей точкой'' — 4 и 8 байт, то есть 2 и 4 регистра соответственно; | ||
** ''для текстовых полей'' — | ** ''для текстовых полей'' — длина строки указывается в регистрах (не в байтах), при этом 1 регистр = 1 символ. | ||
* Maximum value — максимальное значение поля. Требуется для каналов типа ''range''. Все значения больше максимума будут заменены на максимальное. | * Maximum value — максимальное значение поля. Требуется для каналов типа ''range''. Все значения больше максимума будут заменены на максимальное. |