Содержание
Общие данные
Описание протокола 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
К началу получившегося сообщения 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 RTU 16-битная контрольная сумма (CRC) вычисляется по алгоритму, описанному в спецификации Modbus, в документе "Modbus Serial Line Protocol and Implementation Guide", раздел "CRC-generation".
Передающее устройство формирует два байта контрольной суммы на основе данных сообщения, а принимающее устройство заново вычисляет контрольную сумму и сравнивает с полученной.
Совпадение принятой и вычисленной контрольной суммы Modbus RTU считается индикатором успешного обмена данными.
|
|
Программы
Прошивка «Smacont-ESP»:
• скачать
«Программа Настройки»:
• запусить (только браузер Firefox)
• скачать zip-архив
Телеграм канал
Новости
Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой
Обмен данными. Open Monitoring
Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25
Датчик температуры и влажности SHT30 (SHT31/SHT35)
Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений
Действие «termostat()». Термостат
ESP-NOW. Датчик температуры и влажности с питанием от батареек
Последовательные интерфейсы (UART, I2C, SPI)
Управление одноканальным модулем реле
Протокол MQTT
Обмен данными. NarodMon
Обмен данными. ioControl
Обмен данными. WhatsApp
Обмен данными. Telegram
Текстовые шаблоны
|