Документация Engee
Notebook

Пример обмена данными между 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.
В примере используются следующие узлы:

  • для чтения:
    • Triangle
    • ns=3;i=1006
  • для записи:
    • MyVar
    • ns=3;i=2

Здесь:

  • ns — индекс пространства имен;
  • i — числовой идентификатор узла.

Логика модели

В модели Engee реализована типовая схема:

  1. формируются данные для записи в OPC UA;
  2. блок OPCUA Client отправляет это значение на сервер;
  3. из блока извлекается считанная с сервера переменная Triangle;
  4. результат выводится дальше по схеме для наблюдения.

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.
image.png

Также в дереве объектов сервера можно увидеть тестовые переменные в папке Simulation, среди которых доступны, например:

  • Constant
  • Counter
  • MyVar
  • Random
  • Sawtooth
  • Sinusoid
  • Square
  • Triangle

Для переменной Triangle видно:

  • NodeId = ns=3;i=1006
  • тип данных: Double

Для переменной MyVar видно:

  • NodeId = ns=3;i=2

Во вкладке параметров Triangle, видно, что сигнал имеет тип Triangle, а его диапазон и период заданы на стороне симуляционного сервера.

image.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

В модели собирается следующая структура для тестирования коммуникации.

image.png

Блок 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 = None
  • Message security = None

После этого в блок добавляются:

  • читаемая переменная Triangle;
  • записываемая переменная MyVar.

Шаг 3. Запуск модели

После запуска моделирования Engee устанавливает соединение с сервером.
В клиентской программе Engee.Интеграции отображается успешный статус соединения:

  • соединение с сервером установлено;
  • клиент переподключается/подключается к Engee;
  • после этого модель переходит в режим выполнения.

Шаг 4. Проверка обмена данными

После старта моделирования в окне Prosys OPC UA Simulation Server наблюдается изменение значений переменных.

В ходе моделирования можно заметить. что:

  • у переменной Triangle меняется текущее значение в соответствии с треугольным сигналом;
  • у переменной MyVar также появляется актуальное значение, записываемое из Engee;
  • статус операции успешный.

Это подтверждает, что обмен работает в обе стороны:

  • сервер → Engee: чтение Triangle;
  • Engee → сервер: запись MyVar.

Кроме того, в процессе поддерживается возможность изменения данных "на лету" - изменение параметров генерирования треугольного сигнала на сервере приводит к соответствующему изменению отображаемого сигнала в Engee.


newplot (8).png image.png

Вывод

В результате выполненной настройки реализован рабочий двусторонний обмен между Engee и OPC UA-сервером:

  • Engee успешно подключается к Prosys OPC UA Simulation Server;
  • считывает значение узла Triangle;
  • формирует и записывает значение в узел MyVar.

Этот пример можно использовать как основу для более сложных задач:

  • подключения к реальным OPC UA-серверам;
  • обмена несколькими переменными одновременно;
  • интеграции моделей Engee с внешними системами автоматизации;
  • тестирования алгоритмов управления на симуляционных данных.

Пример демонстрирует базовый и наглядный сценарий интеграции Engee с OPC UA.
Его ключевая ценность в том, что он показывает полный цикл:

  1. запуск и проверку OPC UA-сервера;
  2. поиск нужных переменных и их NodeId;
  3. настройку блока OPCUA Client в Engee;
  4. запуск модели и проверку фактического обмена.

Для учебных и демонстрационных задач такой пример удобен тем, что Prosys OPC Simulation Server уже содержит готовый набор тестовых переменных, а значит можно сосредоточиться именно на механике подключения и обмена данными по OPC UA.