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