Qt OPC UA通信
介绍
OPC UA全称Open Platform Unified Architecture,开放平台统一架构,是工业自动化领域通用的数据交换协议,它有两套主要的通信机制:1.客户端-服务器通信;2.发布订阅。Qt对OPC UA通信标准也提供了支持,目前还是第三方库的形式(不过Qt官方貌似有文档了),基于open62541开源库进行了封装,使得C++开发者也能很快捷、从容、深入的开发工业自动化软件(组态软件),项目地址:https://github.com/qt/qtopcua
编译
拉取开源代码
git clone https://github.com/qt/qtopcua --recursive
我使用的Qt版本是6.7.1 MSVC2019 64bit,因此要切换一下qtopcua仓库的版本也为6.7.1,否则编译不过
git checkout 6.7.1
在顶层CMakeLists.txt设置Debug调试模式、使能构建Example的开关
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等

流程
客户端
QOpcUaPkiConfiguration配置PKI,生成应用id,这是是为了加密通信过程QOpcUaProvider通过open62541插件创建QOpcUaClient对象,QOpcUaClient对象需要设置PKI、应用idQOpcUaClient对象对整个通信流程负责:- 通信状态(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)那一套有类似的地方,都属于数据交换协议
Qt OPC UA通信的更多相关文章
- OPC协议解析-OPC UA OPC统一架构
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...
- OPC UA
OPC UA将来自不同厂商不同设备的数据进行统一格式.统一显示. OPC: originally knowns as “OLE for Process Control”, now “Open Plat ...
- 从 OPC 到 OPC UA
[前言]OPC是一个工业标准,所属国际组织是OPC基金会,现有会员已超过220家,包括世界上所有主要的自动化控制系统.仪器仪表及过程控制系统的公司. [经典 OPC]经典OPC规范基于微软Window ...
- C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作
OPC UA简介 OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术难以满足日益复杂的环境,在可扩展性,安全性,跨平台性方面的不足日益明显,所以OPC基金会在几年前提出了面 ...
- OPC UA (统一架构)的优势
OPC UA OPC统一架构(OPC Unified Architecture)是OPC基金会(OPC Foundation)创建的新技术,更加安全.可靠.中性(与供应商无关),为制造现场到生产计划或 ...
- 转:OPC协议解析-OPC UA OPC统一架构
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...
- C# 实现opc ua服务器的远程连接(转)
原文转自:https://www.cnblogs.com/dathlin/p/7724834.html OPC UA简介 OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术 ...
- OPC UA 统一架构) (一)
OPC UA 一 .OPC UA简介 OPC UA(OPC Unified Architecture)是下一代OPC统一体系架构,是一种基于服务的.跨越平台的解决方案. OPC UA具有如下特点: 1 ...
- PLC转OPC UA的协议转换网关需要多少钱呢?
嵌入式OPC UA网关BL102简化了OPC UA程序的开发与IIOT工业物联网应用 在制造业数字化升级过程中,我们碰到最多的工作便是针对每一款PLC去开发一套OPC UA程序,然后通过这套程序去读取 ...
- OPC UA分布式IO模块
OPC UA IO模块对工业物联网的影响 OPC UA IO模块是指IO模块支持OPC UA协议,可以直接与OPC Client进行通信,这样就可以从OPC Client上直接远程通过以太网对IO口进 ...
随机推荐
- easyx的使用,图像插入(2.0)
本文从B站学习,借鉴,一些贴图素材借鉴游戏网图: 视频链接:图像输出_哔哩哔哩_bilibili 想使用图片,先用easyx提供的数据类型定义一个变量: 在对图片进行加载,差不多像是赋值,这个变量名相 ...
- 【Oracle】获取字符串中特定字符在字符串中出现的次数
[Oracle]获取字符串中特定字符在字符串中出现的次数 使用regexp_count函数 例子: select regexp_count('A,B,D,E;Q;F;GQWEQWE:qwe',';') ...
- Fluid 助力阿里云 Serverless 容器极致提速
简介: 本文展示了一个在 ASK 环境中运行 Fluid 的完整数据访问示例,希望能够帮助大家了解 Fluid 的使用体验.运行效果以及 Serverless 和数据密集型应用结合的更多可行性. 作者 ...
- TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评
简介: 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异.二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础.本次测试将重点关注不同分布式 ...
- Flink 和 Iceberg 如何解决数据入湖面临的挑战
简介: 4.17 上海站 Meetup 胡争老师分享内容:数据入湖的挑战有哪些,以及如何用 Flink + Iceberg 解决此类问题. 一.数据入湖的核心挑战 数据实时入湖可以分成三个部分,分别是 ...
- 2018-2-13-win10-uwp-右击选择-GridViewItem-
title author date CreateTime categories win10 uwp 右击选择 GridViewItem lindexi 2018-2-13 17:23:3 +0800 ...
- LVGL学习资料
一.资料整理 官网:https://lvgl.io/ 使用手册: 官方的使用手册是英文版的,百问网将其翻译成中文版的文档.地址如下: 官方使用文档:https://docs.lvgl.io/maste ...
- 用友BIP全面预算
全面预算是企业在经营过程中制定并实施的一种财务管理工具,它考虑了企业的各个方面,包括销售.采购.生产.财务.人力资源等,以全面的视角规划和控制企业的财务活动. 用友BIP全面预算数智化解决方案利用了& ...
- 我用 GitHub 9.8k 的 Go 语言 2D 游戏引擎写了个游戏
前言 hi,大家好,这里是白泽.今天给大家分享一个 GitHub 9.8k 的 Go 语言 2D 游戏引擎. https://github.com/hajimehoshi/ebiten 引擎的贡献者依 ...
- docker-compose 配置LNMP环境
仓库地址: https://gitee.com/haima1004/docker-lnmp 参考文档: 视频地址: https://www.bilibili.com/video/BV1S54y1B7K ...