Что такое протокол Modbus и где он используется

Содержание

Протокол Modbus

В 1979 году компания Modicon представила протокол, который мог бы помочь собирать данные с оборудования. Новая разработка пришлась по нраву производителям промышленных машин. Поэтому вскоре на свет появились две реализации протокола — ModBus TCP и ModBus RS-485, подходящих для популярных интерфейсов.

Где используется протокол

Компания AdvanTech объединила несколько устройств и одно программное обеспечение WebAccess, а затем разместила компоненты в теплицах сельскохозяйственного угодья.

  • графическая логика условий позволила биологам создавать собственные алгоритмы ввода и вывода данных;
  • P2P использует открытую сеть Ethernet и удешевляет использование оборудования.

Все данные, благодаря protocol Modbus, передаются на ПК. Прочная и компактная комбинация датчиков отлично переносит влажность в теплицах. А инженеры настраивают работу через экран планшета или смартфона.

Как работает Modbus

Еще один вариант, как работает протокол — во время контроля за нагревом воды солнечными лучами. Модули сбора данных подключились в бассейне, с помощью протокола информация с нескольких датчиков объединялась и передавалась на компьютер. Вся система подключалась через стандартный интерфейс RS-485. При такой схеме инженеры добавляют или убирают дополнительные сканеры, а в саму программу — дополнительные метки.

Стандартные функции протокола Modbus

  • Чтение состояния дискретных входов и выходов устройства. Алгоритм работы в обоих случаях одинаков. Задается запрос, в котором определяется адрес первого входа/выхода и количество следующих, которые нужно прочитать.
  • Чтение регистров общего назначения. Процесс похож на предыдущую функцию, но вместо количества входов или выходов транслируется количество регистров.
  • Чтение только входных регистров. В процессе выполнения задачи функция обращается к отдельной, специальной области внутри устройства.
  • Изменение одного из дискретных входов.
  • Запись значения в один из регистров.
  • Изменение состояния сразу нескольких дискретных входов.
  • Запись значений в несколько расположенных регистров.

Используются регистры от 1 до 123.

Типы данных ModBu

Ведущее устройство отправляет запрос, состоящий из адреса (строка левой колонки), количества элементов. Оба значения задаются числами — до 16 бит. В ответ устройство получает такое же числовое количество данных.

Если необходимы данные, которые можно читать и записывать, то используются функции 5 и 6. Команда состоит из адреса и значения. Есть возможность одновременно записать несколько элементов, команда строится по тому же принципу, но к адресу и значениям добавляется количество изменяемых характеристик.

Структура обмена данными по ModBus

В узле Modbus обязательно присутствуют четыре устройства. Сетевой обмен данными состоит из запросов одного из них и ответов на эти запросы.

Modbus

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

Модель данных Modbus

  • Регистры флагов необходимы для хранения однобитных значений. Используются только для обозначения текущего состояния выхода. В системе английских обозначений этому регистру приписано название Coil, т. е. обмотка реле.
  • Аналогичный регистр отвечает за состояние входа. Название регистра — дискретные входы. Как и регистры флагов, является простым однобитным.
  • Регистры хранения и ввода подходят для хранения двухбайтовых значений.

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

Два варианта протокола

Сегодня существуют два варианта протокола, которые используются с одинаковой частотой. Протокол ModBus RTU считается более простым и компактным. В основе — только двоичная связь. Передача данных невозможна без циклической контрольной суммы избыточности: с ее помощью мастер определяет, есть ли проблемы и каков их характер.

Некоторые мастера предпочитают использовать более редкую, но подробную версию — ASCII. Вариант протокола используют на тех устройствах и оборудовании, которые не поддерживают более распространенный ModBus RS 484. Из-за этого ASCII является менее безопасным протоколом. В основе — сложное шестнадцатеричное кодирование данных.

Варианты протокола

Многие программисты объединяют RTU и ASCII в одну группу, ведь они отличаются лишь типом кодирования и уровнем распространенности. Поэтому в качестве второго варианта протокола принято называть TCP.

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

Классический, слегка архаичный RTU используется для стандартных интерфейсов — RS-232, Modbus RS-485. Особенность системы заключается в строгой иерархичности: на каждом шлейфе по протоколу один аппарат назначается главным (Master), все остальные — ведомыми (Slaves). Количество ведомых может доходить до 32, но оптимально подключать в одну связку максимум 20.

Какие бывают команды Modbus RTU?

  • 0х01;
  • 0х02;
  • 0х03;
  • 0х04;
  • 0х05;
  • 0х06;
  • 0х0F;
  • 0x10.

Команды от Мастера можно разделить на три группы — чтение данных, запись одного дискретного выхода и запись нескольких дискретных выходов.

Контроль ошибок в протоколе Modbus RTU

  • искажение функций, адреса или других значений при передаче информации;
  • логические ошибки.

Чтобы их обнаружить, предусмотрены специальные алгоритмы действий. Для обнаружения искажений используется фрейм слов. В RTU каждое отдельное сообщение начинается и заканчивается интервалом тишины — временем, которое сопоставимо с передачей 3,5 символов на текущей скорости. Фрейм передается непрерывно и отслеживает, соответствует ли длительность интервалов положенному значению. Если он короче или длиннее, фрейм игнорируется устройством.

Контроллер сети

  • Ведомое устройство не принимает некорректно сформулированный запрос, не отправляет ответ. Ведущий аппарат ждет положенное время, а потом по таймауту фиксирует ошибку.
  • Ведомый принимает запрос, но в процессе выполнения команды обнаруживается ошибка (это может быть LRC, CRC). Ответ не отправляет. Мастер по таймауту фиксирует проблему.
  • Случайно было создано обращение к несуществующему регистру. Когда ведомое устройство получает такой неправильный запрос, то не может на него ответить.

При отсутствии ответа отправляется отчет об ошибке.

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

В отличие от RTU, TCP устроено по иному принципу — «клиент-сервер». Чтобы обменяться данными, образуется связь между клиентом и сервером. Client-ом становится Мастер, остальные Ведомые превращаются в сервер. Меняется порядок передачи данных: теперь не Мастер задает команду, а пользователь открывает сеанс связи. Поэтому широкоформатного общения (от одного источника ко всем устройствам) в этом типе протокола нет.

Из-за более сложной системы время передачи данных увеличивается. Зато таким способом синхронизируют даже далеко расположенные устройства — по Wi-Fi.

Типы команд Modbus TCP

Процесс соединения двух устройств отличается, но команды, которые задает Клиент Серверу, не отличаются от стандартных. Можно прочесть, записать один регистр или несколько. Как и RTU, TCP обозначает каждую команду кодом: 01-06, 15-16.

Программы для работы с протоколом Modbus

  • Modbus Poll, разработанный компанией Witte Software. Отличается удобным, понятным интерфейсом. Визуально повторяет интерфейс Мастера. Имеет все те же функции, что и он. Однако за качественное приложение придется заплатить — лицензия стоит 130$. Кроме того, нет возможности перенастроить порт.
  • Modscan от разработчика WinTech. Интерфейс копирует ModBus Poll, однако функционал гораздо проще и меньше, чем у предыдущей программы. По сравнению с ней у аналога не хватает возможности работать в режиме сниффер, поддержки нестандартного протокола, настройки логирования. Зато есть бонус — возможность создавать формы-мнемосхемы. Несмотря на скромный функционал, цена у ПО высока — 90$ за лицензию.
  • Команда S2-Team разработала приложение Termite — модернизированный терминал. Он самостоятельно считает CRC, сообщает о неточностях. ПО поддерживает все требуемые опции, кроме режима сниффер. Стандартная версия стоит 10$, за продвинутую придется заплатить больше.
  • AccessPort работает в режиме сниффер, но это одно из немногих достоинств. Не поддерживает стандартный и нестандартный Modbus, работа разрешена с одним профилем.

Modscan

Не такие популярные, но все же используемые бесплатные приложения и библиотеки для работы — FreeSCADA, PortMon, PeakHMI, QModMaster.

Требования к ПО для работы с Modbus-устройствами в режиме мастера

  • поддерживаются стандартные настройки COM-порта — скорость, номер и стоп-биты;
  • возможность настроить таймауты;
  • поддержка как стандартного, так и нестандартного ModBus;
  • возможность запустить авто-опрос и настроить детали;
  • логирование сессии и его настройка;
  • поддержка режима сниффер.

Кроме того, приложение должно быть лицензированным. Разработчик должен сопровождать софт и вовремя предоставлять обновление программы.

Наладка систем автоматизации, использующих Modbus устройства

  1. Проверяется работоспособность каждого отдельного устройства. Потребуется задать всем Slaves запросы и проконтролировать корректность ответов.
  2. Устраивается нагрузочное тестирование — задавать команды и проверять ответы на протяжении длительного времени.
  3. В идеале проводится несколько таких длительных опросов, каждый раз меняя частоту, количество команд. А затем с помощью анализатора сделать отчет по полученным данным.

Может потребоваться дополнительная аппаратура, инструмент Modbus Roll для одновременного опроса нескольких устройств или иные модули Modbus.

Реже возникают сложности с подключением в сеть, работающую по отличному от ModBus RTU протоколу. Для наладки требуется OPC сервер и Modbus Roll.

Modbus Map

Протокол обязательно снабжается ModBus Map — документацией, в которой подробно описаны допустимые регистры, адреса, команды, значения и способы доступа.

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

Связь и устройства

В общей связке работают несколько устройств. Чтобы одно из них давало команды остальным, каждому аппарату присваивается уникальный номер, адрес. Обычно только Master может отправлять команды Slaves, однако в Ethernet любое устройство имеет возможность задать команду.

Сегодня есть много модемов и шлюзов, которые разработаны специально под ModBus. Самые современные работают на базе проводной или беспроводной связи, сообщаются даже с помощью небольших сообщений типа SMS и используют пакетную радиосвязь GPRS.

Оборудование с поддержкой Modbus

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

Интеллектуальный коммуникатор с поддержкой Modbus

Модули удаленного ввода или вывода необходимы для дистанционного управления периферией. Помогут во время сбора информации в режиме Master/Slave. Устройство подключается как к контроллеру, так и напрямую к серверу.

Шлюзы используются для преобразования интерфейсов, объединения в одну сеть устройств с разными протоколами и разъемами. Каждый шлюз имеет до 4-х интерфейсов: 232, 422, 485, Ethernet.

Контроллеры автоматизации помогут переключиться из режима Slaves-Master в режим Server-Client.

Преимущества протокола Modbus

Как и каждый протокол, Modbus (и RTU, и TCP) имеет ряд преимуществ и недостатков. Операторы выбирают этот протокол благодаря следующим достоинствам:

Modbus — протокол прикладного характера: данные передаются над физическим уровнем, связь используется в большинстве типов соединений.

Недостатки протокола Modbus

Все «ведомые» устройства передают данные только по команде Master. Если необходимость в передаче данных возникает у ведомого устройства, то потребуется время: нужно дождаться, пока ведущий даст команду в порядке очередности.

Из-за типа — Master and Slaves — протокол не сообщает информацию об исключениях. В то же время Ведущий должен получать информацию от Ведомых. Это нагружает систему, увеличивает время передачи данных с дочерних устройств к главному. А значит, ModBus становится неудобен в тех каналах, где скорость передачи низкая.

Так как передача информации происходит непрерывно, это ограничивает типы устройств: то оборудование, что буферизует данные, уже не может быть использовано.

Так как он изобретен в 1979 году, численность типов данных ограничена тем количеством, которое было доступно 40 лет назад. Большие двоичные объекты просто не поддерживаются.

Из-за неудобств от использования протокола отказываются компании, которым важно сохранить конфиденциальность данных. Протокол не защищает от сторонних команд, не санкционированных оператором. И не защищает полосу пропускания от перехвата.

Благодаря универсальности и открытости, стандарт позволяет интегрировать оборудование разных производителей. Modbus используется для сбора показания с датчиков, управления реле и контроллерами, мониторинга, и т. д.

В статье разберем реализации протокола Modbus, форматы данных, программное обеспечение для работы с протоколом. Попробуем на практике прочитать данные из устройства.

История Modbus

Modbus был представлен в 1979 году компанией Modicon (ныне Schneider Electric). Это был открытый стандарт, работающий по интерфейсу RS-232. Позже появилась реализации протокола для интерфейсов RS-485 и Modbus TCP. Протокол быстро набрал популярность, и многие производители стали внедрять его в своих устройствах.

Позже права на протокол были переданы некоммерческой организации Modbus Organization, которая до сегодняшнего дня владеет стандартом.

В описании стандарта Modbus используются терминология, унаследованная от языков релейной логики. Так, например, некоторые регистры называются катушками (англ. coil).

Физический уровень

  • RS-232/422/485 — последовательные интерфейсы, широко распространенные в промышленности. Интерфейсы RS-422/485 обеспечивают дальность сигнала до 1200 метров. Используются протоколы Modbus RTU/ASCII
  • Сети TCP/IP — физическим каналом передачи данных могут любые ethernet-интерфейсы. Используется протокол Modbus TCP

Логический уровень


Различия протоколов Modbus

Modbus ASCII

Данные кодируются символами из таблицы ASCII и передаются в шестнадцатеричном формате. Начало каждого пакета обозначается символом двоеточия, а конец — символами возврата каретки и переноса строки. Это позволяет использовать протокол на линиях с большими задержками и оборудовании с менее точными таймерами.

Modbus RTU

В протоколе Modbus RTU данные кодируются в двоичный формат, и разделителем пакетов служит временной интервал. Этот протокол критичен к задержкам и не может работать, например, на модемных линиях. При этом, накладные расходы на передачу данных меньше, чем в Modbus ASCII, так как длина сообщений меньше.

Modbus TCP

Структура пакетов схожа с Modbus RTU, данные также кодируются в двоичный формат, и упаковываются в обычный TCP-пакет, для передачи по IP-сетям. Проверка целостности, используемая в Modbus RTU, не применяется, так как TCP уже имеет собственный механизм контроля целостности.

Формат пакета


Форматы пакета разных реализаций Modbus

Все устройства Modbus взаимодействуют, следуя модели master-slave. Запросы может инициировать только master-устройство, slave-устройства могут только отвечать на запросы, и не могут самостоятельно начинать передачу данных. В зависимости от реализации протокола, заголовки пакета различаются. Вот основные составляющие пакета, которые важно знать:

ADU (Application Data Unit) — пакет Modbus целиком, со всеми заголовками, PDU, контрольной суммой, адресом и маркерами. Отличается, в зависимости от реализации протокола.

PDU (protocol data unit) — основная часть пакета, одинаковая для всех реализаций протокола. Содержит сам payload.

Адрес устройства — адрес получателя, то есть slave-устройства. В одном сегменте Modbus-сети могут находится до 247 устройств. Только slave-устройства имеют различающиеся адреса, master-устройство не имеет адреса. Адрес «0» используется для широковещательных запросов от master, при этом, slave-устройства не могут отвечать на эти широковещательные пакеты.

Контрольная сумма — алгоритмы проверки целостности пакетов. В Мodbus RTU и ASCII используется 2 байта контрольной суммы. В Modbus RTU применяется алгоритм CRC16, в Modbus ASCII — более простой и менее надежный LRC8. В Modbus TCP контрольная сумма не добавляется в ADU, так как целостность проверяется на уровне TCP.

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

Регистры и функции Modbus

В упрощенном виде, структура запросов Modbus состоит из кода функции (чтение/запись), и данных, которые нужно считать или записать. При этом, коды функции различаются для разных типов данных. Разберем, какие бывают регистры, и функции для работы с ними.

  • Discrete Inputs — дискретные входы устройства, доступны только для чтения. Диапазон адресов регистров: с 10001 по 19999. Имеют функцию «02» — чтение группы регистров
  • Coils — дискретные выходы устройства, или внутренние значения. Доступны для чтения и записи. Диапазон адресов регистров: с 20001 по 29999. Имеет функции: «01» — чтения группы регистров, «05» — запись одного регистра, «15» — запись группы регистров
  • Input Registers — 16-битные входы устройства. Доступны только для чтения. Диапазон адресов регистров: с 30001 по 39999. Имеют функцию: «04» — чтение группы регистров
  • Holding Registers — 16-битные выходы устройства, либо внутренние значения. Доступны для чтения и записи. Диапазон адресов регистров: с 40001 по 49999. Имеют

Примеры работы

Для примера работы с протоколом Modbus TCP воспользуемся максимально простой консольной утилитой modbus-cli, написанной на языке Ruby. Она позволяет легко читать и писать данные в регистры Modbus.

Попробуем прочесть состояние счетчиков переданных пакетов на промышленном коммутаторе Advantech EKI-5524SSI. Для начала необходимо определить адреса регистров, хранящие нужную информацию, для этого заглянем в документацию устройства. Описание регистров находятся в разделе «Modbus Mapping Table»:


Описание значений регистров в документации коммутаторов EKI

Видно, что значение переданных пакетов для одного порта хранится в четырех регистрах, и для первого порта это регистры с 38193 по 38197. Также дано описание формата хранения данных, из которого следует, что целое число переданных пакетов хранится шестнадцатеричном формате, и значение 11223344 пакетов будет записано как 0xAB4130, справа налево.

read — команда чтения. Программа сама понимает, какую конкретно команду чтения использовать в зависимости от адреса регистра, в нашем случае будет использована команда «04», для чтения 16-битных регистров.

192.168.0.17 — IP-адрес устройства.

38193 — начальный адрес регистра.

4 — смещение относительно начального адреса. Мы читаем четыре регистра для порта 1, как следует из даташита.

Получаем ответ, содержащий значения четырех регистров. Видим, что число пакетов невелико: 0x3459, то есть 13401, — коммутатор был включен недавно.

Недостатки протокола Modbus

Справедливости ради, стоит упомянуть и о недостатках протокола. Так как он разрабатывался более 40 лет назад, когда производительность процессоров была существенно ниже и протоколы разрабатывались без учета защиты данных, он имеет рад минусов:

  • Протокол не предусматривает аутентификацию и шифрование передаваемых данных. Поэтому, при использовании Modbus TCP необходимо использовать дополнительные VPN-тоннели.
  • Slave-устройство не может инициировать передачу данных, поэтому master должен постоянно опрашивать ведомые устройства
  • Slave-устройство не может обнаружить потерю связи с Master. Эта проблема напрямую следует из предыдущей.

Оборудование с поддержкой Modbus

Advantech предлагает широкий спектр промышленного оборудования с поддержкой протокола Modbus для любых задач: автоматизации, управления, сбора и передачи данных.

ADAM-6000 и WISE-4000 — модули удаленного ввода-вывода

Модули серии ADAM-6000 и WISE-4000 позволяют удаленно управлять цифровыми и аналоговыми входами/выходами по протоколу Modbus TCP. Используются для управления периферийными устройствами и сбора данных в режиме slave. Могут работать в паре с программируемым логическим контроллером, или подключаться напрямую к SCADA-серверу.⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

EKI-1200 — Modbus-шлюзы для преобразования интерфейсов


Для преобразования протоколов Modbus RTU/ASCII в Modbus TCP, используются Modbus шлюзы. Устройства серии EKI-1200 имеют на борту до четырех последовательных интерфейсов RS-232/422/485, и два Ethernet-порта. Они позволяют объединить в одну сеть устройства с разными протоколами. Например, подключить slave устройство, поддерживающее только Modbus RTU, по интерфейсу RS-485 к сегменту сети Modbus TCP.

APAX-5000, ADAM-3600, WISE-5000 — контроллеры автоматизации

Контроллеры поддерживают функции Modbus RTU в качестве slave/master и клиента/сервера Modbus TCP.

Примеры применения

Система мониторинга теплиц

Решение Advantech для мониторинга интегрирует устройства TPC-1070H, ADAM-6024, ADAM-6050, ADAM-6060 и программное обеспечение WebAccess в машинном шкафу рядом с сельскохозяйственными угодьями. Соединяясь с различными чувствительными устройствами, модули ADAM-6000 могут в режиме реального времени получать данные об окружающей среде и контролировать переключение оборудования, чтобы гарантировать, что теплица находится в оптимальной среде для роста растений. Благодаря особой функции Advantech — графической логике условий (GCL), пользователи могут определять свои собственные правила логики управления и загружать эти правила в модули ввода / вывода Ethernet ADAM-6000, а затем модули автоматически выполняют логические правила, как автономные модули. контроллер. Еще одна особенность — Peer-to-Peer (P2P) использует наиболее открытую и гибкую сеть Ethernet, чтобы не только упростить процесс внедрения без контроллера, но и сэкономить затраты на аппаратное оборудование.

Все полученные данные затем передаются через Ethernet на компьютер с сенсорной панелью TPC-1070H. Благодаря системе охлаждения без вентилятора и передней панели, соответствующей стандарту IP65, TPC-1070H представляет собой прочную и компактную конструкцию, подходящую для изменяемой операционной среды, а его мощные вычислительные возможности способны обрабатывать большие объемы данных. Для управления устройствами Advantech WebAccess позволяет инженерам или менеджерам просматривать, контролировать и настраивать систему мониторинга через интрасеть или Интернет с помощью обычного веб-браузера с любого устройства, включая планшеты и смартфоны.

Мониторинг системы нагрева воды солнечной энергией

Инжиниринговая компания должна была иметь возможность контролировать количество солнечной энергии, температуры и расход воды в системе нагрева воды на солнечной энергии для бассейна олимпийских размеров, обеспечиваемого их недавно разработанной солнечной панелью. Они также должны были иметь возможность непосредственно отслеживать эти значения и их аварийные сигналы на ЖК-панелях и сохранять эти значения для дальнейшего использования.

Модули Adam от Advantech предоставили заказчику решение, в котором использовались модули сбора данных, подключенные через RS485, и двухпроводная шина для передачи данных со всех датчиков. Эта системная архитектура имеет два основных преимущества: во-первых, она позволяет в любое время добавлять в систему большее количество датчиков модулей сбора данных, и, во-вторых, очень легко добавлять дополнительные метки в программное обеспечение для мониторинга и записи этих значений на ПК.

Источники:

https://future2day. ru/protokol-modbus/

https://temofeev. ru/info/articles/kak-obshchayutsya-mashiny-protokol-modbus/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: