Пример обмена данными между Engee и Prosys OPC Simulation Server по OPC UA
Введение
В этом примере показано, как организовать обмен данными по протоколу OPC UA между моделью в Engee и внешним OPC UA-сервером на примере Prosys OPC UA Simulation Server.
Сценарий демонстрирует двустороннюю работу:
- чтение значения из OPC UA-сервера в Engee;
- запись значения из модели Engee обратно на сервер.
В качестве источника тестовых данных используется стандартный симуляционный сервер Prosys, а в Engee применяется блок OPCUA Client, который подключается к серверу, читает переменную Triangle и записывает значение в переменную MyVar.
Такой пример полезен как базовый шаблон для интеграции модели Engee с промышленными системами, контроллерами, SCADA и другими источниками/приемниками данных, поддерживающими OPC UA.
Краткая справка
Что такое OPC UA
OPC UA (Open Platform Communications Unified Architecture) — это промышленный протокол обмена данными, предназначенный для надежного и стандартизованного взаимодействия между различными программами и устройствами.
Основные особенности OPC UA:
- платформенная независимость;
- клиент-серверная архитектура;
- наличие адресного пространства с узлами (nodes);
- поддержка чтения, записи, подписки на изменения;
- встроенные механизмы безопасности.
Как устроен обмен в данном примере
В рассматриваемом примере:
- Prosys OPC UA Simulation Server выступает как сервер;
- Engee выступает как клиент OPC UA;
- блок OPCUA Client в Engee:
- получает данные из серверного узла
Triangle; - отправляет данные в серверный узел
MyVar.
- получает данные из серверного узла
Узлы и NodeId
Каждая переменная на OPC UA-сервере имеет идентификатор узла NodeId.
В примере используются следующие узлы:
- для чтения:
Trianglens=3;i=1006
- для записи:
MyVarns=3;i=2
Здесь:
ns— индекс пространства имен;i— числовой идентификатор узла.
Логика модели
В модели Engee реализована типовая схема:
- формируется шина входных данных для записи в OPC UA;
- в поле
MyVarзаписывается тестовый сигнал; - блок OPCUA Client отправляет это значение на сервер;
- из выходной шины блока извлекается считанная с сервера переменная
Triangle; - результат выводится дальше по схеме для наблюдения.
Prosys OPC UA Simulation Server
Тестовый OPC UA-сервер, предоставляющий набор симулируемых переменных.
При запуске сервер формирует и использует адрес подключения вида:
opc.tcp://alexevs:53530/OPCUA/SimulationServer
В конкретной системе имя хоста и порт могут отличаться.
Для собственного запуска нужно использовать адрес, отображаемый в окне Prosys OPC UA Simulation Server.
Описание настройки
1. Настройка Prosys OPC UA Simulation Server
Сначала запускается Prosys OPC UA Simulation Server и проверяется его состояние.
После запуска видно, что:
- сервер находится в состоянии Running;
- для подключения используется протокол UA TCP;
- адрес подключения:
opc.tcp://alexevs:53530/OPCUA/SimulationServer.
.png)
Также в дереве объектов сервера можно увидеть тестовые переменные в папке Simulation, среди которых доступны, например:
ConstantCounterMyVarRandomSawtoothSinusoidSquareTriangle
Для переменной Triangle видно:
NodeId = ns=3;i=1006- тип данных:
Double
Для переменной MyVar видно:
NodeId = ns=3;i=2
Во вкладке параметров Triangle, видно, что сигнал имеет тип Triangle, а его диапазон и период заданы на стороне симуляционного сервера.
.png)
2. Настройка блока OPCUA Client в Engee
В модели Engee добавляется блок OPCUA Client и открываются его параметры.
Для корректой работы необходимо установить следующие основные настройки блока:
Параметры подключения
- Server address:
opc.tcp://alexevs:53530/OPCUA/SimulationServer - Security policy:
None - Message security:
None - Timeout, s:
2.0
Настройка чтения
Для чтения задается словарь Read variables, в который добавляется переменная:
Triangle→("ns=3;i=1006", Float64)
То есть блок должен читать значение узла Triangle как число типа Float64.
Настройка записи
Для записи задается словарь Write variables, где указывается:
MyVar→("ns=3;i=2", Float64)
Это означает, что в узел MyVar серверу будет передаваться значение из модели.
Имена шин
В параметрах блока также используются имена шин:
- Output Bus Name:
OPCOutputBus - Input Bus Name:
OPCInputBus
Это позволяет удобно организовать обмен набором переменных через структурированные шины.
3. Настройка параметров моделирования и соединения в Engee
В свойствах модели определены следующие параметры моделирования:
- используется фиксированный шаг;
- решатель: Euler;
- шаг интегрирования:
1e-3секунд; - время моделирования:
30секунд.
Для установления соединения между Engee и ресукрсами ПК устанавоивается и запускается Engee.Интеграции.
4. Сборка схемы в Engee
В модели собирается следующая структура для тестирования коммуникации.
.png)
Формирование входной шины для записи
Сначала создается заготовка шины:
- используется преобразование вида
convert(OPCInputBus, …), чтобы сформировать шину нужного типа; - затем применяется блок назначения в шину (BusAssignment), в котором выбирается поле:
MyVar
В это поле записывается тестовый сигнал, подаваемый с генератора.
Блок OPCUA Client
Подготовленная шина OPCInputBus подключается ко входу блока OPCUA Client.
Блок выполняет две функции одновременно:
- принимает данные на запись в сервер;
- формирует выходную шину
OPCOutputBusсо считанными с сервера значениями.
Извлечение считанного значения
После блока OPCUA Client устанавливается BusSelector, в котором выбирается сигнал:
Triangle
Это значение подается дальше по схеме для отображения или анализа.
Описание процесса работы
Шаг 1. Запуск OPC UA-сервера
Сначала запускается Prosys OPC UA Simulation Server.
Проверяется, что сервер активен, а симуляционные переменные доступны в дереве объектов.
На этом этапе удобно сразу посмотреть:
- адрес подключения сервера;
- нужные переменные;
- их
NodeId; - типы данных.
В примере используются узлы:
Triangleдля чтения;MyVarдля записи.
Шаг 2. Подключение Engee к серверу
В Engee в параметрах блока OPCUA Client указывается адрес сервера и настраиваются параметры безопасности.
Так как в демонстрации используется локальный тестовый сервер, выбраны:
Security policy = NoneMessage security = None
После этого в блок добавляются:
- читаемая переменная
Triangle; - записываемая переменная
MyVar.
Шаг 3. Формирование данных на запись
Внутри модели создается тестовый сигнал, который подается на запись в поле MyVar входной шины OPCInputBus.
Таким образом Engee начинает передавать на OPC UA-сервер собственное вычисленное значение.
Шаг 4. Чтение данных с сервера
Одновременно блок OPCUA Client читает значение переменной Triangle с сервера и выдает его через выходную шину OPCOutputBus.
Затем блок BusSelector извлекает поле Triangle, чтобы использовать его отдельно в модели.
Шаг 5. Запуск модели
После запуска моделирования Engee устанавливает соединение с сервером.
В клиентской программе Engee.Интеграции отображается успешный статус соединения:
- соединение с сервером установлено;
- клиент переподключается/подключается к Engee;
- после этого модель переходит в режим выполнения.
Шаг 6. Проверка обмена данными
После старта моделирования в окне Prosys OPC UA Simulation Server наблюдается изменение значений переменных.
В ходе моделирования можно заметить. что:
- у переменной
Triangleменяется текущее значение в соответствии с треугольным сигналом; - у переменной
MyVarтакже появляется актуальное значение, записываемое из Engee; - статус операции успешный.
Это подтверждает, что обмен работает в обе стороны:
- сервер → Engee: чтение
Triangle; - Engee → сервер: запись
MyVar.
Кроме того, в процессе поддерживается возможность изменения данных "на лету" - изменение параметров генерирования треугольного сигнала на сервере приводит к соответствующему изменению отображаемого сигнала в Engee.
.png)
Вывод
В результате выполненной настройки реализован рабочий двусторонний обмен между Engee и OPC UA-сервером:
- Engee успешно подключается к Prosys OPC UA Simulation Server;
- считывает значение узла
Triangle; - формирует и записывает значение в узел
MyVar; - использует шины
OPCInputBusиOPCOutputBusдля структурированного обмена.
Этот пример можно использовать как основу для более сложных задач:
- подключения к реальным OPC UA-серверам;
- обмена несколькими переменными одновременно;
- интеграции моделей Engee с внешними системами автоматизации;
- тестирования алгоритмов управления на симуляционных данных.
Пример демонстрирует базовый и наглядный сценарий интеграции Engee с OPC UA.
Его ключевая ценность в том, что он показывает полный цикл:
- запуск и проверку OPC UA-сервера;
- поиск нужных переменных и их
NodeId; - настройку блока OPCUA Client в Engee;
- организацию шин на чтение и запись;
- запуск модели и проверку фактического обмена.
Для учебных и демонстрационных задач такой пример удобен тем, что Prosys OPC Simulation Server уже содержит готовый набор тестовых переменных, а значит можно сосредоточиться именно на механике подключения и обмена данными по OPC UA.