Qt OPC UA通信

news2024/12/24 8:30:47

介绍

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等

在这里插入图片描述

流程

客户端

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1789177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC学习笔记(三)高级篇

一、JDBC 优化及工具类封装 1.1 现有问题 1.2 JDBC 工具类封装 V1.0 resources/db.properties配置文件: driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql:///atguigu usernameroot password123456 initialSize10 maxActive20 工具类代码: p…

代码随想录算法训练营第二十八天|93.复原IP地址 ,78.子集 ,90.子集II

93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; class Solution {ArrayList<String> results new ArrayList<>();public List<String> restoreIpAddresses(String s) {if(s.length() > 12){return new ArrayList<>();}char[] ipChars …

f4pga环境搭建教程

f4pga环境搭建教程 背景介绍 FOSS Flows For FPGA (F4PGA) project&#xff0c;是一套开源的FPGA工具链&#xff0c;号称the GCC of FPGAs&#xff0c;作用是将写的硬件描述语言&#xff08;verilog或VHDL&#xff09;转化为可以在FPGA上运行的可执行文件&#xff08;bit文件…

Python实现PPT表格的编写包含新建修改插图(收藏备用)

自动创建一个ppt文件并创建好表格 代码要用到pptx库 pip install python-pptx 创建含有表格的ppt文件代码&#xff1a; from pptx import Presentation from pptx.util import Inches# 创建一个PPT对象 ppt Presentation()# 添加一个幻灯片 slide ppt.slides.add_slide(p…

原美团项目管理专业通道执行主席边国华受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 峰项标&#xff08;北京&#xff09;管理咨询有限公司常务副总裁、原美团项目管理专业通道执行主席边国华先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“从组织级项目管理能力的评价角度看企业实践”。大会将于6月2…

Python读取字节数组

读取和处理bytearray中的值 # 输出&#xff1a;Combined 16-bit value: 1234 python-can发送和接收CAN报文 import can # 创建一个CAN总线对象&#xff08;这取决于你的硬件和驱动程序&#xff09; bus can.interface.Bus(channelcan0, bustypesocketcan) # 定义一个CAN…

django 内置 JSON 字段 使用场景

Django 内置的 JSON 字段&#xff08;JSONField&#xff09;是在 Django 3.1 版本中引入的&#xff0c;用于处理 JSON 格式的数据。JSONField 允许在数据库表中存储和查询 JSON 数据&#xff0c;并且在与 Python 代码交互时自动转换为合适的 Python 数据类型。以下是一些常见的…

成都欣丰洪泰文化传媒有限公司好不好?

在数字经济的浪潮中&#xff0c;电商行业以其独特的魅力和无限的发展潜力&#xff0c;吸引了越来越多的企业和个人投身其中。作为电商服务领域的佼佼者&#xff0c;成都欣丰洪泰文化传媒有限公司凭借专业的团队、优质的服务和创新的理念&#xff0c;不断引领电商新风尚&#xf…

INT202 例题

算法复杂度 O(n)&#xff1a;表示算法的渐进上界。如果一个算法的运行时间是O(n)&#xff0c;那么它的运行时间最多与输入规模n成正比。换句话说&#xff0c;当输入规模n增加时&#xff0c;算法的运行时间不会超过某个常数倍的n。比如&#xff0c;如果一个算法的时间复杂度是O(…

AndroidStudio使用高德地图API获取手机定位

一、高德地图API申请 首先去高德注册开发者账号 下面这两个选项&#xff0c;也是我们项目成功的关键 1.1怎么获取SHA1指纹密码 ①使用AS自带的签名文件 你的用户文件下面会有一个.android文件夹,进入文件夹,在这个路径下打开cmd 如果.android下面没有签名文件参考创建文章 …

【管理咨询宝藏124】通过BLM打通前端业务与财务的双轨制设计方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏124】通过BLM打通前端业务与财务的双轨制设计方案 【格式】PDF版本 【关键词】BLM、组织架构设计、流程优化 【核心观点】 - 运用“拉通业务财务…

【原创】springboot+mysql大学生综合素质测评管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

【python】成功解决“ValueError: Expected 2D array, got 1D array instead”错误的全面指南

成功解决“ValueError: Expected 2D array, got 1D array instead”错误的全面指南 一、引言 在Python的数据分析和机器学习领域&#xff0c;尤其是使用NumPy、Pandas、scikit-learn等库时&#xff0c;经常会遇到各种类型错误。其中&#xff0c;“ValueError: Expected 2D arr…

MP-SPDZ的学习与运用

目录 MP-SPDZ 的介绍主要功能典型应用场景 MP-SPDZ 的安装实验环境准备环境安装MP-SPDZ 下载和编译 MP-SPDZ 的使用测试程序第三方求和三方计算测试冒泡排序比较运算函数语法详解——Sint语法详解——Array基于AES电路实现OPRFORAM隐私集合求交实现两台虚拟机之间进行MPC简单实…

视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、目标 1.理解光流法跟踪特征点的原理。 2.理解直接法是如何估计相机位姿的。 3.实现多层直接法的计算。 特征点法存在缺陷&#xff1a; 二、光流(Optical Flow) …

SEO之关键词扩展(二)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 &#xff08;接上一篇。。。&#xff09; 5、各种形式的变体 1.同义词 假设核心关键词是酒店&#xff0c;…

Python版《消消乐》,附源码

曾经风靡一时的消消乐&#xff0c;至今坐在地铁上都可以看到很多人依然在玩&#xff0c;想当年我也是大军中的一员&#xff0c;那家伙&#xff0c;吃饭都在玩&#xff0c;进入到高级的那种胜利感还是很爽的&#xff0c;连续消&#xff0c;无限消&#xff0c;哈哈&#xff0c;现…

Kotlin中的StateFlow和SharedFlow有什么区别?

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在Kotlin的协程库kotlinx.coroutines中&#xff0c;StateFlow和SharedFlow是两种用于处理事件流的API&#xff0c;它们有相似之处&#xff0c;但…

MySQL中获取时间的方法

大家好&#xff0c;在MySQL数据库开发中&#xff0c;获取时间是一个常见的需求。MySQL提供了多种方法来获取当前日期、时间和时间戳&#xff0c;并且可以对时间进行格式化、计算和转换。 以下是一些常用的MySQL时间函数及其示例&#xff1a; 1、NOW()&#xff1a;用于获取当前…

GPT-4与GPT-4O的区别详解:面向小白用户

1. 模型介绍 在人工智能的语言模型领域&#xff0c;OpenAI的GPT-4和GPT-4O是最新的成员。这两个模型虽然来源于相同的基础技术&#xff0c;但在功能和应用上有着明显的区别。 GPT-4&#xff1a;这是一个通用型语言模型&#xff0c;可以理解和生成自然语言。无论是写作、对话还…