《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > UPS監(jiān)控軟件設(shè)計(jì)
UPS監(jiān)控軟件設(shè)計(jì)
浙江大學(xué)電力電子技術(shù)研究所
李錫紅,吳建德,何湘寧
摘要: 設(shè)計(jì)了一個(gè)UPS監(jiān)控軟件,以監(jiān)視UPS的實(shí)時(shí)狀態(tài),控制UPS進(jìn)行保護(hù)和切換的參數(shù)、診斷和開關(guān)排程等。
Abstract:
Key words :

UPS監(jiān)控軟件的功能

    UPS監(jiān)控軟件的作用是用來(lái)監(jiān)視和控制UPS。其中,監(jiān)視功能是給一般用戶使用的,而控制功能是給具有特權(quán)用戶使用的。對(duì)于一般用戶只能讀取電源事件和數(shù)據(jù)信息,供用戶分析、判斷UPS故障用;對(duì)于具有特權(quán)的用戶,就可以對(duì)被監(jiān)控的UPS進(jìn)行診斷、測(cè)試、配置參數(shù)等操作。具體來(lái)說(shuō),有以下幾個(gè)方面:

    1)各種圖形用戶界面顯示UPS的輸入電壓、輸出電壓、輸入頻率、輸出頻率、電池電壓、輸出電流等參數(shù),以掌握當(dāng)前UPS的實(shí)時(shí)狀態(tài);

    2)可查看UPS的事件日志和數(shù)據(jù)日志,全面分析電源的歷史狀況;

    3)靈活的事件管理與告警方式,以便系統(tǒng)管理員或用戶采取相應(yīng)的應(yīng)急措施;

    4)無(wú)人值守時(shí)發(fā)生嚴(yán)重電源故障情況下的文件自動(dòng)保存并關(guān)閉系統(tǒng),使已做的工作不會(huì)因電源故障丟失;

    5)可對(duì)UPS的運(yùn)行參數(shù)和關(guān)機(jī)參數(shù)進(jìn)行設(shè)置;

    6)可預(yù)定UPS的關(guān)機(jī)、重啟和測(cè)試計(jì)劃;

    7)中、英文界面,能適應(yīng)各種主流操作系統(tǒng)。

2  監(jiān)控平臺(tái)的設(shè)計(jì)

2.1  監(jiān)控界面設(shè)計(jì)

    如果要實(shí)現(xiàn)UPS的監(jiān)控功能,很明顯,一個(gè)窗體是不能滿足要求的,必須采用多窗體界面。為了程序能同時(shí)打開多個(gè)文件,使用多文檔界面MDI(Multiple Document Interface)編程。MDI是指在一個(gè)窗體中能夠建立多個(gè)子窗體的操作界面,它允許程序同時(shí)顯示多個(gè)文檔,每個(gè)文檔顯示在它自己的窗口中。文檔或子窗口被包含在父窗體中,父窗口為應(yīng)用程序中所有的子窗口提供工作空間。在運(yùn)行時(shí),子窗體顯示在MDI窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下)。當(dāng)子窗體最小化時(shí),它的圖標(biāo)顯示在MDI窗體的工作空間之內(nèi),而不是在任務(wù)欄中。圖1為該監(jiān)控平臺(tái)的主窗體。

圖1  UPS監(jiān)控界面平臺(tái)主窗體

    由于該軟件的設(shè)計(jì)得到了(溫州)中國(guó)鴻寶電源有限公司的大力支持,為了表示感謝,在該軟件的運(yùn)行前先顯示該公司的標(biāo)志畫面,也就是給該軟件添加一個(gè)程序封面。程序封面的設(shè)計(jì)有2種方法:多窗體編程方法和隱藏控件方法。前者是在程序封面窗體上放置一個(gè)時(shí)間控件,待設(shè)定的時(shí)間后自動(dòng)關(guān)閉封面切換到主窗體,為了能夠人為地切換封面和主窗體,可在封面窗體鼠標(biāo)單擊事件中增加相應(yīng)的代碼;后者是在程序運(yùn)行時(shí)使用Visible屬性,首先,將主窗體上的全部控件隱藏,然后,在主窗體內(nèi)進(jìn)行程序封面的演示,延時(shí)一定時(shí)間后再恢復(fù)所有控件的顯示,如果主窗體內(nèi)的控件很多,可以將這些控件設(shè)計(jì)在一個(gè)容器控件上,這樣只要設(shè)置該容器控件的Visible屬性即可。

    由于UPS監(jiān)控軟件適合兩種用戶,所以接下來(lái)的是登錄窗體和注冊(cè)窗體的設(shè)計(jì)。為了用多種圖形界面顯示UPS的實(shí)時(shí)狀態(tài),該軟件設(shè)計(jì)了4種窗體專門用來(lái)顯示UPS的運(yùn)行參數(shù)及其狀態(tài)。在數(shù)據(jù)日志中,用戶可以自由設(shè)定歷史數(shù)據(jù)存儲(chǔ)周期,并借助數(shù)據(jù)列表回放UPS的運(yùn)行狀態(tài),分析UPS的某一次異常事件,全面了解UPS的運(yùn)行狀態(tài)與走勢(shì)。另外,還有事件日志、計(jì)劃任務(wù)、事件及其反映、遙控、UPS運(yùn)行參數(shù)和關(guān)機(jī)參數(shù)設(shè)置等窗體??勺灾髟O(shè)置UPS的運(yùn)行計(jì)劃,檢測(cè)計(jì)劃系統(tǒng)可按用戶事先選定的項(xiàng)目以一定周期進(jìn)行自檢,同時(shí),系統(tǒng)還可按用戶的需要預(yù)約UPS的開機(jī)、關(guān)機(jī)時(shí)間。

    根據(jù)上述監(jiān)控軟件的功能,可以設(shè)計(jì)該監(jiān)控平臺(tái)的菜單結(jié)構(gòu)如圖2所示。

圖2  監(jiān)控界面平臺(tái)的菜單結(jié)構(gòu)

2.2  軟件實(shí)現(xiàn)

    該軟件包含2個(gè)部分:數(shù)據(jù)庫(kù)部分和應(yīng)用程序部分。在本程序里面,將使用Microsoft Access 2000來(lái)建立數(shù)據(jù)庫(kù),使用VisualBasic6.0來(lái)編制應(yīng)用程序。數(shù)據(jù)庫(kù)部分包含3個(gè)表格:用戶表,事件日志表和數(shù)據(jù)日志表。用戶表中包含該用戶的帳號(hào),密碼和用戶類型;事件日志表中包含日期,時(shí)間,事件描述,事件處理等各項(xiàng)內(nèi)容;數(shù)據(jù)日志表中包含日期,時(shí)間和UPS的主要運(yùn)行狀態(tài)參數(shù)。

    要使用該軟件必須輸入用戶名和密碼,軟件根據(jù)數(shù)據(jù)庫(kù)中的資料判斷該用戶的注冊(cè)類型,決定該軟件的使用權(quán)限。如果沒(méi)有這個(gè)用戶,則請(qǐng)求用戶注冊(cè)成為新用戶。用戶注冊(cè)時(shí),要填寫一些必要的個(gè)人信息,如果該注冊(cè)名已經(jīng)存在,系統(tǒng)將要求采用其它的用戶名重新注冊(cè),保存后存放到用戶表中去。只有系統(tǒng)管理員級(jí)別的用戶才能使用該軟件的所有功能,一般用戶只能使用該監(jiān)視方面的功能。

    電源監(jiān)控軟件開發(fā)的關(guān)鍵環(huán)節(jié)是如何實(shí)現(xiàn)計(jì)算機(jī)串并口與電源設(shè)備的通信(即計(jì)算機(jī)采集電源設(shè)備送出的狀態(tài)信號(hào),經(jīng)分析處理后在終端上顯示或發(fā)出控制信號(hào)送往電源設(shè)備),而最簡(jiǎn)單的信息傳送方式就是使用串行通信。VB中提供了一個(gè)重要的通信控件:MSComm。在本程序中使用到該軟件的5個(gè)重要屬性:CommPort,Settings,PortOpen,Input,Output。Settings屬性設(shè)置為“1200,N,8,1”。PortOpen屬性使用前必須打開,用完后必須關(guān)閉。圖3是該監(jiān)控軟件的主流程圖。

圖3  上位機(jī)監(jiān)控軟件主流程圖

    該軟件包含對(duì)30多種電源事件的處理,處理的方式有:通知系統(tǒng)管理員,執(zhí)行命令文件,發(fā)送電子郵件或傳呼信息給指定的用戶報(bào)警,在嚴(yán)重的情況下執(zhí)行文件自動(dòng)保存后關(guān)閉系統(tǒng)。這里主要通過(guò)調(diào)用系統(tǒng)的API函數(shù)來(lái)實(shí)現(xiàn)。實(shí)際上,在整個(gè)軟件的編寫過(guò)程中,很多子程序都用到了相應(yīng)的API函數(shù)調(diào)用。使用Windows API,可以訪問(wèn)常用代碼庫(kù),使用通過(guò)測(cè)試的和認(rèn)證過(guò)的代碼,獲得跨平臺(tái)的兼容性,得到一個(gè)更小巧的應(yīng)用程序。

    該軟件通過(guò)輸出電流來(lái)推算負(fù)載百分比,而蓄電池的電壓可以反映電池的剩余容量,所以程序通過(guò)測(cè)量電池電壓并查表來(lái)近似推算蓄電池的剩余容量。并通過(guò)當(dāng)前輸出電流和計(jì)算得到的電池剩余容量估算出電池的剩余放電時(shí)間,再根據(jù)得到的剩余放電時(shí)間來(lái)決定是否需要進(jìn)行計(jì)算機(jī)的自動(dòng)保存操作。如果自動(dòng)存檔時(shí),檔案未賦予文件名,軟件以temp格式暫存或離開,供電系統(tǒng)正常后,用戶還可查看上次關(guān)閉Windows時(shí)關(guān)閉的應(yīng)用程序名稱和儲(chǔ)存的檔案。

    由于該軟件要適應(yīng)各種主流操作系統(tǒng),如Win9X和Win2000。當(dāng)文件自動(dòng)保存后,要退出操作系統(tǒng),安全關(guān)機(jī)。這時(shí),要注意兩類操作系統(tǒng)的區(qū)別。在Win9X中退出操作系統(tǒng),只需調(diào)用一個(gè)底層的API函數(shù)ExitWindowsEx()就可以了,但是Win2000用的是NT的內(nèi)核,Windows NT不象Win9X和DOS那樣可以隨意進(jìn)行底層的操作,它非常注重系統(tǒng)每個(gè)進(jìn)程的權(quán)利(這也是為什么Win9X和DOS底下病毒成災(zāi)的原因),在Win2000下,要退出操作系統(tǒng),必須賦予它足夠的權(quán)限。圖4是關(guān)機(jī)子程序流程圖。

圖4  關(guān)機(jī)子程序流程圖

    為了繪制UPS各個(gè)運(yùn)行參數(shù)的實(shí)時(shí)平滑曲線,得到掃描的效果,本程序中使用了一個(gè)重要的API函數(shù)BitBlt。在主窗體的菜單中,“窗口”主菜單在設(shè)計(jì)時(shí),選取“顯示窗口列表”項(xiàng)。這樣,不用編寫任何代碼,“窗口”主菜單下就會(huì)自動(dòng)顯示MDI窗體的已打開子窗體的列表。其它子菜單的程序也很簡(jiǎn)單,只需調(diào)用MDIForm對(duì)象的Arrange方法就可以了。“語(yǔ)言”菜單下的“英文”或簡(jiǎn)體中文,編程的思路和過(guò)程是一樣的,只不過(guò)是做做翻譯工作而已。對(duì)于菜單中的“關(guān)于UPS監(jiān)控軟件”,主要是獲得注冊(cè)表中的一些系統(tǒng)信息,Visual Basic開發(fā)軟件本身也帶有這方面的例示窗體和源代碼,可以根據(jù)需要作相應(yīng)的改變。

3  結(jié)語(yǔ)

    該軟件在Windows98和Windows2000下調(diào)試通過(guò),其功能也基本上能滿足一般UPS監(jiān)控系統(tǒng)的要求。不過(guò),程序運(yùn)行時(shí)總覺(jué)得不是很流暢,這是因?yàn)楫?dāng)一個(gè)窗體界面的設(shè)計(jì)中要容納多張圖片和多個(gè)控制時(shí),將出現(xiàn)窗體顯示速度明顯變慢的現(xiàn)象。為此,將“界面設(shè)計(jì)窗體”和“功能實(shí)現(xiàn)窗體”分開處理,基本可以解決這一問(wèn)題。即在設(shè)計(jì)時(shí)根據(jù)需要設(shè)計(jì)漂亮的界面,但是在全屏運(yùn)行時(shí)將該界面復(fù)制到剪貼板上,然后將其作為一張圖片粘貼在功能實(shí)現(xiàn)窗體的背景上。這樣,從外觀上看效果相同,但是顯示速度明顯加快。不過(guò),不可避免地增加了程序本身的存儲(chǔ)容量。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。