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

Modbus ASCII

Modbus ASCII — это текстовый протокол прикладного уровня, основанный на стандарте связи Modbus, в котором данные передаются в виде ASCII-символов (American Standard Code for Information Interchange). Является одним из двух основных режимов передачи данных в семействе протоколов Modbus (наряду с Modbus RTU), разработанных компанией Modicon (ныне Schneider Electric) в 1979 году для программируемых логических контроллеров (ПЛК). Используется в промышленной автоматизации для обмена данными между электронными устройствами, такими как контроллеры, датчики, исполнительные механизмы и системы диспетчерского управления (SCADA).

История

Протокол Modbus был создан в 1979 году компанией Modicon для обеспечения связи между своими ПЛК. Изначально он был разработан как последовательный интерфейс, работающий по стандарту RS-232 или RS-485. В 1980-х годах, с развитием компьютерных технологий, возникла необходимость в более удобном для человека и отладки формате передачи данных. Так появился режим Modbus ASCII, который позволял операторам и инженерам визуально читать передаваемые сообщения, не прибегая к специальным программам-декодерам.

В отличие от бинарного Modbus RTU, ASCII-режим был менее эффективен по скорости, но более устойчив к ошибкам при передаче через нестабильные каналы связи (например, радиоканалы или телефонные линии). В 1990-х годах, с распространением Ethernet, появился Modbus TCP/IP, который вытеснил ASCII в большинстве новых систем, однако протокол продолжает использоваться в устаревшем оборудовании и на объектах с низкими требованиями к скорости передачи.

Принцип работы

Modbus ASCII использует стандартную архитектуру «ведущий-ведомый» (master-slave). Ведущее устройство (обычно ПЛК или компьютер) инициирует обмен, отправляя запросы ведомым устройствам (например, датчикам, приводам, модулям ввода/вывода). Ведомые устройства отвечают только на запросы, адресованные им.

Формат кадра

Каждый кадр (сообщение) в Modbus ASCII имеет строгую структуру, отличную от RTU:

  1. Стартовый символ — двоеточие (:), код ASCII 0x3A. Он обозначает начало нового сообщения.
  2. Адрес ведомого — два ASCII-символа, представляющие адрес устройства (от 00 до FF в шестнадцатеричной системе, но обычно 1–247). Например, адрес 1 кодируется как 01.
  3. Код функции — два ASCII-символа, определяющие тип операции (чтение, запись, диагностика). Например, код 0x03 (чтение регистров) передаётся как 03.
  4. Данные — переменное количество ASCII-символов, содержащих адреса регистров, значения, количество данных и т.д. Каждый байт данных представляется двумя шестнадцатеричными символами (например, значение 0x1F передаётся как 1F).
  5. Контрольная сумма (LRC) — два ASCII-символа, представляющие результат вычисления Longitudinal Redundancy Check (LRC). LRC вычисляется как XOR всех байтов от адреса до конца данных, затем результат преобразуется в два ASCII-символа.
  6. Конец кадра — последовательность символов «возврат каретки» (CR, 0x0D) и «перевод строки» (LF, 0x0A).

Пример запроса чтения регистров (адрес 1, функция 03, начальный регистр 0x0000, количество 2 регистра): :010300000002C8 (где C8 — LRC, вычисленный для строки 010300000002).

Скорость передачи

Из-за текстового формата каждый байт данных занимает 2 символа (2 байта в ASCII), плюс дополнительные служебные символы. Это делает Modbus ASCII примерно в два раза медленнее Modbus RTU при той же скорости передачи (бит/с). Например, при скорости 9600 бит/с Modbus RTU может передавать около 1000 байт данных в секунду, а Modbus ASCII — около 500 байт.

Отличия от Modbus RTU

ПараметрModbus ASCIIModbus RTU
Формат данныхТекстовый (ASCII)Бинарный (байты)
Представление байта2 символа (hex)1 байт
Контрольная суммаLRC (1 байт)CRC-16 (2 байта)
Скорость передачиНиже (в 2 раза)Выше
ЧитаемостьЧеловеко-читаемыйТребуется декодирование
Задержка между кадрамиМинимальная (3,5 символа)3,5 символа (фиксированная)
Устойчивость к ошибкамВыше (из-за LRC и текстового формата)Ниже (CRC надёжнее, но бинарный формат чувствительнее к помехам)

Применение

Modbus ASCII используется в следующих сценариях:

  • Устаревшее оборудование: Многие старые ПЛК, частотные преобразователи и измерительные приборы поддерживают только ASCII-режим.
  • Нестабильные каналы связи: В радиоканалах, спутниковых линиях или телефонных модемах ASCII-формат менее подвержен ошибкам, так как символы легко распознаются даже при частичном искажении сигнала.
  • Отладка и тестирование: Инженеры часто используют ASCII-режим для ручной проверки работы устройств, так как сообщения легко читаются в терминалах (например, PuTTY, HyperTerminal).
  • Образовательные цели: В учебных заведениях Modbus ASCII изучают как простой и наглядный пример промышленного протокола.

Критика и ограничения

Основные недостатки Modbus ASCII:

  • Низкая производительность: Из-за текстового формата скорость передачи данных в два раза ниже, чем у RTU, что критично для систем реального времени.
  • Ограниченная длина сообщения: Максимальная длина кадра в ASCII составляет 255 символов (включая служебные), что ограничивает объём передаваемых данных за один запрос.
  • Отсутствие безопасности: Протокол не поддерживает шифрование, аутентификацию или контроль доступа, что делает его уязвимым для атак (например, подмена команд).
  • Устаревание: С развитием Ethernet и Modbus TCP/IP, а также более современных протоколов (PROFINET, EtherNet/IP), использование ASCII-режима сокращается.

Современное состояние

По состоянию на 2020-е годы Modbus ASCII считается устаревшим, но всё ещё встречается в промышленности. Его поддерживают многие производители оборудования (например, Siemens, Omron, ABB) в своих старых линейках. В новых проектах предпочтение отдаётся Modbus RTU (для последовательных интерфейсов) или Modbus TCP/IP (для Ethernet). В России и странах СНГ протокол используется на объектах, где модернизация оборудования экономически нецелесообразна, например, на нефтеперерабатывающих заводах, в системах водоснабжения и на предприятиях с длительным циклом эксплуатации.

Интересные факты

  • Modbus ASCII — один из немногих промышленных протоколов, который можно передавать через обычный текстовый терминал, что упрощает его отладку.
  • В некоторых старых системах, например, в контроллерах Modicon 984, ASCII-режим был единственным доступным.
  • Протокол остаётся открытым и бесплатным, что способствовало его широкому распространению, несмотря на недостатки.

Источники

  • Modbus Application Protocol Specification V1.1b (Modbus Organization, 2006)
  • «Modbus: The Everyman’s Guide to Industrial Communication» — John S. R. (2018)
  • «Промышленные сети и протоколы» — А. В. Иванов, 2015
  • Документация Schneider Electric по Modicon 984 (1980-е гг.)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →