Qt OPC UA Overview
OPC UA is a protocol for data modelling and exchange of data in industrial applications.
An OPC UA server offers access to data that is organized in a mesh of nodes connected by references. The use of different reference types and nodes containing metadata enable a client to navigate and interpret the data without knowing their structure in advance.
Each node has a unique identifier and attributes that can be read and written. Among others, there are Variable nodes that store values and callable Method nodes with attached nodes describing parameters and return values. Notifications in case of events and monitoring of Variable nodes for value changes are offered too.
Complex objects can be created by combining nodes using references. Inheritance is also possible. OPC UA offers support for pre-made models that can be extended to fit special needs.
OPC UA is the platform-independent successor of OPC Classic intended for usage on all levels, from embedded sensors up to manufacturing execution and enterprise resource planning systems. It has a service-oriented architecture based on standardized messages for service requests and responses. There are different ways for these messages to be encoded and transported over the network. The most common way is binary encoding over TCP.
Implemented Features from the OPC UA Protocol
The following table summarizes the features of OPC UA that are supported by Qt OPC UA.
Feature | Open62541 plugin | UACpp plugin |
---|---|---|
Read | X | X |
Batch read | X | X |
Write | X | X |
Batch write | X | X |
Multidimensional arrays | X | X |
Browse | X | X |
Data change subscriptions | X | X |
Event subscriptions | X | X |
Modify subscriptions / monitored Items | X | X |
Method calls | X | X |
Browse path resolution | X | X |
GetEndpoints | X | X |
FindServers | X | X |
NodeManagement | X | X |
Data Types
A subset of the OPC UA data types is currently supported in Qt OPC UA. Most of them are available with all backends.
Data type | Open62541 plugin | UACpp plugin | Qt OPC UA data type |
---|---|---|---|
Int16, Int32, Int64 | X | X | Directly used |
UInt16, UInt32, UInt64 | X | X | Directly used |
Byte | X | X | quint8 |
SByte | X | X | qint8 |
Boolean | X | X | Directly used |
Double | X | X | Directly used |
Float | X | X | Directly used |
String | X | X | QString |
LocalizedText | X | X | QOpcUaLocalizedText |
DateTime | X | X | QDateTime |
ByteString | X | X | QByteArray |
XmlElement | X | X | QString |
NodeId | X | X | QString |
GUID | X | X | QUuid |
QualifiedName | X | X | QOpcUaQualifiedName |
StatusCode | X | X | QOpcUa::UaStatusCode |
Range | X | X | QOpcUaRange |
EUInformation | X | X | QOpcUaEUInformation |
ComplexNumber | X | X | QOpcUaComplexNumber |
DoubleComplexNumber | X | X | QOpcUaDoubleComplexNumber |
AxisInformation | X | X | QOpcUaAxisInformation |
XV | X | X | QOpcUaXValue |
Argument | X | X | QOpcUaArgument |
ExpandedNodeId | X | X | QOpcUaExpandedNodeId |
ExtensionObject | X | X | QOpcUaExtensionObject |
Classes and Ownership
Two important classes are exposed to the user: QOpcUaClient and QOpcUaNode.
Objects of both classes are owned by the user and must be deleted when they are no longer needed.
Logging Categories
The following table summarizes the logging categories that are used by Qt OPC UA.
Logging Category | Description |
---|---|
qt.opcua | Plugin independent messages generated by QOpcUaProvider and QOpcUaClient |
qt.opcua.plugins.open62541 | Messages generated by the open62541 plugin |
qt.opcua.plugins.uacpp | Messages generated by the UACpp plugin |
Licenses
The Qt OPC UA module is available under commercial licenses from The Qt Company. In addition, it is available under free software licenses. These free software licenses are GNU Lesser General Public License, version 3, or the GNU General Public License, version 2. See Qt Licensing for further details.
Qt OPC UA in Qt 5.15.18 may contain third party modules under following permissive licenses:
Creative Commons CCZero 1.0 Universal License | |
Mozilla Public License 2.0 |
Linking to external libraries involves licenses from the backend providers.
Open62541
The Open62541 plugin is available under the same licenses as Qt OPC UA. The Open62541 library itself is licensed under Mozilla Public License v2.0.
UA CPP
The UA CPP plugin is available under commercial licenses from The Qt Company. In addition, it is available under the GNU General Public License, version 3. The UA CPP library itself is available under commercial licenses from Unified Automation.
© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.