Протокол Modbus RTU и модули расширения МР-02м: полное руководство для инженера
Modbus RTU — один из самых распространённых протоколов промышленной связи. Он используется для обмена данными между программируемыми логическими контроллерами (ПЛК), панелями оператора (HMI) и устройствами ввода-вывода — например, модулями расширения МР-02м, которые выпускает компания Cyntron. Благодаря простоте и открытости, Modbus RTU остаётся стандартом де-факто в сфере автоматизации зданий, промышленности и энергетики. В этом руководстве мы подробно разберём протокол: от структуры кадра до практических примеров настройки с ПЛК Siemens, WAGO, ОВЕН, панелями Weintek и, конечно, с нашими модулями расширения МР-02м.
Инженеры АСУ ТП, программисты ПЛК, специалисты по вводу в эксплуатацию, студенты технических специальностей. Предполагается базовое понимание цифровых интерфейсов.
Архитектура Master / Slave в Modbus RTU
В сети Modbus RTU всегда присутствует одно ведущее устройство (Master), которое инициирует запросы. Ведомые устройства (Slave) ожидают запрос и отвечают на него. Номер ведомого (адрес) занимает один байт и может принимать значения от 1 до 247 (адрес 0 используется для широковещательных запросов). Физический уровень RS-485 позволяет соединять до 32 устройств на одном сегменте без повторителей, а длина линии может достигать 1200 метров при скорости до 115200 бит/с.
Типичный пример: ПЛК или панель оператора (Master) опрашивает несколько модулей расширения МР-02м, каждый со своим уникальным адресом. Так строится распределённая система ввода-вывода для вентиляции, насосных станций или конвейерных линий. Модули МР-02м поддерживают как дискретные, так и аналоговые входы/выходы, что делает их универсальным решением для задач сбора данных и управления.
Структура кадра Modbus RTU
В режиме RTU данные передаются в двоичном виде, что делает протокол более эффективным по сравнению с ASCII-режимом. Кадр не содержит специальных символов начала и конца: границей служит временная пауза на линии длительностью не менее 3,5 символов при текущей скорости. Внутри кадра интервалы между байтами не должны превышать 1,5 символа, иначе кадр считается повреждённым.
| Поле | Размер (байт) | Назначение |
|---|---|---|
| Адрес устройства | 1 | ID ведомого (1…247) |
| Функциональный код | 1 | Команда (чтение, запись) |
| Данные | 0…252 | Параметры команды или ответ |
| CRC-16 | 2 | Контрольная сумма, вычисляется по полиному 0x8005, младший байт передается первым |
Пауза между кадрами должна быть не менее 3,5 байтовых интервалов.
Функциональные коды Modbus
Функциональный код определяет действие, которое должно выполнить ведомое устройство. Основные коды, поддерживаемые промышленным оборудованием, приведены в таблице ниже.
| Код функции | Назначение | Тип | Доступ |
|---|---|---|---|
| 1 (0x01) | Чтение DO | Дискретное | Чтение |
| 2 (0x02) | Чтение DI | Дискретное | Чтение |
| 3 (0x03) | Чтение AO | 16 битное | Чтение |
| 4 (0x04) | Чтение AI | 16 битное | Чтение |
| 5 (0x05) | Запись одного DO | Дискретное | Запись |
| 6 (0x06) | Запись одного AO | 16 битное | Запись |
| 15 (0x0F) | Запись нескольких DO | Дискретное | Запись |
| 16 (0x10) | Запись нескольких AO | 16 битное | Запись |
Модули МР-02м поддерживают все эти функции, что позволяет гибко настраивать обмен данными между контроллером и периферией.
Модель данных и адресация регистров
В Modbus определены четыре типа объектов данных. На практике часто используется адресация, отображаемая в «человеческие» номера (40001, 30001 и т.д.), где смещение 1 соответствует адресу 0 в протоколе.
| Область | Диапазон адресов (в интерфейсах) | Доступ | Коды |
|---|---|---|---|
| Coils (битовые выходы) | 00001 – 09999 | чтение/запись | 01,05,0F |
| Discrete Inputs (битовые входы) | 10001 – 19999 | только чтение | 02 |
| Input Registers (аналоговые входы) | 30001 – 39999 | только чтение | 04 |
| Holding Registers (аналоговые выходы) | 40001 – 49999 | чтение/запись | 03,06,16 |
Разные реализации ПЛК могут использовать смещение адресов. Например, в Siemens S7-1200 при обращении к функции «MB_MASTER» параметр DATA_ADDR=0 соответствует регистру 40001. Всегда сверяйтесь с документацией на конкретный контроллер и на модули МР-02м.
Побайтовая расшифровка кадра Modbus RTU (на реальном примере)
Для понимания работы протокола необходимо разобрать структуру кадра на уровне отдельных байтов. Рассмотрим пример запроса от Master (ПЛК или HMI) к Slave (в нашем случае — модуль расширения МР-02м) на чтение двух holding-регистров (функция 0x03), начиная с адреса 0.
| Байт (Hex) | Поле | Значение | Назначение |
|---|---|---|---|
| 0x01 | Адрес устройства | 1 | ID ведомого устройства (модуля расширения МР-02м). |
| 0x03 | Функциональный код | 3 | Команда чтения holding-регистров (Read Holding Registers). |
| 0x00 | Старший байт адреса регистра | 0 | Начальный адрес для чтения (0x0000 = регистр 40001). |
| 0x00 | Младший байт адреса регистра | 0 | |
| 0x00 | Старший байт количества регистров | 0 | Количество запрашиваемых регистров (0x0002 = 2 регистра). |
| 0x02 | Младший байт количества регистров | 2 | |
| 0xC4 | Младший байт CRC | 196 | Контрольная сумма CRC-16 для проверки целостности сообщения. |
| 0x0B | Старший байт CRC | 11 |
Модули МР-02м — это современные устройства ввода-вывода для промышленной автоматизации. Они поддерживают:
- Дискретные и аналоговые входы/выходы в различных комбинациях;
- Протокол Modbus RTU на физическом уровне RS-485;
- Режим Fast Modbus для увеличения скорости цикла опроса;
- Гибкую настройку адресов и параметров линии.
Modbus RTU остаётся востребованным в задачах, где не требуется высокая скорость обмена, но важны простота и надёжность. Применение модулей расширения МР-02м с поддержкой этого протокола позволяет быстро масштабировать дискретные и аналоговые каналы для ПЛК любых производителей.
