当前位置: 首页 > news >正文

Qt+OPC开发笔记(一):OPCUA介绍、open62541介绍、编译与基础环境Demo

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144516882

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Qt开发专栏:三方库开发技术

上一篇:没有了
下一篇:敬请期待…


前言

  本篇介绍OPC协议,相关开源库、编译并搭建Qt开发OPC的基础环境。


Demo

  在这里插入图片描述


OPC

  OPC(OLE for Process Control)是一个工业标准,用于实现工业自动化系统中的不同设备和应用软件之间的数据交换和互操作性。以下是关于OPC的详细介绍:

OPC的起源与发展

  OPC起源于上世纪90年代,随着工业自动化技术的不断发展,不同厂商的设备和应用软件之间的数据交换和互操作性成为了一个亟待解决的问题。为了解决这个问题,OPC基金会(OPC Foundation)应运而生,并推出了OPC标准。经过多年的发展,OPC已经从一个简单的数据交换标准演变成了一个完整的工业自动化通信体系架构。
  OPC的核心特性

  • 跨平台性:OPC标准不依赖于特定的操作系统或硬件平台,可以在不同的操作系统和硬件平台上实现互操作性。
  • 实时性:OPC标准支持实时数据交换,可以满足工业自动化系统对实时性的要求。
  • 安全性:OPC标准提供了多种安全机制,如数据加密、身份验证等,确保数据传输的安全性和完整性。
  • 易用性:OPC标准提供了简单的接口和协议,使得开发人员可以轻松地实现设备之间的数据交换和互操作性。

OPC的体系架构

  OPC的体系架构主要包括以下几个部分:

  • OPC服务器:OPC服务器是工业自动化系统中的数据源,它负责采集和存储设备的数据,并提供给OPC客户端进行访问。
  • OPC客户端:OPC客户端是工业自动化系统中的数据消费者,它可以从OPC服务器获取数据,并进行处理和分析。
  • OPC接口:OPC接口是OPC服务器和OPC客户端之间进行数据交换的桥梁,它定义了数据交换的格式和协议。

OPC的应用场景

  OPC广泛应用于工业自动化领域,包括但不限于以下几个方面:

  • 监控系统:OPC可以用于构建监控系统,实时采集和显示设备的运行状态和参数。
  • 控制系统:OPC可以用于构建控制系统,实现对设备的远程控制和调节。
  • 数据采集系统:OPC可以用于构建数据采集系统,采集设备的实时数据,并进行存储和分析。
  • 历史数据访问系统:OPC支持历史数据访问功能,可以查询和分析设备的历史数据,为优化生产和管理提供决策支持。

OPC UA(Unified Architecture)

  随着工业自动化技术的发展和物联网的兴起,OPC基金会推出了OPC UA标准。OPC UA是OPC标准的升级版,它采用了面向服务的架构和统一的数据模型,提供了更加灵活和强大的数据交换和互操作性功能。OPC UA还支持跨平台、跨系统的数据交换和远程监控功能,为工业自动化领域带来了更加广泛和深入的应用。

OPC UA开源库

  基于C/C++的开源库有如下两个:

open62541

  • 主要功能:一个轻量级的、嵌入式C/C++ OPC UA实现。
  • 编程语言:C/C++。
  • 特点:支持跨平台;遵循Mozilla Public License v2.0许可证;提供完整的OPC UA协议栈实现,包括服务器、客户端、订阅和发布等功能;易于集成和扩展;有详细的文档和教程。

FreeOpcUa

  • 主要功能:一个功能齐全的C++ OPC UA服务器和客户端库。
  • 编程语言:C++。
  • 特点:遵循LGPL-3.0许可证;支持数据变化事件、状态变化事件和过滤功能;提供基本的身份验证和证书处理功能;支持自动代码生成;有详细的文档和示例代码;最近新增了Python绑定和自动化工具等功能。

open62541

概述

  open62541是一个开源的OPC UA(OPC统一架构)协议栈实现,open62541用C99和C++98语言的通用子集编写,可与所有主要编译器一起使用,并提供实现专用OPC UA客户端和服务器的必要工具,或将基于OPC UA的通信集成到现有应用程序中。open62541库与平台无关,所有特定于平台的功能都是通过可交换的插件实现的,且为主要操作系统提供了插件实现。

功能特点

  • 开源免费:open62541根据Mozilla Public License v2.0获得许可,因此open62541库可用于非开源项目。只有对open62541库本身的更改才需要在同一许可下发布。插件以及服务器和客户端示例都属于公共域(CC0许可证),可以在任何许可下重复使用,并且不必发布更改。
  • 跨平台:open62541支持多种操作系统和平台,包括Windows、Linux、macOS等,具有良好的可移植性。
  • 高性能:open62541采用了基于事件的架构和异步I/O机制,具有非常好的性能和伸缩性,适用于实时性要求较高的应用场景。
  • 安全性:OPC UA协议提供了多种安全机制,包括身份验证、加密传输等,open62541作为OPC UA协议栈的实现,也继承了这些安全特性。
  • 扩展性:open62541支持灵活的数据模型和服务扩展,可以根据具体需求进行定制和扩展。同时,它还支持插件式开发,可以方便地增加协议扩展、认证机制、加密协议等功能。

应用场景

  open62541可以应用于各种工业自动化和物联网场景,例如:

  • 工业控制系统:实现不同设备之间的数据交换和控制,实现工业自动化系统的集成和优化。
  • 智能制造:实现设备之间的数据共享和协同,提高生产效率和质量。
  • 智能建筑:实现建筑设备的监控和管理,提高能源利用效率和舒适度。
  • 物联网应用:实现物联网设备之间的数据传输和通信,实现智能家居、智能城市等应用场景。

源码下载

  官方网站:http://open62541.org
  在这里插入图片描述

  在这里插入图片描述

  GitHub:https://github.com/open62541/open62541
  群下载:群号4597637,点击群文件搜索“open62541


编译open62541

步骤一:下载解压

  在这里插入图片描述

步骤二:配置configure

  使用cmake进行配置:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  配置顺利通过,记住配置下安装install的路径,然后还需要重新配置生效:
  在这里插入图片描述

步骤三:生成工程Generate

  在这里插入图片描述
  在这里插入图片描述

  至此,CMake使用完成。

步骤四:编译

  在这里插入图片描述

  在这里插入图片描述

  开始编译:
  在这里插入图片描述

  在这里插入图片描述

  编译完成
  在这里插入图片描述

步骤五:安装install

   在这里插入图片描述

  在这里插入图片描述

步骤六:检查安装目录

  在这里插入图片描述

  在这里插入图片描述

  .a是静态库的方式,可以configre配置成动态库的方式,这里不管了。
  修改为release版本,只有1.2MB了:
  在这里插入图片描述


模块化

  在这里插入图片描述


Demo源码

QString OpcClientManager::getVersion()
{UA_Client *client;LOG << client;client = UA_Client_new();LOG << client;UA_ClientConfig_setDefault(UA_Client_getConfig(client));return QString(UA_OPEN62541_VERSION);
}

  在这里插入图片描述


工程模板v1.0.0

  在这里插入图片描述


入坑

入坑一:找不到库

问题

  函数报错
   在这里插入图片描述

  在这里插入图片描述

原因

  这是少了一些windows的基础库。

解决

  补上

LIBS += -lws2_32

  在这里插入图片描述


上一篇:没有了
下一篇:敬请期待…


本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144516882

相关文章:

Qt+OPC开发笔记(一):OPCUA介绍、open62541介绍、编译与基础环境Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144516882 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

ElasticSearch 常见故障解析与修复秘籍

文章目录 一、ElasticSearch启动服务提示无法使用root用户二、ElasticSearch启动提示进程可拥有的虚拟内存少三、ElasticSearch提示用户拥有的可创建文件描述符太少四、ElasticSearch集群yellow状态分析五、ElasticSearch节点磁盘使用率过高&#xff0c;read_only状态问题解决六…...

序列模型的使用示例

序列模型的使用示例 1 RNN原理1.1 序列模型的输入输出1.2 循环神经网络&#xff08;RNN&#xff09;1.3 RNN的公式表示2 数据的尺寸 3 PyTorch中查看RNN的参数4 PyTorch中实现RNN&#xff08;1&#xff09;RNN实例化&#xff08;2&#xff09;forward函数&#xff08;3&#xf…...

对rust的全局变量使用drop方法

文章目录 rust处理全局变量的策略方法1&#xff1a;在main中自动Drop全局变量 参考 rust处理全局变量的策略 Rust 的静态变量不会在程序退出时自动调用 Drop&#xff0c;因为它们的生命周期与进程绑定。 use std::sync::OnceLock;struct GlobalData {content: String, }impl …...

Node.js教程入门第一课:环境安装

对于一个程序员来说&#xff0c;每学习一个新东西的时候&#xff0c;第一步基本上都是先进行环境的搭建&#xff01; 从本章节开始让我们开始探索Node.js的世界吧! 什么是Node.js? 那么什么是Node.js呢&#xff1f;简单的说Node.js 就是运行在服务端的 JavaScript JavaScript…...

Visual Studio 使用 GitHub Copilot 扩展

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...

【Qualcomm】IPQ5018获取TR069 WiFi 接口Stats状态方法

IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...

数字营销咨询,照亮企业营销数字化每一步

在快消品领域&#xff0c;面对市场竞争日益激烈的现状&#xff0c;营销端的数字化升级已经成为企业生意增长的重要驱动力。 然而&#xff0c;鉴于营销端数字化建设的高昂成本及其广泛覆盖的业务范畴&#xff0c;企业在启动此类项目之前&#xff0c;通常会遭遇一系列挑战与顾虑&…...

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改&#xff0c;增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…...

【Cmake】

1 设置安装路径 -DCMAKE_INSTALL_PREFIX"安装路径"2 使用交叉编译 -DCMAKE_C_COMPILE"交叉编译器绝对路径"3 编译静态库 -DPAHO_BUILD_STARTTRUE...

Flutter 内嵌 unity3d for android

前言&#xff1a; 最近刚整完 unity3d hybridCLR 更新代码和资源&#xff0c;我们 趁热打铁 将 Unity3D 嵌入 Flutter 应用中。实现在 Flutter 使用 Unity3D, 可以做 小游戏 大游戏&#xff1b; 之前都是 内嵌 Webview 来实现的。虽然 CocosCreator 做出来的效果也不错&#xf…...

sqlite加密-QtCipherSqlitePlugin 上

1、下载并解压软件 https://download.csdn.net/download/notfindjob/90140129 2、编译&#xff08;可支持Qt5.12编译&#xff09; 3、安装插件...

正交投影 (Orthographic Projection) 详解

正交投影 (Orthographic Projection) 详解 正交投影是一种将三维空间中的物体投影到二维平面上的方法&#xff0c;它在计算机图形学、建筑设计、工程绘图等领域中广泛应用。与透视投影不同&#xff0c;正交投影不会随着距离的变化而改变物体的大小&#xff0c;因此所有平行线在…...

盛元广通畜牧与水产品检验技术研究所LIMS系统

一、系统概述 盛元广通畜牧与水产品检验技术研究所LIMS系统集成了检测流程管理、样品管理、仪器设备管理、质量控制、数据记录与分析、合规性管理等功能于一体&#xff0c;能够帮助实验室实现全流程的数字化管理。在水产、畜牧产品的质检实验室中&#xff0c;LIMS系统通过引入…...

三维空间刚体运动4-1:四元数表示变换(各形式相互转换加代码——下篇)

三维空间刚体运动4-1&#xff1a;四元数表示变换&#xff08;各形式相互转换加代码——下篇&#xff09; 4. 四元数到其它旋转表示的相互转换4.1 旋转向量4.2 旋转矩阵4.3 欧拉角4.3.1 转换关系4.3.2 转换中的万象锁问题 5. 四元数的其他性质5.1 旋转的复合5.2 双倍覆盖5.3 指数…...

PyTorch如何通过 torch.unbind 和torch.stack动态调整张量的维度顺序

笔者一篇博客PyTorch 的 torch.unbind 函数详解与进阶应用&#xff1a;中英双语中有一个例子如下&#xff1a; # 创建一个 3x2x2 的三维张量 x torch.tensor([[[1, 2], [3, 4]],[[5, 6], [7, 8]],[[9, 10], [11, 12]]])# 第一步&#xff1a;沿第 0 维分解为 3 个 2x2 张量 un…...

【Unity3D】报错libil2cpp.so找不到问题

mainTemplate.gradle文件末尾添加&#xff1a; **IL_CPP_BUILD_SETUP** 此报错发生在低版本的Unity升级到高版本后&#xff0c;例如Unity2019升级到Unity2021&#xff0c;而Unity2019默认创建的mainTemplate.gradle文件是不包含**IL_CPP_BUILD_SETUP** 因此会导致libil2cpp.so…...

事件冒泡机制详解

一、事件传播的三个阶段 1. 捕获阶段 事件从最外层元素&#xff08;如document&#xff09;开始&#xff0c;沿着 DOM 树向目标元素传播。这个阶段就像是事件的“下行通道”&#xff0c;在这个过程中&#xff0c;事件会经过目标元素的祖先元素。不过&#xff0c;在捕获阶段&a…...

红米Note 9 Pro5G刷LineageOS

LineageOS介绍 LineageOS 是一个基于 Android 的开源操作系统&#xff0c;是面向智能手机和平板电脑等设备的替代性操作系统。它是 CyanogenMod 的继承者&#xff0c;而 CyanogenMod 是曾经非常受欢迎的一个第三方 Android 定制 ROM。 在 2016 年&#xff0c;CyanogenMod 项目因…...

6.3.1 MR实战:计算总分与平均分

在本次实战中&#xff0c;我们的目标是利用Apache Hadoop的MapReduce框架来处理和分析学生成绩数据。具体来说&#xff0c;我们将计算一个包含五名学生五门科目成绩的数据集的总分和平均分。这个过程包括在云主机上准备数据&#xff0c;将成绩数据存储为文本文件&#xff0c;并…...

3步让旧款iOS设备重获新生:Legacy-iOS-Kit性能拯救全指南

3步让旧款iOS设备重获新生&#xff1a;Legacy-iOS-Kit性能拯救全指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

关闭蜂鸣器与外设的初始化代码

针对蓝桥杯单片机开发中关闭蜂鸣器与外设的初始化操作&#xff0c;以及创建标准.h头文件的必备代码&#xff0c;以下是详细的技术方案与实现代码。 1. 蓝桥杯单片机系统初始化与外设关闭 蓝桥杯官方使用的CT107D开发板&#xff08;以IAP15F2K61S2单片机为核心&#xff09;&am…...

SEO优化中关键词的作用是什么_关键词布局对SEO有什么影响

SEO优化中关键词的作用是什么 在现代网络营销中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是提升网站在搜索引擎结果中排名的重要手段。其中&#xff0c;关键词的作用至关重要。关键词不仅是搜索引擎理解用户意图的重要载体&#xff0c;也是搜索引擎算法评估网站相…...

南北阁Nanbeige 4.1-3B企业级应用:软件测试用例的自动化生成与评审

南北阁Nanbeige 4.1-3B企业级应用&#xff1a;软件测试用例的自动化生成与评审 测试工程师老王最近有点烦。新版本下周就要上线&#xff0c;产品经理昨天下午才把最终版的需求文档发过来&#xff0c;而测试用例还一个字没写。他望着密密麻麻的功能点&#xff0c;感觉今晚又得在…...

不止是IDEA!手把手教你用同一个Docker Compose文件部署全家桶(PyCharm/GoLand/DataGrip)

云端开发革命&#xff1a;用Docker Compose统一部署JetBrains全系Web IDE 1. 为什么需要云端IDE全家桶&#xff1f; 记得去年接手一个跨语言项目时&#xff0c;我的本地开发环境简直成了灾难现场——同时开着PyCharm处理Python数据分析、GoLand编写微服务、DataGrip管理数据库&…...

终极指南:如何在TensorFlow Rust中掌握while_loop循环结构

终极指南&#xff1a;如何在TensorFlow Rust中掌握while_loop循环结构 【免费下载链接】rust Rust language bindings for TensorFlow 项目地址: https://gitcode.com/gh_mirrors/rust/rust TensorFlow Rust是Rust语言与TensorFlow深度学习框架的绑定库&#xff0c;它允…...

MiniCPM-o-4.5-nvidia-FlagOS开源镜像:FlagOS软件栈赋能的NVIDIA GPU原生推理方案

MiniCPM-o-4.5-nvidia-FlagOS开源镜像&#xff1a;FlagOS软件栈赋能的NVIDIA GPU原生推理方案 想快速体验一个能看懂图片、还能跟你聊天的AI助手吗&#xff1f;今天要介绍的MiniCPM-o-4.5-nvidia-FlagOS开源镜像&#xff0c;就是一个开箱即用的多模态AI解决方案。它基于FlagOS…...

SSM+JSP动漫网站源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

Java虚拟线程调试黄金组合:jstack -l + jcmd VM.native_memory + JMC Thread Group视图(生产环境零侵入诊断法)

第一章&#xff1a;Java虚拟线程调试黄金组合&#xff1a;jstack -l jcmd VM.native_memory JMC Thread Group视图&#xff08;生产环境零侵入诊断法&#xff09;虚拟线程&#xff08;Virtual Threads&#xff09;作为 Project Loom 的核心特性&#xff0c;在高并发场景下显著…...

三菱现代自动擦窗机器人PLC软件:后发产品介绍及技术细节

三菱 现代自动擦窗机器人PLC软件 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面 界面多种组态可供选择上周刚帮一个三菱现代贴牌擦窗机的小客户把新软件迭代完&#xff0c;顺便攒了一套带人话解释的梯形图、不…...