Главная  /  On-line руководство  /  MODBUS. Общие данные

Протокол MODBUS. Общие данные


Содержание

Общие данные
Описание протокола Modbus RTU
Описание протокола Modbus TCP
Типы команд Modbus
Вычисление контрольной суммы



Общие данные

Modbus — коммуникационный протокол, основан на архитектуре ведущий - ведомый (master-slave, «клиент-сервер»). Широко используется при автоматизации производства, многие устройства поддерживают протокол передачи данных Modbus RTU. Modbus может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также Ethernet сети TCP/IP (протокол Modbus TCP). При желании его можно использовать для связи и по другим шинам или даже радиоканалам.

Протокол Modbus предусматривает наличие одного ведущего и до 247 ведомых устройств. Количество ведомых устройств может быть ограничено физическими возможностями шины.


Смаконт. Схема соединения

Схема соединения

Для ведущего устройства (master) в протоколе Modbus используется термин - client. Для ведомого устройства (slave) в протоколе Modbus используется термин - server. Ведущий (master) – клиент (client), ведомый (slave) – сервер (server).

В соответствии с протоколом Modbus связь всегда начинает мастер, а ведомые устройства могут только отвечать на запросы мастера. Связь осуществляется посылкой пакета запроса (от мастера к ведомому) и посылкой ответного пакета (от ведомого к мастеру).

Прошивка «Smacont-ESP» поддерживает работу в следующих режимах:
MODBUS RTU Slave - устройство выступает в роли ведомого (slave, server). Обмен с устройством осуществляется по последовательному интерфейсу UART или RS485. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;
MODBUS RTU Master - устройство выступает в роли ведущего (master, client). Обмен с устройством осуществляется по последовательному интерфейсу UART или RS485. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;
MODBUS TCP Slave - устройство выступает в роли ведомого (slave, server). Обмен с устройством осуществляется через WiFi-сеть. Одновременной с этим, устройство может работать как «MODBUS RTU Slave» или «MODBUS RTU Master»;
MODBUS TCP Master - устройство выступает в роли ведущего (master, client). Обмен с устройством осуществляется через WiFi-сеть. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;
MODBUS TCP<->RTU шлюз - устройство выступает в роли шлюза между «MODBUS TCP Slave» и «MODBUS RTU Master». Обмен с устройством осуществляется через WiFi-сеть и по последовательному интерфейсу. Другие режимы работы недоступны;



Описание протокола Modbus RTU

Сообщение Modbus RTU состоит из адреса устройства SlaveID, кода функции, специальных данных в зависимости от кода функции и CRC контрольной суммы. Данные передаются в двоичном формате, разделителем пакетов служит отсутствие данных в течение времени при котором можно передать более 3,5 байт. Протокол предназначен для шин: RS-485, RS-422, RS-232.


Смаконт. Состав пакета запроса от мастера к ведомому

Состав пакета запроса от мастера к ведомому


• ADU (Application Data Unit) – пакет Modbus целиком.
• PDU (Protocol Data Unit) – основная часть пакета, состоит из команды и данных.
• АДРЕС – адрес ведомого устройства которому адресован пакет запроса, или от которого отправлен пакет ответа. Ведомые устройства могут иметь адреса от 1 до 247. Пакет запроса отправленный с адресом 0 является широковещательным, он адресован всем ведомым на шине, они обязаны выполнить запрос, но не должны на него отвечать.
• КОМАНДА – указывает какие действия должен выполнить ведомый. Команда в запросе может иметь значение от 1 до 127. Этот диапазон соответствует байту у которого сброшен старший бит. Если ведомый выполнил запрос мастера, то в ответном пакете он указывает тот же номер команды, без изменений. Если ведомый обнаружил ошибку в запросе, или не может его выполнить, то в ответном пакете он указывает номер команды с установленным старшим битом. То есть номер команды будет лежать в диапазоне от 129 до 255.
• ДАННЫЕ – состав и количество данных в запросе и ответе зависят от номера команды. Если ведомый обнаружил ошибку в запросе, или не может его выполнить, то в ответном пакете, в поле данных, он указывает код ошибки.
• CRC-16 – проверка целостности пакета, два байта передаются младшим байтом вперёд. Для протокола Modbus значение CRC-16 рассчитывается используя реверсивный сдвиг, начальное значение равно 0xFFFF, порождающий полином равен 0xA001.



Описание протокола Modbus TCP

Данные передаются в двоичном формате и упаковываются в обычный TCP-пакет, для передачи по IP-сетям. Отличием данного протокола является отсутствие проверки целостности (CRC-16), так как TCP уже имеет собственный механизм контроля целостности. Протокол предназначен для сетей TCP/IP.


Смаконт. Протокол Modbus TCP

Протокол Modbus TCP

К началу получившегося сообщения PDU добавляется новый 7-байтовый заголовок, который называется MBAP Header (Modbus Application Header). Этот заголовок имеет следующие данные:
• Transaction Identifier (Идентификатор транзакции) - 2 байта устанавливаются Master, чтобы однозначно идентифицировать каждый запрос. Может быть любыми. Эти байты повторятся устройством Slave в ответе, поскольку ответы устройства Slave не всегда могут быть получены в том же порядке, что и запросы.
• Protocol Identifier (Идентификатор протокола) - 2 байта устанавливаются Master, всегда будут = 00 00, что соответствует протоколу Modbus.
• Length (Длина) - 2 байта устанавливаются Master, идентифицирующие число байтов в сообщении, которые следуют далее. Считается от Unit Identifier до конца сообщения.
• Unit Identifier (Идентификатор блока или адрес устройства) - 1 байт устанавливается Master. Повторяется устройством Slave для однозначной идентификации устройства Slave.



Типы команд Modbus

Прошивка «Smacont-ESP» поддерживает следующие типы команд Modbus:


Смаконт. Типы команд Modbus

Типы команд Modbus



Вычисление контрольной суммы

Для протокола Modbus RTU 16-битная контрольная сумма (CRC) вычисляется по алгоритму, описанному в спецификации Modbus, в документе "Modbus Serial Line Protocol and Implementation Guide", раздел "CRC-generation". Передающее устройство формирует два байта контрольной суммы на основе данных сообщения, а принимающее устройство заново вычисляет контрольную сумму и сравнивает с полученной. Совпадение принятой и вычисленной контрольной суммы Modbus RTU считается индикатором успешного обмена данными.



Программы

Прошивка «Smacont-ESP»:
скачать

«Программа Настройки»:
запусить (только браузер Firefox)
скачать zip-архив

Телеграм канал

Новости

Энергонезависимая память (EEPROM)

Переменные «Vx» (карта переменных «Vx»)

WEB-интерфейс

Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой

Обмен данными. Open Monitoring

Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25

Датчик температуры и влажности SHT30 (SHT31/SHT35)

Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений

Действие «termostat()». Термостат

ESP-NOW. Датчик температуры и влажности с питанием от батареек

Последовательные интерфейсы (UART, I2C, SPI)

Управление одноканальным модулем реле

Протокол MQTT

Обмен данными. NarodMon

Обмен данными. ioControl



Программы для модулей ESP     Программы     Применения     Справочник         Контакты     SMACONT. Напишите нам smacont@ya.ru