Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Modbus - это протокол передачи данных, первоначально опубликованный компанией Modicon (ныне Schneider Electric ) в 1979 году для использования с ее программируемыми логическими контроллерами (ПЛК). Modbus стал де-факто стандартным протоколом связи и теперь является общедоступным средством подключения промышленных электронных устройств. [1]

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

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

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

Modbus часто используется для соединения управляющего компьютера установки / системы с удаленным терминалом (RTU) в системах диспетчерского управления и сбора данных ( SCADA ) в электроэнергетике. Многие типы данных названы в честь промышленного управления заводскими устройствами, например, лестничной логики, из-за ее использования в управляющих реле: один физический выход называется катушкой , а отдельный физический вход называется дискретным входом или контактом .

Разработкой и обновлением протоколов Modbus управляет организация Modbus [2] с апреля 2004 года, когда Schneider Electric передала права этой организации. [3] Организация Modbus - это ассоциация пользователей и поставщиков устройств, совместимых с Modbus, которая выступает за продолжение использования этой технологии. [4]

Ограничения [ править ]

  • Поскольку Modbus был разработан в конце 1970-х годов для связи с программируемыми логическими контроллерами, количество типов данных ограничено теми, которые понимаются ПЛК в то время. Большие двоичные объекты не поддерживаются.
  • Не существует стандартного способа для узла найти описание объекта данных, например, чтобы определить, представляет ли значение регистра температуру от 30 до 175 градусов.
  • Поскольку Modbus является протоколом ведущий / ведомый, у полевого устройства нет способа «сообщить об исключении» (кроме протокола Ethernet TCP / IP, называемого open-mbus) - главный узел должен регулярно опрашивать каждое полевое устройство и искать изменения. в данных. Это потребляет полосу пропускания и время сети в приложениях, где полоса пропускания может быть дорогой, например, по радиоканалу с низкой скоростью передачи данных.
  • Modbus ограничен адресацией 247 устройств на одном канале данных, что ограничивает количество полевых устройств, которые могут быть подключены к родительской станции (опять же, Ethernet TCP / IP является исключением).
  • Передачи Modbus должны быть непрерывными, что ограничивает типы удаленных устройств связи теми, которые могут буферизовать данные, чтобы избежать перерывов в передаче. [ требуется разъяснение ]
  • Сам протокол Modbus не обеспечивает защиты от несанкционированных команд или перехвата данных. [5]

Типы объектов Modbus [ править ]

Ниже приводится таблица типов объектов, предоставляемых ведомым устройством Modbus ведущему устройству Modbus:

Версии протокола [ править ]

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

  • Modbus RTU (Remote Terminal Unit) - используется в последовательной связи и использует компактное двоичное представление данных для связи по протоколу. Формат RTU следует за командами / данными с контрольной суммой циклического контроля избыточности в качестве механизма проверки ошибок для обеспечения надежности данных. Modbus RTU - наиболее распространенная реализация, доступная для Modbus. Сообщение Modbus RTU должно передаваться непрерывно без межсимвольных колебаний. Сообщения Modbus разделены периодами ожидания (молчания).
  • Modbus ASCII - используется в последовательной связи и использует символы ASCII для связи по протоколу. Формат ASCII использует контрольную сумму продольного избыточного кода . Сообщения Modbus ASCII выделяются начальным двоеточием (":") и завершающей новой строкой (CR / LF).
  • Modbus TCP / IP или Modbus TCP - это вариант Modbus, используемый для связи по сетям TCP / IP с подключением через порт 502. [6] Он не требует вычисления контрольной суммы, поскольку нижние уровни уже обеспечивают защиту контрольной суммы.
  • Modbus через TCP / IP или Modbus через TCP или Modbus RTU / IP - это вариант Modbus, который отличается от Modbus TCP тем, что контрольная сумма включена в полезную нагрузку, как и в случае Modbus RTU.
  • Modbus через UDP. Некоторые экспериментировали с использованием Modbus через UDP в IP-сетях, что устраняет накладные расходы, необходимые для TCP . [7]
  • Modbus Plus (Modbus +, MB + или MBP) - Modbus Plus является собственностью Schneider Electric и, в отличие от других вариантов, поддерживает одноранговую связь между несколькими ведущими устройствами. [8] Требуется специальный сопроцессор для обработки быстрой смены токенов, подобной HDLC . Он использует витую пару на скорости 1 Мбит / с и включает изоляцию трансформатора на каждом узле, что делает его запускаемым переходом / фронтом вместо запуска по напряжению / уровню. Для подключения Modbus Plus к компьютеру требуется специальное оборудование, обычно это карта, предназначенная для шины ISA , PCI или PCMCIA .
  • Pemex Modbus - это расширение стандартного Modbus с поддержкой исторических данных и данных потока. Он был разработан для нефтегазовой компании Pemex для использования в управлении технологическими процессами и так и не получил широкого распространения.
  • Enron Modbus - это еще одно расширение стандарта Modbus, разработанное Enron Corporation с поддержкой 32-битных целочисленных переменных и переменных с плавающей запятой, а также исторических данных и данных потока. Типы данных отображаются с использованием стандартных адресов. [9] Исторические данные служат для соответствия отраслевому стандарту Американского института нефти (API) в отношении того, как данные должны храниться. [ необходима цитата ]

Модель данных и вызовы функций идентичны для первых 4 вариантов протоколов; только инкапсуляция отличается. Однако ни варианты, ни форматы кадров не совместимы.

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

Каждому устройству, связывающемуся (т. Е. Передающему данные) по Modbus, дается уникальный адрес.

В Modbus RTU, Modbus ASCII и Modbus Plus (все они представляют собой однокабельные многоточечные сети RS-485) только узел, назначенный в качестве ведущего, может инициировать команду. Все остальные устройства являются подчиненными и отвечают на запросы и команды.

Для протоколов, использующих Ethernet, таких как Modbus TCP, любое устройство может отправлять команду Modbus, поэтому все могут действовать как ведущие, хотя обычно только одно устройство действует как ведущее.

Существует множество модемов и шлюзов, поддерживающих Modbus, поскольку это очень простой и часто копируемый протокол. Некоторые из них были специально разработаны для этого протокола. Различные реализации используют проводную, беспроводную связь, например, в диапазоне ISM , и даже службу коротких сообщений (SMS) или службу пакетной радиосвязи общего назначения (GPRS). В одном из наиболее распространенных проектов беспроводных сетей используется ячеистая сеть . Типичные проблемы, которые приходится преодолевать дизайнерам, включают большие задержки и проблемы с синхронизацией.

Команды [ править ]

Команды Modbus могут указывать устройству Modbus:

  • изменить значение в одном из его регистров, которое записывается в регистры Coil и Holding.
  • чтение порта ввода / вывода: чтение данных с дискретного и катушечного портов,
  • дать команду устройству отправить обратно одно или несколько значений, содержащихся в его регистрах катушки и хранения.

Команда Modbus содержит адрес Modbus устройства, для которого она предназначена (от 1 до 247). Только адресуемое устройство будет отвечать и действовать по команде, даже если другие устройства могут ее получить (исключение составляют специальные широковещательные команды, отправленные на узел 0, которые выполняются, но не подтверждаются).

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

Форматы кадров [ править ]

«Фрейм» Modbus состоит из блока данных приложения (ADU), который инкапсулирует блок данных протокола (PDU): [6]

  • ADU = адрес + PDU + проверка ошибок,
  • PDU = Код функции + Данные.

Порядок байтов для значений в кадрах данных Modbus: старший байт многобайтового значения отправляется раньше остальных. Все варианты Modbus используют один из следующих форматов кадра. [1]

Формат кадра Modbus RTU (в основном используется на линиях асинхронных последовательных данных, таких как RS-485 / EIA-485 ) [ править ]

Примечание о CRC :

  • Многочлен: x 16 + x 15 + x 2 + 1 (CRC-16-ANSI, также известный как CRC-16-IBM, нормальный шестнадцатеричный алгебраический многочлен является 8005обратным A001).
  • Начальное значение: 65 535.
  • Пример кадра в шестнадцатеричном формате: 01 04 02 FF FF B8 80(вычисление CRC-16-ANSI от 01до FFдает 80B8, что первым передается младший байт ).

Формат кадра Modbus ASCII (в основном используется в 7- или 8-битных асинхронных последовательных линиях) [ править ]

Адрес, функция, данные и LRC - все это пары символов в шестнадцатеричной системе с заглавными буквами, представляющие 8-битные значения (0–255). Например, 122 (7 × 16 + 10) будет представлен как 7A.

LRC вычисляется как сумма 8-битных значений (исключая начальный и конечный символы), инвертированных ( дополнение до двух ) и закодированных как 8-битное значение. Пример: если адрес, функция и данные кодируются как 247, 3, 19, 137, 0 и 10, их сумма равна 416. Дополнение до двух (-416), обрезанное до 8 бит, составляет 96 (например, 256 × 2 - 416), который будет представлен 60в шестнадцатеричном формате. Поэтому следующий кадр: :F7031389000A60<CR><LF>. Он указан для использования только в качестве контрольной суммы: поскольку он находится внутри символов кадрирования, его характеристика «Продольный» является избыточной.

Формат кадра Modbus TCP (в основном используется в сетях Ethernet ) [ править ]

Идентификатор устройства используется с устройствами Modbus / TCP, которые являются составными частями нескольких устройств Modbus, например, на шлюзах Modbus / TCP в Modbus RTU. В таком случае идентификатор устройства сообщает адрес ведомого устройства за шлюзом. Устройства с поддержкой Modbus / TCP обычно игнорируют идентификатор устройства.

Доступные коды функций / команд [ править ]

Различные операции чтения, записи и другие делятся на следующие категории. [10] Наиболее примитивные операции чтения и записи выделены жирным шрифтом. В ряде источников используется альтернативная терминология, например Force Single Coil, где стандарт использует Write Single Coil . [11]
Важными объектами в подчиненном устройстве Modbus являются:

  • Катушки: читаемые и записываемые, 1 бит (выкл. / Вкл.)
  • Дискретные входы: читаемые, 1 бит (выкл. / Вкл.)
  • Входные регистры: читаемые, 16 бит (от 0 до 65 535), в основном измерения и состояния
  • Регистры хранения: читаемые и записываемые, 16 бит (от 0 до 65 535), в основном значения конфигурации

Формат данных запросов и ответов для основных кодов функций [ править ]

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

Код функции 1 (чтение катушек) и код функции 2 (чтение дискретных входов) [ редактировать ]

Запрос :

  • Адрес первой катушки / дискретного входа для чтения (16 бит)
  • Количество катушек / дискретных входов для чтения (16 бит)

Нормальный ответ :

  • Число последующих байтов значений катушки / дискретного входа (8 бит)
  • Значения катушек / дискретных входов (8 катушек / дискретных входов на байт)

Значение каждой катушки / дискретного входа является двоичным (0 для выключения, 1 для включения). Первая запрошенная катушка / дискретный вход сохраняется как младший бит первого байта в ответе.
Если количество катушек / дискретных входов не кратно 8, старший бит (ы) последнего байта будет заполнен нулями.
Например, если запрашиваются одиннадцать катушек, необходимы два байта значений. Предположим, что состояния этих последовательных катушек включены , выключены, включены , выключены, выключены, включены , включены , включены , выключены, включены , включены , тогда ответ будет 02 E5 06в шестнадцатеричном формате.

Поскольку счетчик байтов, возвращаемый в ответном сообщении, имеет ширину всего 8 бит, а служебные данные протокола составляют 5 байтов, максимум 2008 (251 x 8) дискретных входов или катушек могут быть прочитаны одновременно.

Код функции 5 (сила / запись одиночной катушки) [ редактировать ]

Запрос :

  • Адрес катушки (16 бит)
  • Значение для принудительной / записи: 0 для выключения и 65 280 (FF00 в шестнадцатеричном формате) для включения

Нормальный ответ : такой же, как запрос.

Код функции 15 (сила / запись нескольких катушек) [ править ]

Запрос :

  • Адрес первой катушки для принудительной / записи (16 бит)
  • Количество катушек для принудительной / записи (16 бит)
  • Количество следующих байтов значений катушки (8 бит)
  • Значения катушки (8 значений катушки на байт)

Значение каждой катушки двоичное (0 для выключения, 1 для включения). Первая запрошенная катушка сохраняется как младший бит первого байта запроса.
Если количество витков не кратно 8, старший бит (ы) последнего байта должен быть заполнен нулями. См. Пример для кодов функций 1 и 2.

Нормальный ответ :

  • Адрес первой катушки (16 бит)
  • количество катушек (16 бит)

Код функции 4 (чтение регистров ввода) и код функции 3 (чтение регистров хранения) [ редактировать ]

Запрос :

  • Адрес первого регистра для чтения (16 бит)
  • Количество регистров для чтения (16 бит)

Нормальный ответ :

  • Количество следующих байтов значений регистра (8 бит)
  • Значения регистров (16 бит на регистр)

Поскольку максимальная длина Modbus PDU составляет 253 (выводится из максимальной длины Modbus APU 256 на RS485), одновременно можно запросить только до 125 регистров. [10]

Код функции 6 (предварительная установка / запись одного регистра временного хранения) [ редактировать ]

Запрос :

  • Адрес регистра временного хранения для предварительной установки / записи (16 бит)
  • Новое значение регистра временного хранения (16 бит)

Нормальный ответ : такой же, как запрос.

Код функции 16 (предварительная установка / запись нескольких регистров хранения) [ редактировать ]

Запрос :

  • Адрес первого регистра временного хранения для предварительной установки / записи (16 бит)
  • Количество регистров хранения для предварительной установки / записи (16 бит)
  • Количество следующих байтов значений регистра (8 бит)
  • Новые значения регистров хранения (16 бит на регистр)

Поскольку значения регистров имеют ширину 2 байта и могут быть отправлены только 127 байтов значений, только 63 регистра хранения могут быть предварительно установлены / записаны одновременно.

Нормальный ответ :

  • Адрес первого предустановленного / записанного регистра временного хранения (16 бит)
  • Количество предустановленных / записанных регистров хранения (16 бит)

Исключительные ответы [ править ]

Для нормального ответа ведомое устройство повторяет код функции. Если ведомое устройство хочет сообщить об ошибке, оно ответит с запрошенным кодом функции плюс 128 (шестнадцатеричное 0x80) (3 становится 131 = шестнадцатеричное 0x83) и будет включать только один байт данных, известный как код исключения .

Основные коды исключений Modbus [ править ]

Катушка, дискретный вход, входной регистр, номера и адреса регистров временного хранения [ править ]

Некоторые соглашения определяют порядок ссылок на объекты Modbus (катушки, дискретные входы, входные регистры, регистры временного хранения).

Важно различать номер объекта и адрес объекта :

  • Номера объектов объединяют тип объекта и местоположение объекта в своей таблице описания.
  • Адрес объекта - это начальный адрес, 16-битное значение в части данных кадра Modbus. Таким образом, его диапазон составляет от 0 до 65 535.

В традиционном стандарте [ править ] , объектные номера начинаются с одной цифрой , представляющей тип объекта, за которым следуют четыре цифры , представляющие местоположение лица:

  • номера катушек начинаются с 0 и варьируются от 0 0001 до 0 9999,
  • номера дискретных входов начинаются с 1 и охватывают диапазон от 1 0001 до 1 9999,
  • номера входных регистров начинаются с 3 и варьируются от 3 0001 до 3 9999,
  • Номера регистров временного хранения начинаются с 4 и варьируются от 4 0001 до 4 9999.

Для передачи данных местоположение объекта (от 1 до 9 999) преобразуется в адрес объекта на основе 0 (от 0 до 9 998) путем вычитания 1. Например, для чтения регистров хранения, начиная с номера 40001, кадр данных будет содержать функцию код 3 (как показано выше) и адрес 0. Для регистров хранения, начинающихся с номера 40100, адрес будет 99. И т. д.

Это ограничивает количество адресов до 9999 для каждого объекта. Де - факто реферирование расширяет это до максимума 65,536. [12] Он просто состоит из добавления одной цифры к предыдущему списку:

  • Номера катушек от 0 00001 до 0 65536,
  • номера дискретных входов варьируются от 1 00001 до 1 65536,
  • номера входных регистров варьируются от 3 00001 до 3 65536,
  • Номера регистров временного хранения варьируются от 4 00001 до 4 65536.

При использовании расширенных ссылок все ссылки на номера должны состоять ровно из 6 цифр. Это позволяет избежать путаницы между катушками и другими объектами. Например, чтобы узнать разницу между регистром хранения № 40001 и обмоткой № 40001, если обмотка № 40001 является целью, она должна отображаться как № 040001.

Сопоставление JBUS [ править ]

Другой протокол де-факто , тесно связанный с Modbus, появился после него и был определен брендом PLC April Automates, результатом совместных усилий французских компаний Renault Automation и Merlin Gerin et Cie в 1985 году: JBUS . Различия между Modbus и JBUS в то время (количество объектов, подчиненных станций) теперь не имеют значения, поскольку этот протокол почти исчез с апрельской серией ПЛК, которую AEG Schneider Automation купила в 1994 году, а затем сделала устаревшей. Однако название JBUS в какой-то степени сохранилось.

JBUS поддерживает коды функций 1, 2, 3, 4, 5, 6, 15 и 16 и, следовательно, все объекты, описанные выше. Однако нумерация JBUS отличается:

  • Номер и адрес совпадают: объект № x имеет адрес x во фрейме данных.
  • Следовательно, номер объекта не включает тип объекта. Например, регистр временного хранения № 40010 в Modbus будет регистром временного хранения № 9, расположенным по адресу 9 в JBUS.
  • Число 0 (и, следовательно, адрес 0) не поддерживается. Slave не должен реализовывать какие-либо реальные данные по этому номеру и адресу, и он может возвращать нулевое значение или выдавать ошибку по запросу.

Реализации [ править ]

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

  • Типы данных
    • Число с плавающей запятой IEEE
    • 32-битное целое число
    • 8-битные данные
    • Смешанные типы данных
    • Битовые поля в целых числах
    • Множители для изменения данных в / из целого числа. 10, 100, 1000, 256 ...
  • Расширения протокола
    • 16-битные адреса ведомых устройств
    • 32-битный размер данных (1 адрес = 32 бита возвращаемых данных)
    • Данные с заменой слов

Торговая группа [ править ]

Modbus Organization, Inc. - торговая ассоциация, занимающаяся продвижением и развитием протокола Modbus. [2]

Modbus Plus [ править ]

Несмотря на название, Modbus Plus [13] не является вариантом Modbus. Это другой протокол , связанный с передачей токенов .

Это запатентованная спецификация Schneider Electric, хотя она не была опубликована, а не запатентована. Обычно это реализуется с использованием специального набора микросхем, доступного только партнерам Schneider.

См. Также [ править ]

  • CAN шина

Ссылки [ править ]

  1. ^ a b Друри, Билл (2009). Руководство по методам управления приводами и средствами управления (PDF) (2-е изд.). Институт инженерии и технологий . С. 508–.
  2. ^ a b «Домашняя страница Modbus» . Modbus . Modbus Организация, Inc . Проверено 2 августа 2013 года .
  3. ^ "Часто задаваемые вопросы по Modbus" . Modbus . Modbus Организация, Inc . Проверено 1 ноября 2012 года .
  4. ^ «Об организации Modbus» . Modbus . Modbus Организация, Inc . Проверено 8 ноября 2012 года .
  5. ^ Палмер; Шеной, Суджит, ред. (23–25 марта 2009 г.). Защита критически важной инфраструктуры III . Третья РГ ИФИП 11. 10 Международная конференция. Ганновер, Нью-Гэмпшир: Спрингер. п. 87. ISBN 3-642-04797-1.
  6. ^ a b Modbus Messaging on TCP / IP. Руководство по реализации V1.0b (PDF) , Modbus Organization, Inc., 24 октября 2006 г. , получено 07.01.2017
  7. ^ «Библиотека Java Modbus - О программе» . 2010 . Проверено 7 февраля 2017 .
  8. ^ "В чем разница между Modbus и Modbus Plus?" . Schneider Electric . Проверено 7 февраля 2017 .
  9. ^ «Просто Modbus - О Enron Modbus» . Просто Modbus . Проверено 7 февраля 2017 .
  10. ^ a b «Протокол приложения Modbus V1.1b3» (PDF) . Modbus . Modbus Организация, Inc . Проверено 2 августа 2013 года .
  11. ^ Кларк, Гордон; Рейндерс, Деон (2004). Практические современные протоколы Scada: Dnp3, 60870.5 и родственные системы . Newnes. С. 47–51. ISBN 0-7506-5799-5.
  12. ^ «Modbus 101 - Введение в Modbus» . Control Solutions, Inc.
  13. ^ «Modbus Plus - Сеть Modbus Plus - Обзор продуктов - Schneider Electric, США» . Schneider-electric.com . Проверено 3 января 2014 .

Внешние ссылки [ править ]

Технические характеристики
  • Организация Modbus со спецификациями протокола
  • Modbus по последовательной линии V1
  • Протокол Modbus ; Модикон; 74 страницы; 2000 г.
Другой
  • Бесплатное руководство по Modbus для выездного специалиста
  • Руководство по протоколу Modbus для начинающих RF Wireless World