/opcua

EPICS Device Support for OPC UA

Primary LanguageC++OtherNOASSERTION

Version Travis status Codacy grade

opcua - EPICS Device Support for OPC UA

EPICS Device Support module for interfacing to the OPC UA protocol. The architecture allows supporting different implementations of the low level client library.

Status

⚠️ This module is under development. Please contact the author Ralph Lange for details. :warning:

The first (and - at this time - only) supported OPC UA client library is the commercially available Unified Automation C++ Based OPC UA Client SDK.

Prerequisites

  • A C++ compiler that supports the C++11 standard.

  • EPICS Base 3.15.5 (and up; EPICS 7 is supported).

  • The gtest module to compile and run the Google Test based tests.

Using the Unified Automation Client SDK

  • Unified Automation C++ Based OPC UA Client SDK (1.5/1.6/1.7 are supported, as well as their evaluation bundle).

  • For OPC UA security support (authentication/encryption), you need libcrypto on your system - both when compiling the SDK and when generating any binaries (IOCs).

  • For more details, refer to the README.md in the devOpcuaSup/UaSdk directory.

Building the module

This is a standard EPICS module.

Inside the configure subdirectory or one level above the TOP location (TOP is where this README file resides), create a file RELEASE.local that sets EPICS_BASE and GTEST to the absolute paths inside your EPICS installation. The GTEST module is needed to compile and run the tests. Not defining it produces a clean build, but without any tests.

Configure the compiler on Linux to use the C++11 standard by adding

USR_CXXFLAGS_Linux += -std=c++11

to the CONFIG_SITE file (or one of the host/target specific site configuration files).
It is preferable to set this option globally in EPICS Base.

The configuration necessary when building against a specific client library is documented in the README.md file inside the respective subdirectory of devOpcuaSup.

Using the module

IOC applications that use the module need to

  • add an entry to the Device Support module in their RELEASE.local file
  • include opcua.dbd when building the IOC's DBD file
  • include opcua in the support libraries for the IOC binary.

Documentation

Sparse.

The documentation folder of the Device Support module contains the Requirements Specification (SRS) giving an introduction and the list of requirements that should convey a good idea of the planned features.

The Cheat Sheet explains the configuration in the startup script and the database links.

Feedback / Reporting issues

Please use the GitHub project's issue tracker.

Credits

This module is based on extensive prototype work by Bernhard Kuner (HZB/BESSY II) and uses ideas and code snippets from Michael Davidsaver (Osprey DCS).

License

This module is distributed subject to a Software License Agreement found in file LICENSE that is included with this distribution.