OPC-UA в Eclipse 4diac
Источник
Основано на официальной документации Eclipse 4diac, лицензия EPL-2.0.
OPC-UA (Unified Architecture) — промышленный стандарт коммуникации для безопасного, платформонезависимого обмена данными.
Компиляция FORTE с OPC-UA
Linux (Ubuntu/Debian)
# 1. Зависимости
sudo apt update && sudo apt install -y cmake g++ git python3
# 2. Сборка open62541 (OPC-UA библиотека)
git clone https://github.com/open62541/open62541.git
cd open62541
git checkout v1.3.8 # или актуальная стабильная версия
mkdir build && cd build
cmake .. \
-DUA_NAMESPACE_ZERO=FULL \
-DUA_ENABLE_ENCRYPTION=MBEDTLS \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
# 3. Сборка FORTE с OPC-UA
cd /path/to/4diac-forte
mkdir build && cd build
cmake .. \
-DFORTE_ARCHITECTURE=Posix \
-DFORTE_COM_OPC_UA=ON \
-DFORTE_COM_OPC_UA_MASTER_BRANCH=ON \
-DFORTE_COM_OPC_UA_MULTICAST=ON
make -j$(nproc)
Windows
# 1. Установите CMake, Visual Studio 2019+, Git
# 2. Сборка open62541
git clone https://github.com/open62541/open62541.git
cd open62541
mkdir build; cd build
cmake .. -DUA_NAMESPACE_ZERO=FULL -G "Visual Studio 16 2019"
cmake --build . --config Release
cmake --install . --prefix C:/open62541
# 3. Сборка FORTE
cd /path/to/4diac-forte
mkdir build; cd build
cmake .. ^
-DFORTE_ARCHITECTURE=Win32 ^
-DFORTE_COM_OPC_UA=ON ^
-Dopen62541_DIR=C:/open62541/lib/cmake/open62541
cmake --build . --config Release
Ларус-100
На Ларус-100 OPC UA уже скомпилирован в поставляемый FORTE. Сборка не требуется.
Синтаксис параметра PARAMS (ID)
Общий формат:
opc_ua[ACTION;ENDPOINT#PAIR1;PAIR2;...;PAIRn]
| Элемент | Описание | Пример |
|---|---|---|
| ACTION | Режим работы FB | READ, WRITE, CREATE, DELETE, SUBSCRIBE |
| ENDPOINT | Адрес OPC UA сервера | opc.tcp://192.168.1.10:4840 |
# | Разделитель (пусто = локальный сервер) | # |
| PAIR | Идентификатор узла | ;ns=2;s=Temperature |
SUBSCRIBE / PUBLISH — реалтайм подписки

SUBSCRIBE FB (получение данных при изменении)
SUBSCRIBE_1.ID = "opc_ua[SUBSCRIBE;opc.tcp://server:4840#;ns=2;s=Temperature]"
FB получает событие IND каждый раз, когда значение на сервере изменяется. Не требует периодического опроса — данные поступают по push от сервера.

PUBLISH FB (публикация переменной на локальном сервере)
PUBLISH_1.ID = "opc_ua[#;ns=2;s=MyOutput]"
Создаёт OPC UA переменную на встроенном сервере FORTE. Внешние клиенты могут читать/подписываться.