Открыть сервис

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 →