The first OPC Unified Architecture Book, written by Wolfgang Mahnke, Stefan-Helmut Leitner and Matthias Damm one of the co-founders of ascolab.

OPC UA Innovation


The previous technology, today called “classic OPC”, defined different APIs for typical tasks (Data Access, Alarms&Events, Historical Data Access et al.). This custom interfaces were based on the COM (Component Object Model) technology introduced by Microsoft together with the operating system Windows NT. This linking to COM/DCOM and the support by development tools of Microsoft Visual Studio, ATL (Active Template Library) among other things, admittedly made a major contribution to the propagation of “classic OPC”, but also had some important drawbacks:

  • frequent communication problems concerning DCOM (Distributed COM)
  • no configurable timeouts (e.g. the detection of a connection loss could take up to eight minutes)
  • fixation to desktop variants of the Windows operating system (no or only limited support of Windows CE)
  • discontinuation of the COM technology when .NET was introduced
  • no “real” security; COM does only support a application based authentication by user context
  • no control on what is happening; COM/DCOM is a “black box”: developers have no source code and are completely at the mercy of errors


For these (and some other) reasons the decision was made to develop a communication stack for OPC UA on its own. The key features of this communication stack are:

  • platform independent communication: no special operating system or CPU architecture is required
  • language independence: beside a portable ANSI C implementation a C# and a Java implementation are supported
  • scalable from embedded control software up to company or management information systems
  • the ANSI C stack can be compiled for multithreaded as well as singlethreaded/single task operation (which is important for ports to embedded devices)
  • own security implementation based on most recent standards guarantees “real” security (encryption, signing, application based authentication)
  • configurable timeouts for each service call
  • integrated detection of connection losses
  • chunking of large data packets
  • abstracted architecture for to easily allow expansion or the replacement of individual components (encoding, security, transport, platform)

The ANSI C communication stack as well as the implementations for .NET and Java is only the beginning of many new features. The standardized object oriented information model including an expandable type system (inheritance) and referencing combines the pure communication protocol with the capabilities for describing data as known from programming languages.