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

Протокол Modbus

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

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

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

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

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

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

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

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

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

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

Основных функций у протокола несколько:

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

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

Типы данных ModBu

Существует несколько видов данных, которые способны передавать устройства в рамках команды от Master. Для чтения используются функции под кодовыми обозначениями 1–4. Чтобы разобраться, как происходит запрос и получение ответа, необходима эта таблица с типами информации:

Discrete Inputs

1 бит

доступно чтение

Coil

1 бит

разрешены чтение, запись

Input Register

1 бит

доступно чтение

Holding Registers

1 бит

разрешены чтение, запись

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

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

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

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

Modbus

Стандартно он состоит из нескольких компонентов:

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

В системе три вида функции:

  • стандартные, в том числе те, которые уже давно не используются, а хранятся в протоколе;
  • пользовательские, которые оператор настраивает вручную для выполнения локальных, частных задач;
  • зарезервированные, реализованные в разных устройствах производителями аппаратуры.
Так как протокол ModBus бывает двух видов, структура обмена данными может отличаться в системах RTU и TCP. В разновидности RTU подробнее задается функция.

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

В системе обмен информацией между Master и Slaves происходит через регистры. Стоит еще раз остановиться на из видах:

  • Регистры флагов необходимы для хранения однобитных значений. Используются только для обозначения текущего состояния выхода. В системе английских обозначений этому регистру приписано название 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 происходит обмен данными, случаются ошибки:

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

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

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

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

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

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

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

Эту разновидность протокола считают нестандартным Modbus. Он работает поверх TCP/IP стека, поэтому и появляется главное отличие протокола от RTU.

В отличие от 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) имеет ряд преимуществ и недостатков. Операторы выбирают этот протокол благодаря следующим достоинствам:

Легкость в реализации. Требуется пара дней для развертывания. Для сравнения — иным протоколам нужны месяцы.
Открытый исходный код. Есть возможность включить протокол в промышленное оборудование любых поставщиков.
Отсутствие необходимости в дополнительных микросхемах. Конкуренты-аналоги Profibus и CAN требуют для своей реализации заказные микросхемы, что замедляет начало работы.
Легкая диагностика и настройка.
Поддержка большинством промышленных устройств и оборудования.
Надежная, достоверная передача данных.

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

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

Главный недостаток системы — подключение только одного устройства на позицию «ведущего» (в ModBus обозначается как Master).

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

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

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

Второй недостаток связан с «возрастом» протокола.

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

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

Еще один недостаток, уже не столь существенный — протокол пока несовершенен, поэтому в процессе обмена данными возникают логические ошибки.
future2day.ru