基于WEB的通信電源的遠(yuǎn)程監(jiān)控研究與實(shí)現(xiàn)
概述
隨著IT技術(shù)的發(fā)展, 帶動(dòng)了各行各業(yè), 局域網(wǎng)、廣域網(wǎng)和互連網(wǎng)的普遍實(shí)施, 多數(shù)單位有了自己的網(wǎng)站, 各系統(tǒng)也建立了自己的網(wǎng)絡(luò)。因此, 對(duì)系統(tǒng)的可靠性要求也提高了。
傳統(tǒng)的UPS電源往往是等到機(jī)器出現(xiàn)了故障, 不能正常供電, 才由值班人員去查找故障所在, 這樣勢(shì)必耗費(fèi)很多寶貴的時(shí)間, 而且很多場(chǎng)合也是不允許的。隨著微處理器CPU和監(jiān)控軟件的引入, 大大增加了UPS的自檢功能。 多數(shù)UPS都配備了自己的監(jiān)控軟件, 當(dāng)UPS故障時(shí), 監(jiān)控軟件就可以通過(guò)面板上的液晶顯示屏, 將故障的部位或器件顯示出來(lái), 大大節(jié)省了時(shí)間。
隨著網(wǎng)絡(luò)技術(shù)的普及, 用戶又向UPS提出了更高的要求:UPS應(yīng)具有無(wú)人值守功能, 并且不但具有自檢功能, 還應(yīng)具有聯(lián)網(wǎng)功能, 即, 不但在網(wǎng)上可以隨時(shí)觀察UPS的各項(xiàng)運(yùn)行參數(shù), 而且在市電或UPS故障時(shí), 可以向服務(wù)器、 工作站等發(fā)出信息, 同時(shí)也可以打電話、 發(fā)傳真或?qū)ず舻仁侄瓮ㄖ蛋嗳藛T。反過(guò)來(lái), 網(wǎng)絡(luò)技術(shù)以及信息技術(shù)的發(fā)展為UPS通信電源的網(wǎng)絡(luò)化監(jiān)控提供了可能, 而建立在WEB上的納入工廠整體信息化的遠(yuǎn)程監(jiān)控系統(tǒng), 才是未來(lái)發(fā)展的方向。
以數(shù)據(jù)庫(kù)為中心的監(jiān)控方案
傳統(tǒng)的監(jiān)控方法基本上都是以數(shù)據(jù)庫(kù)為中心的解決方案,其中的控制網(wǎng)絡(luò)可以是各種現(xiàn)場(chǎng)總線,也可以是其它工業(yè)控制網(wǎng)絡(luò),各個(gè)控制節(jié)點(diǎn)通過(guò)它進(jìn)行通訊,監(jiān)控機(jī)通過(guò)發(fā)射電臺(tái)對(duì)電源運(yùn)行狀況進(jìn)行監(jiān)測(cè),收集現(xiàn)場(chǎng)信息,經(jīng)處理后傳送給實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)器;Web服務(wù)器根據(jù)客戶端瀏覽器發(fā)來(lái)的HTTP請(qǐng)求,通過(guò)服務(wù)器擴(kuò)展模塊,從實(shí)時(shí)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),然后傳回給客戶端瀏覽器進(jìn)行顯示??梢钥闯觯麄€(gè)過(guò)程都是圍繞著實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)器展開(kāi)的。這種方法在實(shí)際應(yīng)用中存在許多不足。例如,相對(duì)于監(jiān)測(cè)功能,控制功能的實(shí)現(xiàn)比較困難,編程上難度較大,特別是安全性方面如認(rèn)證、加密。為解決實(shí)時(shí)性問(wèn)題,一般采用輪詢方式,由客戶瀏覽器定時(shí)刷新網(wǎng)頁(yè),而這會(huì)導(dǎo)致效率低下,有些系統(tǒng)也采用事件觸發(fā)方式,利用數(shù)據(jù)庫(kù)服務(wù)器的觸發(fā)器功能主動(dòng)推(push)數(shù)據(jù),但它一般要求Web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器位于同一臺(tái)機(jī)器上,不便于系統(tǒng)擴(kuò)展; 數(shù)據(jù)庫(kù)服務(wù)器是整個(gè)系統(tǒng)的核心,需處理Web服務(wù)器與監(jiān)控機(jī)的請(qǐng)求,工作負(fù)載很重,有可能成為系統(tǒng)性能瓶頸。這些不足之處隨著應(yīng)用模型的擴(kuò)大顯得越來(lái)越明顯,需要新的解決方案。
WEB監(jiān)控系統(tǒng)
基于Web的電源遠(yuǎn)程監(jiān)控系統(tǒng),一般可分為3個(gè)子系統(tǒng): 即現(xiàn)場(chǎng)監(jiān)測(cè)與控制子系統(tǒng);數(shù)據(jù)存儲(chǔ)與轉(zhuǎn)發(fā)子系統(tǒng); 客戶端接收與命令發(fā)送子系統(tǒng)?,F(xiàn)場(chǎng)子系統(tǒng)負(fù)責(zé)采集各個(gè)現(xiàn)場(chǎng)控制節(jié)點(diǎn)的運(yùn)行狀況數(shù)據(jù),然后傳遞給中間層子系統(tǒng);中間層子系統(tǒng)是一個(gè)中介系統(tǒng),由工控機(jī)、Web服務(wù)器和實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)器組成。工控機(jī)通過(guò)電臺(tái)發(fā)射信號(hào)向現(xiàn)場(chǎng)采集數(shù)據(jù),Web服務(wù)器通過(guò)服務(wù)器擴(kuò)展技術(shù)如CGI、 ISAPI等完成與客戶子系統(tǒng)以及現(xiàn)場(chǎng)子系統(tǒng)的交互;客戶子系統(tǒng)是用戶直接與之交互的部分,它接收用戶的輸入,從中間層子系統(tǒng)獲取監(jiān)測(cè)數(shù)據(jù)或向其發(fā)送控制命令。
現(xiàn)場(chǎng)信號(hào)采集模塊選用研華ADAN4017。 研華系列的數(shù)據(jù)采集模塊是一套內(nèi)置微處理器的智能傳感器對(duì)計(jì)算機(jī)接口模塊,它們可以通過(guò)一套簡(jiǎn)單的ASCII格式的命令來(lái)控制并可以以RS485通信協(xié)議傳輸數(shù)據(jù),它有信號(hào)濾波A/D、 D/A轉(zhuǎn)換、數(shù)據(jù)比較以及數(shù)字通信功能。模塊上沒(méi)有設(shè)置開(kāi)關(guān)來(lái)配置參數(shù)和定標(biāo)矯正,只能接受來(lái)自主機(jī)的命令,來(lái)改變模擬量輸入范圍、熱電偶或熱電阻輸入。所有模塊的配置參數(shù)包括I/O地址、通信速率、奇偶校驗(yàn),校驗(yàn)和高低報(bào)警均可以遠(yuǎn)程設(shè)置。另外看門狗定時(shí)器的超強(qiáng)功能可以使系統(tǒng)運(yùn)行失敗時(shí)重新啟動(dòng)模塊。
因?yàn)镽S-486網(wǎng)絡(luò)具有低噪讀傳感器方式,所以模塊可以放置在靠近噪聲源的地方利用ADAM的RS-485接收模塊,最多可以連接256個(gè)數(shù)據(jù)采集模塊到一個(gè)RS-485多點(diǎn)網(wǎng)絡(luò)上。主機(jī)通過(guò)RS-232/RS-485轉(zhuǎn)化模塊經(jīng)串口連到485網(wǎng)絡(luò)上。
系統(tǒng)中,工控機(jī)的功能與前面描述所不同的是它不但與實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行通信,而且還通過(guò)套接字Socket與應(yīng)用服務(wù)器通信,即它將采集到的數(shù)據(jù)傳給數(shù)據(jù)庫(kù)服務(wù)器的同時(shí)還接收來(lái)自應(yīng)用服務(wù)器發(fā)出的控制命令。當(dāng)用戶訪問(wèn)系統(tǒng)時(shí),通過(guò)瀏覽器向Web服務(wù)器發(fā)出HTTP請(qǐng)求,然后ActiveX控件隨同HTML文件下載到客戶端并由瀏覽器解釋執(zhí)行,ActiveX控件與應(yīng)用服務(wù)器建立Socket連接,用戶進(jìn)行監(jiān)控操作只要通過(guò)ActiveX控件的界面就可以進(jìn)行了。
Socket編程
應(yīng)用程序之間的數(shù)據(jù)交換是數(shù)據(jù)通信的重要問(wèn)題,在TCP/IP網(wǎng)絡(luò)環(huán)境下的應(yīng)用程序是通過(guò)網(wǎng)絡(luò)編程界面Socket實(shí)現(xiàn)的。 Socket通常又稱為網(wǎng)絡(luò)套接字,利用Socket進(jìn)行通信有兩種方式: 第一種是流方式,也稱為面向連接的方式。在這種方式下,每一次完整的數(shù)據(jù)傳輸都要經(jīng)過(guò)建立連接、使用連接、終止連接的過(guò)程。在數(shù)據(jù)傳輸過(guò)程中,各數(shù)據(jù)分組不攜帶目的地址而且內(nèi)容相同。TCP協(xié)議采用的就是這種方式。第二種是數(shù)據(jù)報(bào)方式,又稱為無(wú)連接方式。在這種方式下,每個(gè)分組都攜帶完整的目的地址,各分組在系統(tǒng)中獨(dú)立傳送。無(wú)連接服務(wù)不能保證分組的先后順序,不進(jìn)行分組出錯(cuò)的恢復(fù)與重傳,不保證傳輸?shù)目煽啃訳DP協(xié)議提供無(wú)連接的數(shù)據(jù)報(bào)服務(wù)
使用Socket進(jìn)行網(wǎng)絡(luò)通信程序設(shè)計(jì)和其它客戶機(jī)/服務(wù)器模式通信應(yīng)用程序設(shè)計(jì)過(guò)程一樣,客戶機(jī)程序(進(jìn)程)發(fā)送請(qǐng)求給服務(wù)器(進(jìn)程),服務(wù)器進(jìn)程對(duì)客戶機(jī)的請(qǐng)求作出響應(yīng),并產(chǎn)生結(jié)果。
客戶/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)求方式,首先服務(wù)器方要先啟動(dòng),并根據(jù)請(qǐng)求提供相應(yīng)服務(wù)。
服務(wù)器方
1.打開(kāi)一通信通道并告知本地主機(jī),它愿意在某一公認(rèn)地址上接收客戶請(qǐng)求;
2. 等待客戶請(qǐng)求到達(dá)該端口;
3. 接收到重復(fù)服務(wù)請(qǐng)求,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào)。接收到并發(fā)服務(wù)請(qǐng)求,要激活一新進(jìn)程來(lái)處理這個(gè)客戶請(qǐng)求。新進(jìn)程處理此客戶請(qǐng)求,并不需要對(duì)其它請(qǐng)求作出應(yīng)答。服務(wù)完成后,關(guān)閉此新進(jìn)程與客戶的通信鏈路,并終止。
4. 返回第二步,等待另一客戶請(qǐng)求;
5.關(guān)閉服務(wù)器。
客戶方
1.打開(kāi)一通信通道,并連接到服務(wù)器所在主機(jī)的特定端口;
2.向服務(wù)器發(fā)送服務(wù)請(qǐng)求報(bào)文,等待并接收應(yīng)答;繼續(xù)提出請(qǐng)求;
3.請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。
從上面所描述過(guò)程可知:
1.客戶與服務(wù)器進(jìn)程的作用是非對(duì)稱的,因此編碼不同。
2.服務(wù)進(jìn)程一般是先于客戶請(qǐng)求而啟動(dòng)的。只要系統(tǒng)運(yùn)行,該服務(wù)進(jìn)程一直存在,直到正?;驈?qiáng)迫終止。
微軟公司聯(lián)合其他軟硬件廠商開(kāi)發(fā)了Windows下的網(wǎng)絡(luò)接口-Windows Socket,這樣開(kāi)發(fā)人員就可以在Windows下方便的編寫(xiě)基于圖形界面的網(wǎng)絡(luò)程序。在使用VC進(jìn)行開(kāi)發(fā)時(shí),可以利用MFC提供的CAsyncSocket類和CSocket類,它們都封裝了Windows Socket API。 CAsyncSocket類幾乎是一一對(duì)應(yīng)地封裝了Windows Socket API,該類使得我們可以使用面向?qū)ο蟮姆绞竭M(jìn)行Socket編程,而且可以非常方便地調(diào)用其它MFC對(duì)象,CSocket類則提供了一個(gè)較高級(jí)的Socket支持,它運(yùn)用了MFC的序列化類來(lái)提供和傳輸Socket對(duì)象,使用這兩個(gè)不同的類進(jìn)行開(kāi)發(fā),各有優(yōu)缺點(diǎn)。在靈活性方面,CAsyncSocket類接近于直接調(diào)用Windows Socket API,靈活性較大。而CSocket類要求通信的兩個(gè)程序必須能同時(shí)識(shí)別MFC序列化協(xié)議,靈活性較小。在開(kāi)發(fā)的復(fù)雜程度方面,CAsyncSocket類需要開(kāi)發(fā)者處理各種數(shù)據(jù)類型,比較復(fù)雜。CSocket類則在MFC的序列化類的基礎(chǔ)上不需要開(kāi)發(fā)者處理各種數(shù)據(jù)類型,所以比較簡(jiǎn)單。最后在系統(tǒng)資源消耗方面,CAsyncSocket類不需要為每個(gè)連接建立各自的連接線程,系統(tǒng)資源消耗的少。而CSocket類則需要為每個(gè)連接建立各自的連接線程,連接數(shù)目多時(shí)系統(tǒng)資源消耗較多。
當(dāng)服務(wù)器端與客戶端建立起通信時(shí),客戶端就可以動(dòng)態(tài)地獲得服務(wù)器端傳送過(guò)來(lái)的各種信息,而它也可以發(fā)送各種控制指令給應(yīng)用服務(wù)器,使之作出相應(yīng)的處理。最后,由于監(jiān)控機(jī)上運(yùn)行的監(jiān)控軟件會(huì)以日志的方式不斷的寫(xiě)入數(shù)據(jù)庫(kù),因此,監(jiān)控人員有也可以通過(guò)網(wǎng)絡(luò)服務(wù)器讀取數(shù)據(jù)庫(kù)的數(shù)據(jù)來(lái)獲得監(jiān)控軟件的運(yùn)行狀況信息。
安全性問(wèn)題
在客戶端中,可以對(duì)操作對(duì)象設(shè)置訪問(wèn)權(quán)限,同時(shí)給操作者分配訪問(wèn)優(yōu)先級(jí)和安全區(qū),當(dāng)操作者的優(yōu)先級(jí)小于對(duì)象的訪問(wèn)優(yōu)先級(jí)或不在對(duì)象的訪問(wèn)安全區(qū)內(nèi)時(shí),該對(duì)象為不可訪問(wèn),即要訪問(wèn)一個(gè)有優(yōu)先級(jí)設(shè)置的對(duì)象,要求先具有訪問(wèn)優(yōu)先級(jí),而且操作者的操作安全區(qū)須在對(duì)象的安全區(qū)內(nèi)時(shí),方能訪問(wèn)。操作者的操作優(yōu)先級(jí)級(jí)別從0-999,每個(gè)操作者和對(duì)象的操作優(yōu)先級(jí)級(jí)別只有一個(gè)。系統(tǒng)安全區(qū)共有64個(gè),用戶在進(jìn)行配置時(shí),每個(gè)用戶可選擇除"無(wú)"以外的多個(gè)安全區(qū),即一個(gè)用戶可有多個(gè)安全區(qū)權(quán)限,每個(gè)對(duì)象也可有多個(gè)安全區(qū)權(quán)限。除"無(wú)"以外的安全區(qū)名稱可由用戶按照自己的需要進(jìn)行修改,以此來(lái)保障系統(tǒng)的安全運(yùn)行。在軟件運(yùn)行過(guò)程中,優(yōu)先級(jí)大于900的用戶還可以配置其他操作者,為他們?cè)O(shè)置用戶名、口令、訪問(wèn)優(yōu)先級(jí)和安全區(qū)。只要用戶定義了一記錄報(bào)警和事件文件,在運(yùn)行時(shí),用戶的登錄、注銷和對(duì)變量的操作等事件都記錄在報(bào)警事件文件中。
結(jié)論
現(xiàn)實(shí)生活中的一切電子設(shè)備離開(kāi)了電源就無(wú)從談?wù)9ぷ?,尤其在信息化高速發(fā)展的今天, 停電所帶來(lái)的經(jīng)濟(jì)損失是無(wú)法估量的。因此,研究如何提供穩(wěn)定可靠的電源, 是很有經(jīng)濟(jì)和現(xiàn)實(shí)意義的。
評(píng)論