Modbus TCP и Modbus RTU: универсален протокол за измерване и управление в енергетиката

Modbus е най-разпространеният индустриален протокол в света. В енергетиката Modbus RTU (по RS-485) и Modbus TCP (по Ethernet) се ползват за четене на електромери, управление на инвертори, мониторинг на power meters и интеграция на разнородно оборудване.

Какво е Modbus

Modbus е прост, отворен протокол за обмен на данни между устройства в индустриални системи. Създаден от Modicon (днес Schneider Electric) през 1979 г., той е де факто стандарт за полеви комуникации. В енергетиката Modbus се среща навсякъде — от домашни инвертори до подстанционни power meters.

Варианти

ВариантФизическа средаФорматТипична скорост
Modbus RTURS-485, RS-232Бинарен, CRC-169600–115200 bit/s
Modbus ASCIIRS-485, RS-232ASCII (hex символи), LRC9600–19200 bit/s
Modbus TCPEthernet (TCP/IP, порт 502)Бинарен, без CRC (TCP осигурява контрол)10/100/1000 Mbit/s

Modbus ASCII е рядък в енергетиката. На практика се ползват Modbus RTU и Modbus TCP.

Модел Master-Slave / Client-Server

При Modbus RTU:

  • Master — SCADA, PLC или data logger, който инициира всяка заявка.
  • Slave — устройството с адрес от 1 до 247, което отговаря.
  • На една RS-485 линия има само един master и до 32 slave-а (или 128 с повторител).

При Modbus TCP:

  • Client — еквивалент на master. Отваря TCP връзка към сървъра.
  • Server — еквивалент на slave. Слуша на порт 502.
  • Множество клиенти могат да се свързват едновременно с един сървър.

Адресно пространство

Modbus дефинира четири области на данни:

ОбластТипДостъпТрадиционен адресен диапазон
Coils1-битовиRead/Write00001–09999
Discrete Inputs1-битовиRead only10001–19999
Input Registers16-битовиRead only30001–39999
Holding Registers16-битовиRead/Write40001–49999

В практиката повечето енергийни устройства ползват Holding Registers и Input Registers за аналогови величини (ток, напрежение, мощност, енергия) и Coils / Discrete Inputs за състояния и команди.

Основни функционални кодове

КодИмеОписание
01Read CoilsЧетене на група дискретни изходи
02Read Discrete InputsЧетене на група дискретни входове
03Read Holding RegistersЧетене на група holding регистри
04Read Input RegistersЧетене на група input регистри
05Write Single CoilЗапис на един дискретен изход
06Write Single RegisterЗапис на един holding регистър
15Write Multiple CoilsЗапис на група дискретни изходи
16Write Multiple RegistersЗапис на група holding регистри

При грешка устройството отговаря с exception response (функционален код OR 0x80) и exception code (01 — Illegal Function, 02 — Illegal Data Address, 03 — Illegal Data Value, 04 — Slave Device Failure).

Структура на кадъра

Modbus RTU

ПолеРазмер
Slave Address1 байт
Function Code1 байт
DataN байта (зависи от функцията)
CRC-162 байта

Кадрите се разделят с тишина от минимум 3.5 символни интервала.

Modbus TCP (MBAP Header)

ПолеРазмерОписание
Transaction ID2 байтаИдентификатор на заявката (за съпоставяне на отговора)
Protocol ID2 байта0x0000 за Modbus
Length2 байтаБрой оставащи байтове
Unit ID1 байтАдрес на slave (за gateway към RS-485)

CRC не се ползва — TCP/IP осигурява контрол на целостта. Transaction ID позволява множество паралелни заявки.

Типове данни и byte order

Modbus дефинира само 16-битови регистри. За по-сложни типове данни се ползват комбинации:

ТипРегистриЗабележка
UINT161Без знак, 0–65535
INT161Със знак, -32768–32767
UINT32 / INT322Big-endian или little-endian — зависи от производителя
FLOAT32 (IEEE 754)2Byte order (ABCD, CDAB, BADC, DCBA) — задължително да се провери
UINT64 / INT644Енергийни броячи (Wh, kWh)

Byte order е най-честият източник на грешки при интеграция. Различните производители подреждат байтовете по различен начин и това трябва да се провери в документацията или емпирично.

Приложения в енергетиката

  • Електромери — четене на активна/реактивна енергия, мощност, напрежение, ток, Power Factor. Типично Modbus RTU (RS-485) на 9600 bit/s.
  • Фотоволтаични инвертори — SMA, Fronius, Huawei, SolarEdge ползват Modbus TCP или RTU за мониторинг (DC/AC мощност, честота, температура) и управление (ограничаване на мощност, реактивна компенсация).
  • Power meters — Schneider PM5xxx, ABB M4M, Janitza UMG — многоканални измервателни уреди с Modbus RTU/TCP.
  • Батерийни системи (BESS) — SOC, SOH, DC напрежение, ток, температура.
  • Дизелгенератори — контролери (ComAp, DEIF) с Modbus RTU.

Modbus RTU спрямо Modbus TCP

ХарактеристикаModbus RTUModbus TCP
Физическа средаRS-485 / RS-232Ethernet
Скорост9600–115200 bit/s10/100/1000 Mbit/s
Максимален брой устройства32 на сегмент (247 адреса)Практически неограничен
Проверка на целосттаCRC-16TCP checksum
Паралелни заявкиНе (master чака отговор)Да (Transaction ID)
Максимална дължина1200 m (RS-485)100 m (Ethernet), без ограничение с комутатори

Gateway RTU ↔ TCP

Modbus gateway преобразува Modbus TCP заявки от SCADA в Modbus RTU заявки по RS-485 и обратно. Един gateway обслужва до 32 устройства на RS-485 шината. При конфигурацията е важно да се настрои правилно:

  • Скорост, паритет и стоп-битове за RS-485.
  • Response timeout (колко дълго gateway-ят чака отговор от slave).
  • Inter-frame delay (3.5 символни интервала, или по-дълъг при бавни устройства).

Въвеждане в експлоатация

  1. Свързване по RS-485 (A/B, GND) или Ethernet.
  2. Настройка на серийните параметри: скорост (9600 е по подразбиране), 8N1 или 8E1.
  3. Задаване на slave адрес (1–247) на всяко устройство.
  4. Определяне на регистровата карта от документацията на производителя.
  5. Проверка на byte order за 32-битови и float стойности.
  6. Тест с Modbus poll инструмент (ModbusPoll, QModMaster, mbpoll от терминала).
  7. Настройка на polling интервал в SCADA — обикновено 1–10 секунди.

Типични проблеми

  • Грешен byte order — стойностите изглеждат безсмислени (напр. 0.0 вместо 230.5 V).
  • Offset ±1 — някои производители броят регистрите от 0, други от 1; SCADA системата може да добави допълнителен offset.
  • Колизии на RS-485 при два master-а на една шина.
  • Response timeout — бавно устройство не отговаря навреме, master-ът отчита грешка.
  • Прекалено бърз polling — устройството не встига да обработи заявките.
  • Липса на терминираща резистор (120 Ω) в края на RS-485 линията.

Ограничения на Modbus

  • Няма стандартизирана регистрова карта — всеки производител подрежда данните различно.
  • Няма спонтанно предаване — master-ът трябва постоянно да пита (polling).
  • Няма времеви печати — SCADA слага своя timestamp, не на устройството.
  • Няма вградена сигурност — данните пътуват незащитени (Modbus Security, IEC 62351, TLS добавят защита, но не са широко разпространени).

Кога се избира Modbus

Modbus е правилният избор, когато устройството не поддържа нищо по-модерно (IEC 104, DNP3, IEC 61850), при интеграция на устройства от различни производители (практически всяко индустриално устройство поддържа Modbus), и за вътрешни полеви шини, където простотата и ниската цена на RS-485 са предимство. За критична телемеханика с времеви печати и спонтанно предаване се предпочита IEC 104 или DNP3.