Протокол Modbus, его достоинства и недостатки. Физический, канальный и прикладной уровни протокола Modbus
Modbus — открытый промышленный протокол обмена данными, широко применяемый в системах автоматизации для связи между контроллерами, датчиками, преобразователями, счётчиками, панелями оператора и другими устройствами.
Основные варианты:
Modbus RTU — двоичный формат по последовательной линии;
Modbus ASCII — текстовый формат;
Modbus TCP — передача Modbus-сообщений через Ethernet и TCP/IP.
1. Принцип работы Modbus
В классическом варианте обмен строится по схеме клиент–сервер; в старой терминологии часто говорят ведущий–ведомый.
Клиент отправляет запрос:
Клиент → запрос → СерверСервер выполняет команду и возвращает ответ:
Клиент ← ответ ← СерверНапример, ПЛК запрашивает у измерительного преобразователя значение температуры.
Каждое устройство в последовательной Modbus-сети имеет свой адрес.
Физический уровень
Физический уровень определяет, как электрически передаются сигналы.
Для Modbus RTU и Modbus ASCII обычно применяют:
RS-485;
реже RS-232.
Особенно распространён RS-485.
RS-485
Преимущества RS-485:
возможность подключения нескольких устройств к одной линии;
хорошая помехоустойчивость;
работа на значительных расстояниях;
дифференциальная передача сигнала.
Обычно используется витая пара.
Схематично:
ПЛК ───── прибор 1 ───── прибор 2 ───── прибор 3 RS-485На концах длинной линии могут устанавливаться согласующие резисторы.
Для Modbus TCP физической средой обычно является Ethernet.
Канальный уровень
Канальный уровень определяет:
структуру кадра;
адрес устройства;
способ обнаружения ошибок;
правила передачи сообщений.
Modbus RTU
Кадр примерно имеет вид:
Адрес | Код функции | Данные | CRCАдрес
Определяет устройство, которому предназначено сообщение.
Код функции
Определяет требуемую операцию.
Например:
01 — чтение дискретных выходов;
02 — чтение дискретных входов;
03 — чтение Holding Registers;
04 — чтение Input Registers;
05 — запись одного дискретного выхода;
06 — запись одного регистра;
15 — запись нескольких дискретных выходов;
16 — запись нескольких регистров.
Данные
Содержат адрес регистров, количество элементов и передаваемые значения.
CRC
CRC служит для обнаружения ошибок передачи.
Если контрольная сумма не совпадает, сообщение считается повреждённым.
Modbus ASCII
В Modbus ASCII информация передаётся символами ASCII.
Кадр начинается символом : и заканчивается специальной последовательностью конца строки.
Для контроля ошибок применяется LRC.
Modbus ASCII проще наблюдать человеком, но он менее эффективен по скорости и объёму передачи, чем RTU.
Modbus TCP
В Modbus TCP используется Ethernet и стек TCP/IP.
В этом варианте:
адресация сети выполняется средствами IP;
надёжная доставка обеспечивается TCP;
вместо RTU-кадра используется специальный заголовок MBAP;
CRC Modbus RTU в сообщении Modbus TCP не используется.
Прикладной уровень
Прикладной уровень определяет смысл команд и данных.
Modbus оперирует четырьмя основными типами объектов.
| Объект | Тип | Назначение |
|---|---|---|
| Coils | 1 бит | Дискретные выходы |
| Discrete Inputs | 1 бит | Дискретные входы |
| Input Registers | 16 бит | Входные регистры |
| Holding Registers | 16 бит | Регистры хранения |
Coils
Используются для дискретных состояний, которые можно читать и изменять.
Например:
Пуск двигателя = 1 Стоп = 0Discrete Inputs
Предназначены для чтения дискретных входных сигналов.
Например:
Концевой выключатель Аварийный контакт Состояние датчикаInput Registers
Используются для передачи измеряемых величин.
Например:
Температура Давление РасходHolding Registers
Используются для хранения параметров, которые обычно можно читать и записывать.
Например:
Уставка температуры Коэффициент регулирования Заданная скоростьПример обмена
Пусть контроллеру необходимо считать значение давления.
Он отправляет устройству:
Адрес устройства Код функции 03 Адрес регистра Количество регистров CRCУстройство отвечает:
Адрес Код функции Количество байтов Значение давления CRCТаким способом контроллер получает необходимые данные.
Достоинства Modbus
Основные преимущества:
открытый и широко распространённый протокол;
простая структура;
сравнительно простая реализация;
поддерживается большим количеством промышленного оборудования;
возможность подключения устройств разных производителей;
Modbus RTU хорошо подходит для относительно простых полевых сетей;
Modbus TCP позволяет использовать стандартные Ethernet-сети;
удобен для ПЛК, SCADA, HMI и измерительных приборов.
Недостатки Modbus
К недостаткам относятся:
в классическом Modbus RTU сравнительно небольшая скорость;
базовый Modbus не содержит развитых встроенных механизмов информационной безопасности;
данные передаются в виде регистров, и пользователь должен знать карту регистров конкретного прибора;
разные производители могут по-разному представлять многобайтовые значения;
при последовательной сети отказ или повреждение общей линии может нарушить связь с несколькими устройствами;
Modbus RTU не предназначен для передачи больших объёмов информации;
сам протокол не описывает смысл конкретного регистра — его необходимо смотреть в документации прибора.
Различие уровней кратко
Прикладной уровень ↓ Команды Modbus: 03, 04, 06, 16 и др. Регистры и данные Канальный уровень ↓ Кадр, адрес, CRC/LRC, правила передачи Физический уровень ↓ RS-485 / RS-232 или Ethernet для Modbus TCPКратко для ответа по билету
Modbus — открытый промышленный протокол обмена данными между контроллерами и полевыми устройствами. Основные варианты — Modbus RTU, Modbus ASCII и Modbus TCP.
На физическом уровне для Modbus RTU обычно используется RS-485, а для Modbus TCP — Ethernet. На канальном уровне формируется кадр, содержащий адрес устройства, код функции, данные и контроль ошибок CRC; в Modbus ASCII применяется LRC. На прикладном уровне определяются функции чтения и записи дискретных сигналов и 16-разрядных регистров.
Главные достоинства Modbus — простота, открытость и широкая поддержка оборудования. Недостатки — ограниченные возможности безопасности, необходимость знать карту регистров устройства и сравнительно невысокая производительность последовательного Modbus RTU.