Введение
В системах автоматизации обмен данными между устройствами осуществляется через различные протоколы, которые обеспечивают их взаимодействие и совместную работу. Одним из самых широко используемых протоколов в этой области является Modbus, он применяется в промышленной автоматизации и SCADA-системах.
Сегодня мы разберемся, что такое Modbus, чем отличаются его разновидности, такие как Modbus RTU и Modbus TCP, как происходит обмен данными между устройствами по Modbus и что такое открытый протокол автоматизации.
Основная часть
Для описания взаимодействия и связи между устройствами применяется так называемая модель OSI. Эта модель вводит до семи уровней взаимодействия, начиная с физического и заканчивая уровнем приложения. Протоколом в рамках этой модели называется набор правил, описывающих каждый уровень. Если эти правила являются общедоступными и могут свободно применяться разработчиками устройств, то такой протокол называется открытым.
Ещё раз повторим, открытый протокол означает, что его спецификации опубликованы и могут использоваться любым производителем свободно или по лицензии, что обеспечивает совместимость устройств различных брендов и упрощает их интеграцию в более сложные системы.
Преимущества открытых протоколов:
Широкий выбор оборудования от разных производителей
Доступность информации по применению протокола
Modbus является одним из наиболее распространенных открытых протоколов, используемых для организации связи между устройствами в системах автоматизации..
Что такое Modbus?
Modbus — это один из старейших и наиболее популярных протоколов в сфере автоматизации технологических процессов и для применения в SCADA-системах.
Само название Modbus расшифровывается как "Modicon Bus". Протокол был разработан компанией Modicon в 1979 году для использования с программируемыми логическими контроллерами (ПЛК). Modbus позволяет выстроить взаимодействие между устройствами и оборудованием.
Протокол получился очень понятным и простым в освоении как для разработчиков устройств, так и для инженеров по автоматизации. Именно это, а также открытость стандарта сделало протокол очень популярным.
В основу протокола положена архитектура Master-Slave, то есть ведущий-ведомый. На практике это означает, например, что контроллер может запрашивать информацию с различных датчиков. Другой пример - система диспетчеризации (или SCADA-система) может запросить информацию с контроллеров или отправить им команды.
Разновидности протокола Modbus
Существует несколько вариантов реализации протокола Modbus. Рассмотрим каждый из них:
-
Modbus RTU — RTU означает Remote Terminal Unit, то есть удаленный терминальный блок или по-другому удаленное оконечное устройство. В данном контексте слово "удаленный" означает "дальний". Режим Modbus RTU использует последовательную передачу данных в двоичном формате. Это наиболее часто используемый вариант Modbus, который применяется во многих системах автоматизации и управления процессами.
-
Modbus ASCII (Аскии) — этот режим также использует последовательную передачу данных, но информация здесь кодируется в виде ASCII-символов. Он менее популярен, чем Modbus RTU, используется в тех приложениях, где требуются данные, которые могут быть прочитаны человеком.
-
Modbus TCP — протокол, который используется для того, чтобы подключить Modbus-устройства к Ethernet и Интернету. Он позволяет создавать обширные сети, которые обеспечивают связь между клиентскими и серверными устройствами через Ethernet. Чаще всего используется для интеграции ПЛК в системы диспетчеризации и SCADA с использованием инфраструктуры IP-сетей.
-
Modbus Plus — проприетарный протокол Modicon, многомастерный с кольцевой передачей маркера. Представляет собой одноранговую сеть, где все устройства могут инициировать передачу. Встречается только в контроллерах Schneider Electric.
Физические носители и топология
Передача данных в Modbus реализована несколькими интерфейсами передачи данных:
Физические интерфейсы — последовательные коммуникационные порты
-
RS-232 — обеспечивает полнодуплексную передачу данных (одновременная отправка и прием данных), поддерживает только соединение точка-точка и небольшие расстояния (около 15 м, но фактическая длина сильно зависит от скорости передачи данных). Для передачи данных в базовом варианте используется трёхпроводный кабель, но иногда используется и большее количество проводов.
-
RS-422 — также использует полнодуплексную передачу данных. Поддерживает стабильную связь на больших расстояниях (около 1000 метров, но фактическая длина сильно зависит от скорости передачи данных). Для передачи данных обычно используется кабель с двумя витыми парами
-
RS-485 — обеспечивает полудуплексную передачу данных по дифференциальной многоточечной линии связи. В базовом варианте возможно подключение до 32 устройств к одной линии длиной длиной около одного километра. Реальная длина линии также сильно зависит от скорости передачи данных. Для передачи данных используется кабель с одной витой парой.
В Modbus TCP используются сообщения Modbus RTU в несколько измененном виде, поскольку передаваемые данные будут те же, а вот адресация немного отличается. Для передачи данных Modbus TCP задействует протоколы Ethernet и TCP/IP.
-
Подобное решение позволяет построить систему автоматизации на базе локальных сетей и облегчить интеграцию с системами визуализации и диспетчеризации.
Изначально Modbus был создан для работы по RS-232, но в большинстве современных реализаций применяется RS-485, что позволяет:
-
Передавать данные на большие расстояния по одной витой паре
-
Подключать несколько устройств к одной сети (многоточечное соединение).
На простых интерфейсах, таких как RS-232 или RS-485, Modbus передаёт сообщения в открытой форме, и передача данных происходит только внутри собственной линии связи Modbus. Однако, если в системе используются устройства с поддержкой Modbus TCP, обмен данными может происходить по локальной сети одновременно с передачей данных для других протоколов.
Структура сообщений Modbus
Modbus может работать как в сети "точка-точка", так и в многоточечной сети.
Устройства Modbus общаются, используя модель взаимодействия Master-Slave (или Client-Server для Ethernet), где только одно устройство (Master/Server) может инициировать транзакции (называемые запросами). Другие устройства (Slaves/Clients) отвечают, предоставляя данные или выполняя требуемое действие.
Master может обращаться как к отдельным устройствам типа Slave, так и к широковещательному адресу. Устройства типа Slave не могут самостоятельно инициировать отправку сообщения и отвечают только на запросы от Master.
Сообщения Modbus
Запрос от Master включает:
-
Адрес slave-устройства.
-
Код функции с командой чтения или записи.
-
Данные для записи (если это команда записи).
-
Поле проверки ошибок.
Ответ slave-устройства состоит из:
-
Поля подтверждения получения запроса.
-
Возвращаемых данных.
-
Данных для проверки ошибок.
Если ошибки не произошло, Slave-устройство возвращает данные, такие же какие были в запросе. В случае ошибки, Slave-устройство отправляет сообщение об исключении, в таком случае, данные в ответе будут равны запрашиваемым данным, увеличенным на 128.
Modbus и безопасность
Первоначально Modbus не был разработан с учетом требований по безопасности передачи данных, поэтому существует риск взлома такого канала связи. Для повышения безопасности, при использовании Modbus TCP и передаче сообщений через сети общего доступа, может применяться шифрование, например, так называемый Modbus TLS (Transport Layer Security).
Однако, на практике, в промышленных проектах рекомендуется всегда использовать физически изолированные сети, и не подключать такие системы к интернету.
Интеграция с другими протоколами
Modbus, будучи самодостаточным протоколом, может интегрироваться с другими системами, такими как KNX или BACnet, через шлюзы. Каждый протокол управляет определенными аспектами системы. KNX контролирует локальные, пользовательские функции умного дома, а подчинённые Modbus-устройства могут выполнять управление специализированными инженерными системами, например, вентиляцией и кондиционированием. При этом взаимодействие зависит от специфики проекта и может варьироваться.
Например, для интеграции систем на базе шины KNX в общедомовую систему диспетчеризации также может применяться Modbus. В таком случае система KNX будет выступать в качестве подчиненной, а система диспетчеризации будет отправлять на неё запросы и команды через шлюз Modbus/TCP.
Заключение
Если было полезно - переходите в наши соц сети, там мы также делимся важной информацией из мира автоматизации и умных домов.
Видео на Youtube.
