RUBICON engineering center

Modbus ASCII — легаси вариант протокола

Синонимы: Modbus ASCII, Modbus LRC, ASCII Modbus
Устаревший текстовый вариант Modbus: каждый байт кодируется двумя ASCII-символами (hex), кадр ограничен старт-символом «:» и символами CRLF. Используется в редких легаси-применениях на RS-232/RS-485 с низкими скоростями и шумными линиями.

Modbus ASCII — текстовая версия Modbus, старший родственник Modbus RTU. Сегодня почти не используется, но встречается в старом оборудовании (АСУ ТП 1990-х) и некоторых специфических применениях.

Отличия от Modbus RTU

| Параметр | Modbus RTU | Modbus ASCII | |---|---|---| | Представление | Бинарное | Текстовое (hex в ASCII) | | Начало кадра | Пауза ≥ T3.5 | Символ «:» (0x3A) | | Конец кадра | Пауза ≥ T3.5 | Символы CR+LF (0x0D 0x0A) | | Контрольная сумма | CRC-16 (2 байта) | LRC (1 байт, 2 символа) | | Длина кадра | ~2 раза короче | Длиннее в 2+ раза | | Пропускная способность | Выше | Ниже | | Межсимвольный таймаут | T1.5 | 1 секунда | | Чтение логом | Трудно | Легко (текст) |

Структура кадра ASCII

**` :<Address><Function><Data><LRC>CR LF **`

Каждое поле — ASCII-символы, представляющие hex. Например байт 0x1F передаётся как «1» (0x31) и «F» (0x46).

Пример запроса чтения holding register 0 slave 1, функция 03, 1 регистр:

**` :01 03 0000 0001 FB <CR><LF> **`

Где FB — это LRC (longitudinal redundancy check): дополнение до 2 суммы всех байт.

LRC — контрольная сумма

Проще CRC-16: сумма всех байт по модулю 256, затем дополнение до 2 (two's complement). Передаётся как 2 ASCII-символа.

**` LRC = (-(sum of bytes)) & 0xFF **`

Пример: сумма 0x01+0x03+0x00+0x00+0x00+0x01 = 0x05. LRC = 0x100-0x05 = 0xFB.

Когда применяется

  • Легаси-оборудование 1990-х — АСУ ТП на нефтеперерабатывающих заводах, старые электрические подстанции
  • Шумные линии — текстовый формат переживает побитовые искажения лучше бинарного (символ «1» ≠ «!»)
  • Длинные расстояния по телефонной линии — через модемы, где важна определимость начала/конца кадра
  • Отладка — текстовый лог легче читать глазами

Преимущества ASCII vs RTU

  • Чётко определено начало и конец кадра (не зависит от таймингов)
  • Терпим к побитовым искажениям
  • Легко отлаживать текстовым логом
  • Работает через модемы и телекоммуникационные каналы

Недостатки ASCII vs RTU

  • Пропускная способность в 2+ раза ниже
  • Задержки выше (длиннее кадр)
  • Межсимвольный таймаут 1 сек делает протокол медленным
  • Избыточен для быстрых современных линий RS-485

Применение сегодня

Крайне редко. В новых проектах — только Modbus RTU или Modbus TCP. Modbus ASCII встречается:

  • При подключении к очень старым счётчикам и реле (до 2000 года)
  • При работе через аналоговые модемы (почти вымершая технология)
  • В некоторых специализированных применениях с длинными линиями и помехами

При модернизации старого оборудования с Modbus ASCII — проще заменить сам прибор на современный с Modbus RTU/TCP.

Частые вопросы

  • Как отличить Modbus ASCII от RTU в неизвестном оборудовании?
    Снифер покажет: если в логе видны hex-символы «0-9A-F» и двоеточия «:» — это ASCII. Если бинарный поток — RTU. В настройках slave обычно есть явная опция «Mode: RTU/ASCII». По умолчанию почти всегда RTU. ASCII сегодня приходится настраивать специально.
  • Можно ли перевести ASCII-устройство на RTU?
    Если устройство поддерживает оба режима — да, переключением в настройках. Если только ASCII (очень старые приборы) — нет, нужен конвертер. Проще заменить на современный аналог с RTU/TCP: это дешевле ремонта специализированного конвертера.

Источники

  1. Modbus over Serial Line Specification V1.02 — Modbus Organization
Автор: Sergey
Опубликовано: 28.10.2026
Обновлено: 27.10.2026
Modbus ASCII — легаси текстовый вариант протокола | РУБИКОН