Що таке Modbus
Modbus — простий протокол «запит–відповідь», створений 1979 року для програмованих контролерів. Сьогодні його підтримують лічильники електроенергії, частотні перетворювачі, ПЛК, сонячні інвертори та датчики. Простота — причина його поширеності.
Модель
Одна сторона — клієнт (колишня назва master), інша — сервер (slave). Клієнт питає, сервер відповідає. Сервер ніколи сам не починає розмову.
Дані
| Тип | Розмір | Доступ |
|---|---|---|
| Coils | 1 біт | читання й запис |
| Discrete Inputs | 1 біт | лише читання |
| Input Registers | 16 біт | лише читання |
| Holding Registers | 16 біт | читання й запис |
Основні функції
- 01 / 02 — читання coils / discrete inputs
- 03 / 04 — читання holding / input registers
- 05 / 06 — запис одного coil / регістра
- 15 / 16 — запис кількох coils / регістрів
Варіанти
- Modbus RTU — двійковий, по послідовній лінії, найчастіше RS-485. Адреси 1–247, контрольна сума CRC-16. Кадри розділяються паузою щонайменше 3,5 символи.
- Modbus ASCII — текстовий, використовується рідко.
- Modbus TCP — по Ethernet, порт 502, без CRC (його забезпечує TCP), з додатковим заголовком MBAP.
Типові помилки
- Зміщення адреси — у документації 40001, а протоколу потрібен 0. Різні інструменти рахують з 0 або з 1.
- Порядок байтів — 32-бітове число або float займає два регістри, а їхній порядок (big/little endian, переставлені слова) залежить від виробника.
- Різні параметри лінії — швидкість, парність і стоп-біти мають збігатися в усіх пристроїв.
- Два пристрої з однією адресою — відповідають одночасно, і кадри псуються.
- Надто частий опит — пристроям потрібен час на відповідь. Тайм-аут не має бути коротшим за нього.
Обмеження
У Modbus немає вбудованого захисту, опису пристроїв і подій — усе зчитується періодичним опитом. У мережах із доступом ззовні додають окремий захист транспорту.
