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)那一套有类似的地方,都属于数据交换协议

相关推荐
工业通讯探索者6 小时前
Ethernet/IP转ProfiNet边缘计算网关在能源管理中的应用:跨系统数据聚合与智能分析
工业物联网·工业自动化·协议转换网关·网关模块·profinet通讯
工业通讯探索者2 天前
CCLinkIE转ModbusTCP借网关之力打破组态王与三菱PLC通讯隔阂
工业物联网·工业自动化·协议转换网关·网关模块
工业通讯探索者23 天前
EtherCAT转ProfiNet协议转换网关构建西门子PLC与海克斯康机器人的冗余通信链路
工业物联网·工业自动化·数据交互·协议转换网关·总线协议
北京阿尔泰科技厂家1 个月前
阿尔泰科技 USB多功能数据采集卡 16位模拟量信号采集 LabVIEW采集卡
物联网·labview·模拟量采集·工业自动化·数据采集卡
北京阿尔泰科技厂家1 个月前
USB数据采集卡 Labview采集卡 32路AD模拟量采集 DAQ卡
labview·工业自动化·仪器仪表·数据采集卡·daq采集卡
北京阿尔泰科技厂家1 个月前
2路模拟量同步输出卡、任意波形发生器卡—PCIe9100数据采集卡
fpga开发·工业自动化·数据采集卡·任意波形发生器·模拟量输出卡
gjy187061625271 个月前
工业自动化核心:BM100 信号隔离器的强大力量
工业自动化
宏集科技工业物联网2 个月前
应用案例 | 精准控制,高效运行—宏集智能控制系统助力SCARA机器人极致性能
机器人·运动控制·工业控制·工业自动化·工业pc
WINDHILL_风丘科技2 个月前
Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
modbus·工业自动化·profinet·工业以太网·线上研讨会
捷米特研发一部2 个月前
Profinet 转 EtherNet/IP 如何解锁西门子 1500 与罗克韦尔 PLC 通讯潜能
服务器·网络·物联网·工业自动化·协议转换网关