本页内容

Qt OPC UA 概述

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

OPC UA 服务器提供对数据的访问,这些数据组织在一个由引用连接的节点网格中。通过使用不同的引用类型和包含元数据的节点,客户端无需事先了解数据结构即可导航和解释数据。

每个节点都有一个唯一的标识符和可读写属性。其中包括存储值的“变量”节点,以及带有描述参数和返回值的附加节点的可调用“方法”节点。此外,还提供了事件通知功能,以及对“变量”节点值变化的监控功能。

通过使用引用组合节点,可以创建复杂的对象。此外,还支持继承。OPC UA 支持预定义模型,这些模型可以扩展以满足特殊需求。

OPC UA 是 OPC Classic 的平台独立继任者,旨在应用于从嵌入式传感器到制造执行系统和企业资源规划系统的各个层面。它采用基于标准化消息的服务请求与响应的面向服务的架构。 这些消息可以通过多种方式进行编码并在网络上传输。最常见的方式是通过 TCP 进行二进制编码。

OPC UA 协议中已实现的功能

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

功能
读取
批量读取
历史数据读取(原始)
写
批量写入
多维数组
浏览
数据变更订阅
事件订阅
修改订阅/被监控项
方法调用
浏览路径解析
GetEndpoints
查找服务器
节点管理
RegisterNodes
注销节点

数据类型

Qt OPC UA 目前支持 OPC UA 数据类型中的一部分。

数据类型Qt OPC UA 数据类型
Int16、Int32、Int64直接使用
UInt16、UInt32、UInt64直接使用
字节quint8
SByteqint8
布尔值直接使用
双精度直接使用
浮点数直接使用
字符串QString
本地化文本QOpcUaLocalizedText
DateTimeQDateTime
字节串QByteArray
XML元素QString
节点IDQString
GUIDQUuid
限定名称QOpcUaQualifiedName
状态代码QOpcUa::UaStatusCode
范围QOpcUaRange
欧盟信息QOpcUaEUInformation
复数QOpcUaComplexNumber
双精度复数QOpcUaDoubleComplexNumber
轴信息QOpcUaAxisInformation
XVQOpcUaXValue
参数QOpcUaArgument
展开的节点 IDQOpcUaExpandedNodeId
扩展对象QOpcUaExtensionObject
结构定义QOpcUaStructureDefinition
结构字段QOpcUaStructureField
枚举定义QOpcUaEnumDefinition
枚举字段QOpcUaEnumField
诊断信息QOpcUaDiagnosticInfo
简单属性操作数QOpcUaSimpleAttributeOperand
属性操作数QOpcUaAttributeOperand
字面量操作数QOpcUaLiteralOperand
元素操作数QOpcUaElementOperand
RelativePathElementQOpcUaRelativePathElement
内容过滤器元素QOpcUaContentFilterElement
事件过滤器QOpcUaMonitoringParameters::EventFilter

类与所有权

向用户公开了两个重要的类:QOpcUaClient 和QOpcUaNode 。

这两个类的对象均由用户拥有,在不再需要时必须将其删除。

日志记录类别

下表总结了Qt OPC UA 使用的日志记录类别。

日志类别描述
qt.opcua由QOpcUaProvider 和QOpcUaClient
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 模块由The Qt Company提供商业许可。此外,该模块还提供自由软件许可。这些自由软件许可包括GNU较少通用公共许可证第3版或GNU通用公共许可证第2版。更多详细信息请参阅Qt许可说明。

Qt OPC UA 在 Qt 6.12.0 中,可能包含遵循以下宽松许可协议的第三方模块:

Open62541, version v1.5.7

Mozilla 公共许可证 2.0、知识共享零版 1.0 通用版、知识共享署名-相同方式共享 4.0 国际版、BSD 三条款“新”或“修订”许可证、Apache 许可证 2.0 以及 MIT 许可证

链接到外部库涉及后端提供商的许可。

Open62541

Open62541 插件采用与Qt OPC UA 相同的许可协议。Open62541 库本身采用Mozilla Public License v2.0 许可。

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

© 2026 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.