Giter Site home page Giter Site logo

opcua's Introduction

Version Travis status GitHub Actions 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.

Linux and Windows builds are supported.

Status

โš ๏ธ This module is under development. Please contact the author Ralph Lange for details. :warning:

There are two choices for the low-level OPC UA client library:

  1. The commercially available Unified Automation C++ Based OPC UA Client SDK. Original, full implementation.

  2. The open source client implementation of the open62541 project. Currently experimental, no support for structured data yet.

Prerequisites

  • A C++ compiler that supports the C++11 standard.
    Microsoft Visual C++ needs to be from Visual Studio 2015 or newer. g++ needs to be 4.6 or above.

  • EPICS Base 3.15 (>= 3.15.7) or EPICS 7 (>= 7.0.4).

  • The gtest module if you want to compile and run the Google Test based unit 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 bundles; 1.8 is having trouble).

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

  • In CONFIG_SITE.local, set UASDK to the path of the SDK installation.

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

Using the open62541 SDK

  • The open62541 SDK is available at https://open62541.org/
    Choose a recent release (1.2 and 1.3 are supported).

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

  • In CONFIG_SITE.local, set OPEN62541 to the path of the SDK installation.

  • For more details, refer to the README.md in the devOpcuaSup/open62541 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.

Binaries

Please look at the "Assets" sections of specific releases on the release page for binaries. These are fully functional and contain the Unified Automation Client SDK. They can be used without limitations and without any fees.

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) and uses ideas and code snippets from Michael Davidsaver (Osprey DCS).

The support for the open62541 client was added by Dirk Zimoch (PSI) with additional help from Carsten Winkler (HZB/BESSY).

License

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

opcua's People

Contributors

ralphlange avatar dirk-zimoch avatar rosselliot avatar karlvestin avatar anderslindho avatar jeonghanlee avatar simon-ess avatar bfrk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.