Skip to content

OPC UA Robustness

Mariusz edited this page Apr 19, 2015 · 1 revision

Because it is to be used in the production environment including real-time process control applications, OPC UA is designed especially to provide robustness of the remote access to the underlying process data. OPC UA provides mechanisms for clients to quickly detect and recover from communication failures associated with transfers without having to wait for long timeouts provided by the underlying protocols. The following precautions allow this goal to be met:

  • Redundancy to failover and avoid single point of failure;
  • Session to survive a connection context after breaking current communication transport;
  • Time out mechanism to detect lack of expected functional continuity.

The design of OPC UA ensures that vendors can create redundant clients and redundant servers in a consistent manner. Redundancy may be used for high availability, fault tolerance and load balancing. Generally we can distinguish redundancy of servers/clients, communication paths and process data. Although the specification provides support only for client/server redundancy, product vendors can incorporate all kinds of redundancy into the framework proposed by the specification. For example, a server can establish wireless connection as the means of recovery from cable connection failure or a server can use many data sources bound to a variable to provide continuous updating of the variable value even if one of the sensors has been damaged (to get more: [Redundant, Multi-protocol, Multi-channel OPC UA Server For Highly Distributed Systems,] (http://www.commsvr.com/Products/CommServerUA.aspx ) ).

OPC UA requires a stateful model as the next feature that increases the solution robustness. State information is maintained inside an application session. Examples of state information are subscriptions, user credentials and continuation points for operations that span multiple requests.

Sessions are defined as logical connections between clients and servers. What is worth stressing, each session is independent of the underlying communications protocols. Failures of these protocols do not automatically cause the session to terminate. Sessions terminate based on a client or server request, or based on inactivity of the client.

Clone this wiki locally