Что такое 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 нет встроенной защиты, описания устройств и событий — всё считывается периодическим опросом. В сетях с доступом снаружи добавляют отдельную защиту транспорта.
