Обмен данными по OPC UA
Пример обмена данными между 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 Ports в Engee:
- получает данные из серверного узла
Triangle; - отправляет данные в серверный узел
MyVar.
- получает данные из серверного узла
Узлы и NodeId
Каждая переменная на OPC UA-сервере имеет идентификатор узла NodeId.
В примере используются следующие узлы:
- для чтения:
Trianglens=3;i=1006
- для записи:
MyVarns=3;i=2
Здесь:
ns— индекс пространства имен;i— числовой идентификатор узла.
Логика модели
В модели Engee реализована типовая схема:
- формируются данные для записи в OPC UA;
- блок 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.

Также в дереве объектов сервера можно увидеть тестовые переменные в папке 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 серверу будет передаваться значение из модели.
3. Настройка параметров моделирования и соединения в Engee
В свойствах модели определены следующие параметры моделирования:
- используется фиксированный шаг;
- решатель: Euler;
- шаг интегрирования:
1e-3секунд; - время моделирования:
30секунд.
Для установления соединения между Engee и ресукрсами ПК устанавоивается и запускается Engee.Интеграции.
4. Сборка схемы в Engee
В модели собирается следующая структура для тестирования коммуникации.

Блок OPCUA Client Ports
Подготовленная данные - сигал Input Vlaue подключается ко входу блока OPC UA Client Ports.
Блок выполняет две функции одновременно:
- принимает данные на запись в сервер;
- возвращает считанные с сервера значениями.
В случае, если нам требуется записать или отправить несколько переменных, тогда создается, например словарь следующего вида:
Dict(:Triangle => ("ns=3;i=1006", Float64), :Sinusoid=> ("ns=3;i=1004", Float64), :Counter=> ("ns=3;i=1001", Int32))
при этом число выходных и/или входных портов изменится в соответствии с заданным числом определённых символьных ключей в словаре.
Описание процесса работы
Шаг 1. Запуск OPC UA-сервера
Сначала запускается Prosys OPC UA Simulation Server.
Проверяется, что сервер активен, а симуляционные переменные доступны в дереве объектов.
На этом этапе удобно сразу посмотреть:
- адрес подключения сервера;
- нужные переменные;
- их
NodeId; - типы данных.
В примере используются узлы:
Triangleдля чтения;MyVarдля записи.
Шаг 2. Подключение Engee к серверу
В Engee в параметрах блока OPCUA Client указывается адрес сервера и настраиваются параметры безопасности.
Так как в демонстрации используется локальный тестовый сервер, выбраны:
Security policy = NoneMessage security = None
После этого в блок добавляются:
- читаемая переменная
Triangle; - записываемая переменная
MyVar.
Шаг 3. Запуск модели
После запуска моделирования Engee устанавливает соединение с сервером.
В клиентской программе Engee.Интеграции отображается успешный статус соединения:
- соединение с сервером установлено;
- клиент переподключается/подключается к Engee;
- после этого модель переходит в режим выполнения.
Шаг 4. Проверка обмена данными
После старта моделирования в окне Prosys OPC UA Simulation Server наблюдается изменение значений переменных.
В ходе моделирования можно заметить. что:
- у переменной
Triangleменяется текущее значение в соответствии с треугольным сигналом; - у переменной
MyVarтакже появляется актуальное значение, записываемое из Engee; - статус операции успешный.
Это подтверждает, что обмен работает в обе стороны:
- сервер → Engee: чтение
Triangle; - Engee → сервер: запись
MyVar.
Кроме того, в процессе поддерживается возможность изменения данных "на лету" - изменение параметров генерирования треугольного сигнала на сервере приводит к соответствующему изменению отображаемого сигнала в Engee.

Вывод
В результате выполненной настройки реализован рабочий двусторонний обмен между Engee и OPC UA-сервером:
- Engee успешно подключается к Prosys OPC UA Simulation Server;
- считывает значение узла
Triangle; - формирует и записывает значение в узел
MyVar.
Этот пример можно использовать как основу для более сложных задач:
- подключения к реальным OPC UA-серверам;
- обмена несколькими переменными одновременно;
- интеграции моделей Engee с внешними системами автоматизации;
- тестирования алгоритмов управления на симуляционных данных.
Пример демонстрирует базовый и наглядный сценарий интеграции Engee с OPC UA.
Его ключевая ценность в том, что он показывает полный цикл:
- запуск и проверку OPC UA-сервера;
- поиск нужных переменных и их
NodeId; - настройку блока OPCUA Client в Engee;
- запуск модели и проверку фактического обмена.
Для учебных и демонстрационных задач такой пример удобен тем, что Prosys OPC Simulation Server уже содержит готовый набор тестовых переменных, а значит можно сосредоточиться именно на механике подключения и обмена данными по OPC UA.