论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
Qt OPC UA初体验
Qt OPC UA初体验
商道如狼道
金牌会员
|
2024-6-6 06:44:56
|
显示全部楼层
|
阅读模式
楼主
主题
672
|
帖子
672
|
积分
2016
介绍
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、应用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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
商道如狼道
金牌会员
这个人很懒什么都没写!
楼主热帖
SQLI-LABS(Less-5)
【python】实现文章同步csdn社区自动化 ...
到底什么是小程序插件?
微信小程序云开发中的command简介 ...
SAP集成技术(十)混合集成平台 ...
一文详解如何在 ChengYing 中通过产品 ...
MySQL数据库安装
软件测试 黑盒测试之等价类划分测试 ...
【技术积累】Spring Boot中的基础知识 ...
选读SQL经典实例笔记08_区间查询 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表