器材库房温湿度自动报警系统的设计论文_毛健,王阿鹏

中国人民解放军93498部队 河北 石家庄 050000

摘 要:为确保电子装备维修器材存储环境符合温湿度要求,设计了一种器材库房温湿度自动报警系统。该系统立足器材安全管理,采用模块化设计,分为采集单元、控制及数据处理单元和供电单元3个部分。基于RS485总线和MODBUS通信协议,寻址通信各个温湿度传感器模块,完成器材库房现场温湿度数据的实时采集。在Windows环境下采用MFC编程开发系统应用软件,给出了设计思路、主要功能实现方法及关键代码。实验结果表明,系统工作稳定,能够连续监测库房环境,实现自动报警功能。

关键词:自动报警系统;器材安全管理;模块化设计;实时采集;MFC

严格执行器材库房安全规定作为器材安全管理工作重要内容之一,对器材存储环境有着特殊要求,特别是要做到防火防潮。目前,基层部队在电子装备维修器材库房信息化监管方面发展比较缓慢,还停留在人工检查的阶段,不具有连续性,对突发事件难以做到第一时间预警。基于这种情况,本文设计了一种基于温湿度监测的器材库房自动报警系统,采用小型温湿度传感器模块,连续监测库房环境,对异常情况实时报警,确保器材存储安全。

一、系统组成

特定系统对温湿度的要求有所不同,应根据具体使用环境选用合适的传感器型号和数量。电子装备维修器材管理规定中明确“对温湿度要求较高的器材应存储在达到‘三七线’(温度在30℃以下,相对湿度在70%以下)要求的库房内”。考虑基层部队实际需求和费效比,本系统选用易用HC01型温湿度传感器模块,该模块支持标准MODBUS协议,温度测量范围在-55~125℃,相对湿度测量范围在10~95%。整个系统采用模块化设计,分为采集单元、控制及数据处理单元和供电单元三个部分。

(一)采集单元

系统搭建过程中应根据库房数量和使用面积选择适当位置安装足量传感器模块。采集单元主要由这些模块组成,其能够按照控制计算机指令实时采集器材库房现场温湿度数据,完成存储环境监测任务。

(二)控制及数据处理单元

这部分主要由一台计算机组成,通过接口电路,完成计算机和采集单元之间的通信,根据预先设置的监测方案对采集单元进行控制,接收采集的数据,并对数据作进一步分析,一旦超出预先设置的报警门限系统自动蜂鸣报警。

(三)供电单元

负责对整个系统供电。采用市电为主,UPS电源为辅的方式,并通过电源适配器完成对采集单元的电源供给。平时工作使用市电,遇到断电情况时,系统自动切换到UPS模式,以维持系统继续运行。

二、主要功能实现及关键技术

鉴于传感器模块带有RS232/485接口,系统采用串行通信完成控制计算机和传感器模块之间的数据传输。

(一)软件实现

系统软件基于Windows操作系统编程实现,采用Visual C++语言,使用MFC进行设计,完成人机交互和监测数据的采集、传输和显示。在Windows环境下实现串行通信常见有三种编程方法:应用MSComm控件、利用API函数编程和使用CSerialPort类,本系统选用第一种方法。

1.MSComm控件的使用方法

利用MSComm控件对串口操作非常方便,只需使用控件本身提供的属性和事件,就能利用它建立与串口的连接,并可以通过串口连接到其它设备,完成数据的交换,而不需要关心硬件驱动的问题。通过创建控件对象,设置串口参数,打开串口,就能收发数据了,这些功能都是通过控件的属性实现的,如打开串口代码为m_MSComm.SetPortOpen(TRUE)。 MSComm控件只有一个事件,即OnComm事件。当串口发生通信事件或者产生通信错误时,就会触发OnComm事件,同时CommEvent属性值会发生变化,而且不同的值代表不同的通信事件和通信错误,这就是MSComm控件的通信机制,即事件驱动方式。

2.数据的发送和接收

MSComm控件使用SetOutput和GetInput这两个函数实现数据的发送和接收,通过阅读添加到MFC工程中的CMSComm类的代码,可知SetOutput的参数是VARIANT数据类型,为满足发送要求,利用COleVariant类的构造函数对发送的数据进行转换[1]。相对于发送数据来说,我们更关心的是对接收数据的处理,因为我们不知道什么时候计算机会收到外设发来的数据,事件驱动方式很好的解决了这个问题。通过SetRThreshold设置触发OnComm事件的具体条件,当接收缓冲区中达到RThreshold属性设置的字符门限,就触发OnComm事件(这个触发过程是操作系统帮助我们完成的),同时CommEvent属性值变为2,此事件将一直阻塞,直到通过GetInput读取InputLen属性设置的字符长度后,OnComm事件返回,若返回后缓冲区中的数据还满足条件,就会继续触发OnComm事件,直到条件不满足为止。

(二)通信方式

MODBUS协议是应用于电子控制器上的一种通用语言,此协议定义了控制器能识别的消息结构,而不管它们经过何种网络进行通信。MODBUS串行链路ADU通用帧格式为由地址域、功能码、数据域和差错校验四部分组成[2]。本系统采用主从式结构,为每个传感器模块设定一个唯一地址,构建RS485总线结构,寻址通信各个模块,针对不带串口的计算机可使用USB转RS485接口将计算机和多个模块连接起来,理论传输距离可达1200米。模块正确应答,则会返回Addr,03,00,04,T_hi,T_Lo,RH_hi,RH_Lo,CRC0,CRC1形式的数据包。获得的数据并不是实际的温湿度,需参照T=(T_hi*256+T_Lo)/10、RH=(RH_hi*256+ RH_Lo)/10做进一步的换算。

(三)对数据包的处理

对数据包的处理一般过程是边接收边处理[3],对接收的每一个字符进行判断,在程序中每当串口缓冲区有一个或一个以上字符时就触发串口通信事件。对串口数据包的处理流程如图所示。

(四)定时控制

采集的数据主要是库房温度和相对湿度,这些数据变化连续,在极短的时间内不会骤变,即使丢掉个别数据也不会对结果造成重要影响,因此本系统选择使用最常用的Windows定时器来实现定时功能,每5秒钟采集1次,为系统中每一个温湿度传感器模块分配一个定时器SetTime(1,5000,NULL),在回调函数OnTimer中根据定时器ID分别发送采集命令。

(五)异常报警

主控计算机接收数据并作进一步处理,提取有用温湿度数据与系统温湿度预设值进行比较,当仓库环境超出系统设置的温湿度范围时,系统应能够自动蜂鸣报警。主要功能代码如下:

void CEU_MODBUSDlg::OnComm()

{

VARIANT variant_recv;

COleSafeArray safearray_recv;

LONG k;

BYTE rx[10];

if(m_MSComm.GetCommEvent()==2)

{

variant_recv=m_MSComm.GetInput();

safearray_recv=variant_recv;

for(k=0;k<10;k++)

safearray_recv.GetElement(&k,rx+k);

unsigned short crc=GetCRC(rx,10);

if(crc==0)

{

double T=(double)(rx[4]*256+rx[5])/10;

double H=(double)(rx[6]*256+rx[7])/10;

CString str,str_T,str_H;

str_T.Format("%g",T);

str_H.Format("%g",H);

if( (T>30) | (H>70))

{

str=("报警! H:"+str_H+"%,C:"+str_T);

MessageBeep(-1);}//蜂鸣报警

else

str=(" H:"+str_H+"%, C:"+str_T);

......

UpdateData(FALSE);}}}

三、系统调试

在软件调试过程中,以5s为采样周期,对4个传感器模块进行定时采集实验,收到的数据包格式如下:00,03,00,04,00,B8,01,F7,42,F8。将其中有用的温度数据提取出来进行存储和显示,获得现场温度18.4℃,相对湿度50.3%。通过实验,在10s这一数量级上Windows定时器能够完成采集工作,且数据接收正常,未出现丢帧现象,系统工作稳定。

四、结语

本文给出了电子装备维修器材库房自动报警系统的设计方案,针对主要功能,详细地说明了实现方法,编写了系统应用软件。传感器模块选择合适,RS485总线结构保证了有效传输距离,自动报警功能符合系统实际需求。本系统依托基层部队电子装备维修器材库房这一特殊平台,整体设计能够满足使用,对库房防火防潮有重要实用价值。

参考文献

1.李现勇.Visual C++串口通信与工程实践.北京:人民邮电出版社,2002.

2.胡文翔,蔡政,郭伟玮,吴银峰,等.面向RS-485控制网络的Modbus协议扩展及应用.自动化仪表,2013,34(4):59-62.

3.龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践.北京:电子工业出版社,2004.

论文作者:毛健,王阿鹏

论文发表刊物:《科技中国》2016年12期

论文发表时间:2017/3/16

标签:;  ;  ;  ;  ;  ;  ;  ;  

器材库房温湿度自动报警系统的设计论文_毛健,王阿鹏
下载Doc文档

猜你喜欢