Интеграция с OPC UA

Описание

OPC UA – это современный стандарт передачи данных в промышленных сетях. В данном разделе описывается процесс настройки и использования OPC UA‑коннектора в Entaxy ION: установка компонента, запуск Prosys Simulation Server, создание маршрута и проверка получения данных от выбранного узла.

Процесс взаимодействия с OPC UA состоит из следующих шагов:

  1. Устанавливаем фичу camel-milo:

    feature:install -r camel-milo
  2. Проверяем, что установленные бандлы находятся в статусе Active:

    590 │ Active   │  50 │ 1.65               │ bcpkix
    591 │ Active   │  50 │ 1.65               │ bcprov
    592 │ Active   │  50 │ 26.0.0.jre         │ Guava: Google Core Libraries for Java
    593 │ Active   │  50 │ 3.4.5              │ camel-milo
    594 │ Active   │  50 │ 0.3.7              │ bsd-parser-core
    595 │ Active   │  50 │ 0.3.7              │ sdk-client
    596 │ Active   │  50 │ 0.3.7              │ sdk-core
    597 │ Active   │  50 │ 0.3.7              │ sdk-server
    598 │ Active   │  50 │ 0.3.7              │ stack-client
    599 │ Active   │  50 │ 0.3.7              │ stack-core
    600 │ Active   │  50 │ 0.3.7              │ stack-server
    601 │ Active   │  50 │ 3.0.2              │ FindBugs-jsr305
    602 │ Active   │  50 │ 0                  │ wrap_file__C__Users_lyako_.m2_repository_com_digitalpetri_fsm_strict-machine_0.2_stric
    603 │ Active   │  50 │ 0                  │ wrap_file__C__Users_lyako_.m2_repository_com_digitalpetri_netty_netty-channel-fsm_0.3_
  3. Скачиваем и устанавливаем программный эмулятор промышленного оборудования Prosys OPC UA Simulation Server:

  4. На главной вкладке приложения найдем адрес OPC UA сервера, который будет использоваться клиентом для подключения.

    opcua

    В качестве источника данных используем пилообразный сигнал. Для этого откроем вкладку Objects, перейдем в папку Simulation и выберем переменную Sawtooth. На вкладке Атрибуты скопируем значение NodeId, уникального идентификатора узла, из которого будут считываться данные (ns=3;i=1003).

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

    node=RAW(ns=3;i=1003)

    Где:

    • node=RAW(…​) - означает передачу идентификатора узла в исходном формате OPC UA без какой-либо интерпретации или преобразования со стороны клиента

    • ns=3 (Namespace Index) — индекс пространства имен

    • i=1003 (Identifier) — уникальный идентификатор самого узла внутри указанного пространства имен

    opcua nodeid
  5. Создаем профиль системы opcua и добавляем к нему:

    1. Входной кастомный коннектор. В точке кастомизации custom-route создаем маршрут, который выполняет подключение к OPC UA серверу, читает значение указанного узла и логирует полученные данные:

      <?xml version="1.0" encoding="UTF-8"?>
      <entaxy:object-input-route
          xmlns="http://camel.apache.org/schema/blueprint"
          xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
          xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
          xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
          <from uri="milo-client:opc.tcp://LAPTOP-4PQ1JPTN:53530/OPCUA/SimulationServer?allowedSecurityPolicies=None&amp;node=RAW(ns=3;i=1003)"/>
          <log message="OPC UA received data: ${body}"/>
          <m:respond now="true" continue="false"/>
      </entaxy:object-input-route>
  6. Сохраняем изменения. При успешном подключении видим в логах отображение полученных данных:

    14:15:57.206 INFO [milo-shared-thread-pool-0] OPC UA recived data: DataValue{value=Variant{value=-1.2}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=134201205570000000, javaDate=Wed Apr 08 14:15:57 MSK 2026}, serverTime=DateTime{utcTime=134201205571990000, javaDate=Wed Apr 08 14:15:57 MSK 2026}}