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 |
| SByte | qint8 |
| 布尔值 | 直接使用 |
| 双精度 | 直接使用 |
| 浮点数 | 直接使用 |
| 字符串 | QString |
| 本地化文本 | QOpcUaLocalizedText |
| DateTime | QDateTime |
| 字节串 | QByteArray |
| XML元素 | QString |
| 节点ID | QString |
| GUID | QUuid |
| 限定名称 | QOpcUaQualifiedName |
| 状态代码 | QOpcUa::UaStatusCode |
| 范围 | QOpcUaRange |
| 欧盟信息 | QOpcUaEUInformation |
| 复数 | QOpcUaComplexNumber |
| 双精度复数 | QOpcUaDoubleComplexNumber |
| 轴信息 | QOpcUaAxisInformation |
| XV | QOpcUaXValue |
| 参数 | QOpcUaArgument |
| 展开的节点 ID | QOpcUaExpandedNodeId |
| 扩展对象 | QOpcUaExtensionObject |
| 结构定义 | QOpcUaStructureDefinition |
| 结构字段 | QOpcUaStructureField |
| 枚举定义 | QOpcUaEnumDefinition |
| 枚举字段 | QOpcUaEnumField |
| 诊断信息 | QOpcUaDiagnosticInfo |
| 简单属性操作数 | QOpcUaSimpleAttributeOperand |
| 属性操作数 | QOpcUaAttributeOperand |
| 字面量操作数 | QOpcUaLiteralOperand |
| 元素操作数 | QOpcUaElementOperand |
| RelativePathElement | QOpcUaRelativePathElement |
| 内容过滤器元素 | 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 中,可能包含遵循以下宽松许可协议的第三方模块:
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.