Modbus – протокол передачи данных, разработанный фирмой Modicon. Служит для обмена данными с программируемыми контроллерами, выпускаемыми этой компанией и иными производителями. Протокол упрощает управление сетью устройств, например в системах поддержания заданных климатических параметров: температуры, влажности. Существуют две версии протокола - для последовательного порта и для сети Ethernet. В настоящее время Modbus является открытым стандартом передачи данных.

Modbus — структура системы
Modbus ASCII
Структура пакета в режиме ASCII
| : | Адрес | Код функции | Данные | Контрольная сумма | CR | LF | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| ... | |||||||||||
- данные передаются в шестнадцатиричной системе (по два знака ASCII)
- отступ между элементами пакета < 1s
Modbus RTU
Структура пакета в режиме RTU
| Адрес | Код функции | Данные | Контрольная сумма | |||
|---|---|---|---|---|---|---|
| ... | ||||||
- данные передаются в двоичной системе по 8 бит
- отступ между элементами пакета (молчание на линии) составляет 3,5T (где T — длительность передачи одного знака)
- отступы между знаками составляют < 1:5T
Значения байтов
адрес
0 – широковещательный адрес
1 – 247 – адрес устройства типа «slave»
код функции
1 $01 чтение значений выходных регистров
2 $02 чтение значений входных регистров
3 $03 чтение n регистров
4 $04 чтение n входных регистров
5 $05 запись 1 бита
6 $06 запись 1 регистра
7 $07 считывание статуса
8 $08 тест
15 $0F запись n битов
16 $10 запись n регистров
17 $11 идентификация устройства типа «slave»
128 – 255 $80–$FF зарезервировано для сообщений об ошибках
регистры и переменные
Устройство определяется как 16-битные регистры Wn.
Типы переменных, хранимых в регистрах:
битовые – биты регистров W0 W4095
2-байтовые – регистры Wn
4-байтовые – регистры Wn ; Wn+1
Рекомендуем
С целью упрощения пересылки данных с помощью пакетов с функцией «чтение/запись n регистров», регистры должны занимать адресное пространство от 0 до REJmax.
Диагностирование ошибок
Определение ошибок передачи данных возможно за счет распознавания четности поперечной (бит четности знака) и продольной (LRC, CRC).
Определение и диагностирование ошибок осуществляется с помощью:
- передачи устройством типа «slave» пакета с кодом ошибки:
- 01 – функция не может быть обработана
- 02 – недоступный адрес регистра данных
- 03 – недопустимое значение
- 04 – невосстанавливаемая ошибка устройства
- 05 – подтверждение о выполнении
- 06 – устройство не готово, команду необходимо повторить
- 07 – невозможность выполнения операции, необходим запрос кода ошибки
- 08 – ошибка четности при чтении памяти
- превышение времени ожидания ответа (timeout в устройстве типа «master») - устройство типа «slave» не высылает ответ в случае возникновения ошибки в пакете на выполнение.



