基于嵌入式设备的机房温湿度监控系统设计与实现
2021-03-22
(辽宁轨道交通职业学院,辽宁 沈阳 110023)
0 引言
物联网应用技术是当下的一个热点,其应用领域可以分为四大类,分别是用于提高生产效率、保障社会安全、方便日常生活以及服务公共事业。在服务公共事业的领域,在日常环境监测、保护工作中,通过布设物联网使得环境信息化,能够建立起环境监测、污染源监控、生态保护和核安全与辐射环境安全等信息系统,有利于实时收集大量准确数据,进行定量和定性的分析,为环境管理工作提供科学决策支持[1]。
1 背景
大型机房如果没有温湿度的实时监控设备,会由于高温高湿而导致设备故障。工作期间的设备故障会严重影响企业正常工作的进行,甚至造成严重的财产损失。而24小时不间断全功率开启空调又耗电量巨大,因此,大型机房需要配套环境监控系统,以实时监控温湿度的变化,在温度过高时调高空调的功率,湿度过高时启动除湿器,并在实施温湿度控制后仍然不能达到环境标准时向值班员报警,提醒值班员实施干预。
2 系统结构
本系统为BS结构,系统组成结构图1所示。系统整体上由两大部分组成,数据采集模块和远程监控模块。数据采集模块由51单片机和温湿度传感器组成,远程监控模块由传感器数据管理程序(以下简称“管理程序”)、浏览器和移动客户端(两者以下简称“客户端”)构成。
图1 系统结构
2.1 数据采集模块
根据本系统的设计特点,单片机采用低成本的51单片机。单片机可接多个温度和湿度传感器,管理程序通过串口定时轮询单片机上所连接的温湿度传感器的状态。管理程序与单片机之间的通信采用工业上广泛应用的Modbus协议,在符合Modbus通信协议的基础上,本项目做出了一些定制。Modbus通信协议定义了多种功能码,本项目整体上用到其中的4个,分别是0x02读离散输入寄存器、0x04读输入寄存器、0x05写单个线圈寄存器和0x06写单个保持寄存器。管理程序读取传感器状态时用的是功能码0x04。
送信。送信的通信格式与Modbus功能码与0x04的查询命令一致,即读输入寄存器。本项目定制的部分是寄存器地址必须跳跃设置,即0、2、4…或者1、3、5…。这样设置的目的是既要符合Modbus通信协议又希望返信时能够携带更多的信息。
返信。返信的通信格式也是同Modubs功能码0x04的返信格式。本项目的定制部分有以下几处。
(1)字节数:8bit,值固定为4,指定从字节数之后的固定的4个字节。
(2)寄存器地址:8bit(0~255),由于采用异步传输,上位机得知道返回的消息是那个寄存器的地址。由于8bit的二进制数最多可以表示256个整数,理论上最多可以连接256个传感器,但是由于为了在单次通信的时候携带更多的信息,每次读两个寄存器地址,实际上只有128个地址可用。
(3)设备类型:8bit,1-温度传感器,2-湿度传感器,3-光照传感器(扩展),4-烟雾传感器(扩展)。本系统目前只用到了温湿度传感器,光照和烟雾传感器以及其他类型的传感器可根据今后的使用情况进行扩展。
(4)传感器读数:16 bit,浮点数乘以100 后再强制类型转换成short型。常温的取值范围必定在-100℃~100℃以内,温度值为浮点数,相对湿度以百分数表示,也是浮点数。如果存放温湿度的值,8bit是不够的,因此用16bit来存放温湿度。存放的方法为,将温湿度的值强制转换为精度为两位小数的浮点数,乘以100再强制转换成整数,存放在16bit里。当管理程序读取到这16bit值的时候,先强制转换成浮点数在除以100并保留两位小数就得到了原始的温湿度值。
2.2 空调
在本系统中,空调采用的是EMERSON公司出品的大型机房Pex空调,该空调配备支持Modbus通信协议的OC485通信卡,管理程序所在服务器通过RS485串口与OC485通信卡相连接。通过定时向OC485通信卡发送查询指令,管理程序可以实时掌握空调的工作状态。OC485通信卡的RS485传输模式及通信格式可以参考PeX空调OC485卡Modbus通讯协议官方文档。管理程序与空调的通信用到了功能码0x02、0x04、0x05和0x06。
2.3 远程监控模块
远程监控模块的主要功能由部署在服务器上的管理程序完成。管理程序启动后首先连接数据库,然后开启一个定时任务,该任务的工作有两个方面。一方面定时向单片机发送指令读取其所连接传感器的状态,读取到的传感器读数除了保存在内存中供客户端查询,还要写入数据库中作为温湿度的历史数据。这些历史数据做成曲线可以反映出机房中温湿度随季节变换的趋势,也可以作为温湿度与机房故障关联性的分析之用。另一方面该任务定时向空调发出指令读取空调的状态并保存在内存中供客户端显示并控制空调的运行之用。
这两方面的工作需要执行的频率并不相同。通常温湿度的变化是一个相对缓慢的过程,过于频繁的采集是没有意义的,因此对温湿度数据的读取可以设定在5分钟一次。对空调状态的监控实时性要求比较高,因此可以设定每5秒钟读取一次空调的状态,这两方面的工作可以放在一个定时任务中执行。客户端登录管理程序成功后,两者之间将建立一个WebSocket连接,管理程序会定时向客户端推送传感器和空调的状态,管理程序的工作流程。
2.4 数据存储
数据存储部分可采用MySQL。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS应用软件。由于其社区版的性能卓越,搭配JSP和Apache可组成良好的开发环境[2]。
管理程序启动后,按照指定的时间间隔,将采集到的温湿度信息插入到数据库中的表history。表history用来存放每天24小时内的传感器数据,从00:00开始,每隔5分钟上传一条,每个个传感器每天将有288条数据。这些数据可被服务器读取并显示成图表,用来分析数据、天气、用电量以及机房故障之间的关系。表history需要的字段有:device_id,设备编号,即传感器或其他设备的编号;device_type,设备类型,表示温度传感器,湿度传感器或其他设备;value,传感器或其他设备的值;timestamp,读取到传感器值的时间戳。
2.5 浏览器和移动客户端
浏览器和移动客户端需要支持WebSocket协议,WebSocket协议可以在客户端和服务器之间建立全双工的通信,改善用户体验[3]。浏览器和移动客户端成功登录管理程序后首先从管理程序读取传感器的配置信息,并显示画面上,然后向服务器发起WebSocket连接,连接建立后,服务器将定时推送传感器实时信息,画面上的传感器信息也随之更新。
3 结语
经过测试本解决方案可有效地实时监控机房的温湿度变化,并可长期稳定运行。如果将光照传感器,空调,加湿器,照明,窗帘等控制设备也加入,并增加根据温湿度、光照等智能控制设备的开启和关闭的功能,则该解决方案也可以用于企业的智能工作环境的搭建。同时,本系统也应用于教学实践,在服务器开发和移动应用开发相关课程中取得了良好的教学效果。