Опрос коммутаторов по промышленному протоколу Modbus TCP

21 декабря 2023 г.

Modbus TCP - это открытый протокол связи, который используется для мониторинга и управления оборудованием промышленной автоматизации, таким как ПЛК, датчики, счетчики и пр. Modbus TCP - это протокол прикладного уровня, основанный на реализации протокола транспортного уровня TCP. В качестве TCP порта, который используется протоколом Modbus TCP, стандартом выделен TCP порт 502.

Пакеты данных Modbus TCP содержат: заголовок MBAP, код функции и данные.

Обмен данными с устройствами 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).

* После завершения всех настроек необходимо сохранить конфигурацию: Maintenance -> Save Current Configuration.

2. Для получения данных от коммутатора в примере будет использоваться ПО Modbus Poll. Задаем параметры подключения - TCP/IP и IP-адрес нашего коммутатора.

3. И параметры опроса.

Slave ID - идентификатор Slave-устройства, по умолчанию у коммутаторов равен 1
Function - код функции, в примере 0x04 - код для чтения 16 битных данных (см. таблицу выше)
Address - начальный адрес для опроса, по умолчанию 0
Length - количество адресов для опроса
Scan Rate - скорость сканирования, от 0 до 3600000 мс

4. С помощью Modbus Poll и Wireshark можно проанализировать данные, полученные от коммутатора.

В данном случае адрес регистра Modbus описывает модель коммутатора.

Карта данных Modbus и интерпретация информации по ссылке.