Modbus RTU/TCP Slave: различия между версиями

→‎Input- и Holding-registers: исправил информацию для текстовых полей
м (Изменил отображаемое имя)
(→‎Input- и Holding-registers: исправил информацию для текстовых полей)
 
(не показано 9 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Шлюз Modbus RTU/TCP}}
{{DISPLAYTITLE: Шлюз Modbus RTU/TCP}}
== Описание ==
== Описание ==
Контроллеры Wiren Board могут выступать в роли Slave-устройства и транслировать сообщения из выбранных MQTT-топиков по протоколам Modbus RTU, Modbus TCP или [[SNMP]].  
Контроллеры Wiren Board могут выступать в роли Slave-устройства и транслировать сообщения из выбранных MQTT-топиков по протоколам Modbus RTU, Modbus TCP.  


Функция трансляции топиков может быть полезна для настройки взаимодействия между контроллером Wiren Board и внешним программным обеспечением, например, SCADA-системы с поддержкой Modbus RTU/TCP.
Функция трансляции топиков может быть полезна для настройки взаимодействия между контроллером Wiren Board и внешним программным обеспечением, например, SCADA-системы с поддержкой Modbus RTU/TCP.


Для создания шлюза Modbus RTU/TCP служит сервис <code>wb-mqtt-mbgate</code>. Перед использованием нужно указать топики, отображаемые в регистры 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|right|thumb|300 px|Настройка Modbus TCP шлюза в веб-интерфейсе контроллера Wiren Board]]
[[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|right|thumb|300 px|Настройка Modbus RTU шлюза в веб-интерфейсе контроллера Wiren Board]]
[[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-порта контроллера, на котором будет доступен шлюз.
Строка 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 RTU/TCP. Определяются хешированием от имени канала. Таким образом, одинаковые каналы на разных контроллерах с большой вероятностью будут иметь одинаковые адресные поля. Адреса 1 и 2 зарезервированы за пользователем, поэтому ни один канал не будет назначен на них автоматически.
* 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''. Все значения больше максимума будут заменены на максимальное.
wb_editors
480

правок