Протокол ModBus на простейших примерах (Часть 1)

Протокол ModBus на простейших примерах (Часть 1)

Примеры подключения индикатора Овен СМИ2 к разным контроллерам.

logo-modbus

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

В этой статье я хочу рассмотреть практические аспекты конфигурирования и программирования взаимодействия ModBus устройств между собой на простейших примерах. Для этого я выбрал ModBus индикатор СМИ2, Российской компании Овен. Устройство предназначено для индикации аналогового значения получаемого от контроллера. Не буду описывать все возможные сферы его применения, с этой задачей отлично справился сам производитель.

Конфигурация устройства

Давайте для начала разберемся с конфигурированием самого устройства, а потом перейдем к примерам его подключения к различным контроллерам.

Овен СМИ2

Для связи с устройством я использовал двух портовый асинхронный преобразователь Moxa NPort 5230.

2015-01-26 09.58.43

Устройство может предоставлять доступ к последовательным портам как инкапсулируя UART в TCP, так и более привычным способом — эмуляция последовательных портов (port mapping). Я «промапил» RS485 преобразователя на COM4.

2015-01-26 21-28-14 NPort Administrator-COM Mapping

Для конфигурования индикатора служит поставляемая вместе с ним программа «Конфигуратор СМИ2″, ее так же без труда можно найти на сайте производителя. Перед тем как подключаться к СМИ2 необходимо «вогнать» его в режим  «заводские настройки» , для этого предназначена единственная кнопка на устройстве. Нажатие ее в течении трех секунд переключает устройство к заводским настройкам связи, которые также прописаны по умолчанию в утилите конфигурации. Порт естественно необходимо выбрать.

2015-01-26 09-54-24 Настройка параметров порта

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

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

Baseblock ComTest Pro for Modbus Devices

В результате всех проделанных действий имеем следующую таблицу параметров устройства.

Параметры связи:

Speed — 115200
Parity — NON
Data Bits — 8
Stop Bits — 1

Параметры устройства и регистра:

Protocol — ModBus RTU
Slave Address — 20
Register Type — FLOAT
Register Address — 27

CoDeSys v2

Теперь давайте подключим его к контроллеру ПЛК150 фирмы Овен, программируемому из среды  CoDeSys 2.3.9.40 . Будем считать что вы обладаете базовыми навыками работы в среде CoDeSys, поэтому опустим процесс установки target файлов, создания нового проекта и выбора целевой платформы, перейдем сразу к конфигурированию ModBus. Для этого в разделе  «Конфигурация ПЛК»  добавим подэлемент  «Modbus Master»  c интерфейсом  «RS-485″  и зададим его параметры связи в соответствии с параметрами заданными нами при конфигурировании СМИ2.

CoDeSys - PLC150_P1.pro - [Конфигурация ПЛК]

После чего добавим подэлемент  «Universal Modbus device»  где зададим адрес Slave устройства, т.е. нашего СМИ2.

CoDeSys - PLC150_P1.pro - [Конфигурация ПЛК]

После чего добавим переменную типа REAL ( «Real output module» ) где зададим адрес регистра в котором она хранится.

CoDeSys - PLC150_P1.pro - [Конфигурация ПЛК]

Ну и наконец, дадим некоторое осмысленное имя переменной.

CoDeSys - PLC150_P1.pro - [Конфигурация ПЛК]

После этого к данной переменной уже можно обращаться из программы. Вроде ничего сложного, но представьте что Slave устройство имеет не один регистр, как в данном примере а, например, пятьдесят. При этом сорок из них доступны только на чтение, а десять на чтение и запись. Каждый регистр надо явно объявить, верно указать его размерность, адрес и так далее.

Honeywell Care

Еще один пример, как реализована работа с ModBus устройствами в среде программирования  Honeywell Care 10.03 .

Создадим новый проект и в нем новый контроллер, в данном примере я буду использовать контроллер серии Excel Web 2 — XL2026B2A. При создании контроллера в проекте сразу можно задать какие протоколы будут использоваться его интерфейсами. Я «повесил» ModBus на первый порт RS485.

New Controller

Сразу же сконфигурируем параметры связи интерфейса.

Honeywell CARE - BACnet 10.03 - [XLWeb2_SMI2]

После этого откроем  «Device Library»  и создадим новое устройство.

Скриншот экрана

В новом устройстве создаем  «Holding Register»  типа Float с нужным адресом, именем и разрешением на запись.

2015-01-26 21-03-26 Modbus Template Editor

После чего просто «перетащим» устройство на наш канал связи.

Скриншот экрана

Зададим адрес устройства.

2015-01-08 17-12-25 Honeywell CARE - BACnet 10.03 - [XLWeb2_SMI2]

Создадим «точку» — переменную типа «аналоговый выход» и «перетащим» ее на нужный вход устройства.

2015-01-08 17-12-45 Honeywell CARE - BACnet 10.03 - [XLWeb2_SMI2]

Отредактируем «точку» — напишем описание и зададим единицы измерения.

2015-01-08 17-13-35 Honeywell CARE - BACnet 10.03 - [XLWeb2_SMI2]

Для этого примера я вывел на индикатор значение температуры измеряемое датчиком подключенным к первому универсальному входу.

2015-01-26 18-35-01 XwOnline - [A1 [172.16.2.208] - SystemAdmin]

SMI2_ExcelWeb2

Как по мне так наиболее логичное решение поставленной задачи. Может быть это связано с тем что работа с устройствами в данной среде изначально была построена через библиотеку устройств, причем подход унифицирован как для ModBus, так и для BACNet (есть импорт из EDE), LonWorks (есть импорт из XIF или онлайн из самого устройства) и M-Bus — все через библиотеку. К тому же один раз создав или импортировав устройство в библиотеку вы можете использовать его неоднократно, без необходимости каждый раз заново описывать в новом проекте.

В продолжении статьи я расскажу как сделать то же самое, но в CoDeSys v3 на контроллере Овен Модус 5684-0 и в SMLogix — среде программирования российских контроллеров Segnetics на примере контроллера Pixel.

comments powered by HyperComments

ПОХОЖИЕ ЗАПИСИ

paydaycgtloansnhj.com
2017-07-06 11:44:25
<strong>paydaycgtloansnhj.com</strong> paydaycgtloansnhj.com