Modbus TCP/RTU: протокол для промышленных сетей
Modbus — самый распространённый открытый протокол в промышленности. Используется в датчиках, ЧРП, контроллерах, счётчиках. Разберём TCP и RTU, регистры, реализацию.
Что такое Modbus
Modbus — открытый протокол (Modicon, 1979), сейчас поддерживается организацией Modbus Organization. Используется в:
- Частотных приводах (Schneider, ABB, Vacon);
- Датчиках (Endress+Hauser, WIKA, Mitsubishi);
- Счётчиках энергии (Schneider, ABB);
- Контроллерах (Mitsubishi, Schneider, Segnetics);
- Панелях оператора (Weintek).
Две версии
Modbus RTU (Remote Terminal Unit) — по RS-485 (2-проводная или 4-проводная линия). С 1979 года. До 32 устройств на шине. Скорость до 115 200 бод.
Modbus TCP — поверх Ethernet. С 1999 года. Неограниченное количество устройств. Скорость — 100/1000 Мбит/с.
Modbus RTU и Modbus TCP — это один протокол, разные физические уровни. Регистры и команды — одинаковые.
Архитектура
Modbus — это «master/slave» (ведущий/ведомый):
- Master — ПЛК или SCADA, отправляет запросы;
- Slave (Server в TCP) — датчик/привод, отвечает на запросы.
Master опрашивает slave по очереди. Slave не может инициировать обмен (есть расширения, но редко используются).
Регистры Modbus
| Тип | Адрес | Размер | Доступ |
|---|---|---|---|
| Coil (0xxxxx) | 0-65535 | 1 бит | Read/Write |
| Discrete Input (1xxxxx) | 0-65535 | 1 бит | Read only |
| Input Register (3xxxxx) | 0-65535 | 16 бит | Read only |
| Holding Register (4xxxxx) | 0-65535 | 16 бит | Read/Write |
В реальной документации Modbus адресация идёт от 1 (1xxxxx = 0, 4xxxxx = 0). Многие устройства используют «0-based» или «1-based» — путаница частая. Всегда проверяйте документацию.
Команды Modbus (Function Codes)
| FC | Название | Описание |
|---|---|---|
| 01 | Read Coils | Чтение битов (Coil) |
| 02 | Read Discrete Inputs | Чтение битов (Discrete) |
| 03 | Read Holding Registers | Чтение 16-бит (Holding) |
| 04 | Read Input Registers | Чтение 16-бит (Input) |
| 05 | Write Single Coil | Запись одного бита |
| 06 | Write Single Register | Запись одного регистра |
| 15 | Write Multiple Coils | Запись нескольких бит |
| 16 | Write Multiple Registers | Запись нескольких регистров |
Пример: чтение температуры с датчика
Запрос (от Master):
01 03 00 00 00 01 84 0A
01 - адрес Slave (1)
03 - функция Read Holding Registers
0000 - начальный адрес (0)
0001 - количество регистров (1)
840A - CRC
Ответ (от Slave):
01 03 02 00 C4 B9 61
01 - адрес Slave
03 - функция
02 - количество байт данных
00C4 - значение (196 = 19.6°C с десятичной 0.1)
B961 - CRC
Modbus RTU: особенности
- Физический уровень: RS-485 (2-проводная, полудуплекс);
- Длина шины: до 1200 м;
- Устройства: до 32 (без репитера), до 247 (с репитерами);
- Терминаторы: 120 Ом на концах линии;
- Скорости: 9600, 19200, 38400, 115200 бод;
- Формат данных: 8N1, 8E1, 8O1.
Modbus TCP: особенности
- Порт: 502;
- Формат: Big-endian (отличается от RTU);
- Не использует CRC (заменён TCP checksum);
- До 247 подключений (теоретически);
- Один master, много slave.
Modbus в Siemens S7-1500
S7-1500 поддерживает Modbus TCP «из коробки» (с FW 2.6+):
- Для TCP — стандартные блоки TCON, TSEND, TRCV, TDISCON;
- Для RTU — через модуль CM PtP (RS-485);
- Modbus RTU/TCP библиотеки — в TIA Portal (с FW 2.8+).
Также есть готовые блоки MB_CLIENT, MB_SERVER (для TCP) в TIA Portal.
Modbus в Mitsubishi ПЛК
Mitsubishi ПЛК имеет встроенную поддержку Modbus RTU и TCP через библиотеки OwenCommunication. Настройка через OwenLogic или CODESYS.
Типичные ошибки Modbus
- Неправильный адрес регистра (0-based vs 1-based);
- Несоответствие типа данных (Holding vs Input);
- Нет терминаторов на RS-485;
- Длинная шина с большим количеством устройств (помехи);
- Конфликт slave-адресов на шине.
Когда использовать Modbus
Modbus хорош для:
- Датчиков и приводов (особенно от разных производителей);
- Счётчиков энергии;
- Простых сетей (дешевле PROFINET);
- Интеграции со старым оборудованием.
Не для:
- Real-time управления (PROFINET IRT лучше);
- Больших сетей (PROFINET масштабируется лучше);
- Safety-приложений (PROFIsafe).
Заключение
Modbus — рабочая лошадка промышленных сетей. Простой, открытый, дешёвый. В ЭкоЭн используем Modbus для интеграции датчиков, приводов, счётчиков. Для критичных сетей — PROFINET.
Заказать услугу.
