基于E—mail的远程监控系统报警软件设计
2015-03-26冯洋周立辉卢洪锋邵利民
冯洋++周立辉++卢洪锋++邵利民
摘 要:报警系统是远程监控系统的重要组成部分,其实现的关键在于如何对监控对象指数超标的情况进行响应,并及时将报警信息传送至监控中心。该文提出的基于E-mail的远程监控系统报警软件,充分利用现存稳定的网络资源实现软件报警,通过Winsock实现对POP3协议进行编程,对收到的报警E-mail的主题进行分析,提取有效报警信息,并输出报警信号,达到实时监测报警功能。该设计能有效降低整个系统的硬件设施投资,并提高了报警系统功能的扩展性及可优化性,已应用于多个远程监控系统中。
关键词:E-mail 报警软件 远程监控系统 Winsock
中图分类号:TP872 文献标识码:A 文章编号:1672-3791(2014)11(b)-0012-03
报警系统是远程监控系统的重要组成部分,实现的关键在于如何对监控对象指数超标的情况进行响应,并即时地将报警信息传送至监控中心。目前报警系统较多采用硬件电路与软件的配合实现,该类方案设计思想简单,但随之带来硬件成本提高、需要附加报警电路等问题。针对所涉及的城市下水道可燃性气体监控系统等项目的特点,该文提出了一种基于E-mail的报警软件设计思想,采用Visual Basic语言编写报警软件[1],利用现存网络资源,无需追加任何硬件投资便可实现报警功能。
1 设计思想
该文涉及的城市下水道可燃性气体预警系统,采用热导传感器对下水道内可燃性气体浓度进行测定,具有实时、连续、自动监测的能力。系统依托现有网络运营商,利用GPRS/GSM网络实现数据采集终端与监控中心的双向数据传递。根据项目需要,监控中心报警系统可以有两种设计思路[2]:
(1)硬件实现。由单片机、通信模块及其外围元件构成报警系统硬件。现场单元采样结果超标则向监控中心发送一条报警短消息,由监控中心的通信模块完成短消息的接收和判断,实现声光报警功能。
(2)软件实现。利用现成的计算机或Internet网络资源,构造软件报警系统。对采样结果超标情况立即向监控中心相应邮箱发送报警E-mail。报警软件应具有自动定时查询邮箱,对获取的邮件关键字段进行判断,对于报警信息及时产生报警提示。
通过上述两种报警系统设计思路的对比分析,第一种主要是通过硬件设计,依托GSM网络实现,其特点在于设计思路简单清晰,但是存在需添加附加电路而导致硬件成本增加的问题,并且也难以实现即时报警信息的显示。第二种则通过利用现存网络资源,通过成熟的E-mail技术实现软件报警。其无需追加任何硬件成本,且具有管理方便、报警信息清晰显示、并能随时修改升级等特点,可以方便与各类监控软件整合。该文基于该设计思想,实现了一种基于E-mail的报警软件。
E-mail以报文的形式通过网络在工作站之间进行信息的传递,其主要组成构件如图1所示[3]。
E-mail从用户发出后,通过特定程序将该其内容送至SMTP服务器(即发送邮件服务器)上,再由发送邮件服务器将邮件传递到目的邮箱,然后通过程序接收信箱内邮件,包括账号及口令。因此,一封邮件的发送至少经过4个不同任务的处理,以及不同功能的程序。
对于E-mail的程序编程主要针对收发电子邮件的客户端程序进行。而收发电子邮件通常依靠标准的会话协议,其中关于发送的协议为SMTP,该协议对SMTP进行对话的命令和过程标准进行了相应规定;关于接收的协议为POP3,该协议则对POP3服务器进行对话的命令和过程标准进行了相应规定。
该文的报警系统软件未涉及邮件发送,而只需要分析接收到的邮件。因此,该设计的报警系统软件主要是依靠POP3协议进行编程。
2 系统框架
POP3通信在Windows里是通过Winsock来实现的,与POP3服务器进行通信的客户端程序,设置Winsock连接的IP地址或域名,指定端口号[4]。若POP3服务器程序运行在指定地址,就能够与服务器进行通信。POP3会话主要包括三个状态:验证状态、事务状态和更新状态。值得注意的是,接收邮件的POP对话大部分时间都处在事务状态中。
信件占了电子邮件的大部分内容,信件的内容通常为一系列由ASCII码字符,即文本文件。对于POP3而言,从POP3接收的信件内容是未经整理的,包含大量的相关信息,如发信人、主题、时间、内容等,为了正确识别信件内所包含的信息,就必须对取回内容进行分类整理。在该文的设计中,为简化系统工作,程序只对信件的主题进行读取和判读,分析其是否为指定格式的报警邮件。系统设定发自现场单元的报警邮件主题如下:
ALARM.LAB3205.02.LEL-XX%
其中,“ALARM”是报警邮件主题的识别字段,从而判断是否收到指定格式的报警邮件;“LAB3205”是报警的现场单元地址;“02”是报警现场单元编号;“LEL-XX%”为报警单元的可燃性气体LEL(Lower Explosive Limit)浓度数值。该系统软件实现流程如图2所示。
该文涉及的邮件报警客户端可根据需要对报警邮箱和POP3邮件接收服务器进行自定义设置。系统运行过程中,根据所设定的时间间隔与设置的POP3邮件接收服务器建立自动连接。在经过用户和密码等验证后,系统首先查询指定邮箱内的邮件总数,然后依次读出邮箱内的各则邮件。将获取的内容存在Text box控件中,再分析Text box控件中所存数据的邮件主题。判断主题中是否含有“ALARM”字段,决定是否继续操作。对于含有“ALARM”字段的邮件主题,系统进一步对主题中所包含的报警信息进行提取,包括地址、现场单元编号、气体LEL浓度、日期时间等,并存入信息数据库。邮箱内所有邮件都读取完毕后,系统将对邮箱进行清空,从而防止邮箱内剩余邮件太多造成堵塞。接着系统再查询报警数据库,若判断有新的报警信息生成,则弹出含有报警信息的报警窗口,同时触发报警声音文件,形成告警。若查询得知无新增的报警信息,系统便循环进行下一轮判断。
该设计的报警系统软件,采用成熟的VB语言编写,较为关键部分为Winsock控件的应用。Winsock控件的特点在于其对用户来说不可见,它为可访问TCP及UDP网络服务提供了较为方便的途径。采用Winsock控件编写应用程序,不必了解TCP的细节或调用低级的Winsock API,只需通过对控件的属性的设置并进行调用就可以顺利连接到远程计算机并实现数据的双向交换。该文程序中Winsock控件连接过程如下:
(1)进入查询周期,对Winsock进行初始化,设定连接信息,包括协议、服务器地址、端口(110)等。
(2)进行Winsock.connect事件,成功则返回+OK。
(3)发送“USER+用户名”命令,成功则返回+OK。
(4)发送“PASS”命令(用户密码),成功则返回+OK。
(5)发送“STAT”命令,返回内容即为邮件数量和大小。
(6)发送“RETR”命令,进行邮件的依次取出操作,同时存入TEXT BOX控件中供分析使用。
(7)分析结束,发送“DELE”命令,删除邮件。
(8)发送“QUIT”命令,断开与服务器的连接,并执行Winsock.close事件。
报警邮件获取后,通过ADO控件与ACCESS数据库连接实现所提取报警信息的存储。报警信息的显示(包括查询窗口和报警窗口)都由MSHFlexGrid控件实现[5]。系统框图如图3所示。
3 软件功能
系统可以在软件运行之前对邮箱地址、POP3邮件接收服务器和查询的时间间隔进行修改或设置。邮箱查询间隔时间可根据要求由程序实现。系统运行后便实时监控报警邮箱,主界面的滚动条可实时显示读取工作进行情况。
系统可以根据不同检索条件对数据库内的报警信息进行查询,内容显示在MSHFlexGrid控件中。若接收到报警邮件,系统将弹出对应的报警对话框,可显示报警地址、现场单元编号、报警日期时间以及报警点目前的可燃性气体LEL浓度。
4 结语
该文提出的基于E-mail的报警系统设计思想,相比于常规的报警系统,无需追加任何硬件投资,仅利用现有的网络及计算机资源便可实现监控中心对报警信息的及时响应,有效降低整个系统的硬件设施投资,并只需通过修改软件便可实现报警系统功能扩展以及优化升级,可整合于各种类型的监控系统软件中,具有成本低、效果好的特点。目前该报警软件模块的设计思想已应用于教育部春晖计划的城市下水道可燃性气体监测系统项目,以及国网浙江省电力公司检修分公司的变电站地基沉降监测系统、变电站导线接头温度在线监测系统等科技项目中,应用状况良好。
参考文献
[1] James W.Cooper.Design patterns and object oriented programming in Visual Basic 6 and VB.NET[M].IBM Thomas J Watson Research Center,2001.
[2] 冯洋.下水道可燃气体预警系统关键技术研究[D].重庆:重庆大学,2009.
[3] 谢希仁.计算机网络[M].第4版.北京:电子工业出版社,2003.
[4] 汪晓平,钟军.Visual Basic 网络通信协议分析与应用实现[M].北京:人民邮电出版社,2003.
[5] 沈建蓉,单贵.大学VB程序设计实践教程[M].上海:复旦大学出版社,2006.