Qt OPC UA通信

介绍

OPC UA全称Open Platform Unified Architecture,开放平台统一架构,是工业自动化领域通用的数据交换协议,它有两套主要的通信机制:1.客户端-服务器通信;2.发布订阅。Qt对OPC UA通信标准也提供了支持,目前还是第三方库的形式(不过Qt官方貌似有文档了),基于open62541开源库进行了封装,使得C++开发者也能很快捷、从容、深入的开发工业自动化软件(组态软件),项目地址:https://github.com/qt/qtopcua

编译

拉取开源代码

bash 复制代码
git clone https://github.com/qt/qtopcua --recursive

我使用的Qt版本是6.7.1 MSVC2019 64bit,因此要切换一下qtopcua仓库的版本也为6.7.1,否则编译不过

bash 复制代码
git checkout 6.7.1

在顶层CMakeLists.txt设置Debug调试模式、使能构建Example的开关

bash 复制代码
set(CMAKE_BUILD_TYPE Debug)
set(QT_BUILD_EXAMPLES ON)

接着编译构建就可以了

运行

opcuaviewer

在构建目录进行以下操作:拷贝plugins\opcua文件夹到examples\opcua\opcuaviewer目录下,然后运行opcuaviewer.exe,这个程序用于查看节点运行时数据

simulationserver

examples\opcua\waterpump\simulationserver目录下的simulationserver.exe也跑一下,这是一个后台程序,没有界面,使用的端口号是43344

通信验证

依次配置以下信息:①、②、③、④、⑤,主要端口号要改为43344

即可查看到节点的数据信息:Variable、Object、Method等

流程

客户端

  1. QOpcUaPkiConfiguration配置PKI,生成应用id,这是是为了加密通信过程

  2. QOpcUaProvider通过open62541插件创建QOpcUaClient对象,QOpcUaClient对象需要设置PKI、应用id

  3. QOpcUaClient对象对整个通信流程负责:

    • 通信状态(connected、disconnected、errorChanged、stateChanged、endpointsRequestFinished、findServersFinished)
    • 绑定url和port查找服务器
    • 获取Endpoints
    • 连接Endpoints
  4. QOpcUaClient根据nodeId获取指定节点QOpcUaNodeQOpcUaNode可以访问以下attribute信息:

    • Value
    • NodeClass
    • Description
    • DataType
    • BrowseName
    • DisplayName
    • Historizing
  5. QOpcUaNode可以通过信号来更新相应的节点信息

    • attributeRead
    • attributeUpdated
    • browseFinished

服务端

服务器利用open62541接口配置

  1. 初始化服务器:调用UA_Server_new初始化一个服务器实例、调用UA_ServerConfig_setMinimal绑定端口
  2. 先生成对象,每个对象有唯一的nodeId,生成对象核心的函数是:UA_Server_addObjectNode
  3. 根据对象生成变量节点,核心的函数是:UA_Server_addVariableNode
  4. 根据对象生成函数节点,核心的函数是:UA_Server_addMethodNode
  5. 关闭服务器,要调用UA_Server_run_shutdown、UA_Server_delete接口,对象的nodeId也要清理一下

总结

总体来说OPC UA通信并不难,跟ROS、ROS2(xml、protobuf)那一套有类似的地方,都属于数据交换协议

相关推荐
远创智控研发五部1 天前
详解EtherNet/IP转CAN边缘计算网关:基恩士PLC与CAN IO卡通讯配置步骤
工业物联网·以太网模块·工业自动化·以太网通讯处理器·基恩士plc
远创智控研发五部5 天前
DeviceNet转ProfiNet边缘计算网关赋能:西门子 1200PLC 与库卡机器人通讯配置完整案例
数据采集·西门子plc·工业自动化·工业智能网关·协议转换网关·网关模块·库卡机器人
远创智控研发五部5 天前
EtherCAT转EtherNet/IP工业智能网关:保障罗克韦尔 PLC 与欧姆龙 PLC 双向稳定通讯
数据采集·plc·工业物联网·工业自动化·协议转换网关·网关模块
远创智控研发五部7 天前
突破协议壁垒:CCLINK转EtherNet/IP在大型温室罗克韦尔PLC伺服通讯中的实践
数据采集·罗克韦尔plc·工业自动化·协议转换网关·网关模块
宏集科技工业物联网7 天前
行业认可丨宏集Web物联网HMI荣获CEC 2025年度编辑推荐奖
工业物联网·工业自动化·hmi·工控屏·工业触摸屏·web hmi
疆鸿智能研发小助手8 天前
EtherCAT转PROFINET网关:助力KUKA机器人实现“焊”装自由!
网关·机器人·工业自动化·ethercat·profinet·协议转换网关
捷米特研发一部9 天前
EtherNet/IP转EtherNet/IP协议转换网关驱动:欧姆龙与罗克韦尔PLC通讯配置完整案例
数据采集·罗克韦尔plc·工业自动化·工业网关·协议转换网关·网关模块
捷米特研发一部10 天前
EtherNet/IP转ProfiNet智能网关配置指南:西门子1500PLC与多台机器人通讯
数据采集·西门子plc·工业自动化·工业智能网关·网关模块·ethercat通讯
远创智控研发五部11 天前
跨网段耦合器助汽车零部件线实现PLC与MES跨网段互联
数据采集·工业物联网·工业自动化·跨网段耦合器
远创智控研发五部11 天前
EtherCAT转EtherNet/IP协议模块打通编码器与工控机系统集成的自动化方案
数据采集·工业物联网·工业自动化·协议转换网关·网关模块