OPC UA SDK Release 1.01

April 25th, 2011

Overview

The OPC UA SDK is a collection of libraries and applications that facilitate the development of UA applications. The UA SDK supports 2 different development environments: .NET and C/C++. A Java version is under development and is distributed as a separate package.

Build 328 Release Notes

The major changes in this build are:

-          Added support for the 1.2 version of the specification;

-          Added new SecuredApplication schema;

-          Fixed differences between code and schema;

-          Added support for an official import/export format.

-          Added ObjectId to Method handler functions;

-          Changed the way the ANSI C and .NET Stack handle CRLs;

-          Added support for CRLs to Opc.Ua.CertificateGenerator.exe

 

Note, this build may break code and will require that configuration files be changed (old configuration files can be read but will not operate properly). The changes are summarized:

 

1) ApplicationConfiguration.SecurityConfiguration Semantic Change

 

The TrustedPeerCertificates element specifies Application or CA certificates that are trusted. The TrustedIssueCertificates element specifies CA certificates that are NOT trusted but are needed for certificate chain validation. These elements correspond to the TrustedCertificateStore and IssuerCerificateStore in the new SecuredApplication schema. The names are left with their existing, non-intuitive names in order to avoid breaking existing applications.

 

2) SecuredApplication and InstalledApplication

 

The SecuredApplication was defined in Part 6 but there was no formal schema defined. That schema is now defined and this required that InstalledApplication schema change. This means that all existing InstallConfig.xml files MUST be updated.

 

The main changes are the trust list name changes noted above.

Any of the Samples or Quickstarts will have examples of the new format.

 

3) XML Export Format

 

The 1.02 version of the specification defines an XML representation for an address space. The ModelCompiler now produces a file that uses this syntax called XXX.NodeSet2.xml where XXX is the information model namespace. This file replaces the NodeSet.xml produced by earlier versions of the tool. The NodeSet.xml will continue to be supported moving forward but it is not the official syntax.

 

4) MethodState Changes

 

The Call method signatures assumed that MethodState objects would not be shared. This has created problems so the ObjectId is now passed into all of the methods. If you have a compile error you will need to add the new ObjectId parameter.

 

5) Opc.Ua.CertificateGenerator

 

The CertificateGenerator now supports the creation of file based CRLs. These CRLs are stored in the crl sub directory of a Directory store. The ANSI C has been updated to look for CRLs in this subdirectory. The same changes are planned for the .NET stack.

 

6) ANSI C PKI Configuration

The PKI configuration for the ANSI C stack has changed. The CRL file is no longer specified and the application must supply the paths to the TrustedCertificateStore and IssuerCertificateStore (optional). Note these paths point to the root of a directory store – not the ‘certs’ subdirectory. The semantics of these parameters is now identical to the to .NET stack.

Build 326 Release Notes

The major changes in this build are:

-          Numerous fixes for the SDK and COM wrapper/proxies.

-          Added DataType quickstart;

-          Self install no longer automatically starts Services.

 

Previous builds created files in the MachineKeys directory when certificates were loaded. Over time this could produce 1000s of files. This build fixes the issue but the /install option can no longer start Windows Services immediately after generating a certificate. Running the EXE a second time with the /start option will start the Service. The service can also be started using the generic Windows Service APIs.

 

Build 324 Release Notes

The major changes in this build are:

-          Bug fixes from IOP testing;

-          Updated HA Information Model to reflect latest specification;

-          Changed Client Controls library to MIT license (i.e. it is considered sample code);

-          Updated COM AE Wrapper Information Model;

-          Added support for Localization to COM Wrappers;

Build 320 Release Notes

The major changes in this build are:

-          OpenSSL has been upgraded to version 0.9.8o;

-          Added HistoryData/HistoryEvents Quickstarts (Note: A Work in Progress);

-          Incorporated fixes discovered while testing with CTT;

-          Updated to the HA information model/structures (part of spec review);

-          Added auto-reconnect capability AE proxy;

-          Added ability to create PEM private keys to the ConfigurationTool;

-          Fixed bugs in ConfigurationTool;

-          BaseVariableState checks data types on write (automatically decodes IEncodeables);

-          Added support for multi-dimensional index range writes;

-          Added shared cache to CustomNodeManager2 and QuickstartNodeManager;

-          Incorporated Aggregate calculations into the main Server library (Partially complete);

-          Added ability to add translations for StatusCodes and SymbolicIds to ResourceManager;

-          Fixed problems automatically translating exceptions;

-          Added support for real-time aggregate subscriptions; 

 

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.320.0"

The stricter type checking in BaseVariableState could cause behavior of existing code to change because invalid values that were previously accepted are now rejected.

The aggregate calculation code and the specification have not been completely reconciled so more changes are planned in future releases.

The changes to the resource manager mean that application code does not need to fill in the LocalizedText for standard errors. The SDK will use the StatusCode and SymbolicId look up standard LocalizedText which have been added to the ResourceManager.

Build 318 Release Notes

The major changes in this build are:

-          Added support for a HTTPS binding to the .NET Stack;

-          Added UserAuthentication Quickstart (include Kerberos/Integrated Windows Authentication);

-          ModelCompiler now allows ‘_’ in NodeDesign names.

 

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.318.0"

Enabling HTTPS support requires that the Server Certificate be registered with HTTP.SYS. Instructions on how to do this can be found here. The HttpAccessRule.RegisterCertificate method does this from within code; however, developers may already have a standard website SSL certificate and will not need to re-use the application certificate.

On the client side using the Server Certificate will require that HTTPS certificate validation be overridden for the entire process/application domain. The ApplicationInstance.SetUaValidationForHttps method allows clients to do this; however, this affects all HTTPS communication and should only be done for dedicated UA client applications.

Build 316 Release Notes

The major changes in this build are:

-          Fixes a number of issues found at the IOP;

-          Merged HTTP support into the ANSI C stack code base (not operational yet);

 

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.316.0"

Build 314 Release Notes

The major changes in this build are:

-          Fixes a number of Subscription and Session management bugs in the Server;

-          Added support for multidimensional index ranges;

-          All installers now place source code in $(LocalApplicationData)

This build is intended for use with the Beta version of the CTT. Users of the SDK must upgrade to this version before testing with the CTT. Note that the Sample Server still fails some CTT tests these will be resolved in subsequent updates.

Windows 7 users must watch out for problems caused by the virtualization used to protect the $(ProgramFiles) directory. If you have previously changed/built code in the $(ProgramFiles) directory you will find that Windows has created a copy of these files in the following directory:

C:\Users\<username>\AppData\Local\VirtualStore\Program Files

These files are NOT deleted on uninstall and you may find the new installation does not work because the old files in the VirtualStore are hiding the new files.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.314.0"

Build 313 Release Notes

The major changes in this build are:

-          Fixes a number of bugs in the COM wrapper and proxies;

-          Restored the CustomNodeManager that was removed in Build 312;

-          Fixed issues uncovered by the UA Compliance Test Tool;

 

A pre-recorded webinar explaining how to use the COM Interop Components is available on the OPC Foundation website. The title is ‘An Introduction to the UA COM Interop Components’.

 

The last build merged the CustomNodeManager and CustomNodeManager2 classes and this turned out to be a non-trivial API change for some users. The original CustomNodeManager has been restored. The general rule is existing APIs should never change. Anyone who upgrades and finds than an API has changed should post a message to the forum.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.313.0"

Build 312 Release Notes

The major changes in this build are:

-          Re-designed the Configuration Tool user interface;

-          Added support for creating certificates with Certificate Authorities;

-          Fixed issues uncovered by the UA Compliance Test Tool;

-          Updated information model to reflect the latest versions of Part 9, Part 11 and Part 13.

-          Fixed installation problems with appeared on some XP machines.

-          Added a Quickstart that demonstrates the use of Methods.
 

A pre-recorded webinar explaining how to manage security with the new Configuration Tool is available on the OPC Foundation website. The title is ‘Deploying Secure Applications with UA’.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.312.0"

Some freeware code covered under the “Microsoft Public License (Ms-PL)” has been added to the Configuration Tool code base. It is used to manage file permissions and can be removed from the tool if required by a vendor. The copyright notice and license text is part of the Configuration Tool source code project .

Build 310 Release Notes

The major changes in this build are:

-          Added command line utility to generate application instance certificates;

-          Added support for PKCS#12 certificate key files to the .NET and ANSI C Stacks;

-          Added class that allows applications install/uninstall themselves;

-          Added class that automatically recovers sessions after server failure;

-          Completed implementation of HDA proxy;

-          Added new certificate management APIs to the ANSI C stack;

-          Added C++ version of the Local Discovery Server;

-          Updated the OpenSSL libraries to version 0.9.8l;
 

All pre-built applications now support self-install with the /install argument. They also place the private keys in an OpenSSL compatible directory store instead of the Windows Certificate Store.

The Quickstarts now include code that automatically recovers Sessions after network failures.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.310.0"              

Build 308 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.

All of the available downloads are described on a roadmap page.
Documentation for the COM interoperability components is available here.

The major changes include:

This release includes the support for

The auto-generated information models have been updated to reflect the latest versions of Part 9 (A&C), Part 11 (HA) and Part 13 (Aggregates).

The ANSI C Quickstarts now use the ANSI C stack APIs to automatically create self-signed certificates when they are run for the first time.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.308.0"

Build 307 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.

The major changes include:

All of the available downloads have been reorganized a new roadmap page has been added to the website which explains why each of them exists.

Documentation for the COM interoperability components is available here.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.307.0"

Build 305 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.

The major changes include:

The COM DA Proxy and COM DA Wrapper have been tested at the Interoperability Workshop and a number of fixes have been incorporated.

 

Some new Quickstarts have been added including:

                An InformationModel Quickstart that implements the Boiler model from the DevCons.

                A SimpleEvent Quickstart that demonstrates the use of vendor defined events.

               

The Quickstarts are now distributed in a single package called "Quickstarts Source Code" and they include pre-built executables that can be run immediately.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.305.0"

Build 303 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.
Build 303.1 adds the ability to create COM proxies by manually entering the URL.

The major changes include:

The COM DA Proxy now passes the DA2.05 and DA3.0 Compliance Tests

 

Fixed issues affecting communication across firewalls including:
                Added an AlternateBaseAddresses element to the Server configuration;

                Updated the clients to pass the EndpointUrl to the server;
                Added logic in the client to fix potentially incorrect URLs returned by a Server; 

 

Reduced the thread overhead in the server by moving to an asynchronous model.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.303.0"

Build 301 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.

The major changes include:

The COM DA Quickstart which packages the:
                UA COM Proxy Server with support for DA 2.05a/3.0;

                A NodeManager which wraps COM DA 2.05a servers;
                Managed C++ COM DA client and server samples;

 

A COM Interop Merge Module which installs the bits used in the Quickstart.

Project directory reorganizations and renaming including:
                UA Configuration Library moved to the Source\Common directory;

                ModelDesigner renamed to ModelCompiler;

                OPC COM DLL Host renamed to UA COM Proxy Server;

                OPC RCWs merged into the COM Interop Library;

A significant number of ANSI C stack internal bug fixes.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.301.0"

Build 300 Release Notes

Note that v1.0 and v1.1 depend on shared files in the "CommonProgramFiles" and "CommonApplicationData" directories which are upgraded to v1.1 during installation.

All bugs reported on v1.0 are fixed first in v1.1. Users of v1.0 that need particular bug fixes can upgrade to v1.1, apply the patch to their own code base and/or send a request for a v1.0 patch to the OPC Foundation. 

This release of the SDK supports the released versions of Parts 1 through 9 of the UA Specification.

Outstanding issues are reported in the OPC Foundation Mantis database.

Users that have questions or problems can post questions on the OPC Foundation message board.

 

The Compliance Test Tool (CTT) is under development and will be tested with the v1.1 SDK. Vendors who wish to ensure that their products pass the CTT when it is released should plan to upgrade to the v1.1 SDK.

 

License and Copyright Information

All binaries and documentation files installed by this package are subject to the term of the "OPC Redistributables License Version 1.00".

 All source files are subject to one of  

OPC Foundation MIT License Version 1.00
OPC Reciprocal Community License ("RCL") Version 1.00
OPC Reciprocal Community Binary License ("RCBL") Version 1.00

The applicable license agreement is declared at the top of each source file.

If a license declaration is not specified in a source file then the file is subject to the OPC Reciprocal Community Binary License ("RCBL") Version 1.00.

A more detailed overview of the different agreements can be found here.

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/). Only users of the ANSI C stack require OpenSSL.

Build Process

Each release of the SDK is assigned a Build Number and a Build Type. The different Build Types are described in the following table:

 

Snapshot

Snapshot builds are only minimally tested and are used to give developers quick access to new features and bug fixes. There may be backward compatibility issues and some features may be broken. Developers should not migrate to a snapshot build unless they need the feature and/or bug fixes.

Testing

Testing builds are put through basic tests to ensure that nothing is broken but have not been tested for backward compatibility. All Stable and Final builds are posted first as Testing builds which gives developers a chance to check for issues which can be corrected quickly. Any changes will be incorporated into a new revision and posted immediately. If no issues come up the last revision of a Testing build will be re-labeled as Stable or Final. Developers are encouraged to look at Testing builds and see if there are issues. Developers should not migrate to Testing builds unless they absolutely need the functionality or are participating in the testing process.

Stable

Stable builds are put through basic tests to ensure that nothing is broken but have not been tested for backward compatibility. Stable builds are posted to give vendors a chance to verify that it works with existing products. Vendors who have products under development should migrate to stable builds as quickly as possible. If a vendor is already distributing products they may wish to use the sample applications to test for compatibility problems.

Final

Final builds are stable builds that have been verified by one or more vendors. Patches required to fix issues discovered while testing the stable build are applied but no other features are added. Vendors who have products under development should migrate to stable builds as quickly as possible.

 

The version number of all binaries incorporates the SDK version and the build number.

Installers

The SDK is distributed in a number of different packages which are described here.

 

The Installers will place shared files in the following directory:

$(CommonProgramFiles)\OPC Foundation\UA\v1.0.


This includes all headers and libraries required to build C/C++ applications.

 

The .NET assemblies are installed in the following directory:

$(ProgramFiles)\Reference Assemblies\OPC Foundation\UA\v1.1.

 

Source files are installed in the target directory provided when the code is installed.

 

System Requirements

 

All of the installers require the .NET 3.0 SP1 runtime.

The Quickstarts and Source Code require Visual Studio 2008 with SP1; however, a Visual Studio 2005 project is available for the .NET Stack and the .NET Client/Server Toolkits.

 

Redistribution

Vendors that need to redistribute the binaries for their own applications have two options:

1)    Build applications against the binaries signed by the OPC Foundation.

2)    Rebuild the binaries from source and sign them with the vendor’s key.

In both cases vendors shall install copies of the DLLs in a location which is only used by the vendor’s applications. A vendor SHALL NOT install any binary distributed by the OPC Foundation in a common location such as the System32 directory or the GAC. Vendors that require binaries to be installed in common locations SHALL rebuild the binaries from source and sign them. In addition, ANSI C libraries SHALL be renamed to something that identifies the vendor that created the libraries.

The OPC Foundation will produce updates to the SDK that incorporate critical bug fixes. These updates will only be available to corporate members. Vendors are expected to verify that these bug fixes are compatible with their applications before providing the updates to their customers. Users of UA products who are also corporate members must never attempt to upgrade applications with DLLs that they have acquired directly from the OPC Foundation.

Testing

The testing procedures are designed to verify correct behavior and uncover as many problems as possible are described in the UA SDK 1.00 Testing Report; however, these procedures do NOT cover every possible path through the code.

Note that the UA SDK is a collection of software libraries which are not intended for use as standalone applications.  Developers who create software that uses the SDK are responsible for fully testing their applications to ensure that the interaction between their software and the SDK has not uncovered bugs which could not be found with the test procedures described in this document.

Contributors

The OPC Foundation would like to thank the volunteers who, as members of the Early Adopters Working Group, contributed to the development of this SDK.

Christian Zugfil

ascolab

http://www.ascolab.com

Stefan-Helmut Leitner

ABB

http://www.abb.com

Mariusz Postol

CAS

http://www.cas.eu

Alisher Maksumov

OSIsoft

http://www.osisoft.com

Jan Burian, Rudolf Griessl

Iconics, Inc.

http://HYPERLINK "http://www.iconics.com" www.iconics.com

John Hoffman

TimeKeeping Systems Inc.

http://www.guard1.com

Nathan Pocock

Software Toolbox, Inc.

http://www.softwaretoolbox.com

Krishna Bandaru

Tata Consulting Services Ltd.

http://www.tcs.com

Mark Timperley

Invensys

http://www.invensys.com

Alexander Gdalevich

Cognex Corporation

http://www.cognex.com

Craig McMurtry

Microsoft Corporation

http://www.microsoft.com

Yo Funaki

Yokogawa

http://www.yokogawa.com

Alexander Allmendinger

Allmendinger

http://www.allmendinger.de

Anuradha Vidyashanka

Honeywell

http://www.honeywell.com

Tim Fortin

Honeywell

http://www.honeywell.com

Ravil Nugmanov

Matrikon

http://www.matrikon.com