1 UPS監(jiān)控軟件的功能
UPS監(jiān)控軟件的作用是用來監(jiān)視和控制UPS,。其中,,監(jiān)視功能是給一般用戶使用的,而控制功能是給具有特權(quán)用戶使用的,。對于一般用戶只能讀取電源事件和數(shù)據(jù)信息,,供用戶分析、判斷UPS故障用,;對于具有特權(quán)的用戶,,就可以對被監(jiān)控的UPS進(jìn)行診斷、測試,、配置參數(shù)等操作,。具體來說,有以下幾個方面:
1)各種圖形用戶界面顯示UPS的輸入電壓,、輸出電壓,、輸入頻率、輸出頻率、電池電壓,、輸出電流等參數(shù),,以掌握當(dāng)前UPS的實時狀態(tài);
2)可查看UPS的事件日志和數(shù)據(jù)日志,,全面分析電源的歷史狀況,;
3)靈活的事件管理與告警方式,以便系統(tǒng)管理員或用戶采取相應(yīng)的應(yīng)急措施,;
4)無人值守時發(fā)生嚴(yán)重電源故障情況下的文件自動保存并關(guān)閉系統(tǒng),,使已做的工作不會因電源故障丟失;
5)可對UPS的運(yùn)行參數(shù)和關(guān)機(jī)參數(shù)進(jìn)行設(shè)置,;
6)可預(yù)定UPS的關(guān)機(jī),、重啟和測試計劃;
7)中,、英文界面,,能適應(yīng)各種主流操作系統(tǒng)。
2 監(jiān)控平臺的設(shè)計
2.1 監(jiān)控界面設(shè)計
如果要實現(xiàn)UPS的監(jiān)控功能,,很明顯,,一個窗體是不能滿足要求的,必須采用多窗體界面,。為了程序能同時打開多個文件,,使用多文檔界面MDI(Multiple Document Interface)編程。MDI是指在一個窗體中能夠建立多個子窗體的操作界面,,它允許程序同時顯示多個文檔,,每個文檔顯示在它自己的窗口中。文檔或子窗口被包含在父窗體中,,父窗口為應(yīng)用程序中所有的子窗口提供工作空間,。在運(yùn)行時,子窗體顯示在MDI窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下),。當(dāng)子窗體最小化時,它的圖標(biāo)顯示在MDI窗體的工作空間之內(nèi),,而不是在任務(wù)欄中,。圖1為該監(jiān)控平臺的主窗體。
圖1 UPS監(jiān)控界面平臺主窗體
由于該軟件的設(shè)計得到了(溫州)中國鴻寶電源有限公司的大力支持,,為了表示感謝,,在該軟件的運(yùn)行前先顯示該公司的標(biāo)志畫面,也就是給該軟件添加一個程序封面,。程序封面的設(shè)計有2種方法:多窗體編程方法和隱藏控件方法,。前者是在程序封面窗體上放置一個時間控件,待設(shè)定的時間后自動關(guān)閉封面切換到主窗體,為了能夠人為地切換封面和主窗體,,可在封面窗體鼠標(biāo)單擊事件中增加相應(yīng)的代碼,;后者是在程序運(yùn)行時使用Visible屬性,首先,,將主窗體上的全部控件隱藏,,然后,在主窗體內(nèi)進(jìn)行程序封面的演示,,延時一定時間后再恢復(fù)所有控件的顯示,,如果主窗體內(nèi)的控件很多,可以將這些控件設(shè)計在一個容器控件上,,這樣只要設(shè)置該容器控件的Visible屬性即可,。
由于UPS監(jiān)控軟件適合兩種用戶,所以接下來的是登錄窗體和注冊窗體的設(shè)計,。為了用多種圖形界面顯示UPS的實時狀態(tài),,該軟件設(shè)計了4種窗體專門用來顯示UPS的運(yùn)行參數(shù)及其狀態(tài)。在數(shù)據(jù)日志中,,用戶可以自由設(shè)定歷史數(shù)據(jù)存儲周期,,并借助數(shù)據(jù)列表回放UPS的運(yùn)行狀態(tài),分析UPS的某一次異常事件,,全面了解UPS的運(yùn)行狀態(tài)與走勢,。另外,還有事件日志,、計劃任務(wù),、事件及其反映、遙控,、UPS運(yùn)行參數(shù)和關(guān)機(jī)參數(shù)設(shè)置等窗體,。可自主設(shè)置UPS的運(yùn)行計劃,,檢測計劃系統(tǒng)可按用戶事先選定的項目以一定周期進(jìn)行自檢,,同時,系統(tǒng)還可按用戶的需要預(yù)約UPS的開機(jī),、關(guān)機(jī)時間,。
根據(jù)上述監(jiān)控軟件的功能,可以設(shè)計該監(jiān)控平臺的菜單結(jié)構(gòu)如圖2所示,。
圖2 監(jiān)控界面平臺的菜單結(jié)構(gòu)
2.2 軟件實現(xiàn)
該軟件包含2個部分:數(shù)據(jù)庫部分和應(yīng)用程序部分,。在本程序里面,將使用Microsoft Access 2000來建立數(shù)據(jù)庫,,使用VisualBasic6.0來編制應(yīng)用程序,。數(shù)據(jù)庫部分包含3個表格:用戶表,,事件日志表和數(shù)據(jù)日志表。用戶表中包含該用戶的帳號,,密碼和用戶類型,;事件日志表中包含日期,時間,,事件描述,,事件處理等各項內(nèi)容;數(shù)據(jù)日志表中包含日期,,時間和UPS的主要運(yùn)行狀態(tài)參數(shù),。
要使用該軟件必須輸入用戶名和密碼,軟件根據(jù)數(shù)據(jù)庫中的資料判斷該用戶的注冊類型,,決定該軟件的使用權(quán)限,。如果沒有這個用戶,則請求用戶注冊成為新用戶,。用戶注冊時,,要填寫一些必要的個人信息,如果該注冊名已經(jīng)存在,,系統(tǒng)將要求采用其它的用戶名重新注冊,,保存后存放到用戶表中去。只有系統(tǒng)管理員級別的用戶才能使用該軟件的所有功能,,一般用戶只能使用該監(jiān)視方面的功能,。
電源監(jiān)控軟件開發(fā)的關(guān)鍵環(huán)節(jié)是如何實現(xiàn)計算機(jī)串并口與電源設(shè)備的通信(即計算機(jī)采集電源設(shè)備送出的狀態(tài)信號,經(jīng)分析處理后在終端上顯示或發(fā)出控制信號送往電源設(shè)備),而最簡單的信息傳送方式就是使用串行通信,。VB中提供了一個重要的通信控件:MSComm,。在本程序中使用到該軟件的5個重要屬性:CommPort,Settings,,PortOpen,,Input,Output,。Settings屬性設(shè)置為“1200,,N,8,,1”,。PortOpen屬性使用前必須打開,用完后必須關(guān)閉,。圖3是該監(jiān)控軟件的主流程圖。
圖3 上位機(jī)監(jiān)控軟件主流程圖
該軟件包含對30多種電源事件的處理,,處理的方式有:通知系統(tǒng)管理員,,執(zhí)行命令文件,發(fā)送電子郵件或傳呼信息給指定的用戶報警,在嚴(yán)重的情況下執(zhí)行文件自動保存后關(guān)閉系統(tǒng),。這里主要通過調(diào)用系統(tǒng)的API函數(shù)來實現(xiàn),。實際上,在整個軟件的編寫過程中,,很多子程序都用到了相應(yīng)的API函數(shù)調(diào)用,。使用Windows API,可以訪問常用代碼庫,,使用通過測試的和認(rèn)證過的代碼,,獲得跨平臺的兼容性,得到一個更小巧的應(yīng)用程序,。
該軟件通過輸出電流來推算負(fù)載百分比,,而蓄電池的電壓可以反映電池的剩余容量,所以程序通過測量電池電壓并查表來近似推算蓄電池的剩余容量,。并通過當(dāng)前輸出電流和計算得到的電池剩余容量估算出電池的剩余放電時間,,再根據(jù)得到的剩余放電時間來決定是否需要進(jìn)行計算機(jī)的自動保存操作。如果自動存檔時,,檔案未賦予文件名,,軟件以temp格式暫存或離開,供電系統(tǒng)正常后,,用戶還可查看上次關(guān)閉Windows時關(guān)閉的應(yīng)用程序名稱和儲存的檔案,。
由于該軟件要適應(yīng)各種主流操作系統(tǒng),如Win9X和Win2000,。當(dāng)文件自動保存后,,要退出操作系統(tǒng),安全關(guān)機(jī),。這時,,要注意兩類操作系統(tǒng)的區(qū)別。在Win9X中退出操作系統(tǒng),,只需調(diào)用一個底層的API函數(shù)ExitWindowsEx()就可以了,,但是Win2000用的是NT的內(nèi)核,Windows NT不象Win9X和DOS那樣可以隨意進(jìn)行底層的操作,,它非常注重系統(tǒng)每個進(jìn)程的權(quán)利(這也是為什么Win9X和DOS底下病毒成災(zāi)的原因),,在Win2000下,要退出操作系統(tǒng),,必須賦予它足夠的權(quán)限,。圖4是關(guān)機(jī)子程序流程圖。
圖4 關(guān)機(jī)子程序流程圖
為了繪制UPS各個運(yùn)行參數(shù)的實時平滑曲線,,得到掃描的效果,,本程序中使用了一個重要的API函數(shù)BitBlt,。在主窗體的菜單中,“窗口”主菜單在設(shè)計時,,選取“顯示窗口列表”項,。這樣,不用編寫任何代碼,,“窗口”主菜單下就會自動顯示MDI窗體的已打開子窗體的列表,。其它子菜單的程序也很簡單,只需調(diào)用MDIForm對象的Arrange方法就可以了,。“語言”菜單下的“英文”或簡體中文,,編程的思路和過程是一樣的,只不過是做做翻譯工作而已,。對于菜單中的“關(guān)于UPS監(jiān)控軟件”,,主要是獲得注冊表中的一些系統(tǒng)信息,Visual Basic開發(fā)軟件本身也帶有這方面的例示窗體和源代碼,,可以根據(jù)需要作相應(yīng)的改變,。
3 結(jié)語
該軟件在Windows98和Windows2000下調(diào)試通過,其功能也基本上能滿足一般UPS監(jiān)控系統(tǒng)的要求,。不過,,程序運(yùn)行時總覺得不是很流暢,這是因為當(dāng)一個窗體界面的設(shè)計中要容納多張圖片和多個控制時,,將出現(xiàn)窗體顯示速度明顯變慢的現(xiàn)象,。為此,將“界面設(shè)計窗體”和“功能實現(xiàn)窗體”分開處理,,基本可以解決這一問題,。即在設(shè)計時根據(jù)需要設(shè)計漂亮的界面,但是在全屏運(yùn)行時將該界面復(fù)制到剪貼板上,,然后將其作為一張圖片粘貼在功能實現(xiàn)窗體的背景上,。這樣,從外觀上看效果相同,,但是顯示速度明顯加快,。不過,不可避免地增加了程序本身的存儲容量,。