История и происхождение протокола Modbus
Протокол Modbus был разработан в 1979 году компанией Modicon, ныне принадлежащей Schneider Electric. Компания Modicon создала этот протокол для использования в своих ПЛК (программируемых логических контроллерах), которые используются на производстве для автоматизации промышленных электромеханических процессов.
Организация Modbus — это группа независимых пользователей и поставщиков, выступающих за использование протокола Modbus. Она была основана в 2002 году с целью сделать протокол, его спецификации и связанную с ним информацию доступными для общественности. Организация также обеспечивает постоянную доступность, улучшение и внедрение протокола Modbus на рынке промышленной автоматизации.
Протокол Modbus — это протокол связи, который позволяет устройствам обмениваться данными через различные типы сред, например последовательные линии и Ethernet. Протокол был разработан в 1979 году корпорацией Modicon, производящей программируемые логические контроллеры (ПЛК), чтобы позволить этим устройствам взаимодействовать друг с другом.
Modbus предоставляет структуру сообщений, предназначенную для установления связи «главный-подчиненный» между интеллектуальными устройствами. Сообщение Modbus, отправленное с устройства A (ведущего), инициирует ответ от устройства B (ведомого). Функция протокола Modbus заключается в определении того, что передается, как упаковывается информация и порядок отправки и получения сообщений.
Modbus RTU имеет высокую эффективность связи и широкое применение благодаря двоичному представлению и компактной структуре данных. Поскольку Modbus ASCII использует передачу кода ASCII и использует специальные символы в качестве начального и конечного идентификаторов своих байтов, эффективность его передачи ниже, чем у протокола Modbus RTU. Обычно протокол связи Modbus ASCII рассматривается только в том случае, если объем передаваемых данных невелик. . На промышленных объектах обычно используется протокол Modbus RTU. Вообще говоря, протокол связи Modbus, основанный на последовательной связи, относится к протоколу связи Modbus RTU.
Инструкции в протоколе RTU состоят из кода функции (один байт), начального адреса (два байта), кода адреса (один байт), данных (N байт), кода проверки (два байта). Пять состоит из трех частей, в которых данные состоят из длины данных (два байта, обозначающих количество регистров, при условии, что содержимое равно M) и текста данных (M, умноженное на 2 байта).
Протокол RTU использует 3,5 байта времени простоя в качестве начала и конца инструкций. Вообще говоря, текст данных будет только тогда, когда ведомое устройство возвращает данные или хост записывает операции, а в других случаях, например, операции чтения хоста. При команде есть. нет тела данных, требуется только длина данных.
Протокол Modbus TCP добавляет заголовок MBAP к протоколу ModbusRTU. Поскольку TCP — это служба, основанная на надежных соединениях, код проверки CRC в протоколе RTU больше не требуется, поэтому в протоколе ModbusTCP нет кода проверки CRC. Заголовок сообщения имеет общую длину семь байтов. За исключением пятого и шестого байтов, остальные практически не изменяются.
Описание инструкций в таблице: Начать запись (10) в регистр (0001) с адреса регистра модуля 0x18E (018E) с кодом адреса 01 (флаг единицы протокола TCP — 00). Конкретная длина данных — 2 байта (02). ). Текстовое содержимое — 0000 (0000).
ModBus RTU и ModBus TCP являются двумя основными вариантами протокола ModBus. Традиционно ModBus RTU (RTU, который должен передавать информацию обратно на ведущее устройство ModBus или SCADA HMI) используется многими различными типами устройств. ModBus RTU обычно передается по последовательному порту RS485. Этот последовательный канал связи позволяет нескольким устройствам передавать данные на один порт HMI в конфигурации «главный-подчиненный». Каждое подчиненное устройство может обмениваться данными, отправляя трафик главному устройству. Это делает структуру сети ModBus достаточно простой.
ModBus TCP получил свое название потому, что, в отличие от более раннего ModBus, он использует TCP/IP для чтения/записи значений регистров.
Базовая структура всех протоколов ModBus
Независимо от варианта, все стандартные коммуникации ModBus имеют одну и ту же структуру сообщений. Все вращается вокруг сохранения значений в регистрах и последующего их чтения. Здесь задействовано несколько типов данных.
Например, дискретные входы могут храниться как отдельные биты. В более широком смысле, входные регистры хранят значения, собираемые устройствами на базе ModBus. Несколько дискретных устройств хранятся в виде отдельных битов, тогда как аналоговые значения или даже символы ASCII могут храниться в 8-битных регистрах (младший бит — 0 бит, старший бит — 64 бита).
Различные типы регистров классифицируются по функциональному коду, используемому для их опроса. «1» в поле функционального кода используется для «чтения катушки» (проверки состояния управляющего реле). «2» означает «прочитать дискретный вход» (проверить состояние дискретного входа). «3» — «регистр временного хранения чтения» (собирает данные из многоцелевого регистра чтения/записи). В спецификации ModBus есть еще кое-что. Регистр запрашивается по его «начальному адресу», который представляет собой 16-битное значение, уникально идентифицирующее каждый регистр в устройстве. Главные запросы к RTU или другому устройству всегда будут ссылаться на необходимый регистр, о котором необходимо сообщить.
Основные различия между ModBus RTU и ModBus TCP
Основное отличие состоит в том, что ModBus RTU использует шлейфовую сеть, поэтому вы подключаете всю сеть по двум проводам и взаимодействуете с каждым устройством, присваивая каждому узлу уникальный адрес. ModBus TCP использует звездообразную сеть, в которой каждый узел имеет отдельный кабель Cat5 или Cat6. Их можно подключить с помощью роутера. Они также имеют уникальный персональный адрес для каждого узла в сети. Адреса могут быть от 1 до 255, что означает, что теоретически в одной сети может быть 254 устройства. Вы также можете использовать ModBus TCP через Интернет.
Тенденция 2023 года заключается в том, что все больше полевых устройств будут использовать ModBus RTU, но ModBus TCP догоняет их. Датчики давления, расходомеры и газоанализаторы используют ModBus RTU. ПЛК, РСУ и оборудование диспетчерской используют ModBus TCP. Некоторые устройства, которые обмениваются данными с веб-серверами через Интернет, используют ModBus TCP. Аналоговые и цифровые модули ввода и вывода доступны на ModBus RTU и ModBus TCP.
Можно ли использовать ModBus в качестве недорогого решения?
И для ModBus RTU, и для ModBus TCP ответ — да. Приложения ModBus RTU должны считывать входной сигнал 4–20 мА или 0–10 В и отображать его на ПК или ПЛК. При использовании ModBus TCP вам понадобится только эмулируемая карта ModBus TCP и подключить ее непосредственно к ПК с помощью кабеля Cat5 или Cat6, используя перекрестный кабель или через маршрутизатор, и вы сможете очень быстро прочитать регистры ModBus.
Независимо от того, используете ли вы ModBus RTU или ModBus TCP, вы найдете простое и недорогое решение для вашего приложения. В зависимости от размера и сложности системы может быть выбран один протокол, который лучше соответствует потребностям пользователя, но оба протокола обеспечивают отличные решения для приложений промышленной автоматизации.