- 大创终于结束了,昨天答辩完毕。现场十分尴尬,由于那个VGA线破旧的不行,投影上的PPT一闪一闪的,感觉要晃瞎老师的眼睛了。:)
项目背景
- 目前,我国大部分白酒厂采用人工巡检的方式监测窖池内部温度,该方式不能保证测试时间、测量位置和测量数据的准确性,是制约酒厂质量和产量的重要因素。
- 但是,我们研发的窖池温测系统彻底解决了这些问题。该系统由无线测温探头、无线数据传输设备和监测软件组成。测温探头实时测温,并通过无线传输设备将温度数据传回数据中心。再通过多平台的监测软件,可以随时随地地监测所有窖池的温度情况。从而,对酒厂的生产情况提供可靠的数据信息,既减少了人力支出,又提高了监测精度,可以说该系统是对酿酒行业的一次技术革新。
- 实际上,这个项目是指导老师(孙老师)在2012年成功应用与今世缘酒厂的项目。这次,他拿给我们来参加大创项目。
系统架构
系统工作原理
-
1、感知层 为了实现感知窖池温度的功能,本组设计了专用于窖池温度监测的温度传感设备。其温度感知部分采用铂热电阻,具有较精确的温度获取能力。还配有Wifi通信模块,负责与路由网关进行数据通信,包括:接受指令与返回温度数据。
-
2、网络层 (1)为了与路由网关通信,本组设计了基于C#的上位机温度采集程序。本程序通过串口与路由设备通信,发送指令与获取采集得到的温度信息,并把温度数据保存至中心数据库中。 (2)为了支持应用层的各种服务,本组设计了基于C#的服务器程序。本程序基于Tcp/IP协议,与应用层的移动终端、PC端应用程序进行网络通信。主要实现了:监听来自客户端的网络连接,解析请求指令后,返回指定的业务数据。
-
3、应用层 (1)本组设计了基于C#的PC端窖池温度监测程序。本程序基于Tcp/IP协议,与服务器程序进行通信。主要实现了:在PC端,实时监测窖池温度、查询窖池温度历史数据等功能。 (2)本组设计了基于Java的移动端窖池温度监测程序。本程序基于Tcp/IP协议,与服务器进行通信。主要实现了:在移动终端,实时监测窖池温度、查询窖池温度历史数据等功能。 本组设计了基于Node.JS的Web端窖池温度监测服务。本Web服务主要实现了:在浏览器端,实时查询窖池温度数据、历史窖池温度数据等功能。
感知层
原理简介
-
传感层位于物联网系统的最底层,用于将物理世界中的各种信号转换为电信号。在本系统中,采用stm8作为MCU、使用铂热电阻作为传感元件、传感器节点采用电池供电、使用与网关传输数据。
-
准确的温度采集是本系统的要解决的基本问题。我们设计的温度采集电路采用了差分电桥的设计,使用电压基准芯为电桥提供电源。电桥输出的电压经过具有极高输入电阻的仪表放大器放大后,采用stm8内置的ADC转换为数字信号。从而实现了较准确的温度采集。
-
对于采用电池供电的传感节点,另一个重要的问题就是能量消耗。为了避免不必要的能量消耗,我们为传感器节点引入了睡眠模式。节点中主要“能耗大户”就是WiFi模块与传感模块。因此,在睡眠模式中,MCU将关闭了Wifi模块、电压基准芯片与仪表放大器,之后MCU将执行halt指令进入低功耗模式,通过RTC实现了特定时间后的唤醒。
-
降低节点活动时间段的能量消耗同样重要。所有的数据交换活动在保证可靠性的前提下也尽量的降低能量消耗。但上位机需要获取某一个传感器节点的温度时,上位机将在数据库中查找特定节点WiFi模块的MAC地址,从而在网关中找到对应的局域网地址,通过点对点的通信直接获取这个节点的温度信息,并矫正节点的时间戳,成功后这个节点便进入了睡眠模式。
-
在本系统中,所有传感器的温度采集、温度上传等工作都是错开进行的。睡眠时间由上位机决定,可以根据节点数量、信道质量、以及发酵周期的特征等因素动态地、智能地调节。实现了传感节点寿命与数据质量间的最优解。
网络层
- 网络层的主要应用是网关控制、服务器支持。包括:上位机温度采集程序、服务器程序。
上位机温度采集程序
原理简介
-
感知层与应用层的连接桥梁便是网络层的应用。本部分项目成果为:基于C#的上位机温度采集程序,实现了将感知层获取的温度数据保存至中心数据库的重要功能。主要实现原理为:RS485串口通信与数据库操作。
-
在设计感知层的温度节点时,为了便于数据通信,我们使用了自定义通信协议,包括:睡眠指令、预备读指令、读取温度指令等。通过串口通信,温度采集程序按照一定时间间隔发送读取指令,之后网络设备通过串口返回温度信息。为了节点节能,获取温度后发送睡眠指令,使节点处于睡眠状态。而温度数据通过数据库操作模块存储至中心数据库中。至此,该部分完成了数据采集与保存的功能。
-
该部分成果为连接感知层与应用层的重要部分,起到承上启下的中坚作用。通过与网关设备的协作,该部分成功地将关键数据保存至中心数据库中,为应用层的实现打下了坚实的基础。
服务器程序
原理简介
-
本部分项目成果为:基于C#的网络服务器程序,实现了为客户端提供网络请求解析与返回数据的功能。主要实现原理为:Tcp/IP协议、Socket编程、数据库操作。
-
为了降低程序之间的耦合度,该部分软件结构采用C/S架构,实现前端与后端分离,提高系统运行效率,使得系统更加健壮、扩展性更强。服务器程序需要有良好的并发处理能力,面对高数量级的连接要具有很好的处理能力。同时,服务器程序还要负责后端数据的读取,因此,数据库操作十分重要。
-
针对此,我们选用了两款流行框架实现该部分程序。网络连接部分我们采用了SuperSocket框架,而数据库操作部分使用了Dos.ORM框架。SuperSocket网络服务器框架与Dos.ORM数据库框架都是优秀的开源框架,前者负责监听网络请求,当连接成功后进行数据通信;后者负责数据库的查询操作,根据不同的网络请求查询获取不同的数据,然后通过前者发送给客户端。至此,该部分完成了网络服务的功能。
-
该部分成果为支撑应用层的重要部分,是应用层获取业务数据的唯一途径。应用层多种多样的人性化服务全部建立于该部分基础之上。
应用层
- 应用层是物联网的核心,是物联网和用户(包括:人、组织和其他系统)的接口,它包括:物联网基础设施、中间件、运行环境和集成框架、通用的基础构件库和运行化的应用套件等。它与实际需求相结合,实现物联网的智能应用。
PC端窖池温度监测软件
原理简介
-
本部分项目成果为:基于C#的窖池温度监测程序,实现了在PC端监测窖池温度、查询窖池历史数据的功能。主要实现原理为:Tcp/IP协议与Socket编程。
-
在应用层部分,需要解决的实际问题为:实时监测温度数据,并可以根据需求查询窖池历史温度数据。因此,我们需要获取中心数据库中的业务数据。该部分的实现基于网络层中的网络服务器程序,通过Tcp/IP协议,与服务器程序建立长连接。按照预先设计的通信协议,客户端发送指令,随后服务器按照指令返回所需要的数据,最后客户端解析数据完成数据请求的操作。至此,该部分完成了温度数据监测与查询的功能。
-
在设计该部分软件结构时,我们采用了C/S架构方式,实现前端与后端分离,降低程序间的耦合性。该部分为物联网系统与用户直接交互的部分,用户使用该成果可以完成窖池温度监测、历史温度数据查询的工作,替代了原始手工查询的操作。
移动端窖池温度监测软件
原理简介
-
本部分项目成果为:基于Android的移动端窖池温度监测系统,实现了在手机、平板等移动终端监测窖池温度、查询窖池历史温度数据的功能。主要实现原理为:Tcp/IP协议、Socket编程。
-
现如今,移动终端带给我们无数便捷。在工业生产中,众多工厂已经开始使用移动终端设备管理生产、监测状态。为此,我们基于Android平台,设计了一款窖池温度监测手机App。该部分手机App也是基于C/S架构,通过网络通信,App客户端与网络层服务器进行数据交换。客户端按照协议发送指令,而服务器端程序接收指令并解析服务,随后返回业务数据。客户端接收到业务数据后,按照协议格式解析数据,呈现在终端设备上。
-
本系统旨在实现多平台数据查询,提供人性化服务。在移动终端平台实现窖池温度监测等功能,方便工厂人员随时随地监测窖池温度变化、查询历史数据,为之后的生产生活提供良好的指导作用。
Web端窖池温度监测服务
原理简介
-
本部分项目成果为:基于Node.JS的窖池温度监测服务,实现了在浏览器中,实时监测窖池温度、查询窖池历史温度数据的功能。
-
前端部分主要使用Bootstrap框架,简约而美观,配合上jQuery实现按钮、菜单、侧边栏、图表、曲线图等界面显示与交互。温度曲线图使用了基于canvas的chartjs绘图工具,使用方便且显示效果友好。登陆注册两个界面使用了基于jQuery的bootstrapvalidator表单验证工具,实现了校验账号密码是否为空、注册账号密码是否与确认密码相同、注册账号的最小位数控制等细节功能,减少了后端验证的工作量。同时,这个前端页面支持媒体查询,可以根据访问的设备的屏幕大小,自动调整页面内部分区域的显示规则,实现了对电脑、平板、手机等设备的较好的支持。
-
后端部分主要使用基于Node.js的koa框架,其使用javascript在后端编写服务器,采用事件驱动、异步编程,拥有大量的扩展库,构建服务器方便而高效。使用koa-bodyparser库解析各种url,并记录在日志中。使用koa-router库接管url和处理函数之间的映射,而不需要你关心真实的访问路径如何,简化了访问路径,且比直接解析更加安全。使用Mysql数据库存储采集的数据,使用koa的Mysql库来连接Mysql数据库,实现对数据库的查询、增加等操作,满足登陆、注册、温度表、温度曲线图的数据需求。使用Nunjucks模板引擎来渲染页面,将后端获得的数据传给前端直接显示。使用jQuery的ajax方法向后端请求自己所需数据,并用js进一步处理后再通过dom操作给前端显示。
总结一哈
-
其实,硬件(下位机)部分我们是没有完成的。最后答辩的时候,我是直接用老师的产品录了一个采集过程的视频。
-
大部分软件都是我写的,包括:PC端、APP、上位机温度采集软件。(这整个过程其实可以说是我扛着整个组过来的)。不过,web端是舍友发奋努力学习后,制作出来的。(毕竟马上就要应聘了,他也意识到要磨练一哈技艺)。
-
最不爽的是,最后老师让我给他改上位机温度采集的程序。最BT的是要兼容到XP系统。一开始我用的是.NET4框架,老师总说xp装不了.NET4,我就改了又改。结果昨天晚上,XP是可以装.NET4的(MMP)。不过还有个问题是,自定制的UI在XP上显示不正常,其他系统(win7、win10)都很正常。现在这个任务交接到合作的那个学长那里了(我现在是想好好做自己的事了。。。。。。)