Настройка Modbus TCP Master на роутерах Teltonika
ООО «Цифровой Ангел»
Главный раздел Modbus TCP используется для настройки маршрутизатора в качестве главного устройства, а другие маршрутизаторы, настроенные в этом разделе, в качестве подчиненных устройств. Ведущее устройство Modbus TCP может затем запрашивать данные у этих подчиненных устройств Modbus TCP. Вот схема, чтобы сделать вещи проще для понимания:
Во-первых, давайте настроим наш второй маршрутизатор, который будет работать как подчиненное устройство.
Конфигурирование ведомого устройства Modbus TCP
В этом примере мы будем настраивать наше ведомое устройство на внутренний IP-адрес 192.168.1.2. Это можно сделать, изменив параметр IP-адреса на странице Network-> LAN:
Теперь нам нужно включить службу Modbus для этого ведомого устройства, так как мы откроем определенный порт для пропуска через TCP-соединения (также возможно «Разрешить удаленный доступ», если мы хотим получить доступ к этому маршрутизатору из внешней глобальной сети, используя его общедоступный IP-адрес). Это делается на странице services -> Modbus:
Настройка главного устройства Modbus TCP
Добавление нового ведомого устройства
На главном устройстве (в этом примере главное устройство имеет внутренний IP-адрес 192.168.1.1) откройте Service-> Modbus-> Мастер Modbus TCP. Чтобы добавить нового ведомого, введите произвольное имя, идентификатор ведомого, IP-адрес и порт и нажмите кнопку «Add»:
Примечание. Идентификатор, IP-адрес и порт ведомого устройства должны совпадать с настройками на странице «Службы» ведомого устройства -> Modbus.
После нажатия кнопки «Добавить» вы будете перенаправлены на страницу конфигурации расширенного ведомого:
Field | Value | Description |
---|---|---|
Enabled | yes | no; default: no | Turns communication with the slave device on or off. |
Name | string; default: none | Slave device's name, used for easier management purposes. |
Slave ID | integer [0..255]; default: none | Slave ID. Each slave in a network is assigned a unique identifier ranging from 1 to 255. When the master requests data from a slave, the first byte it sends is the Slave ID. When set to 0, the slave will respond to requests addressed to any ID. |
IP address | ip; default: none | Slave device's IP address. |
Port | integer [0..65535]; default: none | Slave device's Modbus TCP port. |
Period | integer [1..6400]; default: none | Interval at which requests are sent to the slave device. |
Timeout | integer [1..30]; default: none | Maximum response wait time. |
Включите конфигурацию этого ведомого, установив флажок и введите время ожидания в секундах. Нажмите Сохранить.
Теперь ведомое устройство добавлено в раздел Modbus TCP Master, но нам нужно проверить, работает ли оно.
Для проверки работоспособности функционала мы можем настроить запрос. Запрос Modbus - это способ получения данных от подчиненных устройств Modbus. Ведущий отправляет запрос подчиненному с указанием кода функции, который необходимо выполнить. Затем ведомое устройство отправляет запрошенные данные обратно на ведущее устройство Modbus. Вы можете создать максимум 64 конфигурации запроса для каждого подчиненного устройства.
Нажимаем кнопку «Редактировать» в конфигурации ведомого устройства.
Нажав кнопку «Добавить» в разделе конфигурации запросов, мы сможем настроить новый запрос. Скажем, в нашем случае нас интересует параметр System Uptime, который находится в первых двух регистрах нашего устройства (подробнее о параметрах и их регистрах мы можем получить или установить с помощью сервиса Modbus: RUT955 Modbus). Вот как должен выглядеть наш запрос для этой цели:
Field | Value | Description |
---|---|---|
Name | string; default: Unnamed Parameter | Request name. Used for easier management purposes. |
Data type | 8bit INT | 8bit UINT | 16bit INT, high byte first | 16bit INT, low byte first | 16bit UINT, high byte first | 16bit UINT, low byte first | 32bit float, Byte order 1,2,3,4 | 32bit float, Byte order 4,3,2,1 | 32bit float, Byte order 2,1,4,3 | 32bit float, Byte order 3,4,1,2; default: 16bit INT, high byte first | How read data will be stored. |
Function | 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16; default: 3 |
A function code specifies the type of register being addressed by a Modbus request. The codes represent these functions:
|
First Register | integer [0..65535]; default: 1 | First Modbus register from which data will be read. |
Number of Registers | integer [1..2000]; default: none | Number of Modbus registers that will be read during the request. |
Enabled | yes | no; default: no | Turns the request on or off. |
Test | - (interactive button) | Generates a Modbus request according to given parameters in order to test the request configuration. You must first save the configuration before you can use the Test button. |
Delete | - (interactive button) | Deletes the request. |
Add | - (interactive button) | Adds a new request configuration. |
Примечание. Во время написания этой статьи нам нужно сначала «сохранить» конфигурацию, прежде чем нажать кнопку «Тест». Это перенаправит вас на главную страницу Modbus TCP, и вам нужно будет снова нажать кнопку «Редактировать», чтобы попытаться проверить функциональность этого запроса.
Теперь, нажав кнопку «Тест», мы можем получить значение времени работы системы из первых двух регистров:
Мы видим, что подчиненное устройство возвращает запрошенное ведущее устройство регистров.
Cигнализация
Сигналы тревоги - это способ настройки автоматических действий, когда некоторые значения Modbus удовлетворяют заданным пользователем условиям. Для настройки этих сигналов мы нажимаем кнопку «Сигналы тревоги»:
Выберите подходящую функцию и нажмите «Добавить».
Скажем, в этом простом примере мы хотим запустить выход (в частности, релейный выход), когда значение времени безотказной работы нашей системы будет больше 0 (это всегда верно, поскольку второй регистр, в котором хранится информация, хранит время безотказной работы системы маршрутизатора в секундах). После сохранения конфигурации каждую минуту (поскольку период для отправки запросов на ведомое устройство установлен на 60 секунд), релейный выход будет инвертироваться, и если вы находитесь рядом с устройством, вы должны услышать его. Следующая конфигурация будильника будет выглядеть так:
Field | Value | Description |
---|---|---|
Enabled | yes | no; default: no | Turns the alarm on or off |
Function code | Read Coil Status (1) | Read Input Status (2) | Read Holding Registers (3) | Read Input Registers (4); default: Read Coil Status (1) | Modbus function used in Modbus request. |
Register | integer [0..65535]; default: none | Number of the Modbus coil/input/holding register/input register that will be read. |
Condition | More than | Less than | Equal to | Not Equal to; default: Equal to | When a value is obtained it will be compared against the value specified in the following field. The comparison will be made in accordance with the condition specified in this field. |
Value | various; default: none | The value against which the read data will be compared. |
Action | SMS | Trigger output | Modbus Request; default: SMS |
Action that will be taken if the condition is met. Possible actions:
|
SMS: Message | string; default: none | SMS message text. |
SMS: Phone number | phone number; default: none | Recipient's phone number. |
Trigger output: Output | Open collector output | Relay output | Both; default: Open collector output | Which output(s) will be triggered. |
Trigger output: I/O Action | Turn On | Turn Off | Invert; default: Turn On | Action that will taken on the specified output. |
Modbus Request: IP address | ip | host; default: none | Modbus slave's IP address. |
Modbus Request: Port | integer [0..65535]; default: none | Modbus slave's port. |
Modbus Request: Timeout | integer [1..30]; default: 5 | Maximum time to wait for a response. |
Modbus Request: ID | integer [1..255]; default: none | Modbus slave ID. |
Modbus Request: Modbus function | Read Coil Status (1) | Read Input Status (2) | Read Holding Registers (3) | Read Input Registers (4) | Force Single Coil (5) | Preset Single Register (6) | Force Multiple Coils (15) | Force Multiple Registers (16); default: Force Single Coil (5) | A function code specifies the type of register being addressed by a Modbus request. |
Modbus Request: First register | integer [0..65535]; default: none | Begins reading from the register specified in this field. |
Modbus Request: Number of registers | integer [0..65535]; default: none | The number of registers that will be read from the first register. |
На ваш e-mail было отправлено письмо с регистрационной информацией.
Пожалуйста, дождитесь письма, так как контрольная строка изменяется при каждом запросе.