Опрос коммутаторов по промышленному протоколу Modbus TCP
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 и интерпретация информации по ссылке.