Что такое протокол MODBUS и все его особенности?

01.11.2020
A+ A-

Что такое протокол Modbus TCP?

Modbus — это протокол последовательной связи, разработанный Modicon в 1979 году для использования с ПЛК. Modbus TCP/IP использует TCP/IP и Ethernet для перемещения данных структуры сообщений Modbus между совместимыми устройствами. То есть Modbus TCP/IP представляет собой физическую сеть (Ethernet), стандартный метод представления данных с сетевым стандартом (TCP/IP). Сообщение Modbus TCP/IP представляет собой просто сообщение Modbus, инкапсулированное в пакет Ethernet TCP/IP.

Некоторые обязательные термины:
SCADA относится к центральным системам, которые контролируют и контролируют все объекты.
ПЛК — это устройство автоматизации, используемое в производственных цехах на заводах или в управлении такими процессами, как управление машинами.
RTU (Remote Terminal Unit) — многоцелевое устройство, используемое для удаленного контроля и управления различными устройствами и системами автоматизации.
PDU (Protocol Data Unit) — это конкретная единица информации, передаваемая по сети.
HMI (человеко-машинный интерфейс) — это пользовательский интерфейс или приборная панель, которая соединяет человека с машиной, системой или устройством.
Например, Modbus позволяет устройствам в системе передавать результаты измерений устройств измерения температуры и влажности, подключенных к той же сети, на управляющий компьютер или ПЛК.
Связь Modbus
Протокол Modbus использует технологию Master/Slave для связи между устройствами. То есть любое приложение, использующее протокол Modbus, будет иметь ведущее устройство Modbus и как минимум одно ведомое устройство Modbus. Ведущее устройство Modbus обычно представляет собой хост-контроллер, который взаимодействует с одним или несколькими ведомыми устройствами Modbus.

Типы протоколов связи Modbus

Существует несколько версий протокола Modbus для последовательного порта и Ethernet, наиболее распространенными из которых являются:
По типу последовательной связи

Modbus RTU

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

Modbus ASCII

Он основан на способе передачи данных с использованием 8-битного кодирования в соответствии с системой кодирования ASCII в сетевой структуре Modbus. Преимущество этого кодирования в том, что оно позволяет передавать последовательные данные, не вызывая ошибки. С помощью проверки ошибок LRC проверяется, отправлено ли более 8 бит данных.

Modbus Plus

Этот протокол, разработанный Schneider и Modicon, подключается к глобальной сети Fieldbus. Он используется в ПЛК, приводах и многих периферийных устройствах. Он используется в промышленных приложениях с коммуникационным протоколом PLUS RS-485, который связан со структурой ведущий/ведомый. Он имеет гибкую структуру помимо высокоскоростной передачи данных.

Согласно типу связи ETHERNET

Протокол Modbus TCP/IP

Это простой в использовании протокол, предназначенный для контроля и управления устройствами автоматизации. Этот протокол, который предлагает связь в соответствии с топологией классической интернет-сети, передает данные со скоростью 100 Мбит/с с использованием стандартных интернет-карт. По протоколу TCP/IP можно установить несколько соединений. Устанавливается соединение между серверными/клиентскими устройствами и происходит передача данных. Любое устройство может быть клиентом или сервером, либо в системе может быть много серверов или клиентов. Скорость передачи данных в протоколе TCP/IP зависит от процессора и типа интернет-карты, используемых в устройствах.

Структура заголовка протокола Modbus TCP/IP

В версии Modbus TCP/IP сообщения состоят из 2 основных частей. Часть MBAP и PDU составляют целостность сообщения.

Раздел заголовка MBAP (заголовок прикладного протокола Modbus)
В протоколе Modbus TCP/IP заголовок MBAP состоит из 4 частей. Длина заголовка MBAP составляет 7 байт. Раздел MBAP предназначен для функции связи. Он несет некоторую информацию, позволяющую ведущему и ведомому устройствам взаимодействовать друг с другом.

Идентификатор транзакции
Это раздел, который позволяет двум устройствам взаимодействовать друг с другом, связывая между собой точки ведущего и ведомого устройств. Часть дескриптора процесса имеет длину 2 байта.

Идентификатор протокола
Предназначен для нескольких систем. Для Modbus принимает значение 0. Эта область зарезервирована для будущего использования. Часть дескриптора протокола имеет длину 2 байта.

Длина
Раздел длины определяет длину данных в байтах, включая раздел дескриптора устройства и разделы Modbus TCP/IP PDU. Часть длины имеет длину 2 байта.

Идентификатор объекта
Это поле используется для маршрутизации в системе. Он используется для идентификации удаленного устройства, которое не находится в сети. Часть дескриптора тома имеет длину 1 байт.

Раздел Modbus TCP/IP PDU
Раздел Modbus TCP/IP PDU состоит из 2 разделов, функционального кода и данных. В фреймах Modbus TCP/IP раздел PDU Modbus TCP/IP в основном содержит коды для функции.

Функциональный код
Раздел функционального кода состоит из кода запрашиваемой функции при отправке сообщения с ведущего устройства на ведомое устройство. Ответ ведущего устройства от подчиненного устройства состоит из функционального кода, соответствующего запросу. Длина функционального кода составляет 1 байт.

Раздел данных
Раздел данных содержит специальные данные для запрошенной функции при отправке сообщения с ведущего устройства на ведомое. Ответ ведущего устройства от подчиненного устройства состоит из данных ответа или кодов ошибок, которые должны быть отправлены на запрос. Раздел данных имеет переменную длину.


Как хранятся данные в Modbus?
Информация хранится в ведомом устройстве в четырех разных таблицах. Две диаграммы хранят значения состояния включения/выключения (катушки), а две другие — числовые значения (регистр). Катушки и регистры имеют диаграммы только для чтения и чтения-записи. Каждая диаграмма имеет 9999 значений. Каждой катушке или контакту соответствует 1 бит, и ему назначается адрес данных от 0000 до 270E. Каждый регистр состоит из 1 слова = 16 бит = 2 байта, а также имеет адрес данных от 0000 до 270E.

Номера катушек/регистров можно рассматривать как системные имена, поскольку они фактически не появляются в сообщениях. Адреса данных используются в сообщениях. Например; Первый регистр хранения имеет номер 40001, адрес данных 0000. Разница между этими двумя значениями компенсируется. Каждая диаграмма имеет разное смещение. 1, 10001, 30001 и 40001.
Примечание. Каждый производитель может хранить адреса переменных Modbus TCP в своем устройстве в разных диапазонах.

Что такое Slave ID?
Каждое ведомое устройство в сети имеет свой собственный адрес в диапазоне от 1 до 247. Когда ведущее устройство запрашивает данные, информация об адресе ведомого устройства отправляется первым байтом. Таким образом, каждый Ведомый знает после первого байта, следует ли игнорировать сообщение.

Что такое функциональный код?
Второй байт, отправленный мастером, называется кодом функции. Эти числа сообщают ведомому устройству доступ к таблице и следует ли читать ее (чтение) или записывать в нее (запись).

Общие определения функционального кода​