Introducing QtOpcUa

basysKom has been working on the new Qt module QtOpcUa which brings support for the industrial communication standard OPC UA into the Qt world. We recently have offered this module as a contribution to the Qt-project. It is currently under review, we aim to make it a tech preview in Qt 5.7.

basysKom will show QtOpcUa based demos at the Qt World Summit 06./07.10.2015 in Berlin. We are happy to discuss use cases, improvements and OPC UA in general. Looking forward to see you in Berlin.

What is OPC UA?

OPC UA is a communication suite for industrial applications like process or factory automation. Its specification is developed and maintained by the OPC Foundation. The first version has been released in 2008. OPC UA is the successor of the popular original OPC standard (which is now OPC Classic). Unlike its predecessor which was based on Microsoft DCOM, OPC UA is designed with the focus on platform independence and scalability. Beside others, it includes features such as data modeling and much improved security mechanisms. This lines the vision of OPC UA to provide a standard communication protocol to be used on all levels of an industrial plant, ranging from field devices to the ERP system. The involvement of companies like Bosch, Siemens and Honeywell within the OPC Foundation as well as the development of the OPC UA specification itself shows that OPC UA will play an important role in future projects and products.

Overview: Architecture and Features

OPC UA uses a server component to provide access to machine data, client applications are used to access or modify data on the server. Servers can also be clients at the same time and for example provide aggregated data from other servers to their clients.
The most important difference to OPC Classic is the capability of data modelling. OPC UA’s basic concept is a server specific address space which is composed from nodes with attributes that are connected by references. Using nodes and references, it is possible to develop an abstract model which represents real world objects like a process or a machine. Objects can be inherited and extended like in object oriented programming languages. OPC UA provides a number of mechanisms for data exchange:

  • Synchronous or asynchronous read/write access to node attributes.
  • A subscription mechanism which allows subscribing to data changes or events from the server. Using subscriptions, no polling is necessary. The server sends a notification each time the value on the server changes or an event occurs.
  • Access to historical data (which could be kept in a database connected to the server or in memory).
  • Method calls which can be used to trigger actions in devices connected to the OPC UA server. These server side methods can be called with parameters and return values that are passed to the client.
  • A browsing service which enables the client to explore the structure of the address space without prior knowledge of the data model.OPC UA also has a built in security concept based on established cryptographic algorithms and certificates. Data can be signed, encrypted or both at the same time, depending on the security and safety requirements. Clients can verify the server’s certificate and use their client certificates to authenticate to the server.

basysKom and OPC UA

QtOpcUa currently focuses on functionality needed to create OPC UA enabled HMIs. It offers a Qt API for a subset of the OPC UA specification by wrapping an existing OPC UA stack. This approach allows to choose the right stack for the given project while always working with the same Qt API. The first release ships with a plugin for the FreeOPCUA  stack. A second plugin for Softing OPC UA toolkit will follow soon.
Future improvements include amongst others an asynchronous API for better client performance, the ability to access historical data and the implementation of additional plugins using other open source or commercial OPC UA SDKs.