「新阁教育」面对万物互联的智能世界,你是否也想分一杯羹
随着5G时代的来临 , 物联网开始加速盛行 , 慢慢地融入到我们的生活当中 , 万物互联互通将不再只是纸上谈兵 。
现在各大物联网平台层出不穷 , 看似离我们很遥远 , 其实只要我们敢于去研究 , 敢于去发现 , 万物互联 , 近在咫尺之间 。
文章插图
今天给大家介绍一下 , 作为一个普通的.NET开发人员 , 如何不借助第三方的物联网平台 , 搭建一个简单实用的物联网平台框架 。
一、物联网框架
此物联网框架是在上位机框架的基础上 , 结合物联网通信协议MQTT实现 。 上位机本身就集成有采集、归档及日志等功能 , 只需要在这个基础上 , 连接MQTT服务器之后 , 并向指定的主题Topic中发布相关的数据 , 相关的WEB、APP只需要订阅相应的主题 , 即可获取到数据 。
整体软件框架如下图示所示:
文章插图
从上图可以看出 , 整体软件基于MQTT协议搭建 , 依据此软件框架搭建的MQTT物联网拓扑图如下图所示:
文章插图
二、框架实现
为了测试方便 , 这里选择西门子S7-1200 PLC作为下位机 , 采用西门子S7进行通信 , 上位机先与PLC进行通信 , 同时连接MQTT服务器 , 并向指定主题发布数据 。
(1)首先创建一个新的Windows窗体应用 , 从NuGet上下载xktComm.dll:
文章插图
(2)开发UI界面开发 , 按照功能设计如下图所示:
文章插图
(3)UI界面设计完成之后 , 进行代码的编写 , 这里使用开源的mqtt库mqttnet , 仍然通过NuGet下载安装一下 , 这里选择版本为2.8.2 , 选择不同的版本 , 使用上会有一些区别:
文章插图
(4)先实现基本的MQTT连接服务器及断开连接:
文章插图
(5)基于委托创建日志处理对象及方法体:
文章插图
(6)确定并创建通信变量实体类及集合:
实际开发过程中 , 这里是基于CMSPro实现的 , 本案例用于测试 , 以读取以下四个变量为例(实际应用时变量数据及结构可能要比这复杂) , 如下图所示:
文章插图
【「新阁教育」面对万物互联的智能世界,你是否也想分一杯羹】按照这个结构 , 创建一个实体类 , 如下图所示:
文章插图
文章插图
(7)Nuget添加Newtonsoft.Json , 引入JSON转换类 , 便于后续将对象转换成JSON格式字符串进行传输 。
(8)基于xktComm.dll与西门子PLC之间建立连接:
文章插图
(9)通过定时器定时向指定的主题发布实时数据:
文章插图
(10)在云服务器端开启MQTT服务器:
文章插图
(11)运行MQTT客户端 , 连接服务器 , 并点击开始定时:
文章插图
(12)连接成功后 , 可以观察到MQTT服务器中收到了来自MQTT客户端发来的信息:
文章插图
三、框架应用
当数据已经上传到MQTT服务器后 , 那么如果需要获取这些数据 , 只需要开发一个MQTT , 并订阅那个主题 , 这样 , MQTT服务器就会自动将相关的信息推送到客户端软件中 , 可以先用MQTT.fx测试一下 , MQTT.fx是一款基于Eclipse Paho , 使用Java语言编写的MQTT客户端工具 , 支持通过Topic订阅和发布消息 。 打开MQTT.fx , 输入正确的服务器地址、端口号、用户及密码 , 并订阅主题thinger后 , 就可以实时收到服务器发送过来的数据了 , 如下图所示:
- 彼尔姆|机器人公司想用 20 万美元「买断」你的脸,如果它足够友好
- 融资丨端到端通用AI智能制造平台提供商「依瞳科技」完成新一轮融资,卓源资本领投
- 新浪科技|蜂花、拉夏贝尔学会了「鸿星尔克式营销」,但结局却完全不同
- 原叶茶|联合利华「贱卖」立顿,袋泡茶的国产替代来了?丨氪金Lite
- 计费规则|关于「高德打车」用户体验的若干思考
- CPU|「小狮子诊所」内存时序到底有什么作用?
- 柳叶刀|融资丨「柳叶刀机器人」完成Pre-A+轮融资,聚焦骨科及口腔手术智能化
- 深至科技|融资丨「深至科技」完成近亿元C1轮融资,助AI医学影像真正走入基层医疗
- 退市|「PW热点」滴滴出行:即日起启动在纽交所退市的工作
- 西贝|蜂花、拉夏贝尔学会了「鸿星尔克式营销」,但结局却完全不同