C#MQTT编程10--MQTT项目应用--工业数据上云

news2024/11/19 0:21:35

1、文章回顾 

这个系列文章已经完成了9个内容,由浅入深地分析了MQTT协议的报文结构,并且通过一个有效的案例让伙伴们完全理解理论并应用到实际项目中,这节继续上马一个项目应用,作为本系列的结束,奉献给伙伴们,真是帅呆了,我也是醉了,特别是第9节内容,那绝对是项目的经典,将技术应用到完美。

C#MQTT编程01--MQTT介绍_mqtt协议c#-CSDN博客

C#MQTT编程02--报文格式-CSDN博客

C#MQTT编程03--连接报文-CSDN博客

C#MQTT编程04--订阅报文_c#mqtt订阅消息-CSDN博客

C#MQTT编程05--发布报文-CSDN博客

C#MQTT编程06--MQTT服务器和客户端(winform版)_c# mqtt服务器-CSDN博客

C#MQTT编程07--MQTT服务器和客户端(wpf版)_c# 开发mqtt 服务器-CSDN博客

C#MQTT编程08--MQTT服务器和客户端(cmd版)_c# 编写mqtt服务端-CSDN博客

 C#MQTT编程09--MQTT项目实战--数据实时采集_利用mqtt 实现性能采集-CSDN博客

2、应用场景

 随着物联网技术的快速发展,工业互联网应运而生,工业互联网是指将互联网和物联网技术应用于工业生产和制造过程中,实现设备、工厂、企业和供应链等各种资源的智能互联,工业互联网云平台是将工业互联网与云计算相结合的平台,旨在为制造业提供全生命周期服务。

在这里需求就是将生产现场的PLC中的实际数据上传到云端,也就是工业数据上云,而数据上云,有多种方案,但MQTT肯定是非常强大的满足这方面要求,从而我们确定了通过MQTT协议实现工业数据上云,其应用模型是:

 在这个应用场景中,云端服务器就是MQTT服务器,上位机软件就是MQTT客户端,两者通过MQTT协议实现internet数据传输,处理,存储,应用,由此我们得到技术模型如下:

在这个应用中,我们的目的就是将现场PLC中的数据上传到internet,然后另一个应用程序从云端服务器获取数据并应用。

3、开始干

有了第9节的项目应用,这个应用的话就可以通俗多了,其实质也是实时数据采集,同样需要将数据发到服务器,但技术原理是一样的,不过这里数据是来自PLC,而PLC数据来自现场实际数据。

1、云端服务器搭建

云端服务器是一个MQTT服务器,具体搭建过程较复杂  

 

2、终端客户机搭建

对PLC不熟悉的可以看另一个系列文章,当然内容有些多,如果是PLC方面的工程师就好说,这里涉及欧姆龙PLC的FINS协议,内容较复杂,需要一些过程来消化。

C#上位机与欧姆龙PLC通信


 终端客户机是一个MQTT客户端,它有两个作用:

1)采集PLC的实时数据,注意是实时的,也就是每隔一定时间读取PLC的生产数据

2)将数据上传到MQTT服务器,这就需要发布主题这个操作

案例是采集欧姆龙PLC的数据,涉及数据有温度,湿度,转速,转角,设备状态,更多的指标数据是一样的,我们都可以将它写在EXCEL文件中

 3、工业客户端搭建

工业客户端其实也是一个MQTT客户端,它从MQTT服务器订阅数据,当服务器收到数据时,主动推送给这个客户端,客户端要怎么显示加载数据,都可以,可以是winform可以是wpf也可以是web网页,或者是手机的微信小程序,总之它是从服务器订阅数据,数据是从云端来的,而不是自己从哪里获取的,本项目中wpf窗体应用程序。

4、本地测试

 可以看到,成功订阅到了数据,加载完美,帅啊。

 5、云端部署

骚等,骚等

----------------

。。。。。。。。。。

4、小结

 随着数字化转型的加快和工业互联网平台的发展,工业企业云设备数据已成为一种趋势,通过云设备数据,工业企业可以更好地实现设备的智能化和自动化运行,提高生产效率和产品质量,也可以将设备数据转化为有价值的信息,为企业数字化转型提供基本的数据支持。

写作不易,图文不易,思路不易,打字不易,分享不易,多多点赞。 

欢迎伙伴们点赞,关注,收藏,抄袭,复制,分享,打赏,共同致富

 

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

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

相关文章

AOP切面编程,以及自定义注解实现切面

AOP切面编程 通知类型表达式重用表达式切面优先级使用注解开发,加上注解实现某些功能 简介 动态代理分为JDK动态代理和cglib动态代理当目标类有接口的情况使用JDK动态代理和cglib动态代理,没有接口时只能使用cglib动态代理JDK动态代理动态生成的代理类…

Autosar教程-Mcal教程-GPT配置教程

3.3GPT配置、生成 3.3.1 GPT配置所需要的元素 GPT实际上就是硬件定时器,需要配置的元素有: 1)定时器时钟:定时器要工作需要使能它的时钟源 2)定时器分步:时钟源进到定时器后可以通过分频后再给到定时器 定时器模块选择:MCU有多个定时器模块,需要决定使用哪个定时器模块作…

基于Yolo5模型的动态口罩佩戴识别安卓Android程序设计

禁止完全抄袭,引用注明出处。 下载地址 前排提醒:文件还没过CSDN审核,GitHub也没上传完毕,目前只有模型的.pt文件可以下载。我会尽快更新。 所使用.ptl文件 基于Yolo5的动态口罩佩戴识别模型的pt文件资源-CSDN文库 项目完整文…

使用 Docker 部署 Next Terminal 轻量级堡垒机

1)Next Terminal 介绍 官网:https://next-terminal.typesafe.cn/ GitHub:https://github.com/dushixiang/next-terminal 想必经常玩服务器的都了解过 堡垒机,类似于跳板机,但与跳板机的侧重点不同。堡垒机的主要功能是…

python编程从入门到实践答案二

python编程从入门到实践 第五章 if语句1.条件测试:2.更多的条件测试:3.外星人颜色#1:4. 外星人颜色#2:5. 外星人颜色#3:6. 人生的不同阶段:7. 喜欢的水果:8. 以特殊方式跟管理员打招呼&#xff…

前端加密面面观:常见场景与方法解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

单链表(下)

我们在单链表(上)中了解了一些需要实现的函数,这一篇就让我们一起来实现。 1.创建新节点 2.打印 3.尾插 4.头插 5.尾删 6.头删 7.查找 8.计算节点个数 9.在指定位置之前插入数据 10.在指定位置之前插入数据 11.删除指定位置的节点 12.删除指…

RIPEMD算法:多功能哈希算法的瑰宝

title: RIPEMD算法:多功能哈希算法的瑰宝 date: 2024/3/10 17:31:17 updated: 2024/3/10 17:31:17 tags: RIPEMD起源算法优势安全风险对比SHA优于MD5应用领域工作原理 一、RIPEMD算法的起源与历程 RIPEMD(RACE Integrity Primitives Evaluation Messag…

阿里云服务器多少钱一年?价格表新鲜出炉(2024)

2024阿里云服务器优惠活动政策整理,阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年,轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,云服务器8核…

维修家用美容射频美容仪

今天收到客户寄过来的一款家用射频美容仪。根据客户的反馈,插电开机没反应,经过排查,原来是12v-2A电源坏了。给客户更换一个新电源就可以了。

Mysql 死锁案例2-间隙锁与意向插入锁冲突

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10) 事务1事务2T1START …

【Linux】常用操作命令

目录 基本命令关机和重启帮助命令 用户管理命令添加用户:useradd 命令修改密码:passwd 命令查看登录用户:who 命令查看登录用户详细信息 :w切换用户 目录操作命令cdpwd命令目录查看 ls [-al] 目录操作【增,删,改&#…

Jenkins 部署 RuoYi

目录 1、项目介绍 2、部署若依 clone 源代码 导入数据库到 node-16 修改 RuoYi 配置文件 推送 RuoYi 项目至 Gitlab 3、配置 Jenkins 配置本地 Maven Jenkins 配置 Maven 新建 Maven 项目 编写构建后的脚本 Jenkins 构建后执行脚本 4、Jenkins 传递参数 设置项目部…

el-table 插入输入框并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

Swagger修改Api文档中的数据类型

swagger不陌生,API接口利器,本次要解决的问题是:我们知道前端在接收Long类型的属性时会出现精度问题,一般我们会在序列化的时候将Long类型的数字转换成String但是swagger的API文档中的类型还是Long,我们要解决的就是这个问题 不知道swagger怎么配置得可以看之前的文章:springb…

matlab阶段学习笔记小节2

syms定义符号变量 求极限 第二题 第三题 limit(y,n,inf);求的的函数y关于自变量n在无穷处&#xff08;inf&#xff09;的极限 exp(2)即指数为2&#xff0c;底为e,也就是e^2 求导数 第一题 log(x)默认是以e为底的指数函数&#xff0c;也就是ln(x). 使用diff(f)对函数进行求…

工作纪实46-关于微服务的上线发布姿势

蓝绿部署 在部署时&#xff0c;不需要将旧版本的服务停掉&#xff0c;而是将新版本与旧版本同时运行&#xff0c;新版本测试无误之后再将旧版本停掉。这样可以避免再升级的过程中如果失败服务不可用的问题&#xff0c;因为同时部署了两个版本的程序&#xff0c;使得硬件资源是…

Xshell 连接 虚拟机

一、网络配置 1. 虚拟网络编辑器 2. 打开本机的网络适配器选项 检查 3. 修改虚拟机的网段 vim /etc/sysconfig/network-scripts/ifcfg-ens33 按键盘 i 进行修改 键盘右上角Esc退出&#xff0c;然后输入 &#xff1a;wq 保存&#xff0c;然后重启网卡 systemctl restart netwo…

Oracle Essbase 多维库导入文件数据步骤操作

第一步&#xff1a; 先确定导入数据的维度数量&#xff08;清楚自己需要导入什么数据和范围&#xff09; 第二步&#xff1a; 设置加载的规则 1.创建规则 2.编辑规则-》打开数据文件 通过数据文件来确定加载规则的加载格式 先查看数据文件格式&#xff1a; 将数据文件导入&…

javase day02笔记

第二天课堂笔记 源文件的组成部分★★ 源文件外部结构 class 类名{}main方法 public static void main(String [] args){}main方法可有可无 没有main的情况&#xff0c;编译成功&#xff0c;运行失败&#xff0c;没有程序入口 多个main情况&#xff0c;编译报错&#xff0c;…