Реализация MODBUS RTU сервера с помощью интерфейсного модуля Fastwel и программного обеспечения CoDeSys

от автора

В данной статье рассмотрена интеграция программируемого логического контроллера CPM713 компании Fastwel, работающего на базе протокола MODBUS TCP, с панелью оператора Weintek, поддерживающей последовательный вариант протокола MODBUS RTU/ASCII, с помощью интерфейсного модуля NIM742 и готовой библиотеки адаптированной среды CoDeSys для Fastwel.

Промышленные протоколы на базе сетей Ethernet приобретают все большую популярность. Использование данной технологии в промышленных системах имеет преимущества, например, возможность гибкой модернизации и масштабирования системы, простоту построения архитектуры и невысокую стоимость создания сетей [1]. Однако внедрение новых технологий в область АСУ ТП происходит достаточно медленно, поэтому до сих пор многими устройствами используются традиционные промышленные сети на базе последовательных шин.

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

Так, контроллер CPM713 компании Fastwel использует для передачи данных протокол MODBUS TCP на базе сетей Ethernet [2]. При работе с данным контроллером возникла задача передавать и получать данные с панели оператора MT6100i компании Weintek, поддерживающей последовательный протокол MODBUS RTU/ASCII (рис. 1).


Рисунок 1. Интеграция контроллера Fastwel I/O с операторской панелью Weintek

Использование бесшовной интеграции всегда является более приоритетным, чем использование сторонних шлюзов. Поэтому для решения данной задачи был взят интерфейсный модуль NIM742 компании Fastwel, позволяющий подключать устройства с интерфейсом RS-232C и работать с ними через пользовательскую программу контроллера CPM713.

Модуль NIM742 совместно с пользовательской программой контроллера CPM713 реализует работу подчиненного узла Modbus RTU. NIM742 подключается в общую линейку модулей и по шине FBUS обменивается данными с контроллером CPM713 (рис.2). Для обеспечения работы NIM742 с протоколом MODBUS RTU используется библиотека CoDeSys FastwelModbusServer.lib, входящая в пакет адаптации Fastwel.


Рисунок 2. Контроллер CPM713 с подключенными модулями

Подключение устройств

Для конфигурирования и программирования контроллера CPM713 и интерфейсного модуля NIM742 использовались следующие компоненты и аксессуары:

• кабель для конфигурирования ACS00019, входящий в комплект поставки контроллера,
• бесплатный программный пакет CoDeSys фирмы 3S Smart Software Solutions с адаптационным пакетом Fastwel CoDeSys Adaptation для работы с Fastwel.

Для работы с панелью оператора Weintek MT6100i понадобились:

• соединительные кабели для конфигурирования, которые также входят в комплект поставки,
• бесплатное программное обеспечение для конфигурирования EasyBuilder 8000.

Подключение интерфейсного модуля к панели оператора осуществляется с помощью соединительного кабеля. Данный кабель можно изготовить самостоятельно, используя информацию о назначении контактов, представленную в руководстве по эксплуатации панели Weintek (рис. 3). Для связи с модулем NIM742 использовался порт COM3 [RS-232] операторской панели, использующий трех контактное подключение для передачи данных: TxD (передача), RxD (прием) и GND (земля).


Рисунок 3. Назначение контактов панели Weintek 6100i разъема female SUB-D COM3[RS-232]

На рисунке 4 изображена схема подключения контактов модуля NIM742 к порту COM3 панели оператора [3, 4]. При подключении необходимо иметь в виду, что контакт передачи данных TxD интерфейсного модуля должен подключаться к контакту приема данных RxD панели оператора, а контакт RxD соответственно к TxD панели.


Рисунок 4. Подключение модуля NIM742 к порту COM3 панели оператора.

Таким образом, для осуществления связи между панелью оператора и модулем NIM742 необходимо подключить контакты TxD и RxD с 8-м и 7-м контактами SUB-D разъема, а землю модуля соединить с 5-м контактом (рис. 5).


Рисунок 5. Схема подключения NIM742 и панели оператора Weintek MT6100i.

Настройка панели оператора

Экранная форма панели оператора создается и конфигурируется с помощью бесплатного программного обеспечения EasyBuilder8000. При создании нового проекта необходимо указать модель используемой панели Weintek (рис 6).


Рисунок 6. Создание нового проекта в EasyBuilder8000

Далее, при создании проекта необходимо отредактировать системные настройки и указать список устройств, с которыми связывается панель оператора (рис. 7). В нашем случае это будет подчиненное устройство Modbus RTU [5].


Рисунок 7. Системные настройки проекта

Для используемого нами клиента настраиваются следующие параметры: расположение ПЛК, тип связи, COM порт, скорость и режим работы (рис. 8). Эти данные также будут указаны в рабочей программе ПЛК.


Рисунок 8. Настройки нового устройства

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


Рисунок 9. Тестовый проект экрана панели

Данные элементы отображения и управления связываются с переменными MODBUS. Адресация переменных Modbus RTU указана в руководстве по подключению панели Weintek к ПЛК (рис. 10).


Рисунок 10. Таблица адресов переменных Modbus

В протоколе MODBUS поддерживаются переменные четырех типов:

• дискретный вход (Discrete Input, 1 бит);
• дискретный выход (Coil, 1 бит);
• аналоговый вход (Input Register, 16 бит);
• аналоговый выход (Holding Register, 16 бит).

Для доступа к конкретной переменной также необходимо указать адрес в сети MODBUS.

В зависимости от типа переменной, для доступа к данным используются функции с кодами 0х, 1х, 3х, 4х. Код 0x соответствует типу Coil, который является выходной переменной для записи значения в битовую переменную. Адрес 1x считывает состояние битовой переменной Discrete Input. Адрес 3x соответствует Input Register и используется для считывания состояния аналоговой переменной. Адрес 4x записывает аналоговую переменную Holding Register.

Таким образом, адрес первого переключателя будет 0x1 (рис. 11), второго 0х2 и так далее. Адреса всех элементов рабочего экрана мнемосхемы представлены в таблице 1.


Рис. 11. Задание адресов к элементам рабочей мнемосхеме

Таблица 1. Адреса элементов экрана рабочей схемы:

Программа для ПЛК

Тестовый проект для CPM713 базируется на готовом примере для FastwelModbusServer.lib, входящего в адаптацию CoDeSys для Fastwel. Данная библиотека реализует высокую скорость работы, универсальна и проста в реализации, поэтому при организации обмена данными по протоколу Modbus RTU рекомендуется использовать именно ее. FastwelModbusServer.lib реализует функциональность подчиненного узла сети MODBUS RTU/ASCII через доступные пользовательской программе порты контроллера. В том числе, для организации доступа к сети MODBUS RTU через порт модуля NIM742.

Для организации обмена данными между пользовательским приложением и модулями ввода-вывода требуется добавить конфигурацию системы ввода-вывода согласно физическому подключению к контроллеру. В тестовом проекте мы использовали только модуль NIM742, и конфигурация контроллера представлена на рисунке 12.


Рис. 12. Список используемых модулей

Библиотека FastwelModbusServer имеет единственную функцию FwModbusServerInit(), которая предназначена для инициализации и конфигурирования сервера. При вызове данной функции пользователь задает коммуникационные параметры узла сети и описывает области данных, которые будут отображаться на пространстве адресов сервера MODBUS. Инициализация сервера происходит только из обработчика системного события OnInit, который инициализирует Modbus сервер один раз, после включения питания и до того, как основная пользовательская программа будет запущена.

Параметры обмена данными через COM-порт указываются в самой функции в области задания локальных переменных (рис. 13). Здесь Port – номер порта, BaudRate – скорость обмена данными, StopBit — длина стопового бита, Parity – режим контрольного бита, ByteSize – количество бит в кадре, NodeAddress – адрес устройства в сети Modbus.


Рис. 13. Задание параметров COM-порта

Данные, которыми обменивается основная программа с панелью оператора, задаются в пользовательских типах данных PLC_PRG_IN (то, что получается по сети) и PLC_PRG_OUT (то, что отправляется в сеть). Эти переменные представляют собой массив из четырех переменных типа WORD, двойного слова DWORD и вещественное число REAL (рис. 14).


Рис. 14. Переменные для обмена данными по сети Modbus

После того, как экранная форма и программа были загружены в соответствующие устройства, панель оператора в режиме мастера опрашивает контроллер CPM713. Рабочий экран панели оператора в режиме исполнения представлен на рисунке 15.


Рис. 15. Рабочий экран операторской панели в режиме исполнения

Далее, при необходимости с помощью средств CoDeSys можно собирать данные, получаемые контроллером CPM713 по сети MODBUS TCP, и перенаправлять их на панель оператора по протоколу MODBUS RTU. Таким образом, с помощью средств CoDeSys и интерфейсного модуля NIM742 может быть создана бесшовная интеграция протоколов MODBUS RTU и MODBUS TCP.

ссылка на оригинал статьи https://habrahabr.ru/post/277639/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *