Modbus
Modbus — это открытый коммуникационный протокол, используемый для организации связи между электронными устройствами в системах промышленной автоматизации (АСУ ТП). Относится к прикладному уровню модели OSI (уровень 7). Протокол был разработан в 1979 году компанией Modicon (ныне подразделение Schneider Electric) для программируемых логических контроллеров (ПЛК) и впоследствии стал де-факто стандартом в промышленности благодаря своей простоте, надёжности и открытости.
История
Протокол Modbus был создан инженерами компании Modicon в конце 1970-х годов для обеспечения взаимодействия между ПЛК серии Modicon 484 и другими устройствами. Первоначально он работал по последовательным интерфейсам RS-232 и RS-485. В 1999 году группа компаний во главе с Schneider Electric основала некоммерческую организацию Modbus Organization, Inc. (ранее Modbus-IDA), которая взяла на себя функции по развитию, стандартизации и продвижению протокола. С этого момента спецификация Modbus стала общедоступной (royalty-free), что способствовало её массовому распространению.
В 2004 году была опубликована спецификация Modbus TCP/IP — версия протокола, работающая поверх стека TCP/IP в сетях Ethernet. Это позволило интегрировать устройства Modbus в современные корпоративные и офисные сети без необходимости использования специализированных последовательных линий.
Архитектура и принцип работы
Modbus реализует модель «ведущий-ведомый» (master-slave) для последовательных версий и модель «клиент-сервер» (client-server) для Modbus TCP/IP. В сети Modbus может быть только одно ведущее устройство (master), которое инициирует все транзакции. Ведомые устройства (slaves) отвечают только на запросы мастера и не могут самостоятельно начинать передачу данных.
Адресация
Каждое ведомое устройство в сети имеет уникальный адрес в диапазоне от 1 до 247. Адрес 0 используется для широковещательных сообщений (broadcast), которые принимаются всеми ведомыми устройствами, но не требуют ответа.
Формат кадра
Сообщение Modbus состоит из следующих полей:
- Адрес ведомого (1 байт) — идентификатор целевого устройства.
- Код функции (1 байт) — определяет тип операции (чтение, запись, диагностика).
- Данные (переменная длина) — содержит адреса регистров, значения, количество данных.
- Контрольная сумма (2 байта для RTU, 1 байт для ASCII) — для обнаружения ошибок передачи.
Режимы передачи
Для последовательных линий определены два режима:
- Modbus RTU (Remote Terminal Unit) — двоичный формат, компактный и быстрый. Контрольная сумма вычисляется по алгоритму CRC-16. Используется в большинстве промышленных устройств.
- Modbus ASCII — текстовый формат, где каждый байт кодируется двумя символами ASCII. Медленнее, но удобен для отладки. Контрольная сумма — LRC (Longitudinal Redundancy Check).
Типы данных и функции
Modbus оперирует четырьмя основными типами данных, которые отображаются на адресное пространство устройства:
| Тип данных | Размер | Доступ | Диапазон адресов (традиционный) |
|---|---|---|---|
| Discrete Inputs (дискретные входы) | 1 бит | Только чтение | 10001–19999 |
| Coils (катушки / дискретные выходы) | 1 бит | Чтение и запись | 00001–09999 |
| Input Registers (входные регистры) | 16 бит | Только чтение | 30001–39999 |
| Holding Registers (регистры хранения) | 16 бит | Чтение и запись | 40001–49999 |
Основные коды функций
- 01 (0x01) — Read Coils: чтение состояния группы катушек.
- 02 (0x02) — Read Discrete Inputs: чтение состояния группы дискретных входов.
- 03 (0x03) — Read Holding Registers: чтение значений из группы регистров хранения.
- 04 (0x04) — Read Input Registers: чтение значений из группы входных регистров.
- 05 (0x05) — Write Single Coil: запись состояния одной катушки.
- 06 (0x06) — Write Single Register: запись значения в один регистр хранения.
- 15 (0x0F) — Write Multiple Coils: запись состояний нескольких катушек.
- 16 (0x10) — Write Multiple Registers: запись значений в несколько регистров хранения.
Разновидности протокола
Modbus RTU/ASCII (последовательный)
Классическая реализация для связи по двухпроводным или четырёхпроводным линиям RS-485 (реже RS-232). Максимальная длина линии без повторителей — до 1200 метров. Скорость передачи — от 1200 до 115200 бит/с. Используется в контроллерах, датчиках, приводах, счётчиках электроэнергии.
Modbus TCP/IP
Работает поверх стека TCP/IP, используя порт 502. В этой версии модель «ведущий-ведомый» заменена на «клиент-сервер». Клиент (обычно SCADA-система или ПЛК) отправляет запросы серверам (устройствам ввода-вывода). Адрес устройства задаётся IP-адресом, а поле «адрес ведомого» в кадре может использоваться для идентификации устройства внутри шлюза (unit identifier). Modbus TCP/IP не требует вычисления контрольной суммы, так как её обеспечивает транспортный уровень TCP.
Modbus Plus
Проприетарная высокоскоростная сетевая версия от Schneider Electric, работающая на скорости 1 Мбит/с. Использует собственную среду передачи и протокол доступа к среде (token passing). Не получила широкого распространения за пределами оборудования Schneider.
Применение
Modbus используется в самых разных отраслях промышленности и энергетики:
- Автоматизация зданий (BMS) — управление вентиляцией, кондиционированием, освещением.
- Электроэнергетика — сбор данных с электросчётчиков, реле защиты, устройств РЗА.
- Нефтегазовая отрасль — управление насосами, компрессорами, запорной арматурой.
- Машиностроение — связь между ПЛК, частотными преобразователями, датчиками.
- Водоснабжение и водоотведение — управление насосными станциями, контроль уровня и расхода.
В России Modbus широко распространён в системах АСКУЭ (автоматизированные системы коммерческого учёта электроэнергии), где используется для опроса счётчиков электрической энергии, а также в системах диспетчеризации котельных и тепловых пунктов.
Преимущества и недостатки
Преимущества
- Открытость и бесплатность — спецификация общедоступна, нет лицензионных отчислений.
- Простота реализации — минимальные требования к вычислительным ресурсам контроллера.
- Широкая распространённость — поддержка тысячами производителей оборудования.
- Надёжность — простой протокол с проверенными механизмами контроля ошибок (CRC-16).
- Гибкость — возможность работы как по последовательным линиям, так и по Ethernet.
Недостатки
- Ограниченная производительность — низкая скорость передачи данных по сравнению с современными протоколами (EtherCAT, PROFINET).
- Отсутствие встроенной безопасности — протокол не имеет механизмов шифрования и аутентификации. Для защиты используются внешние средства (VPN, межсетевые экраны).
- Одно ведущее устройство — в последовательной версии только один мастер может управлять сетью, что ограничивает резервирование.
- Неэффективная адресация — максимальное количество ведомых устройств (247) может быть недостаточно для крупных систем.
Интересные факты
- Название «Modbus» происходит от «Modicon bus» — шины, разработанной компанией Modicon.
- Протокол Modbus является одним из старейших промышленных протоколов, продолжающих активно использоваться — ему более 40 лет.
- В 2007 году Modbus был принят в качестве международного стандарта IEC 61158 (полевые шины промышленных сетей).
- Существует большое количество программных библиотек и драйверов для реализации Modbus на различных платформах — от микроконтроллеров до персональных компьютеров.
Источники
- Modbus Organization, Inc. — Modbus Application Protocol Specification V1.1b3.
- Modbus Organization, Inc. — Modbus Messaging on TCP/IP Implementation Guide V1.0b.
- IEC 61158: Industrial communication networks — Fieldbus specifications.
- ГОСТ Р МЭК 61158-2016 (части, касающиеся Modbus).
- Справочник инженера по АСУ ТП: протоколы промышленной автоматизации.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →