丁健生
(長春工業(yè)大學(xué)軟件職業(yè)技術(shù)學(xué)院,吉林長春 130022)
隨著計算機和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,越來越多的企業(yè)、機關(guān)開始全面實施信息化辦公,各種業(yè)務(wù)對計算機的依賴性越來越高,計算機機房的安全問題也變得越來越重要?,F(xiàn)代化的機房必須配備完善的數(shù)據(jù)采集及監(jiān)控系統(tǒng),實時監(jiān)控機房的溫度、濕度、電磁、煙塵及各服務(wù)器的運行狀態(tài)等可能影響設(shè)備正常運行的因素。然而由于監(jiān)控設(shè)備種類繁多,不同廠家生產(chǎn)的監(jiān)控設(shè)備其通信規(guī)則往往互不相同,導(dǎo)致各種業(yè)務(wù)系統(tǒng)的開發(fā)者不得不為每一種監(jiān)控設(shè)備分別開發(fā)數(shù)據(jù)采集程序[1]。這種模式不僅加重業(yè)務(wù)程序開發(fā)者的負擔(dān),將大量的精力浪費在與業(yè)務(wù)無關(guān)的底層硬件通信程序上,而且不利于整個系統(tǒng)的升級和擴展。當(dāng)添加新的監(jiān)控設(shè)備或更換原有監(jiān)控設(shè)備時,必須修改每一個業(yè)務(wù)系統(tǒng)的數(shù)據(jù)采集程序。因此,監(jiān)控系統(tǒng)的設(shè)計需要一種靈活的松耦合解決方案[2]。
OPC(OLE for Process Control)是由OPC基金會提出的新一代工控軟件規(guī)范[3],其中OPC XML DA(Data Access)規(guī)范規(guī)定了控制程序與不同的設(shè)備之間進行數(shù)據(jù)存取的標(biāo)準(zhǔn)。采用了OPC XM L DA規(guī)范之后,不同的設(shè)備可以使用統(tǒng)一的數(shù)據(jù)交換格式與控制程序通訊。在很大程度上降低了應(yīng)用程序開發(fā)的復(fù)雜性。OPC XML DA規(guī)范采用SOAP/HT TP協(xié)議傳輸數(shù)據(jù),適用于Internet遠程訪問。在本質(zhì)上,OPC XML DA是一種Web服務(wù)[4],可以在任何支持Internet的操作系統(tǒng)上進行訪問,包括Window s,Linux,Unix等主流操作系統(tǒng),十分適合綜合性的分布式控制系統(tǒng)。
目前,國內(nèi)OPC XML DA規(guī)范的應(yīng)用主要集中在大型工業(yè)控制系統(tǒng)中,如大型車間、電廠、油田等環(huán)境。對于其在機房監(jiān)控等輕量級系統(tǒng)中的應(yīng)用,尚缺乏推廣。文中基于OPC XML DA規(guī)范設(shè)計并實現(xiàn)了一套分布式機房監(jiān)控系統(tǒng),通過該系統(tǒng)的實施,可以有效地實現(xiàn)Internet、Wap、短信及Windows客戶端等多種途徑的機房信息實時監(jiān)控,且系統(tǒng)具有良好的開放性,易于擴展和維護。
分布式監(jiān)控系統(tǒng)的硬件架構(gòu)由內(nèi)網(wǎng)應(yīng)用及公網(wǎng)應(yīng)用兩大部分組成,內(nèi)網(wǎng)主要負責(zé)實時數(shù)據(jù)采集并通過OPC服務(wù)器發(fā)布,公網(wǎng)應(yīng)用為各種遠程客戶端提供服務(wù)。系統(tǒng)的硬件拓撲結(jié)構(gòu)如圖1所示。
圖1 分布式機房監(jiān)控系統(tǒng)硬件架構(gòu)拓撲圖
各種傳感器通過各自的連線方式與控制機相連,在控制機上運行數(shù)據(jù)采集程序,控制機通過交換機與OPC服務(wù)器相連,構(gòu)成采集、發(fā)布監(jiān)控信息的高速局域網(wǎng)絡(luò)。此網(wǎng)絡(luò)本身可作為一個獨立的系統(tǒng)運行,也可在其上通過添加應(yīng)用服務(wù)器來部署若干應(yīng)用程序(如報警及監(jiān)控日志記錄等),構(gòu)成一個封閉的內(nèi)網(wǎng)應(yīng)用環(huán)境。
現(xiàn)代化的監(jiān)控系統(tǒng)通常要求負責(zé)人能夠隨時隨地利用多種方式查看監(jiān)控信息,如瀏覽器、智能移動設(shè)備甚至手機短信等方式。當(dāng)某一監(jiān)控數(shù)據(jù)超過設(shè)定的閾值后(如機房溫度超過警戒值),監(jiān)控系統(tǒng)應(yīng)立即向負責(zé)人發(fā)出警報,即使在無人監(jiān)守的情況下,也應(yīng)以短信或手機呼叫等方式通知負責(zé)人,以減少重大事故發(fā)生的幾率。顯然封閉的內(nèi)網(wǎng)應(yīng)用并不能滿足此需求,為此分布式監(jiān)控系統(tǒng)的設(shè)計提供了支持公網(wǎng)應(yīng)用的能力。
監(jiān)控系統(tǒng)支持多種公網(wǎng)應(yīng)用,如Internet網(wǎng)絡(luò)、GPRS網(wǎng)絡(luò)、GSM網(wǎng)絡(luò)等,并可以根據(jù)需要添加新的擴展應(yīng)用或移除某一應(yīng)用。OPC XML DA服務(wù)器本質(zhì)上是一種Web服務(wù),部署在IIS服務(wù)器上,如需要提供Internet支持,僅需要將交換機接入廣域網(wǎng)并設(shè)置IIS服務(wù)器的IP地址即可輕松實現(xiàn)Internet訪問。如需要在智能移動設(shè)備上使用Wap形式訪問監(jiān)控信息,只需要在局域網(wǎng)內(nèi)架設(shè)一臺Wap服務(wù)器,以該服務(wù)器作為中轉(zhuǎn),將OPC XML DA服務(wù)器提供的數(shù)據(jù)轉(zhuǎn)發(fā)給Wap客戶端即可。如果需要通過手機短信來獲取監(jiān)控數(shù)據(jù),可在局域網(wǎng)內(nèi)增加一臺短信服務(wù)器,在收到短信請求以后,從OPC XML DA服務(wù)器讀取數(shù)據(jù),再以短信的形式發(fā)送給手機用戶。該模式還可與報警服務(wù)程序相結(jié)合,從而實現(xiàn)險情發(fā)生時以短信或手機呼叫的模式主動報警。
分布式機房監(jiān)控系統(tǒng)的軟件設(shè)計采用分層式松耦合架構(gòu),從下至上可分為數(shù)據(jù)采集程序、統(tǒng)一數(shù)據(jù)源、應(yīng)用服務(wù)程序及應(yīng)用客戶端程序4層。系統(tǒng)以O(shè)PC XML DA Server為統(tǒng)一數(shù)據(jù)源,將底層各種數(shù)據(jù)采集程序所采集的數(shù)據(jù)以統(tǒng)一的接口進行發(fā)布。以數(shù)據(jù)源為基礎(chǔ)構(gòu)建各種應(yīng)用服務(wù)程序,在應(yīng)用服務(wù)程序的基礎(chǔ)上再構(gòu)建各種應(yīng)用的客戶端。系統(tǒng)的整體軟件架構(gòu)如圖2所示。
圖2 分布式機房監(jiān)控系統(tǒng)軟件架構(gòu)圖
各種針對特定傳感器而開發(fā)的數(shù)據(jù)采集程序是整個分布式監(jiān)控系統(tǒng)中的最底層軟件,直接與硬件通信,是監(jiān)控系統(tǒng)的原始數(shù)據(jù)來源[5]。通常提供硬件設(shè)備的廠商都會配套提供相應(yīng)的設(shè)備驅(qū)動程序,在此基礎(chǔ)上加入局域網(wǎng)通信模塊(文中采用遠程過程調(diào)用RPC方式)即可構(gòu)成數(shù)據(jù)采集程序。
OPC XML DA服務(wù)器在整個分布式監(jiān)控系統(tǒng)中起著“承上啟下”的作用,是整個系統(tǒng)的核心。對下,OPC XML DA服務(wù)器需要將各數(shù)據(jù)采集程序采集到的數(shù)據(jù)按照統(tǒng)一的服務(wù)器組項的格式進行封裝;對上,需要發(fā)布符合OPC XML DA規(guī)范的8個Web Service接口[6],為其上的應(yīng)用服務(wù)程序提供統(tǒng)一格式的數(shù)據(jù)源。
應(yīng)用服務(wù)程序從OPC XML DA Server獲得監(jiān)控數(shù)據(jù),以此為基礎(chǔ)開發(fā)各自的業(yè)務(wù)功能,如短信響應(yīng)、自動報警、監(jiān)控日志記錄等。最終用戶可通過應(yīng)用客戶端程序訪問相應(yīng)的應(yīng)用服務(wù)程序,實現(xiàn)對機房隨時隨地的監(jiān)控,從而構(gòu)成功能強大的分布式監(jiān)控系統(tǒng)。
由于使用OPC XML DA作為數(shù)據(jù)源,各應(yīng)用服務(wù)程序不再需要關(guān)心各種不同的硬件設(shè)備的通信問題,只需按照統(tǒng)一的接口便可從OPC XML DA Server獲得監(jiān)控數(shù)據(jù),大大簡化了業(yè)務(wù)程序的開發(fā)工作。傳統(tǒng)監(jiān)控系統(tǒng)架構(gòu)與基于OPC XML DA規(guī)范的監(jiān)控系統(tǒng)架構(gòu)對比示意圖如圖3和圖4所示。
圖3 傳統(tǒng)監(jiān)控系統(tǒng)軟件架構(gòu)
圖4 基于OPC XM L DA規(guī)范的監(jiān)控系統(tǒng)架構(gòu)
通過對比容易看出,基于OPC XML DA規(guī)范的架構(gòu)設(shè)計使應(yīng)用程序的開發(fā)者從繁雜的硬件通信接口中解脫,只需要專注于業(yè)務(wù)功能的開發(fā),而硬件通信的復(fù)雜性被隔離在OPC XML DA Server以下的數(shù)據(jù)源層。這樣的設(shè)計很大程度上降低了應(yīng)用程序開發(fā)的復(fù)雜度,也使得系統(tǒng)易于擴展和升級。
OPC XML DA Server是整個監(jiān)控系統(tǒng)的數(shù)據(jù)來源,負責(zé)為其上的所有應(yīng)用程序提供數(shù)據(jù),是整個系統(tǒng)的核心部分。在實現(xiàn)上,OPC XML DA服務(wù)器是架設(shè)在IIS(Internet Information Service)上的一個特殊Web服務(wù),它包括管理模塊、實時數(shù)據(jù)采集模塊、數(shù)據(jù)緩沖區(qū)以及OPC XML DA接口4個部分。OPC XML DA服務(wù)器的結(jié)構(gòu)框架如圖5所示。
圖5 OPC XM L DA服務(wù)器結(jié)構(gòu)圖
管理模塊負責(zé)系統(tǒng)的初始化及參數(shù)設(shè)置。
通信模塊負責(zé)與數(shù)據(jù)采集程序通信,并從中獲得監(jiān)控數(shù)據(jù)。該模塊的設(shè)計采用可配置形式,在配置數(shù)據(jù)庫中存儲各個數(shù)據(jù)采集程序的配置信息。當(dāng)OPC XML DA服務(wù)器加載時,將根據(jù)配置數(shù)據(jù)庫中的配置信息來調(diào)用各個數(shù)據(jù)采集程序,從而獲得實際監(jiān)控數(shù)據(jù)。
由于數(shù)據(jù)采集操作較為耗時,加上不同的硬件設(shè)備的響應(yīng)速度差別也較大,當(dāng)需要采集數(shù)據(jù)的設(shè)備較多時,如采用單一線程進行輪詢訪問,會嚴(yán)重影響服務(wù)器的響應(yīng)速度[7-8]。為解決上述問題,OPC XML DA服務(wù)器在設(shè)計時對數(shù)據(jù)采集程序采用多線程(MultiThread)并發(fā)控制,為每一個數(shù)據(jù)采集程序動態(tài)創(chuàng)建一個監(jiān)控線程,主線程通過信號機制協(xié)調(diào)控制各監(jiān)控線程的工作。監(jiān)控線程間在宏觀上處于并行狀態(tài),彼此互不干擾,一個監(jiān)控線程處于等待狀態(tài)時并不會影響其它線程運行,從而保證使各種速率的設(shè)備均能發(fā)揮最大效率。
通信模塊獲得的數(shù)據(jù)是實時的,在通過WebService接口發(fā)布之前,通信模塊會先將采集到的數(shù)據(jù)寫入一個數(shù)據(jù)緩沖池內(nèi)。緩沖區(qū)是設(shè)備數(shù)據(jù)的臨時存儲區(qū),在實現(xiàn)方式上,緩沖池是一塊內(nèi)存存儲區(qū),通信模塊將采集到的實時設(shè)備數(shù)據(jù)暫存在緩沖池內(nèi),如果有OPC客戶端請求數(shù)據(jù),OPC服務(wù)器會立刻將緩沖池內(nèi)的最新數(shù)據(jù)發(fā)送給客戶端。此外,OPC服務(wù)器會定時處理緩沖池內(nèi)的數(shù)據(jù),將緩沖池內(nèi)的數(shù)據(jù)存入歷史數(shù)據(jù)庫,并清空緩沖池。
WebService接口模塊負責(zé)接收來自O(shè)PC XML DA客戶端的請求,并根據(jù)請求將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)封裝成SOAP消息回饋給客戶端,從而對客戶端的請求做出應(yīng)答,為客戶端提供數(shù)據(jù)來源。
通過對OPC XML DA服務(wù)器的訪問,各種應(yīng)用程序可以很方便地獲得標(biāo)準(zhǔn)格式的監(jiān)控數(shù)據(jù)。限于硬件條件,文中僅對機房溫度及濕度數(shù)據(jù)進行了采集。采用Windows桌面程序開發(fā)的監(jiān)控客戶端運行界面如圖6所示。
圖6 機房監(jiān)控Windows客戶端程序界面
分析了OPC XML DA服務(wù)器的工作原理,設(shè)計了一種基于OPC XML DA規(guī)范的分布式機房監(jiān)控系統(tǒng)。該系統(tǒng)以O(shè)PC XML DA服務(wù)器為統(tǒng)一數(shù)據(jù)源,對各種應(yīng)用程序提供統(tǒng)一的數(shù)據(jù)訪問格式,屏蔽了復(fù)雜的硬件設(shè)備通信細節(jié),降低了應(yīng)用程序開發(fā)的復(fù)雜性。通過該系統(tǒng)的實施,可以實現(xiàn)Internet、Wap、手機短信等多種形式的機房監(jiān)控,從而構(gòu)建一個功能強大的分布式機房監(jiān)控系統(tǒng)。同時,該系統(tǒng)的設(shè)計具有通用性,對于其它類型的監(jiān)控系統(tǒng)也有借鑒意義。
[1] 邢建春,王平,仲未央,等.工業(yè)控制軟件互操作標(biāo)準(zhǔn)OPC綜述[J].工業(yè)控制計算機,2006,13(1):29-32.
[2] 岳曉峰,劉磊,王劍飛.分布式遠程油井無線監(jiān)測系統(tǒng)的設(shè)計與實現(xiàn)[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2004,25(4):14-16.
[3] 陳德美,牛秦洲,張烈平.基于OPC的MAT LAB與組態(tài)王的數(shù)據(jù)通信[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2006,27(4):308-310.
[4] 薛福珍,王海明.基于OPC XM L-DA技術(shù)的遠程監(jiān)控系統(tǒng)的設(shè)計[J].控制工程,2007(3):182-184.
[5] 孟逢逢.冗余OPC數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機應(yīng)用,2009(1):256-257.
[6] OPC XML-DA Specification version1.01[S].OPCFoundation,2004.
[7] 張堯弼,王巍.OPC XM L技術(shù)在工業(yè)信息數(shù)據(jù)通訊中的應(yīng)用[D]:[碩士學(xué)位論文].上海:上海交通大學(xué),2008.
[8] 劉麗.基于OPC XM L-DA實現(xiàn)遠程實時監(jiān)控的研究與設(shè)計[D]:[碩士學(xué)位論文].杭州:浙江大學(xué),2007.