OPC UA Book

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 Protocols

Currently, there are two protocols, or more precisely “protocol bindings”, as well as a mixed variant, combining the other two. All three variants can be used in parallel. An application programmer will only observe this due to the different URL he or she has to pass: opc.tcp://server for the binary protocol and http://server for WebService. Apart from that OPC UA works completely transparent with respect to the API. Thus, application developers can switch between protocol bindings without having to adapt or reimplement.

uastacklayers 1. Binary protocol (UA binary)

  • mandatory
  • best performance, smallest overhead
  • takes minimum resources (no XML Parser, SOAP and HTTP required → important for embedded devices)
  • best possible interoperability (binary is explicitly specified and allows less choices during implementation than XML does)
  • only one single TCP port (4840) is used for communication and can easily be used for tunneling or enabled through a firewall

2. Webservice (XML-SOAP)

  • optional, additional
  • extensively supported by available tools, can e.g. easily be used out of Java or .NET environments
  • firewall-friendly; port 443 (https) will usually work without additional configuration

3. Hybrid (UA-Binary via HTTPS)

  • optional
  • less overhead than XML-SOAP
  • combines the advantages of both protocols: binary encoded payload in a HTTPS frame
  • firewall-friendly; port 443 (https) will usually work without additional configuration

The ANSI C stack provided by the OPC foundation supports the UA binary protocol as well as the hybrid protocol. It is expected that most products will communicate via the more efficient binary protocol and the hybrid protocol will ony be used in special cases, e.g. for communications via the internet and only one port (443) may be opened. The webservice implementation is reserved for applications where sufficient resources are available and webservices are absolutely necessary.