Modbus RTU/TCP на практике: настройка, диагностика и типовые ошибки
- Modbus RTU и TCP: в чём разница
- Монтаж шины RS-485
- Настройка адресов и регистров
- Modbus TCP: сеть и порты
- Диагностика и типовые ошибки
- Чек-лист ПНР Modbus
Modbus RTU и TCP: в чём разница
Modbus — протокол обмена «мастер — slave» (в терминах Modbus: клиент опрашивает сервер). Данные организованы в регистры (holding/input) и coils (дискретные).
| Параметр | Modbus RTU | Modbus TCP |
|---|---|---|
| Физика | RS-485 (2-wire + GND) | Ethernet |
| Адресация | Slave ID 1…247 | IP + TCP port 502 |
| Типичное применение | Датчики, счётчики, VFD на шине | Контроллеры с Ethernet, SCADA |
| Главный риск ПНР | Топология, терминатор, GND | Firewall, Unit ID, timeout |

Монтаж шины RS-485 (Modbus RTU)
- Топология — линия (daisy chain), без «звезды» и T-ответвлений от «шины»;
- A/B (D+/D−) — полярность единая по всей линии; перепутанные пары дают timeout на всех slave;
- Терминатор 120 Ω — только на физических концах линии (часто DIP на первом и последнем устройстве);
- GND/общая — reference ground между master и slaves по рекомендации производителя (обычно экран к GND в одной точке);
- Длина и скорость — при 9600 бод до ~1200 м; при 115200 — десятки метров; согласовать с проектом.
USB-RS485 адаптер на ноутбуке — удобен для ПНР, но его GND может «плавать». Для стабильного опроса используйте изолированный преобразователь или подключайтесь через штатный порт PLC/BMS-контроллера.
Настройка адресов и регистров
- Назначить уникальный Slave ID каждому устройству (через DIP, HMI или ПО производителя);
- Задать на master: скорость (9600/19200/38400), parity (Even — типично для Modbus RTU), stop bits, timeout 500–1000 мс;
- Сверить map регистров — адрес, тип (INT16/UINT32/float), byte order (Big Endian / word swap);
- Опросить по одному slave через Modbus Poll / qModMaster / встроенный tool SCADA;
- Проверить функции 03 (read holding), 04 (read input), 06/16 (write) — по необходимости.
Off-by-one: в документации регистр может быть «40001», а в запросе Modbus — адрес 0. Всегда уточняйте: zero-based или one-based нумерация у конкретного устройства.
Modbus TCP: сеть и порты
- Порт по умолчанию — TCP 502 (на некоторых устройствах настраивается);
- Unit ID в TCP-кадре часто = 1 или совпадает с бывшим RTU-адресом при миграции через шлюз;
- Проверить firewall, VLAN, что master и slave в одной подсети или есть маршрут;
- RTU-over-TCP шлюзы (Moxa NPort и аналоги): настраиваются как «прозрачный serial», но требуют правильного режима (Real COM / TCP server).
Диагностика и типовые ошибки
| Симптом | Причина | Решение |
|---|---|---|
| Timeout на всех slave | A/B перепутаны, нет общего GND, неверная скорость | Прозвонить, сверить UART settings |
| Отвечает только один slave | Дубли Slave ID | Отключать по одному, переназначить ID |
| «Garbage» в значениях | Неверный byte order / тип регистра | Перебрать Float/INT32 swap в SCADA |
| TCP connection refused | Порт закрыт, неверный IP | ping, nmap 502, проверить VLAN |
| Нестабильный опрос | Два master на одной шине; нет терминатора | Один master; 120 Ω на концах |
Чек-лист ПНР Modbus
- ☐ Таблица Slave ID / IP — device name — регистры;
- ☐ Скриншот успешного опроса каждого slave;
- ☐ Проверена запись в управляемый регистр (команда + обратная связь);
- ☐ SCADA/BMS видит все точки без timeout >1 %;
- ☐ Документация map регистров приложена к as-built.
См. также на PNR24: BACnet MSTP на практике — аналогичная логика полевой шины для BMS.
Modbus — открытый протокол, но реализация регистров у каждого производителя своя. Всегда используйте официальный register map устройства; эта статья не заменяет документацию на конкретный прибор.
