Протокол Modbus: архитектура, форматы ASCII, RTU и TCP, регистры и практика применения

15 января 2026 2025
Промышленный протокол Modbus для связи устройств в системах автоматизации

В этой статье мы рассмотрим протокол Modbus --- один из самых популярных промышленных протоколов, широко применяемых в системах автоматизации. Modbus является открытым протоколом обмена данными и основан на master-slave архитектуре. Он используется для организации связи между устройствами автоматизации как по последовательным интерфейсам RS-485, RS-422, RS-232, так и через сети TCP/IP.


Разновидности Modbus: ASCII, RTU и TCP:

Сравнение Modbus ASCII RTU и Modbus TCP по способу передачи данных и интерфейсам связи
Сравнение разновидностей протокола Modbus — ASCII, RTU и TCP — по формату передачи данных, используемым интерфейсам (RS-232, RS-422, RS-485, Ethernet) и особенностям работы в системах промышленной автоматизации.

Modbus ASCII - особенности и принцип работы

Структура пакета Modbus ASCII с префиксом, адресом slave, PDU и контрольной суммой LRC
Схема структуры пакета Modbus ASCII, показывающая состав ADU: префикс начала пакета, адрес slave-устройства, блок данных PDU, контрольную сумму LRC и символы окончания пакета, используемые для передачи данных в сетях промышленной автоматизации.

Modbus ASCII --- это разновидность протокола Modbus, в которой данные передаются с использованием символов из таблицы ASCII. Они передаются в 16-битном формате, двухбайтный код, каждому коду соответствует один из 256 символов таблицы ASCII, поэтому, как правило, ASCII код записывают строкой символов. Каждый пакет начинается с символа двоеточия (":")16-ричный код «три А», а завершается пакет комбинацией символов возврата каретки (CR) и переноса строки (LF) 16-ричные коды «ноль D», «ноль A». Такое оформление исторически сложилось и позволяет однозначно определить границы пакета, что особенно важно при использовании линий связи с большими задержками или оборудовании с менее точными таймерами. Благодаря этому Modbus ASCII может применяться в условиях, где время передачи данных варьируется или оборудование не поддерживает точный контроль временных интервалов. Однако, из-за символьно-кодового представления данных, накладные расходы на передачу больше по сравнению с другими форматами, что делает протокол менее эффективным в условиях ограниченной пропускной способности.


Modbus RTU - передача данных и применение

Структура пакета Modbus RTU с адресом устройства, PDU и контрольной суммой CRC16
Схема структуры пакета Modbus RTU, отражающая адресацию slave-устройства, блок данных PDU и контрольную сумму CRC16, используемую для обнаружения ошибок передачи данных в сетях Modbus на базе RS-485.

В протоколе Modbus RTU данные передаются в компактном двоичном формате, что делает его одним из самых распространенных решений для подключения устройств через Modbus. Разделителем пакетов в Modbus RTU служит временной интервал, что требует высокой точности тайминга для корректной работы. Это делает протокол чувствительным к задержкам в линии связи и непригодным для использования на линиях с переменными временными характеристиками, таких как модемные линии. Однако, за счет компактности двоичного формата, Modbus RTU обеспечивает более высокую скорость передачи данных, что делает его предпочтительным выбором для приложений, где требуется высокая производительность и минимальные задержки. Modbus RTU почти всегда применяется на базе RS-485.


Modbus TCP - работа по TCP/IP сетям

Структура пакета Modbus TCP с заголовком MBAP и блоком данных PDU в сети TCP/IP
Схема структуры пакета Modbus TCP, показывающая состав заголовка MBAP (ID транзакции, длина пакета, адрес slave-устройства) и блок данных PDU, применяемых при передаче данных по TCP/IP в системах промышленной автоматизации.

Modbus TCP представляет собой модификацию протокола Modbus RTU для работы в IP-сетях, использующих стек TCP/IP. Данные также кодируются в двоичном формате, но при этом упаковываются в стандартные TCP-пакеты для передачи через сеть. Структура пакетов в Modbus TCP схожа с Modbus RTU, однако протокол не использует собственный механизм проверки целостности данных, так как TCP уже обеспечивает встроенный контроль целостности и надежность передачи. Это упрощает обработку пакетов и снижает нагрузку на устройства, работающие с протоколом. Modbus TCP подходит для использования в современных сетевых инфраструктурах, обеспечивая интеграцию устройств автоматизации в системы, основанные на IP-протоколах. Он особенно удобен для удаленного мониторинга и управления, а также для построения распределенных систем с использованием стандартных сетевых технологий.


Архитектура Modbus: принцип работы master-slave

Все устройства, использующие протокол Modbus, взаимодействуют по принципу master-slave архитектуры. В рамках этой модели запросы может инициировать только master-устройство, тогда как slave-устройства могут лишь отвечать на эти запросы. Slave-устройства не имеют возможности самостоятельно начинать передачу данных, что делает взаимодействие полностью управляемым со стороны ведущего устройства.

Подход с четким разграничением ролей master и slave устройств упрощает архитектуру сети, снижает вероятность возникновения коллизий и делает протокол легко масштабируемым. Это особенно важно в системах промышленной автоматизации, где надежность и предсказуемость взаимодействия устройств имеют ключевое значение.

Адресация устройств в Modbus основана на присвоении каждому slave-устройству уникального адреса. В одном сегменте Modbus-сети может находиться до 247 устройств, каждое из которых имеет свой уникальный адрес. Master-устройство, напротив, не имеет адреса, так как оно инициирует запросы. Адрес «0» зарезервирован для широковещательных запросов, которые master-устройство может отправлять всем slave-устройствам одновременно. Однако, на такие широковещательные пакеты ответы не отправляются, что исключает возможность коллизий.

В зависимости от конкретной реализации протокола (Modbus ASCII, RTU или TCP), структура заголовков пакета может различаться. Однако существует ряд ключевых элементов пакета, которые важно понимать для успешной работы с протоколом:


Структура пакета Modbus: ADU, PDU и адресация устройств

Схема структуры пакета Modbus с разбором ADU и PDU
Структура ADU в протоколе Modbus для разных реализаций (ASCII, RTU и Modbus TCP). Схема показывает, как формируются префикс, адрес slave-устройства, PDU и контрольная сумма, что помогает понять принцип работы Modbus и различия между форматами передачи данных.
  1. ADU в Modbus (Application Data Unit) (Пакет данных приложения)
    Это полный пакет Modbus, включающий все необходимые компоненты: заголовки, PDU, контрольную сумму, адрес устройства и маркеры начала и конца пакета. Структура ADU варьируется в зависимости от используемой реализации протокола. Например, в Modbus TCP отсутствуют контрольные суммы на уровне ADU, так как целостность данных обеспечивается средствами TCP.
  2. PDU в Modbus (Protocol Data Unit)(Блок данных протокола)
    Основная значащая часть пакета, которая есть во всех реализациях протокола. PDU содержит непосредственно данные, которые передаются между устройствами. В эту часть пакета включаются такие элементы, как код функции (определяющий тип операции), адрес регистра и данные.
  3. Адрес устройства
    Про него мы уже сказали ранее
  4. Контрольная сумма
    Контрольная сумма в Modbus используется для проверки целостности пакетов и предотвращения ошибок передачи данных в Modbus.
    • В Modbus RTU применяется алгоритм CRC16, который генерирует 2-байтовую контрольную сумму. Этот алгоритм обеспечивает высокую надежность проверки целостности.
    • В Modbus ASCII используется более простой и менее надежный алгоритм LRC8, также формирующий 2-байтовую контрольную сумму.
    • В Modbus TCP контрольная сумма на уровне ADU отсутствует, так как целостность данных обеспечивается встроенными механизмами TCP-протокола.

Дополнительные заголовки, специфичные для каждой реализации протокола, могут включать такие параметры, как идентификаторы соединений, длина пакета и другие технические данные. Однако на прикладном уровне эти заголовки, как правило, не имеют большого значения и редко требуют внимания при разработке или эксплуатации систем на базе Modbus.

  1. В упрощенном виде структура запросов в протоколе Modbus состоит из кода функции, определяющего тип операции (например, чтение или запись данных), адреса регистра, к которому обращается запрос, и данных, которые требуется считать или записать. Коды функции различаются в зависимости от типа данных и выполняемой операции. Рассмотрим регистры Modbus, их адресные диапазоны и назначение, а также какие регистры используются в Modbus чаще всего.
Структура PDU в протоколе Modbus - код функции, адрес регистров и данные
Структура PDU в протоколе Modbus включает код функции, адрес регистров и передаваемые данные. Этот блок является ключевой частью обмена по Modbus RTU, ASCII и Modbus TCP и определяет, какие операции выполняет устройство в сети промышленной автоматизации.

Регистры Modbus: типы, адресация и назначение

В протоколе Modbus есть четыре типа регистров, каждый из которых имеет свой диапазон номеров и предназначение.

Таблица регистров Modbus с типами DO, DI, AI, AO и адресацией регистров
Таблица показывает основные типы регистров Modbus — Discrete Output Coils (DO), Discrete Input Contacts (DI), Analog Input Registers (AI) и Holding Registers (AO), их адресацию и режимы чтения и записи, используемые при обмене данными в протоколе Modbus.
Тип Название Номера Адреса (hex) Режим доступа
Первый тип Discrete Output Coils (DO) 1–9999 0000–270E Чтение/Запись
Второй тип Discrete Input Contacts (DI) 10001–19999 0000–270E Только чтение
Третий тип Analog Input Registers (AI) 30001–39999 0000–270E Только чтение
Четвертый тип Analog Output Holding Registers (AO) 40001–49999 0000–270E Чтение/Запись

Несмотря на названия, входы и выходы не всегда напрямую связаны с физическими портами устройства. Они могут представлять собой внутренние переменные, такие как счетчики, флаги состояния или управляющие триггеры. Это делает регистры универсальным инструментом для взаимодействия с устройствами.

Хотя стандарт Modbus определяет дополнительные диапазоны регистров, в большинстве устройств они не используются. Тем не менее, четыре основных типа регистров покрывают подавляющее большинство задач, связанных с управлением и мониторингом устройств.

В зависимости от функциональности конкретного устройства, могут быть задействованы один, несколько или все диапазоны регистров одновременно. Например, простые устройства, такие как датчики, могут использовать только Input Registers, тогда как более сложные устройства, такие как контроллеры, задействуют Holding Registers, Coils и другие типы регистров для управления и мониторинга.

Использование регистров Modbus позволяет стандартизировать процесс обмена данными между устройствами, что упрощает их интеграцию в системы автоматизации и управления.


Команды Modbus: пример чтения дискретных выходов (Modbus RTU, функция 0x01)

Эта команда используется для чтения значений дискретных выходов DO.

В запросе PDU задается начальный адрес первого регистра DO и последующее количество необходимых значений DO. В PDU значения DO адресуются, начиная с нуля.

Значения DO в ответе находятся в одном байте и соответствуют значению битов.

Значения битов определяются как 1 = ON и 0 = OFF.

Младший бит первого байта данных содержит значение DO адрес которого указывался в запросе. Остальные значения DO следуют по нарастающей к старшему значению байта. Т.е. справа на лево.

Если запрашивалось меньше восьми значений DO, то оставшиеся биты в ответе будут заполнены нулями (в направлении от младшего к старшему байту). Поле Byte Count Количество байт далее указывает количество полных байтов данных в ответе.

Пример запроса DO с 20 по 56 для SlaveID адреса устройства 17. Адрес первого регистра будет 0013 hex = 19, т.к. счет ведется с 0 адреса (0014 hex = 20, -1 смещение нуля = получаем 0013 hex = 19).

Состояния выходов DO 27-20 показаны как значения байта CD hex, или в двоичной системе 1100 1101.

В регистре DO 56-52 5 битов справа были запрошены, а остальные биты заполнены нулями до полного байта (0001 1011).


Настройка Modbus сети на базе RS-485

При настройке Modbus сети на базе RS-485 Modbus-шина должна представлять собой единую магистральную линию связи. Длина отводов не должна превышать 1 м. Основной магистральный кабель Modbus должен включать три проводника, заключенных в общий экран. При длине магистрали более 2 м два из этих проводников должны быть в виде витой пары для обеспечения надежной передачи данных и минимизации помех, а третий провод предназначен для соединения общих ("земляных") выводов всех интерфейсов RS-485, подключенных к сети.

Для обеспечения корректной работы сети и минимизации возможных помех общий провод и экран кабеля необходимо заземлить. Заземление должно выполняться строго в одной точке сети, предпочтительно вблизи ведущего устройства (мастера), чтобы исключить появление токовой петли, способной нарушить работу сети и даже вывести из строя устройство. Такой подход обеспечивает стабильность передачи данных, повышает надежность работы всей системы и снижает вероятность возникновения ошибок в коммуникации.

Разводка проводов RS-485 для Modbus: линии A, B, общий провод и экран
Пример промышленного кабеля RS-485, используемого в Modbus-сетях: жилы A и B формируют дифференциальную линию передачи, общий провод обеспечивает стабильный потенциал, а Drain-провод и экран защищают сеть от помех. Такая структура кабеля повышает надёжность Modbus RTU и Modbus ASCII в промышленных условиях.

Зачем нужны оконечные резисторы в Modbus?

Они предотвращают отражения сигнала и обеспечивают стабильную работу сети RS-485. Оконечные резисторы играют ключевую роль в согласовании импеданса линии, что позволяет минимизировать отражения сигнала и предотвратить возникновение помех.

Важно помнить, что такие сопротивления устанавливаются только на концах магистрали. Установка оконечных резисторов в других точках сети не рекомендуется, так как это может привести к искажению сигналов и ухудшению качества связи.

Если общая длина основного кабеля составляет менее 50 метров, установка оконечных сопротивлений может быть необязательной. На коротких магистралях отражения сигнала практически отсутствуют, так как длина линии недостаточна для возникновения значительных фазовых сдвигов или наложений сигналов.


Протокол Modbus остается одним из наиболее востребованных промышленных протоколов в области промышленной автоматизации, обеспечивая надежную связь устройств в автоматизированных системах управления. Он продолжает оставаться важным инструментом для интеграции устройств и создания сложных систем автоматизации, что делает его изучение необходимым для специалистов в этой области.


Распространенные коды функций Modbus

Код функции (Function Code) — это однобайтовое поле в PDU, которое указывает slave-устройству, какую операцию необходимо выполнить. Ниже приведены некоторые из наиболее часто используемых кодов функций.

Код функции (DEC/HEX) Название Применение Тип регистров
01 (0x01) Read Coils Чтение состояния дискретных выходов (Coils) DO (0xxxx)
02 (0x02) Read Discrete Inputs Чтение состояния дискретных входов DI (1xxxx)
03 (0x03) Read Holding Registers Чтение аналоговых выходов (Holding Registers) AO (4xxxx)
04 (0x04) Read Input Registers Чтение аналоговых входов AI (3xxxx)
05 (0x05) Write Single Coil Запись одного дискретного выхода DO (0xxxx)
06 (0x06) Write Single Register Запись одного аналогового выхода (Holding Register) AO (4xxxx)
15 (0x0F) Write Multiple Coils Запись нескольких дискретных выходов DO (0xxxx)
16 (0x10) Write Multiple Registers Запись нескольких аналоговых выходов AO (4xxxx)

Каждый код функции имеет свой формат запроса и ответа. При возникновении ошибки slave-устройство возвращает код функции с установленным старшим битом (код функции + 0x80) и байт исключения (Exception Code), указывающий на причину ошибки (неправильный адрес, недопустимое значение данных, сбой устройства и т.д.).


Преимущества и недостатки протокола Modbus

Как и любой технологический стандарт, Modbus имеет свои сильные и слабые стороны, которые важно учитывать при проектировании системы.

Преимущества:

  • Простота и открытость: Открытая спецификация делает протокол бесплатным и легко реализуемым на любом оборудовании, от микроконтроллеров до промышленных ПЛК.
  • Широкая распространенность: Modbus поддерживается тысячами производителей оборудования для АСУ ТП, что обеспечивает простую интеграцию разнородных устройств.
  • Понятная модель данных: Четко определенные типы регистров (Coils, Inputs, Holding Registers) интуитивно понятны для инженеров.
  • Масштабируемость: Архитектура master-slave упрощает добавление новых устройств в сеть (до 247 slave-устройств на сегмент).

Недостатки и ограничения:

  • Низкая скорость и производительность: По сравнению с современными полевыми шинами (PROFINET, EtherCAT) Modbus обладает относительно низкой пропускной способностью и не подходит для задач, требующих детерминированного обмена данными в реальном времени.
  • Отсутствие встроенной безопасности: Спецификация Modbus не предусматривает механизмов аутентификации или шифрования данных.
  • Жесткая архитектура master-slave: Slave-устройства не могут инициировать передачу данных, что усложняет реализацию событийно-управляемых сценариев и требует постоянного опроса (polling) со стороны master, увеличивая трафик и задержки.
  • Ограниченный размер PDU: Максимальный размер полезных данных в одном PDU ограничен 253 байтами в Modbus RTU/ASCII.
  • Проблемы с временными характеристиками (RTU): Использование временных интервалов как разделителей пакетов в Modbus RTU делает его чувствительным к задержкам в линии связи.

Практические советы по внедрению и отладке

Успешное внедрение сети Modbus требует внимания к деталям. Вот несколько практических рекомендаций:

  1. Планирование адресного пространства: Заранее составьте таблицу соответствия адресов устройств (Slave ID) и назначения их регистров. Это предотвратит конфликты и упростит дальнейшее программирование SCADA-систем или контроллеров.
  2. Правильный монтаж сети RS-485:
    • Используйте экранированную витую пару.
    • Соблюдайте полярность (A/+ и B/-) на всех устройствах.
    • Устанавливайте оконечные резисторы (обычно 120 Ом) на физических концах магистрали.
    • Организуйте одноточечное заземление экрана.
  3. Настройка параметров связи (для RTU/ASCII): Все устройства в одном сегменте сети должны иметь одинаковую скорость (baud rate), контроль четности (parity), количество стоп-битов (stop bits). Типичные настройки: 9600 8N1 или 19200 8E1.
  4. Использование инструментов для отладки: При наладке незаменимы:
    • Анализаторы последовательных портов или Modbus-снифферы (например, Modbus Poll, Simply Modbus Scanner) для просмотра "сырого" трафика и проверки формата запросов/ответов.
    • Портативные тестеры/конвертеры RS-485 для проверки физического уровня связи.
  5. Обработка ошибок: Обязательно реализуйте в master-устройстве (ПЛК, шлюзе) таймауты ожидания ответа и логику обработки исключительных кодов (exception codes), возвращаемых slave-устройствами. Это повысит устойчивость системы к сбоям.

Modbus в современных системах: шлюзы

Несмотря на возраст, Modbus остается актуальным благодаря развитию технологий-посредников:

  • Промышленные шлюзы (Gateways): Устройства, которые преобразуют протокол Modbus RTU/ASCII в другие промышленные протоколы (PROFIBUS, PROFINET, EtherNet/IP, MQTT) и обратно. Это позволяет интегрировать старое оборудование с Modbus-интерфейсом в современные цифровые системы.
  • OPC UA серверы с поддержкой Modbus: OPC UA является современным стандартом семантического обмена данными в промышленности. Специализированные OPC UA серверы могут выступать в роли Modbus master, опрашивать устройства и предоставлять их данные в стандартизированном и безопасном виде клиентам OPC UA.

Таким образом, Modbus часто выступает в роли "последней мили" для сбора данных с сенсоров и исполнительных механизмов, в то время как для верхних уровней системы (MES, ERP, облако) используются более современные и мощные технологии.


Заключение

Протокол Modbus, созданный в 1979 году, прошел испытание временем и продолжает оставаться краеугольным камнем в мире промышленной автоматизации. Его сила — в простоте, надежности и невероятной широте поддержки. Понимание его основ — архитектуры master-slave, форматов пакетов ADU/PDU, системы регистров и тонкостей настройки физического уровня (особенно RS-485) — является обязательным навыком для любого инженера АСУ ТП.

Хотя для задач, требующих высокой скорости, детерминированности и встроенной безопасности, сегодня существуют более совершенные протоколы, Modbus находит свою нишу в модернизации существующих установок, интеграции простых датчиков и в качестве источника данных для современных IoT-решений. Изучив Modbus, вы получаете ключ к взаимодействию с огромным парком промышленного оборудования по всему миру.


Приглашаем на наш YouTube-канал

Вас ждут полезные материалы по оборудованию для АСУ ТП, промышленным компьютерам и промышленным сетям.
Заходите, смотрите и подписывайтесь!


FAQ — часто задаваемые вопросы о протоколе Modbus

Modbus — это открытый промышленный протокол обмена данными, используемый для связи контроллеров, датчиков, приводов и других устройств в системах промышленной автоматизации (АСУ ТП). Он широко применяется в энергетике, машиностроении, ЖКХ и промышленном IoT.

Modbus ASCII — символьный формат передачи данных, устойчивый к тайминговым ошибкам, но с низкой скоростью.

Modbus RTU — двоичный формат с высокой производительностью, чаще всего используется по RS-485.

Modbus TCP — версия Modbus для работы в IP-сетях поверх TCP/IP, применяется в Ethernet-инфраструктурах.

В сети Modbus только master-устройство инициирует запросы, а slave-устройства отвечают на них. Slave не могут самостоятельно передавать данные. Такая архитектура снижает вероятность коллизий и упрощает управление сетью.

В одном сегменте Modbus-сети может быть до 247 slave-устройств, каждое с уникальным адресом. Адрес 0 используется для широковещательных запросов без ответа.

Modbus использует четыре типа регистров:

  • Coils (DO) — дискретные выходы (чтение/запись)
  • Discrete Inputs (DI) — дискретные входы (только чтение)
  • Input Registers (AI) — аналоговые входы (только чтение)
  • Holding Registers (AO) — аналоговые выходы и параметры (чтение/запись)

Наиболее распространённые коды функций:

  • 01 — Read Coils
  • 03 — Read Holding Registers
  • 04 — Read Input Registers
  • 05 / 06 — запись одного выхода или регистра
  • 15 / 16 — запись нескольких выходов или регистров

Оконечные резисторы (обычно 120 Ом) предотвращают отражение сигнала и обеспечивают согласование линии. Они устанавливаются только на концах магистрали RS-485.

Нет. Modbus TCP не имеет встроенных механизмов шифрования и аутентификации. Для защиты рекомендуется использовать VPN, сегментацию сети, firewall и фильтрацию по IP-адресам.

Оставить заявку