机房UPS远程监控系统设计与实现
摘要:针对我们机房使用的山顿和山特机架式UPS电源,设计开发了 UPS 监控系统,用以维护 UPS 系统的运行。使用 VB6.0 和 Access2003 数据库共同开发的,上位机监控软件以图形化方式显示 UPS 的运行状态、发出报警信息以及存储数据。
关键词: UPS 集中监控 VB6.0 NPOrt
节目传输系统作为无线局的重要组成部分,直接关系到发射台站的安全播出工作,可以说节目传输系统是安全传输发射的第一道关。现在我们的节目源都采用两套节目源,相互备份,并且可以实现自动切换,保证安全播出。由于节传的设备大多功率较小,数字音频接收机几十瓦,服务器也就几百瓦,为了保证设备的稳定可靠运行,我们对关键设备的供电都采用UPS供电方式,保证在短时间停电时,供电的连续性。但使用了UPS不意味着万无一失,在市电中断的情况下,UPS可提供的电量也是有限的,并且随着UPS电源使用时间的延长,UPS自身也可能出现问题。这样我们就需要对UPS的关键参数进行监控所以监控,掌握设备的容量、性能、故障等情况。及时将断电、电量过低、UPS温度过高等异常情况通知给管理人员,使UPS的作用发挥到最大,保障设备的正常运行。
机房原来都是使用的APC的塔式UPS电源,UPS电源可以通过MCRadio音频调度系统查看主要的参数,并且接入有基于硬件的报警系统,最近两年老化严重,逐渐被更换为山特和山顿的机架式UPS电源,山特公司有winpower 2000 UPS监控软件,但是该软件的免费版本只支持单台监控,每个UPS都需要主机安装该软件通过串口与之直接相连监控,之后才能通过计算机IP对所有的UPS监控,实现不方便,要想实现单台电脑对所有UPS进行集中监控,就需要购买其公司的智能卡和winpower 2000的企业版,增加成本。我们通过分析串口通讯数据协议,利用vb6.0自己编程实现了UPS的集中监控并用access对数据进行记录保存。
1 物理结构与硬件连接
1.1UPS的监控口是DB9的RS-232接口,为实现集中监控,我们利用了Moxa公司的Nport server 5610终端服务器,监控结构如图1:
图1 监控结构图
对Nport server 5610终端服务器我们是在windows操作系统的前置机上安装驱动程序,扩展串口,前置系统访问扩展的串口采用windows提供的标准串口访问接口。这样串口服务器做透明传输,只需对每个UPS串口在串口服务器配置软件中逐一配置串口号,采用实端口(real mode),配置参数为“2400,n,8,1”。
8芯终端服务器NPORT5610的RJ45接口定义(如表1):
1DSR5RXD
2RTS6DCD
3GND7CTS
4TXD8DTR
图2 通讯电缆
表1 NPORT5610的RJ45接口定义
通信电缆的连接方法如图2,我们只利用了数据收发和地线三根线。
2基于vb6.0的软件设计
2.1设计思路
该软件设计包含2个部分,数据库部分和应用软件部分。数据库我们采用 Microsoft Access 2000,应用程序采用Visual Basic 6.0编程。数据库部分包含三个表格:用户表,数据日志表,事件日志表。用户表中包含用用户的帐号,密码和用户类型;数据日志表中包含日期时间,UPS电源使用的机柜号,UPS电源主要的运行状态参数;事件日志表中包含日期时间,UPS电源使用的机柜号,事件信息描述。
通过安装winpower 2000监控软件,对一台UPS监控。利用CommMonitor6.1对通讯数据进行监控,发现该UPS电源采用交互式的通讯协议。对于需要监控的所有UPS,软件以定时器的方式对所有监控的UPS电源进行循环扫描监控。下图是该监控软件的设计原理图(如图3)。
图3 监控原理流程图
软件界面设计为在主界面上用Mschart控件显示相对应UPS的市电电压,电池电压负载等参数(如图4),当某一个参数出现问题是整个Mschart控件的背景衍射变为红色,同时调用声音文件,提示该UPS出现问题,帮助用户发现问题。用户可以通过单击Mschart控件,查看该UPS监控的其他详细信息(如图5)。软件以timer控件为时钟,每5秒记录一次UPS正常运行的数据,记录在数据日志表中,当出现异常状态是,立即将事件信息记录在事件日志表中。
图4 监控主界面图 图5 UPS详细数据图
2.2 软件实现
VisualBasic6.0是一种功能强大、简单易学的程序设计语言, 它提供了Active控件MSComm能十分方便地开发出使用计算机串口的计算机通信程序。MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式。在本程序中使用到该控件的7个重要属性:CommPort,Settings,PortOpen, Input,Output,RThreshold,SThreshold。Settings属性设置为“2400,N,8,1”。PortOpen属性使用前必须打开,用完后必须关闭。RThreshold,SThreshold都需要设置为1。利用MSComm控件的OnComm事件,进行数据的接收,根据接收到的数据,分析UPS的运行状态,并把分析的数据写入到数据库中,作为历史数据保存。对于数据写入,首先声明 Recordset 对象,然后连接到数据库,打开“UPS Data”表,利用 Recordset 对象的. AddNew命令 添 加 新 的 记 录,利 用 Recordset 对 象 的. Fields( i) . Value属性添加每一项记录,添加完成后利用 Close 属性停止添加记录,用Update属性更新数据记录,最后断开数据库连接。
在主界面的显示中我们利用Mschart控件,以图表的形式显示UPS的相关数据。根据需要我们设置Mschart图表为二维条格式,序列颜色为深绿色,当负载过重时显示为红色,设置Rowcount为3,根据实际情况设置具体含义,对给一次读到数据的分析结果利用MSChart1.Data = CInt(string)来对显示数据进行更新。
在详细显示节目我们利用treeview控件,以树形方式显示所有的监控UPS列表,方便用户进行选择,查看某一个UPS的详细数据信息;treeview的数据要在运行时才能显示,利用Set Nodeindex = TreeView1.Nodes.Add(, , "yy", "UPS监控列表"),设置根目录; Set Nodeindex = TreeView1.Nodes.Add("yy", tvwChild, "f1", "监控服务器机柜")来添加每一个监控的UPS。
在事件记录和日志记录界面,主要利用了DTPicker控件,进行查询时间的选择,利用Combox控件对UPS进行组合条件查询,更准确查找到用户需要的数据,利用ADODC控件和Datagrid控件完成数据测查询和显示。对于DTPicker要注意日期的格式,我们需要精确到秒,利用ddt1.CustomFormat = "yyyy-MM-dd HH:mm:ss",格式化日期时间格式。利用ADODC完成数据库的连接和数据的读取,数据绑定到Datagrid控件显示,每次显示20条数据,分页显示。
该软件的通讯协议可以读出UPS电池电压,通过电池电压来反映UPS电池容量,我们通过对单台UPS容量显示监控到的数据,采取分段线性计算的方法粗略估计UPS电池的容量,特别是在外电断开的情况下,UPS电池电压逐步下降,让该电压值和标准电压值进行比较,当电池电量较低时,提醒值班人员及时采取措施,保障设备的正常运行。
3 总结
UPS 实时监控系统在现场调试中表明,使用人员可以通过声音、图像、实时数据和历史数据获取 UPS 的各种信息,并进行及时和有效的控制,对 UPS 系统进行有效的诊断和维护。能帮助值班人员及时发现UPS运行中出现的问题,保证对其他设备的电力供给,对保证节目源安全传输起到一定的积极作用。
参考文献
[1]Winpower2000.使用手册[M].山特电子有限公司.
[2]张震.UPS监控软件系统设计与实现.中国海洋大学图书馆.2007.
[3]罗朝盛.Visual Basic 程序设计教程.人民邮电出版社.2005.