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

Содержание

Коды ошибок modbus rtu

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

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

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

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

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

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

Типы данных ModBu

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

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

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

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

Modbus

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modscan

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

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

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

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

Может потребоваться дополнительная аппаратура, инструмент 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 RS-485 с Arduino (ведомой)

Протокол Modbus – самый распространенный промышленный протокол для межмашинного (M2M) взаимодействия. Является стандартом де-факто и поддерживается почти всеми производителями промышленного оборудования. В этой статье мы рассмотрим последовательную связь по протоколу Modbus RS-485 используя плату Arduino Uno в качестве ведомого устройства (Slave).

Внешний вид проекта последовательной связи по протоколу Modbus RS-485 с ведомой Arduino

Что такое Modbus

Modbus RS-485 использует линию последовательной связи RS-485 для передачи данных. Modbus является программным (не аппаратным) протоколом и состоит из двух частей: Modbus Master (ведущий) и Modbus Slave (ведомый). В сети Modbus RS-485 может быть один ведущий и 127 ведомых устройств, каждое из которых имеет уникальный адрес от 1 до 127.

Какая разница между протоколами Modbus ASCII и Modbus RTU? По сути, это практически одинаковые протоколы. Только в протоколе Modbus RTU данные передаются последовательно в двоичном коде, а в Modbus ASCII – в ASCII кодах. В этом проекте мы будем использовать Modbus RTU.

В данной статье мы будем использовать последовательную связь по протоколу Modbus RS-485 используя плату Arduino Uno в качестве ведомого устройства (Slave). Мы установим программное обеспечение Simply Modbus Master Software на компьютер и будем управлять двумя светодиодами и сервомотором, подключенными к ведомой плате Arduino. Управлять ими мы будем при помощи передачи специальных значений от Master Modbus Software.

Принципы работы интерфейса последовательной связи RS-485

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

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

В нашем случае дифференциальный сигнал образуется при помощи использования положительного и отрицательного напряжения 5V. Интерфейс RS-485 обеспечивает полудуплексную связь (Half-Duplex) при использовании 2-х линий (проводов) и полноценную дуплексную связь (Full-Duplex) при использовании 4-х линий (проводов).

Основные особенности данного интерфейса:

Использование интерфейса RS-485 в Arduino

Для использования интерфейса RS-485 в плате Arduino мы будем использовать модуль 5V MAX485 TTL to RS485, в основе которого лежит микросхема Maxim MAX485. Модуль является двунаправленным и обеспечивает последовательную связь на расстояние до 1200 метров. В полудуплексном режиме он обеспечивает скорость передачи данных 2,5 Мбит/с.

Модуль 5V MAX485 TTL to RS485 использует питающее напряжение 5V и логический уровень напряжения также 5V, что позволяет без проблем подключать его к платам Arduino.

Данный модуль имеет следующие особенности:

Внешний вид модуля RS-485 показан на следующем рисунке.

Внешний вид модуля RS-485

Назначение контактов (распиновка) модуля RS-485 приведена в следующей таблице.

Название контакта Назначение контакта
VCC 5V
A вход/выход линии RS-485
B вход/выход линии RS-485
GND GND (0V)
R0 выход приемника (RX pin)
RE разрешение работы приемника
DE разрешение работы передатчика
DI вход передатчика (TX pin)

Модуль преобразования USB в RS-485

Внешний вид модуля преобразования USB в RS-485

На представленном рисунке показан внешний вид адаптера (модуля преобразования) USB в RS-485. Он способен работать в различных операционных системах и обеспечивает интерфейс RS-485 при помощи использования одного из COM портов компьютера. Этот модуль является устройством plug-and-play. Все, что передается через виртуальный COM порт, автоматически преобразуется данным модулем в RS-485, и наоборот. Модуль питается от порта USB – никакого дополнительного питания не требуется.

В компьютере он виден как последовательный/ COM порт и доступен для использования различными приложениями. Модуль обеспечивает полудуплексную связь с помощью интерфейса RS-485. Скорость передачи – от 75 до 115200 бод/с, максимальная – до 6 Мбит/с.

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

Программное обеспечение Modbus Master

Программу Modbus Master Software мы будем использовать для передачи данных ведомой плате Arduino с помощью интерфейса RS-485.

Вы можете скачать программу Simply Modbus Master по следующей ссылке. Документацию по этой программе (на английском языке) можно прочитать здесь.

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

Slave ID (идентификатор ведомого)

Аппаратное обеспечение

Схема для последовательной связи по протоколу Modbus RS-485 с платой Arduino представлена на следующем рисунке.

Схема для последовательной связи по протоколу Modbus RS-485 с платой Arduino

В следующей таблице представлены необходимые соединения между платой Arduino Uno (ведомой) и модулем MAX485 TTL to RS485.

Arduino Uno Модуль MAX485 TTL to RS485
0(RX) RO
1(TX) DI
4 DE & RE
+5V VCC
GND GND

В следующей таблице представлены необходимые соединения между модулями MAX485 TTL to RS485 и USB to RS-485.

MAX485 TTL to RS485 USB to RS-485
A A
B B

В следующей таблице представлены необходимые соединения между платой Arduino Uno и ЖК дисплеем 16х2.

ЖК дисплей 16х2 Плата Arduino Uno
VSS GND
VDD +5V
V0 к потенциометру для управления яркостью/контрастностью дисплея
RS 8
RW GND
E 9
D4 10
D5 11
D6 12
D7 13
A +5V
K GND

В следующей таблице представлены необходимые соединения между платой Arduino Uno, светодиодами и сервомотором.

Arduino Uno 1-й светодиод 2-й светодиод сервомотор
2 Anode через 1k resistor
5 Anode через 1k resistor
6 PWM pin (Orange)
+5V +5V (RED)
GND Cathode GND Cathode GND GND (Brown)

Со схемой разобрались, можно переходить к написанию программы.

Объяснение программы Arduino для связи по протоколу Modbus RS-485

В нашем проекте плата Arduino Uno используется в качестве ведомого устройства (Slave) протокола Modbus. К плате Arduino Uno подключены два светодиода и сервомотор. Ведомая плата Arduino Uno управляется программным обеспечением Master Modbus. Связь между Master Modbus и платой Arduino Uno осуществляется с помощью модулей RS-485. Для подключения к компьютеру используется модуль преобразования USB в RS-485, а для подключения к плате Arduino Uno используется модуль преобразования MAX-485 TTL to RS-485. Собранная конструкция проекта выглядит следующим образом:

Собранная конструкция проекта

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Источники:

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

https://microkontroller. ru/arduino-projects/posledovatelnaya-svyaz-po-protokolu-modbus-rs-485-s-vedomoj-arduino/

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

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