Парсер протокола Modbus
Анализ, преобразование и отладка коммуникаций Modbus RTU/ASCII/TCP
Пожалуйста, введите данные
Справочник по протоколу Modbus
Modbus — наиболее широко используемый промышленный протокол связи, разработанный компанией Modicon в 1979 году. Он обеспечивает связь между электронными устройствами через последовательные линии (RTU) или Ethernet (TCP/IP). Этот инструмент помогает инженерам отлаживать и анализировать коммуникации Modbus без специализированного оборудования или программного обеспечения.
Структура кадра Modbus RTU
Modbus RTU (Remote Terminal Unit) передаёт данные в двоичном формате через последовательные соединения, такие как RS-232 или RS-485. Каждый кадр включает адрес ведомого, код функции, данные и 16-битную контрольную сумму CRC для обнаружения ошибок. Компактный двоичный формат делает RTU эффективным для сред с ограниченной пропускной способностью.
1 byte
1 byte
N bytes
2 bytes
Modbus RTU Frame Structure
Структура кадра Modbus TCP
Modbus TCP инкапсулирует кадры RTU в пакеты TCP/IP, используя 7-байтовый заголовок MBAP (Modbus Application Protocol). Этот заголовок содержит ID транзакции для сопоставления запрос-ответ, идентификатор протокола (всегда 0 для Modbus), длину сообщения и ID устройства. TCP-связь по умолчанию использует порт 502.
2 bytes
2 bytes
2 bytes
1 byte
1 byte
N bytes
Modbus TCP Frame Structure (MBAP Header + PDU)
Распространённые коды функций
Коды функций определяют тип операции в запросе Modbus. Операции чтения (01-04) получают состояния катушек или значения регистров, а операции записи (05, 06, 0F, 10) изменяют данные устройства. Каждый код функции имеет определённые требования к формату данных.
| Код | Функция | Тип |
|---|---|---|
| 0x01 | Чтение Coils | Чтение |
| 0x02 | Чтение дискретных входов | Чтение |
| 0x03 | Чтение регистров хранения | Чтение |
| 0x04 | Чтение регистров ввода | Чтение |
| 0x05 | Запись одного выхода | Запись |
| 0x06 | Запись одного регистра | Запись |
| 0x0F | Запись нескольких выходов | Запись |
| 0x10 | Запись нескольких регистров | Запись |
Порядок байтов в Modbus
Разные производители ПЛК используют различные порядки байтов для 32-битных и 64-битных значений. Четыре распространённых варианта: Big Endian (ABCD) — стандартный сетевой порядок; Little Endian (DCBA); Mid-Big Endian (BADC); и Mid-Little Endian (CDAB). При чтении неверных значений попробуйте разные порядки байтов, чтобы найти правильную интерпретацию.
Алгоритм CRC-16/Modbus
Modbus RTU использует CRC-16 с полиномом 0x8005 и начальным значением 0xFFFF для обнаружения ошибок. CRC рассчитывается по адресу ведомого, коду функции и байтам данных, затем добавляется младшим байтом вперёд. Кадр с неверным CRC должен быть отброшен получателем.
Практические применения
- Устранение ошибок связи между ПЛК и системами SCADA путём анализа необработанных данных пакетов
- Проверка значений регистров при вводе в эксплуатацию путём преобразования hex-данных в инженерные единицы
- Генерация тестовых команд для валидации устройств без специализированного программного обеспечения Modbus
- Отладка проблем с порядком байтов при интеграции устройств разных производителей
Связанные инструменты
CRC Калькулятор
Вычисление контрольных сумм CRC-8, CRC-16, CRC-32, CRC-64 с поддержкой Modbus, CCITT и других стандартов протоколов
Онлайн-отладчик последовательного порта
Браузерный инструмент отладки последовательного порта - не требует загрузки, мониторинг в реальном времени через Web Serial API
Конвертер систем счисления
Конвертация между двоичной, восьмеричной, десятичной и шестнадцатеричной системами с поддержкой произвольных оснований (2-36)
Конвертер кодировки текста
Преобразование текста между Hex, Binary, Unicode, ASCII, Base64 и многими другими форматами кодирования