Документация 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 в Engee:
    • получает данные из серверного узла Triangle;
    • отправляет данные в серверный узел MyVar.

Узлы и NodeId

Каждая переменная на OPC UA-сервере имеет идентификатор узла NodeId.
В примере используются следующие узлы:

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

Здесь:

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

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

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

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

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 серверу будет передаваться значение из модели.

Имена шин

В параметрах блока также используются имена шин:

  • Output Bus Name: OPCOutputBus
  • Input Bus Name: OPCInputBus

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


3. Настройка параметров моделирования и соединения в Engee

В свойствах модели определены следующие параметры моделирования:

  • используется фиксированный шаг;
  • решатель: Euler;
  • шаг интегрирования: 1e-3 секунд;
  • время моделирования: 30 секунд.

Для установления соединения между Engee и ресукрсами ПК устанавоивается и запускается Engee.Интеграции.


4. Сборка схемы в Engee

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

image.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 = None
  • Message 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.


image.png

Вывод

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

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

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

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

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

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

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