Часть 3/3. Запросы, ответы и диагностика
Теперь посмотрим, что происходит при обмене на уровне протокола.
━━━━━━━━━━━━━━━━━━
🔹 Структура сообщения Modbus RTU
Кадр Modbus RTU содержит:
Адрес устройства
Функциональный код
Данные
CRC16
Например, мастер хочет прочитать два Holding Register с адреса 0 у устройства 1.
Запрос:
01 03 00 00 00 02 C4 0B
Разберём:
01 — адрес устройства
03 — функциональный код
0000 — начальный адрес
0002 — количество регистров
C40B — CRC16 (младший байт первым)
Устройство обрабатывает запрос и возвращает ответ.
━━━━━━━━━━━━━━━━━━
🔹 Как выглядит ответ?
Допустим, в регистрах находятся:
Register 0 = 100
Register 1 = 200
Тогда данные ответа:
01 03 04 00 64 00 C8
Где:
01 — адрес устройства
03 — функциональный код
04 — количество байтов данных
0064 — значение 100
00C8 — значение 200
После данных также передаётся CRC16.
━━━━━━━━━━━━━━━━━━
🌐 А что меняется в Modbus TCP?
Modbus TCP использует TCP/IP.
Вместо RTU-кадра с CRC передаётся сообщение с заголовком MBAP.
Основные поля:
Transaction ID
Protocol ID
Length
Unit ID
Function Code
Data
CRC16 в Modbus TCP отсутствует.
Контроль целостности передачи обеспечивается нижележащими сетевыми механизмами.
━━━━━━━━━━━━━━━━━━
⚠️ Типичные ошибки Modbus
1. Неверный адрес
Устройство отвечает ошибкой или возвращает данные не из того регистра.
2. Неверный функциональный код
Например, попытка прочитать Input Register через FC03.
3. Неправильные параметры RS-485
Различаются скорость, чётность или стоповые биты.
4. Ошибка подключения RS-485
Перепутаны линии, отсутствует корректное согласование или нарушена топология сети.
5. Неправильный формат данных
Например, REAL занимает два 16-битных регистра.
Нужно учитывать порядок слов и байтов.
6. Неправильный Unit ID
Особенно актуально при работе через шлюзы Modbus TCP/RTU.
━━━━━━━━━━━━━━━━━━
🔍 Как диагностировать обмен?
Рекомендую следующую последовательность:
1️⃣ Проверить физическое соединение.
2️⃣ Проверить параметры интерфейса.
3️⃣ Убедиться, что устройство отвечает.
4️⃣ Проверить адрес и функциональный код.
5️⃣ Проверить количество регистров.
6️⃣ Проверить формат и масштабирование.
7️⃣ Проверить тайм-ауты и период опроса.
Для диагностики можно использовать Modbus Poll и другие специализированные инструменты.
━━━━━━━━━━━━━━━━━━
📌 Главное о Modbus
Modbus — относительно простой протокол.
Но ошибки чаще всего возникают не из-за его сложности, а из-за неправильного понимания:
• адресации;
• типов регистров;
• функциональных кодов;
• форматов данных;
• особенностей интерфейса.
Понимание этих основ значительно упрощает настройку обмена между ПЛК, датчиками и исполнительными устройствами.
━━━━━━━━━━━━━━━━━━
💬 Вопрос к инженерам
С каким интерфейсом вы чаще работаете?
🔹 Modbus RTU / RS-485
🔹 Modbus TCP / Ethernet
🔹 Использую оба
Напишите в комментариях 👇
📤 Если статья полезна — перешлите её коллегам!
🔁 Поделитесь материалом в профильных чатах и сообществах.
📚 Больше статей по CODESYS и ПЛК:
https://t.me/codesys4
#Modbus #ModbusRTU #ModbusTCP #CODESYS #ОВЕН #ПЛК #АСУТП