Найти тему

ОБЗОР: протокол Modbus RTU

Modbus RTU (Remote Terminal Unit) является одним из наиболее распространенных протоколов связи в промышленной автоматизации. Он разработан для обмена данными между электронными устройствами в системах контроля и управления. Протокол Modbus RTU был разработан фирмой Modicon (Modular Digital Controller) в 1979 году и с тех пор стал широко распространенным стандартом.

Modbus RTU использует последовательный интерфейс (RS-232 или RS-485) для связи между устройствами. Протокол основан на принципе "ведущий-ведомый" (master-slave), где устройство-мастер инициирует обмен данными с подчинёнными устройствами. Ведомыми могут быть различные устройства и элементы системы, например, датчики, другие контроллеры, преобразователи частоты, измерительные приборы, исполнительные устройства и другие.

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

Для использования протокола Modbus RTU необходимо наличие соответствующих устройств и программного обеспечения и выполнение некоторых других условий. В сети RS485 должно быть только одно ведущее устройство (у ведущего устройства нет адреса), а адреса ведомых устройств должны быть разными (от 1 до 247). Существует множество устройств и контроллеров, поддерживающих протокол Modbus RTU, а также библиотек и программного обеспечения для разработки приложений, основанных на этом протоколе. Некоторые производители простых устройств автоматизации реализуют протокол Modbus в своих продуктах не полностью, а прописывая только основные функции.

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

Основными функциями в протоколе Modbus RTU являются:

01Hex (1) - чтение нескольких дискретных выходов - Read Coils.

02Hex (2) - чтение нескольких дискретных входов - Read Inputs.

03Hex (3) - чтение нескольких внутренних регистров - Read Holding Registers.

04Hex (4) - чтение нескольких входных регистров - Read Input Registers.

05Hex (5) - запись одного дискретного выхода - Write Single Coil.

06Hex (6) - запись в один внутренний регистр - Write Single Register.

0FHex (15) - запись в несколько дискретных выходов - Write Multiple Coils.

10Hex (16) - запись в несколько внутренних регистров - Write Multiple Registers.

Реализация памяти входных и внутренних регистров зависит от конкретного производителя. Это могут быть две разные области памяти, два разных диапазона в одной области, одна область (функции 03 и 04 воспринимаются одинаково), а также, иногда встречается реализация только одного из диапазонов (запрос не реализованной области вызывает ошибку). Также в интеллектуальных устройствах можно встретить настраиваемые диапазоны. Например, в контроллерах HCFA по умолчанию и внутренние и входные регистры находятся в одних и тех же ячейках памяти, но при помощи настроек их можно разнести или ограничить. Это также очень важно с точки зрения безопасности (сторонние устройства не смогут получить доступ к чувствительной информации или изменить параметры выполнения).

Для конкретики рассмотрим связь панели HMI TP2507 и ПЛК HCQ1-1200, производства компании HCFA. В данном случае, панель будет ведущим устройством связи и будет инициировать запросы. Разберём примеры сообщений для двух самых распространённых случаев – чтение регистров командой 03Hex (3) и запись регистров командой 10Hex (16).

-2

Пример отправки мастером (TP2507) запроса на чтение: 08 03 000A 0002 E490

Здесь:

08 – Номер(адрес) ведомого устройства

03 – Функция чтения внутренних регистров

000A – Адрес первой ячейки для чтения (10-я ячейка)

0002 – Количество 16-разрядных регистров для чтения (2 штуки)

E490 – Контрольная сумма

В ответ ведомое устройство (HCQ0-1100) пришлёт, например: 08 03 04 1234 5678 C70C

Здесь:

08 – Номер(адрес) ведомого устройства

03 – Функция чтения внутренних регистров

04 – Количество байт данных (следующие 4 байта – полученные значения регистров)

1234 – Значение 10-й ячейки

5678 – Значение 11-й ячейки

C70C – Контрольная сумма

Пример отправки мастером (TP2507) запроса на запись: 0F 10 0007 0002 04 1234 5678 FD95

Здесь:

0F – Номер(адрес) ведомого устройства

10 – Функция записи внутренних регистров

0007 – Адрес первой ячейки для записи (7-я ячейка)

0002 – Количество регистров для записи

04 – Количество байт данных далее (следующие 4 байта – данные для записи)

1234 – Значение для первого регистра

5678 – Значение для второго регистра

FD95 – Контрольная сумма

В ответ ведомое устройство (HCQ0-1100) пришлёт, например: 0F 10 0007 0002 F127

Здесь:

0F – Номер(адрес) ведомого устройства

10 – Функция записи внутренних регистров

0007 – Адрес первой ячейки для записи (7-я ячейка)

0002 – Количество записанных регистров

F127  – Контрольная сумма

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

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

Следите за новостями в нашем Телеграм-канале и на сайте HCFA Russia.