Опрос коммутаторов по промышленному протоколу Modbus TCP
Modbus TCP - это открытый протокол связи, который используется для мониторинга и управления оборудованием промышленной автоматизации, таким как ПЛК, датчики, счетчики и пр. Modbus TCP - это протокол прикладного уровня, основанный на реализации протокола транспортного уровня TCP. В качестве TCP порта, который используется протоколом Modbus TCP, стандартом выделен TCP порт 502.
Пакеты данных Modbus TCP содержат: заголовок MBAP, код функции и данные.
![](https://kyland-rus.ru//cj65xutsjwht/a8156b56-a3d3-11ee-98a1-316d8960acc5/kyland-modbus-1.webp)
Обмен данными с устройствами Modbus осуществляется с помощью команд, которые содержат в себе: адрес ведомого устройства (Slave ID/Unit ID), код функции и блок данных. На основе кода функции и блока данных определяется действие, которое должно совершить устройство по полученной команде. У каждого ведомого Modbus устройства производителем определяется карта Modbus адресов, в ней должны быть перечислены поддерживаемые оборудованием коды функций, а также указаны адреса всех регистров и их описание.
Протокол Modbus определяет 4 типа регистров:
- Coils: получение информации дискретного ввода, допускается как чтение, так и запись
- Discrete: получение информации дискретного ввода, допускается только чтение
- Input registers: получение информации аналогового ввода, допускается только чтение
- Holding registers: получение информации аналогового вывода, допускается как чтение, так и запись
Наиболее часто встречающиеся коды функций Modbus представлены ниже:
Код функции (HEX) | Название | Тип доступа |
0x01 | Read Coil | Чтение |
0x02 | Read discrete inputs | Чтение |
0x03 | Read Holding Registers | Чтение |
0x04 | Read Input Registers | Чтение |
0x05 | Write single coil | Запись |
0x06 | Write Single Holding Registers | Запись |
0x0F | Write Multiple Holding Registers | Запись |
0x10 | Write multiple coils | Запись |
В большинстве случаев мониторинг сетевого оборудования производится с помощью протокола SNMP. Но чтобы не приумножать количество ненужного программного обеспечения, управление и контроль промышленных коммутаторов можно осуществлять по протоколу Modbus TCP, внедрив его в уже существующую SCADA-систему, работающую по этому протоколу.
Коммутаторами серии SICOM3000A можно управлять по Modbus TCP и получать такие данные как информация об устройстве, его портах, аварии или о статусе протоколов DT-Ring, DRP/DHP или RSTP.
Перейдем к примеру опроса коммутатора по данному протоколу.
Настройка
1. Включаем на коммутаторе протокол Modbus TCP. В зависимости от задачи можно включить протокол как только на чтение, так и на чтение/запись. Помимо протокола Modbus коммутаторы Kyland можно опрашивать по протоколу Ethernet/IP или Profinet (модели -PN).
![](https://kyland-rus.ru//cj65xutsjwht/3b33870c-a3d8-11ee-b567-7dd269a9c3bb/test-1.webp)
* После завершения всех настроек необходимо сохранить конфигурацию: Maintenance -> Save Current Configuration.
2. Для получения данных от коммутатора в примере будет использоваться ПО Modbus Poll. Задаем параметры подключения - TCP/IP и IP-адрес нашего коммутатора.
![](https://kyland-rus.ru//cj65xutsjwht/fcf669d0-a3d4-11ee-b86a-a73d087309d5/kyland-modbus-3.webp)
3. И параметры опроса.
![](https://kyland-rus.ru//cj65xutsjwht/3ad82518-a3d5-11ee-8040-bfdc4cdbc3d9/kyland-modbus-4.webp)
Slave ID - идентификатор Slave-устройства, по умолчанию у коммутаторов равен 1
Function - код функции, в примере 0x04 - код для чтения 16 битных данных (см. таблицу выше)
Address - начальный адрес для опроса, по умолчанию 0
Length - количество адресов для опроса
Scan Rate - скорость сканирования, от 0 до 3600000 мс
4. С помощью Modbus Poll и Wireshark можно проанализировать данные, полученные от коммутатора.
![](https://kyland-rus.ru//cj65xutsjwht/84c807e2-a3d5-11ee-a6fb-25fdc60713d6/kyland-modbus-5.webp)
![](https://kyland-rus.ru//cj65xutsjwht/b18cffd0-a3d5-11ee-a93a-9d8aaf2f0f9c/kyland-modbus-6.webp)
В данном случае адрес регистра Modbus описывает модель коммутатора.
Карта данных Modbus и интерпретация информации по ссылке.