本文提出了一個機房計算機電源集中監控系統方案,可實時、高效、方便地監控、管理機房計算機電源設備,并實現對機房的計算機集中監控、少人值守的目標,。
本系統的目標是:通過相關軟件、硬件的設計,實現由1臺主機(上位機)通過單片機(下位機)監控多個機房中多臺計算機的開關情況。即利用主機的監控軟件與單片機進行通信,以實現對計算機電源的監控功能。本系統應具備如下功能:
(1)通過鍵盤或鼠標對多臺計算機進行開關控制并對整個機房的所有計算機進行開關狀態的檢測。
(2)上位機與下位機能進行可靠、實時的通信。
(3)界面設計清晰,功能齊全。備有菜單及各機房的電腦分布圖,并帶有右鍵快速菜單。
(4)能根據不同機房中不同電腦臺數自動調整布局。
1 軟硬件的選取及上下位機間通信協議的定義
基于上述目標與功能,要實現本系統,首先要解決以下幾個問題:
1.1 主機與單片機之間通信信道的選取
串行通信一次只傳1個位,處理的數據電壓只有一個準位,因此不容易漏失數據。如果再加上一些防范措施,數據漏失就更不容易發生了。串行通信端口(RS-232)是每部計算機上的必要配備,通常含有COM1與COM2 2個信道,一般的計算機將COM1以9 Pin的接頭接出,而以25 Pin的接頭將COM2接出。新一代的計算機均以9 Pin的接頭接出所有的RS-232通信端口。通常與計算機連接的溝通接口是RS-232,它不僅實用簡單,而且價格便宜。因此本系統采用RS-232串行通信方式用于上、下位機間的通信。
1.2 監控軟件開發平臺的選取
Visual Basic是Windows環境下的一個可視化軟件開發平臺。由于開放式的結構,Visual Basic允許外掛控件,因此有更多的廠商為Visual Basic撰寫控件,供系統開發者選用,從而為開發者提供了更方便的系統開發方案。這些控件可用于設計界面和實現各種功能,減少了編程人員的工作量,也簡化了界面設計過程,從而有效地提高了應用程序的運行效率和可靠性。所以,本系統采用Visual Basic作為監控軟件平臺。
MSComm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件。MSComm控件提供了二種處理通信的方法:事件驅動法及查詢法。
(1)事件驅動法:OnComm事件是MSComm控件提供的惟一的事件。當有數據到達端口或端口狀態發生改變或有通信錯誤產生時,都將觸發OnComm事件,以捕獲和處理這些通信事件和通信中產生的錯誤信息。通過查詢CommEvent屬性值,可以獲得關于通信事件和通信錯誤的完整信息,進而進行處理。這是一種功能很強的處理串行口活動的方法,具有程序響應及時、可靠性高等優點。
(2)查詢法:MSComm控件的CommEvent屬性返回通信中產生的事件和錯誤類型,由通信控件自動檢測和跟蹤通信狀態后設置。因此,在小程序中,程序員可以在每個重要的程序功能之后通過檢查CommEvent屬性值來檢測事件和通信錯誤。本系統采用查詢法作為處理通信的方法。
1.3 單片機型號以及芯片的選取
單片機主要采用Intel公司MCS-51系列8031單片機,并使用MCS-51匯編語言開發。
1.4 監控軟件與單片機之間通信協議的定義
主機與單片機要進行實時、可靠的通信,必須定義一套良好的通信協議。
本系統的通信參數設置如表1所示,采用的通信協議如表2所示。
其中:Roomadd:機房代碼(即單片機的地址碼),1個字節,由01H開始編碼。
Command:命令碼,1個字節(命令碼的格式見表3)。
Byte count:數據長度,要監控的計算機總數量+1(最后1幀1為校驗幀),1個字節。
PCadd:PC編號,每個PC編號1個字節,由01H開始編碼。
Checksum:算術校驗和,1個字節,是所有PC編號的算術相加后對256取模而得到的。
Cmdresponse:單片機回應的采集數據,具體格式見表4。
其中:D7為1,表示該PC狀態為“開”;D7為0,表示該PC狀態為“關”。PC地址由01H開始編碼。約定00H為接收成功反饋信號。
2 系統總體設計模塊
根據本系統要實現的功能,可以將系統劃分為如圖1所示的3個模塊。
2.1 監控部分
監控部分可以分為監測和控制2個模塊。監測模塊的主要功能是對整個機房的所有計算機或某幾臺計算機進行開關狀態的檢測。主機通過串口向單片機發送監測信號,然后根據單片機的反饋信號(即模擬的計算機開關狀態數據)在界面上顯示出模擬狀態。若沒有收到單片機的反饋信號,則提示操作失敗。控制模塊的主要功能是對機房的所有計算機或某幾臺計算機進行開/關控制。主機通過串口給單片機發開/關信號。若主機收到單片機反饋的操作成功信號,則表示操作成功,在界面上顯示對應計算機的開/關狀態。若沒有接收到單片機的操作成功反饋信號,則提示操作失敗。
2.2 系統設置部分
該模塊對本系統進行一些設定。如機房配置:包括機房代碼、機房名稱、機房計算機數量的設定,定時監測時間的設定,生成報告的設定等。這些設定使系統能適應不同需要,更靈活地在不同場合運作。
2.3 歷史記錄查詢管理部分
該模塊的主要功能是記錄每間機房中所有計算機的開機、關機時間,并提供查詢功能,使管理人員知道某臺計算機開關時間及在某一時刻某臺計算機開關狀態。
3 主界面設計
用戶界面應具備如下的特性:
(1)使用簡單:界面簡潔明了、操作方便。
(2)具有容錯能力:具有錯誤診斷、修正錯誤以及出錯保護的功能;
(3)系統能夠按照用戶的希望和需要,提供不同詳細程度的系統響應信息,包括反饋信息、提示信息、幫助信息、出錯信息等;
(4)在完成特定功能的前提下,使用戶界面越簡單越好。用戶界面應能保證用戶正確、可靠地使用系統,保證有關程序和數據的安全性。
為方便管理人員監控,在用戶界面設計中采用圖形化人機界面,力求簡單靈活。在系統主屏幕中,以1個圖標表示機房的1臺電腦,并用不同顏色的圖標來表示電腦開關的不同狀態。
4? 初始化設計
在進行功能設計之前,首先要對系統進行初始化設計,主要初始化流程如圖2所示。
4.1 通信控件MSComm的設置
本系統對控件的具體設置如下:
MSComm1.CommPort=1 //使用COM1作為通信端口
MSComm1.PortOpen=True //打開通信端口
MSComm1.InputMode=comInputModeBinary
//以二進制方式讀取數據
MSComm1.InputLen=0//每次讀取接收
//緩沖區的全部內容
MSComm1.RThreshold=0 //使用查詢方式,關中斷
MSComm1.Settings=″9600,n,8,1″ //通信參數設置,波
//特率9600,不作奇偶校驗,8位數據位,1位停止位
由于每次發送和接收的數據長度都不相同,所以很難確定RThreshold的屬性值,以產生中斷;另外,由于系統采用面向對象編程,每次是以某個事件觸發發送和接收數據的,因此系統采用查詢InBufferCount的值來決定是否接收數據,而不采用中斷的方式。
此外,對于微機與單片機組成的數據采集處理系統,由于數據的傳輸多采用十六進制方式,所以將MSComm設置為以二進制方式讀取數據。
4.2 根據機房配置數據表對系統進行初始化
因為本系統是采用動態方式顯示數據的,機房的配置(機房代碼、機房名、計算機數量)是存儲在數據庫(“機房監控.mdb”)中的機房配置數據表中,所以在裝載系統時要取出數據表中的數據來初始化系統。
本系統定義了一個二維全局數組Public pcroom(1 To 100,1 To 2)As Variant來存儲機房配置數據表中的機房數據。第一維表示機房代碼,設定為最多可以有100間機房,并可以根據需要更改數組的下標來增加或減少機房的數量。Pcroom(i,1)表示機房名,Pcroom(i,2)表示該機房的計算機數量,i表示機房代碼(1≤i≤100)。
4.3 界面中與機房有關的控件的初始化
在本系統中,與機房名有關的控件有4個,其中2個是ComboBox(Combo1,用來顯示當前機房列表),一個在主界面(Form1),一個在歷史記錄查詢窗口(frmhistory);另外2個是ListBox,它們在定時監測機房設定窗口(fixchkset),名稱為lstall和lstsel。
5? 功能設計
5.1 監測模塊
監測模塊的主要功能是發監測信號給單片機,要求讀取特定計算機的電源開關狀態。監測部分根據操作方式可分為定時操作與非定時操作(人工操作);根據所監測的計算機數量分類,可以分為監測全部和部分監測(要監測的計算機數量大于等于1,小于機房的計算機總數)。
定時監測功能是為了使機房管理人員能夠及時了解特定計算機的開關狀態而設置的。它允許使用者通過設定時間間隔及選取要操作的計算機,實現每隔一段時間驅動一次監測事件,從而返回特定計算機在當前時刻的開關狀態。此項功能不但免去了人工操作的麻煩,而且提高了系統的實時性。使用者不必長時間在電腦面前觀察每臺計算機的狀態。只要設置了定時監測功能,系統就會每隔一段時間自動進行監測,管理人員只要查看歷史記錄就可以知道這些計算機的使用情況。定時監測實際上利用一個定時器控件,當到達定時器的時間間隔時,就觸發一次監測事件。
5.2 控制模塊
控制部分要實現的功能是發開/關信號給下位機,要求將特定計算機的狀態設為開/關。若接收到下位機的正確反饋信號,則在界面上將相應計算機的圖標置為開/關;若接收出錯,則給出出錯提示。根據要控制的計算機數量,可以分為部分控制(開/關)和全部控制(全部開/全部關)二類,前者控制一臺或多臺計算機,后者控制當前機房的所有計算機。
5.3 設置部分
5.3.1 修改密碼
本系統在啟動時要求管理員輸入正確的密碼才能登錄系統。在登錄之后可以重新修改密碼。
5.3.2 生成報告設定
本系統提供了將機房計算機當前時刻的狀態、相關數據生成報告的功能。報告的格式為以機房名命名的文本文件。使用者可以根據需要選擇不同的報告生成方式。
5.3.3 定時監測機房設定
除了提供定時監測功能外,本系統還提供了定時監測機房功能,以方便管理者定時自動監測多間機房的計算機。
5.3.4 生成報告設定
本系統提供了將機房計算機當前時刻的狀態及相關數據生成報告的功能。報告的格式為以機房名命名的文本文件,使用者可以根據需要選擇不同的報告生成方式。
5.3.5 定時監測機房設定
除了提供定時監測功能外,本系統還提供了定時監測機房功能,以便管理者能定時自動監測多間機房的計算機。
5.3.6 機房配置
本系統可以根據不同的機房配置來動態改變界面的相關顯示。本系統提供了機房配置功能以方便管理者在系統運行時更改機房的配置。
5.4 歷史記錄查詢管理
本系統能夠對所有計算機的開關機時間做系統記錄。每臺計算機只要經過了開機→關機這個過程,就將它的數據存放到數據庫中。這些記錄有助于管理人員管理機房,了解計算機的使用情況。
6? 系統的安全性、可靠性和實時性
6.1 系統的安全性
本系統運行時有二種登錄方式,一種是一般用戶,以用戶名guest登錄;另一種是管理員,以用戶名administrator登錄。第一種登錄方式不需要登錄密碼,但它的功能有限,只能進行監測和監測機房操作,不能做其他操作,也不能對系統進行設定或者查詢歷史記錄;第二種登錄方式的登錄者為管理員,需要輸入正確的密碼才能登錄,登錄成功后可以使用系統的全部功能,包括監控、設定和查詢功能。
當使用者試圖以其他用戶名登錄的時候,系統會彈出提示框,提示用戶要以guest或administrator用戶名登錄。當使用者以用戶名administrator登錄,但輸入了錯誤的密碼時,系統會提示輸入密碼錯誤,讓用戶重新輸入。如果連續3次輸入錯誤,則強行退出系統。登錄密碼存放在當前路徑的psw.txt文件中,并進行了簡單的加密,其他人可以打開該文本文件,但是看到的是加密后的字符,不是原文,所以具有一定的安全性。
6.2 系統的可靠性
6.2.1 通信可靠性
本系統對各機房進行了編碼(機房代碼),并將它作為下位機的地址碼,編號從01H開始。上位機與某下位機通信時,先發送地址碼,待握手成功后再發送監控命令碼。若在限定時間內收不到單片機的正確響應信號或收到的信號不是00H,則轉出錯處理。
第一次握手成功后,上位機繼續發監控命令碼和數據長度(要監控的計算機數量+1,1為校驗和幀)給下位機。發送完畢后,就等待單片機回送正確響應信號00H,若在限定時間內收到正確反饋信號,則第二次握手成功。否則,轉出錯處理。
第二次握手成功后,上位機開始發送要監控的PC地址,并累加求校驗和。發送完畢后,再發一幀校驗和幀。然后等待單片機回送正確反饋信號00H(第三次握手)。若超時或信號錯誤,則轉出錯。
第三次握手成功后,上位機接收單片機傳來的一幀數據,這幀數據的值表示下位機即將要向上位機發送的數據長度。上位機接收單片機回送的數據并累加校驗和,若接收正確,則向單片機發送00H信號,表示此次操作成功。
上述三次握手,為上位機與下位機的通信提供了較高的可靠性。
6.2.2 系統可靠性
本系統提供了較完善的出錯處理機制及豐富的提示信息,從而提高了系統操作的可靠性。如:輸入出錯提示,包括文本框輸入非法字符,輸入錯誤密碼等等。
6.3 系統的實時性
在上位機與下位機通信時,系統根據要接收的數據長度定義了不同的超時時限,以保證系統的實時性。
7? 總? 結
在本系統中,單片機負責采集電源的模擬開關量,主機通過該系統的監控軟件,可以得到單片機采集到的監測信號,在界面上顯示出來。同時,該監控軟件能對多臺電腦進行開關控制,將這些控制信號發送到單片機。當單片機接收到這些控制信號之后,能驅動相應的模擬器件,將這些信號在硬件上反映出來并反饋信號給主機,從而在軟件界面上顯示出模擬狀態。本系統界面菜單結構清晰,布局合理,功能齊全,響應實時;電路部分設計合理,芯片選擇恰當,調試方便;主機與單片機通信可靠,數據的實時采集和傳輸次序正確。
評論
查看更多