Qt OPC UA 总览#

OPC UA 是一种用于工业应用中数据建模和数据交换的协议。

OPC UA 服务器提供对通过引用相互连接的节点构成的网状数据结构的访问。使用不同类型的引用和包含元数据的节点使客户端能够在不知道其结构的情况下导航和解释数据。

每个节点都有一个唯一的标识符和可以读取和写入的属性。其中还包括 变量 节点,它们存储值,以及具有附加描述参数和返回值的可调用 方法 节点。还提供了在事件发生时和监视变量节点值变化时的 通知

通过使用引用组合节点可以创建复杂对象。继承也是可能的。OPC UA 支持预先准备好的模型,这些模型可以扩展以满足特定需求。

OPC UA 是用于从嵌入式传感器到制造执行和企业管理系统的所有级别的平台无关的 OPC Classic 后继产品。它基于标准消息的服务请求和响应具有面向服务的架构。这些消息在网络中有不同的编码和传输方式。最常见的方式是通过 TCP 的二进制编码。

从 OPC UA 协议中实现的功能#

以下表格总结了 Qt OPC UA 支持的 OPC UA 功能。

功能

读取

批量读取

历史读取(原始)

写入

批量写入

多维数组

浏览

数据更改订阅

事件订阅

修改订阅/监控项

方法调用

浏览路径解析

获取端点

查找服务器

节点管理

注册节点

注销节点

数据类型#

Qt OPC UA 当前支持 OPC UA 数据类型的一个子集。

数据类型

Qt OPC UA 数据类型

Int16, Int32, Int64

直接使用

UInt16, UInt32, UInt64

直接使用

Byte

quint8

SByte

qint8

布尔值

直接使用

Double

直接使用

Float

直接使用

字符串

QString

LocalizedText

QOpcUaLocalizedText

DateTime

QDateTime

ByteString

QByteArray

XmlElement

QString

NodeId

QString

GUID

QUuid

QualifiedName

QOpcUaQualifiedName

StatusCode

UaStatusCode

Range

QOpcUaRange

EUInformation

QOpcUaEUInformation

ComplexNumber

QOpcUaComplexNumber

DoubleComplexNumber

QOpcUaDoubleComplexNumber

AxisInformation

QOpcUaAxisInformation

XV

QOpcUaXValue

Argument

QOpcUaArgument

ExpandedNodeId

QOpcUaExpandedNodeId

ExtensionObject

QOpcUaExtensionObject

StructureDefinition

QOpcUaStructureDefinition

StructureField

QOpcUaStructureField

EnumDefinition

QOpcUaEnumDefinition

EnumField

QOpcUaEnumField

DiagnosticInfo

QOpcUaDiagnosticInfo

SimpleAttributeOperand

QOpcUaSimpleAttributeOperand

AttributeOperand

QOpcUaAttributeOperand

LiteralOperand

QOpcUaLiteralOperand

ElementOperand

QOpcUaElementOperand

RelativePathElement

QOpcUaRelativePathElement

ContentFilterElement

QOpcUaContentFilterElement

事件过滤器

事件过滤器

类及其所有权#

向用户公开了两个重要的类: QOpcUaClientQOpcUaNode

这两个类的对象属于用户所有,并且在不再需要时必须被删除。

日志分类#

以下表格总结了Qt OPC UA使用的日志分类。

日志分类

描述

qt.opcua

QOpcUaProviderQOpcUaClient 生成的插件独立消息

qt.opcua.plugins.open62541

由open62541插件生成的消息

Open62541特定日志分类#

open62541 SDK的日志分类取决于open62541的日志级别,该日志级别在编译时配置。默认为300,启用了:info、warning、error和critical。要获取更详细或更简略的输出,需要重新构建open62541 SDK,使用不同的配置。

以下表格显示了open62541使用的日志分类

Open62541日志分类

描述

qt.opcua.plugins.open62541.sdk.network

由open62541网络生成的消息

qt.opcua.plugins.open62541.sdk.securechannel

由open62541通道生成的消息

qt.opcua.plugins.open62541.sdk.session

由open62541会话生成的消息

qt.opcua.plugins.open62541.sdk.server

由open62541服务器组件生成的消息

qt.opcua.plugins.open62541.sdk.client

由open62541客户端生成的消息

qt.opcua.plugins.open62541.sdk.userland

由open62541用户空间生成的消息

qt.opcua.plugins.open62541.sdk.securitypolicy

由open62541安全策略生成的消息

许可证#

Qt OPC UA模块可在Qt公司提供的商业许可证下使用。此外,它可在免费软件许可证下使用。这些免费软件许可证是GNU Lesser General Public License,版本3,或GNU General Public License,版本2。有关详细信息,请参阅Qt许可协议。

Qt 6.7.0中的Qt OPC UA可能包含以下允许许可证的第三方模块

连接到外部库涉及后端提供者的许可证。

Open62541#

Open62541插件可在与Qt OPC UA相同的许可证下使用。Open62541库本身的许可证为Mozilla Public License v2.0

安全支持由open62541库的OpenSSL插件提供。如果open62541插件是与安全支持一起构建的,但是目标系统上没有OpenSSL,open62541插件将无法加载。