Modbus RTU и TCP: регистри, функции и често срещани грешки

Modbus е най-разпространеният промишлен протокол. Модел на данните, функции, RTU срещу TCP и грешките, които най-често отнемат часове.
Modbus RTU и TCP: регистри, функции и често срещани грешки

AI генерирана илюстрация — примерна обстановка.

Какво е Modbus

Modbus е прост протокол за заявка и отговор, създаден през 1979 г. за програмируеми контролери. Днес го поддържат електромери, честотни инвертори, PLC, слънчеви инвертори и датчици. Простотата е причината да е толкова разпространен.

Модел

Една страна е клиент (по-старо наименование master), другата е сървър (slave). Клиентът пита, сървърът отговаря. Сървърът никога не започва разговор сам.

Данни

ТипРазмерДостъп
Coils1 битчетене и запис
Discrete Inputs1 битсамо четене
Input Registers16 битасамо четене
Holding Registers16 битачетене и запис

Основни функции

  • 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 няма вградена сигурност, няма описание на устройствата и няма събития — всичко се чете чрез периодични запитвания. В мрежи с достъп отвън се добавя отделна защита на транспорта.