Протокол Modbus: основы RTU, ASCII и TCP
1. Что такое Modbus?
Modbus — протокол обмена сообщениями прикладного уровня для передачи данных между контроллерами и устройствами. RS-485 и RS-232 — электрические интерфейсы, а Modbus RTU, ASCII и TCP определяют соответствующие форматы сообщений и способы передачи. Наличие интерфейса RS-485 само по себе не означает поддержку Modbus.
В жидкостных системах протокол может использоваться для чтения состояния и передачи параметров управления. Поддержку протокола, коды функций и регистры необходимо проверять в руководстве по связи для конкретной модели контроллера. Эта статья не утверждает, что все изделия FOREACH поддерживают перечисленные интерфейсы.
2. Чем отличаются RTU, ASCII и TCP?
По одному разъёму нельзя определить режим связи. У последовательных устройств должны совпадать режим передачи, скорость и формат кадра; для TCP требуются совместимые настройки сети и службы устройства.
| Режим | Структура сообщения | Что проверить |
|---|---|---|
| Modbus RTU | Адрес + Код функции + Данные + CRC | Параметры последовательной связи, адрес устройства и временные интервалы кадров |
| Modbus ASCII | Кодирование ASCII с LRC и установленными символами начала и окончания | Параметры последовательной связи, кодирование и LRC |
| Modbus TCP | Заголовок MBAP + Код функции + Данные; дополнительный CRC режима RTU не используется | IP-адрес, порт, идентификатор транзакции и Unit Identifier |
3. Последовательная адресация и обмен запросами и ответами
Индивидуальные адреса устройств в последовательной сети находятся в диапазоне 1–247; 0 предназначен для широковещательных сообщений, а 248–255 зарезервированы. Обычно контроллер отправляет адресный запрос, и выбранное устройство отвечает. На широковещательные запросы записи ответ не передаётся. Наличие 8-битного поля адреса не делает каждое значение от 0 до 255 допустимым индивидуальным адресом.
Эти правила относятся к последовательным линиям. В Modbus TCP заголовок MBAP содержит Unit Identifier; его роль в маршрутизации через шлюз зависит от реализации. Не переносите правила последовательной адресации автоматически на любую конфигурацию TCP.
4. Проверяйте коды функций вместе с картой регистров
Код функции определяет тип данных и операцию чтения или записи; поле данных содержит адреса, количество или значения. Два устройства Modbus не обязательно имеют одинаковые определения регистров.
Проверьте наличие смещения между номерами регистров в руководстве и начальными адресами в сообщениях. Для многорегистровых значений уточните разрядность, наличие знака, масштаб, единицы и порядок слов. Значения скорости, положения и объёма жидкости не взаимозаменяемы.
| Направление | Обычное адресное сообщение в последовательной сети |
|---|---|
| Контроллер → Устройство | Адрес | Код функции | Данные | CRC (RTU) / LRC (ASCII) |
| Устройство → Контроллер | Адрес | Код функции | Данные | CRC (RTU) / LRC (ASCII) |
| Код функции (шестнадцатеричный) | Операция |
|---|---|
| 01 | Чтение дискретных выходов (coils) |
| 02 | Чтение дискретных входов |
| 03 | Чтение регистров хранения |
| 04 | Чтение входных регистров |
| 05 | Запись одного дискретного выхода |
| 06 | Запись одного регистра |
| 0F | Запись нескольких дискретных выходов |
| 10 | Запись нескольких регистров |
5. Наладка устройства управления жидкостной системой
Сначала проверьте подключение и питание, затем согласуйте настройки связи с руководством. Начните с чтения известного состояния и проверки адреса устройства, кода функции и смысла данных; после этого испытайте разрешённую запись параметров и команды движения.
Отдельно проверяйте успешную связь, принятие команды, завершение движения и фактически поданный объём. Подтверждение записи не доказывает, что насос завершил работу. После тайм-аута запросите состояние перед повторением команды дозирования, чтобы избежать повторной подачи дозы.
Регистрируйте запросы, ответы, коды исключений и условия тайм-аутов. Для поиска причин проверяйте концевые ограничения, поиск исходного положения, состояние клапанов и временную последовательность действий. Точные команды, адреса и единицы отсчёта задаются руководством по связи устройства.