Какво е Modbus
Modbus е прост протокол за заявка и отговор, създаден през 1979 г. за програмируеми контролери. Днес го поддържат електромери, честотни инвертори, PLC, слънчеви инвертори и датчици. Простотата е причината да е толкова разпространен.
Модел
Една страна е клиент (по-старо наименование 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 няма вградена сигурност, няма описание на устройствата и няма събития — всичко се чете чрез периодични запитвания. В мрежи с достъп отвън се добавя отделна защита на транспорта.
