Unified Automation ANSI C based OPC UA Client/Server/PubSub SDK -------------------------------------------------------------------------------------- The ANSI C OPC UA SDK is a compact OPC UA SDK designed for embedded devices, providing the basic infrastructure to create an OPC UA application. You SHOULD NOT mix the SDK binaries with other MS Visual Studio versions, because your application will end up in loading two different CRT DLLs, which results in two different heaps. Mixing heaps will lead to application crashes when trying to free memory that was allocated by another heap. =================================================================== Requirements =================================================================== * CMake The ANSI C based OPC UA SDK uses CMake to build for various targets using different compilers and operating systems. This way we avoid maintaining dozens of proprietary IDE projects or writing custom Makefiles. * OpenSSL The OpenSSL third-party library is used by the SDK for OPC UA security features that require crypto and PKI functionality. See 'Third-Party Libraries' for more details. =================================================================== First steps =================================================================== * Full documentation The latest on-line documentation can be found at [https://documentation.unified-automation.com] The SDK package includes complete documentation in the doc folder as ZIP file. * Install OpenSSL For the first steps install OpenSSL from [https://slproweb.com/products/Win32OpenSSL.html] Select the latest full OpenSSL v3.0.x version (Win64 or Win32), NOT the light version. The full documentation describes how to build OpenSSL from source in the section 'Building the SDK and Third-party Libraries'. * Install CMake Installers are available from [https://cmake.org/download/] * Unzip SDK package to a working directory * Create Visual Studio projects with CMake * Start cmake-gui * Choose root directory of SDK package as source directory * Create a build directory in the SDK root (e.g. 'bld') * Choose the new directory as build directory * Press 'Configure' and select your Visual Studio version and platform * Press 'Configure' a second time and then press 'Generate' * Compile projects * Open Visual Studio solution from build directory * Build solution * Build project 'Install' to install the resulting files to the folder 'dist' =================================================================================== Third-Party Libraries: =================================================================== The SDK uses third-party libraries that are used to provide certain features. Third-party software may impose additional restrictions and it is the user's responsibility to ensure that they have met the licensing requirements of the according libraries. The following enumeration lists all third-party libraries used by the SDK with additional information about version, configuration and used licenses. The third-party licenses are stored in the license folder distributed with the SDK. * OpenSSL To build the SDK with UA Security enabled the OpenSSL crypto library must be installed including the development headers. To avoid building OpenSSL from source ready-to-use Windows installers are available from: [https://slproweb.com/products/Win32OpenSSL.html] The SDK supports OpenSSL version 1.1.1 and 3.0. Note that you need to use the full installer, not the "Light" version, as the "Light" version does not include the development headers. Also make sure to select the 32bit or 64bit variant according to how you build the SDK. When using the installer, CMake is able to autodetect the installed OpenSSL version and will automatically enable security. The CMake output shows you the active configuration. Watch for this output: ... -- OpenSSL found (1.1.1s) -- ### Summary of build options: -- CMAKE_BUILD_TYPE Debug ... -- BUILD_LIBUACRYPTO ON -- BUILD_LIBUAPKI ON -- BUILD_LIBUASECONV ON ... =================================================================== OPC UA Compliance Testing: =================================================================== We are following the OPC UA compliance and certification efforts of the OPC Foundation as close as possible. We participated in all UA plug fest events and most of the OPC interoperability events as first available step. We have tested the ANSI C demo server contained in this SDK release with the latest released OPC UA compliance test tool (CTT) version 1.04.11-01.00.506, using profiles: - Standard 2017 UA Server - DataAccess Server Facet - Method Server Facet - Event Subscription Server Facet - Standard Event Subscription Server Facet - ComplexType 2017 Server Facet - Auditing Server Facet The following settings and issues are known. We consider these issue as problem in the CTT and not in the SDK. * Base Info Core Structure - 001: The test expects all namespace 0 types to be there. Our SDK includes only the types that are needed or supported by the SDK. The behavior of the SDK is fine. Server Test -> Fully Exposed Type System should be disabled for the test to pass. * Some of the tests fail in batch run with all the listed CTT profiles combined together but pass otherwise. The OPC Test Lab Certification of ANSI C demo server contained in this SDK was successfully finished with version 1.8.0 of the SDK. The test results with your own server implementation may have compliance issues based on different SDK implementation options used. Issues can also be caused by different timing. We will provide regular updates to the SDK after the availability of new OPC UA compliance test tool versions. =================================================================== Feature enhancements and bug fixes =================================================================== For a list of new features and a detailed change log see the file CHANGELOG.txt