Электроника. Радиотехника

Modbus

Протокол Modbus не избавлен от некоторых недостатков:

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

Slave-устройство не может само начать обмен данными, только по команде от master’a.

В качестве физического уровня стандарт предусматривает использование интерфейсов RS-232RS-422 и RS-485. Также существует реализация для TCP/IP — Modbus TCP.

Сеть Modbus может состоять из нескольких slave-устройств (от 1-го до 247-ми), но master должен быть только один. Каждое из подчиненных устройств имеет свой собственный адрес, соответственно, ведущий может адресовать свое сообщение или запрос конкретному slave-устройству.

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

На адреса slave накладываются некоторые ограничения:

  • диапазон допустимых адресов — 1…247. Значения адресов от 248 до 255 являются зарезервированными, а адрес 0 используется для передачи широковещательных сообщений.
  • master адреса не имеет, он в сети и так один.
  • два подчиненных устройства не могут иметь одинаковые адреса.

Вот как может выглядеть один из вариантов подключения устройств с использованием RS-485:

Пример сети Modbus.
Modbus RTURS-232 RS-422 RS-485Двоичный вариант кодирования данных. Разделителем между пакетами служит временной интервал. То есть сообщение должно начинаться и заканчиваться паузой в течение определенного промежутка времени. Это время не должно быть меньше, чем время передачи 3.5 символов при использующейся скорости передачи данных.Кроме того, в процессе передачи пакета данных не должно быть пауз длительностью, превышающей время передачи 1.5 символов. Соответственно, Modbus RTU очень критичен к временным задержкам, но зато размер пакетов меньше, чем в Modbus ASCII.
Modbus ASCIIRS-232 RS-422 RS-485В данном случае для обмена данными используются исключительно ASCII символы. И в отличие от Modbus RTU начало и конец сообщений определяются специальными символами.Начало пакета — ASCII символ «:» (0x3A), конец — «CR + LF» (0x0D + 0x0A).
Modbus TCPTCP/IPПротокол используется при передаче данных с использованием TCP/IP.

Modbus RTU и Modbus ASCII. Структура пакетов выглядит следующим образом:
Структура данных Modbus RTU.
Структура данных Modbus ASCII.



В стандарте Modbus принята следующая терминология:
  • ADU (Application Data Unit) — полный пакет данных.
  • PDU (protocol data unit) — часть пакета, содержащая непосредственно полезные данные.

Для расчета контрольной суммы используются разные алгоритмы: для Modbus RTU — CRC16, для ASCII — LRC8. В обоих случаях под контрольную сумму задействованы два байта.

Коды функций можно разделить на три группы:

  • Стандартные коды команд, описанные в Modbus-IDA.
  • Задаваемые пользователем (user-defined function codes) — 65…72, 100…110. Эти коды не описаны в спецификации стандарта и могут использоваться в конкретных изделиях для собственных функций.
  • Зарезервированные (reserved). В эту группу входят коды 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 и 127.

Но прежде, чем перейти к рассмотрению базовых/стандартных команд, необходимо рассмотреть использующуюся модель данных. Выполнение команд протокола Modbus подразумевает чтение и запись данных в регистры устройства. И различают 4 типа регистров, организованных в 4 таблицы данных:

ТаблицаТип элемента
Дискретные входы (Discrete Inputs)1 бит
Дискретные выходы (регистры флагов, Coils)1 бит
Регистры ввода (Input Registers)16-битное слово
Регистры хранения (Holding Registers)16-битное слово

Дискретные входы и регистры ввода доступны только для чтения данных, а, соответственно, дискретные выходы и регистры хранения — для чтения и записи.

Доступ к регистрам таблицы осуществляется при помощи 16-ти битного адреса. Первому элементу таблицы соответствует адрес 0. Таким образом, каждая из этих 4-х таблиц может включать в себя вплоть до 65536 регистров (адреса 0…65535 — 16 бит).

https://rutube.ru/video/eb872931ef26372bcffb303794df6a7b/?r=plemwd

Стандартные команды (функции MODBUS)

  • 0x01 (1) — чтение значений из нескольких регистров флагов (Read Coil Status); 1 (true folse)
  • 0x02 (2) — чтение значений из нескольких дискретных входов (Read Discrete Inputs); 
  • 0x03 (3) — чтение значений из нескольких регистров хранения (Read Holding Registers); 
  • 0x04 (4) — чтение значений из нескольких регистров ввода (Read Input Registers); 
  • 0x05 (5) — запись значения одного флага (Force Single Coil); 
  • 0x06 (6) — запись значения в один регистр хранения (Preset Single Register); 
  • 0x07 (7) — чтение сигналов состояния (Read Exception Status); 
  • 0x08 (8) — диагностика (Diagnostic); 
  • 0x0B (11) — чтение счётчика событий (Get Com Event Counter); 
  • 0x0C (12) — чтение журнала событий (Get Com Event Log); 
  • 0x0F (15) — запись значений в несколько регистров флагов (Force Multiple Coils); 
  • 0x10 (16) — запись значений в несколько регистров хранения (Preset Multiple Registers); 
  • 0x11 (17) — чтение информации об устройстве (Report Slave ID); 
  • 0x14 (20) — чтение из файла (Read File Record). 

Статья скопирована с сайта
https://microtechnics.ru/protokol-modbus-obzor-opisanie-i-primery-ispolzovaniya/

https://rutube.ru/video/936be519096da6fa7c59ce8843103c60/?r=plemwd

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить