OPC UA C/C++ SDKs
OPC UA C/C++ Client and Server SDKs are software development kits for speeding up your development in the OPC Unified Architecture world.
Technical details - High Performance OPC UA SDK
The component design allows to run components like the network encoder/decoder in a separate process. This not only can improve performance, it also allows to benefit from sandboxing mechanisms like Linux Secure Computing Mode. This allows to disable any operating system calls for this process. In the case of a bug which could lead to an exploit, the process is terminated by the OS as soon as an attacker tries to access a forbidden operating system function. The master process detects this and can restart the terminated process.
Asynchronous Network API
The new OPC UA implementation is based on a completely asynchronous network API as an OS abstraction layer. The different network backends allow to benefit from modern OS specific APIs like POSIX AIO, Linux epoll, BSD kqueue or Windows Completion Port APIs. These APIs don’t suffer from scalability problems like the ancient Berkeley Socket APIs and are the enabler for high performance server applications. The usage of these APIs allows to reduce the number of context switches and copy operations which improves the performance when scaling to thousands of connections. With this new API we also have introduced solutions for non-blocking domain name resolution, which we have identified as a big design problem in today’s implementations.
Asynchronous Crypto and PKI APIs
As with network APIs, today’s crypto implementations suffer from synchronous blocking implementations. Our new OPC UA implementation is designed completely asynchronously to solve this issue. Two different backends are supported out of the box: OpenSSL and mbedTLS. More backends can be added over time. This concept also allows to add hardware accelerated cryptography. The asynchronous design now allows to delegate an encryption job to a hardware chip, continue OPC UA communications and later on process the result of the hardware encryption, even in a single-threaded environment.
As one of the biggest performance bottle-necks we have identified the encoder/decoder component of today’s ANSI C based OPC UA implementation. Even though it is faster than Java and C# based stacks, the whole potential was not reached. With a complete redesign of the encoding procedure we could gain a performance boost by a factor of 10 for the encoding process. This can lead to an overall performance boost of the OPC UA protocol up to a factor of 4, depending on the type of data transferred.
A modular concept, configurable memory pools, and efficient implementation make it perfectly suitable for smallest devices and for Internet of Things (IoT). On an ARM based demonstration device running Euros Real Time Operating system we were able to integrate an OPC UA server in 300K Codesize including the Operating System. A new table based address space concept allows to integrate huge address spaces with a fraction of the memory required in other SDKs. It also supports read only address space models that completely reside in ROM.
Source Code edition
The High Performance OPC UA SDK supports the following OPC UA Features and Profiles:
- Data Access
- Events Access
- Alarm & Condition
- Security, Authentication
- UA-TCP, UA-SecureConversation, UA-Binary
- Nano Embedded Device 2017 Server Profile
- Micro Embedded Device 2017 Server Profile
- Embedded 2017 UA Server Profile
- DataAccess Server Facet
- ComplexType 2017 Server Facet
- Address Space Notifier Server Facet
- Standard Event Subscription Server Facet
- Method Server Facet
Alarms & Conditions:
- A&C Base Condition Server Facet
- A&C Refresh2 Server Facet
- A&C Address Space Instace Server Facet
- A&C Enable Server Facet
- A&C Acknowledgeable Alarm Server Facet
- A&C Alarm Server Facet
Scope of supply:
- OPC UA Server SDK including Clientside
- Information model XML file to binary file converter
- Information model XML file to C code converter
- IPC framework
- Unit test framework
- Unit test suite to support porting the SDK
- CMake build files
- API documentation, examples and tutorials
- first year maintenance
- One OPC UA Modeler runtime license
Product Variants - License Schema
The High Performance OPC UA SDK is available in one format: Source Code. There are Source Code Developer (Single Seat) & Evaluation licenses available either for Windows or Linux platform.
What is OPC?
OPC and OPC UA (Unified Architecture) are industry standards that enable software to connect devices, machines and systems from different manufacturers using same interface.