Qt OPC UA初体验

打印 上一主题 下一主题

主题 672|帖子 672|积分 2016

介绍

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

拉取开源代码
  1. git clone https://github.com/qt/qtopcua --recursive
复制代码
我使用的Qt版本是6.7.1 MSVC2019 64bit,因此要切换一下qtopcua堆栈的版本也为6.7.1,否则编译不过
  1. git checkout 6.7.1
复制代码
在顶层CMakeLists.txt设置Debug调试模式、使能构建Example的开关
  1. set(CMAKE_BUILD_TYPE Debug)
  2. 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等

流程

客户端


  • QOpcUaPkiConfiguration配置PKI,天生应用id,这是是为了加密通信过程
  • QOpcUaProvider通过open62541插件创建QOpcUaClient对象,QOpcUaClient对象需要设置PKI、应用id
  • QOpcUaClient对象对整个通信流程负责:

    • 通信状态(connected、disconnected、errorChanged、stateChanged、endpointsRequestFinished、findServersFinished)
    • 绑定url和port查找服务器
    • 获取Endpoints
    • 连接Endpoints

  • QOpcUaClient根据nodeId获取指定节点QOpcUaNode,QOpcUaNode可以访问以下attribute信息:

    • Value
    • NodeClass
    • Description
    • DataType
    • BrowseName
    • DisplayName
    • Historizing

  • QOpcUaNode可以通过信号来更新相应的节点信息

    • attributeRead
    • attributeUpdated
    • browseFinished

服务端

服务器利用open62541接口配置

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表