【QT】opcuaServer 的构建

【QT】opcuaServer 的构建

  • 前言
  • opcuaServer
  • 实现
  • 测试


前言

在博文【opcua】从编译文件到客户端的收发、断连、节点查询等实现 中,我们已经介绍了如何在QT 中创建opucaClient 。在本期的博文中,我们基于之前的部署环境,介绍一下如何构建opcuaServer,所用的第三方库依旧是open62541

opcuaServer

OPC UA(Open Platform Communications Unified Architecture)是一种开放的工业通信标准,用于在各种工业自动化系统和设备之间进行通信和数据交换。OPC UA Server是一个实现了OPC UA协议的服务器,用于接收、处理和传输数据。它可以提供一个统一的接口,使不同类型的设备和系统能够相互通信。

OPC UA Server具有以下特点和功能:

  1. 强大的安全性:OPC UA Server支持多种安全机制,包括用户认证、访问控制和数据加密,以确保数据的安全性和完整性。
  2. 灵活的数据模型:OPC UA Server使用基于对象的数据模型,可以根据实际需求定义和组织数据,使数据在不同设备和系统之间的传输更加灵活和高效。
  3. 高性能和可扩展性:OPC UA Server具有优化的通信协议和异步处理机制,可以处理大量的数据和请求,同时支持水平和垂直的扩展。
  4. 多平台支持:OPC UA Server可以运行在不同的操作系统和硬件平台上,包括Windows、Linux和嵌入式系统等。
  5. 历史数据存储和查询:OPC UA Server可以将历史数据存储在数据库中,并支持灵活的查询和检索功能,使用户可以方便地分析和使用历史数据。

OPC UA Server可以用于各种工业应用领域,包括制造业、能源管理、楼宇自动化、物联网等。它为不同的设备和系统提供了统一的数据通信和集成方案,促进了工业自动化的发展和应用。

实现

我们基于官方示例server.cpp,在qt中进行QMainWindow 的创建,(由于是基于之前客户端的文件中进行再次创建,因此需要在main.cpp 文件中切换新的cpp 文件)

#include "mainwindow.h"
#include "opcserversht.h"#include <QApplication>
#include "QJsonObject"
int main(int argc, char *argv[])
{QApplication a(argc, argv);//client
//    MainWindow w;
//    w.show();//serveropcserversht w;w.show();return a.exec();
}

然后就可以在opcserversht 类中进行服务端创建,代码如下:

#include "opcserversht.h"
#include "ui_opcserversht.h"
#include <open62541.h>#include <signal.h>
#include <stdlib.h>
//static void ostopHandler(int sign) {
//    UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "received ctrl-c");
    running = false;
//}
opcserversht::opcserversht(QWidget *parent) :QMainWindow(parent),ui(new Ui::opcserversht)
{ui->setupUi(this);////    signal(SIGINT, stopHandler);
//    signal(SIGTERM, stopHandler);UA_Server *server = UA_Server_new();UA_ServerConfig_setDefault(UA_Server_getConfig(server));// add a variable node to the adresspaceUA_VariableAttributes attr = UA_VariableAttributes_default;UA_Int32 myInteger = 42;UA_Variant_setScalarCopy(&attr.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);attr.description = UA_LOCALIZEDTEXT_ALLOC("en-US","the answer");attr.displayName = UA_LOCALIZEDTEXT_ALLOC("en-US","the answer");UA_NodeId myIntegerNodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME_ALLOC(1, "the answer");UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,parentReferenceNodeId, myIntegerName,UA_NODEID_NULL, attr, NULL, NULL);/* allocations on the heap need to be freed */UA_VariableAttributes_clear(&attr);UA_NodeId_clear(&myIntegerNodeId);UA_QualifiedName_clear(&myIntegerName);UA_StatusCode retval = UA_Server_run(server, &running);UA_Server_delete(server);qDebug() << (retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE);
}opcserversht::~opcserversht()
{delete ui;
}

测试

运行qt 文件,然后在应用程序输出中可以查看对应的网址
在这里插入图片描述
这里就是opc.tcp://ZW-B-169:4840/

通过UaExpert 创建客户端进行连接,可以查看创建的节点信息
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux openKylin(开放麒麟)系统SSH服务安装配置与公网远程连接

文章目录 前言1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接6. 固定SSH公网地址7. SSH固定地址连接8. 结语 前言 openKylin是中国首个基于Linux 的桌面操作系统开发者平台&#xff0c;通过开放操作系统源代码的方式&#xff…

【并发编程】原子累加器

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 JDK8之后有专门做累加的类&#xff0c;效率比自己做快数倍以上 累加器性能比较 参数是方法 // supplier 提供者 无中生有 ()->结果// func…

Android性能优化全攻略:让你的应用飞起来

Android性能优化全攻略&#xff1a;让你的应用飞起来 引言 在移动设备上&#xff0c;用户期望获得流畅、响应迅速的应用体验。对于Android开发者而言&#xff0c;优化应用的性能不仅能提升用户满意度&#xff0c;还能显著增加应用的市场竞争力。性能瓶颈可能来源于多方面&…

大卫·芬奇《消失的她》电影解读

《消失的爱人》&#xff08;Gone Girl&#xff09;是一部由大卫芬奇&#xff08;David Fincher&#xff09;执导的心理悬疑电影&#xff0c;改编自吉莉恩弗林&#xff08;Gillian Flynn&#xff09;的同名小说。这部影片于2014年上映&#xff0c;通过其精巧的剧本、紧张的氛围以…

如何在HA智能家居系统中添加HACS集成并实现异地控制家中苹果与小米设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant&#xff0c;通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店&#xff0c;将米家&#xff0c;果家设备接入 Home Assistant。 基本条件…

for循环的多重跳出

for的多重跳出 1.前言2.标签使用3.使用异常的方式 本文在jdk17中测试通过 1.前言 前段时间面试时&#xff0c;面试官问我多重for循环如何跳出&#xff0c;我懵了&#xff0c;今天特别的研究了一下 本文主要说的不是continue与break&#xff0c;而是少用的另类操作 1.continue:…

《大魔界村》中的人物性格——亚瑟

《大魔界村》作为一款经典的街机动作游戏,其主角——勇敢的骑士亚瑟,以其独特的性格特点和坚定的信念,在玩家心中留下了深刻印象。本文将深入探讨亚瑟这一角色的性格特质,通过分析他在游戏中的行为表现及决策过程,展现他身上的勇气、坚韧与智慧三大要点。 一、无畏挑战的…

树型结构构建,模糊查询,过滤

一、前言 1、最近在做甘特图&#xff0c;有些需求和树型结构要求很大&#xff0c;看的是 pingCode&#xff0c;有搜索 2、还有抽取一部分树型结构的&#xff0c;如下是抽取上面的结构类型为需求的&#xff0c;重新组成树型 二、构建多颗树型结构 1、某些业务下&#xff0c;从…

通义灵码——灵动指间,快码加编,你的智能编码助手

通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;并针对阿里云的云服务使用场景调优&#xff0c…

在 iOS 上安装自定企业级应用

了解如何安装您的组织创建的自定应用并为其建立信任。 本文适用于学校、企业或其他组织的系统管理员。 您的组织可以使用 Apple Developer Enterprise Program 创建和分发企业专用的 iOS 应用&#xff0c;以供内部使用。您必须先针对这些应用建立信任后&#xff0c;才能将其打…

启动docker显示Docker Engine stopped怎么办?

在windows11系统下&#xff0c;我的Docker突然无法启动&#xff0c;打开Docker Desktop显示Docker Engine stopped… 尝试了网上好多办法&#xff0c;就我的问题而言&#xff0c;打开 控制面板-程序启用或关闭Windows功能&#xff0c;重新打钩选中Hyper-V后点击确定&#xff0…

全自动网页生成系统重构版源码

全自动网页生成系统重构版源码分享&#xff0c;所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑&#xff0c;全自动网页制作系统无需繁琐的注…