燃?xì)釹CADA系統(tǒng)中數(shù)據(jù)采集服務(wù)器雙機(jī)熱備的實(shí)現(xiàn)

摘 要

燃?xì)釹CADA系統(tǒng)用于對(duì)燃?xì)夤芫W(wǎng)運(yùn)行進(jìn)行實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)燃?xì)馄髽I(yè)生產(chǎn)過(guò)程和調(diào)度管理的自動(dòng)化和現(xiàn)代化

燃?xì)釹CADA系統(tǒng)用于對(duì)燃?xì)夤芫W(wǎng)運(yùn)行進(jìn)行實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)燃?xì)馄髽I(yè)生產(chǎn)過(guò)程和調(diào)度管理的自動(dòng)化和現(xiàn)代化,同時(shí)為天然氣公司的高層決策系統(tǒng)及管理系統(tǒng)提供數(shù)據(jù)分析依據(jù),是天然氣公司業(yè)務(wù)信息系統(tǒng)的重要組成部分,因此保證燃?xì)釹CADA系統(tǒng)的穩(wěn)定、可靠運(yùn)行具有非常重要的意義。
    燃?xì)釹CADA系統(tǒng)主要由主調(diào)度中心、遠(yuǎn)程監(jiān)控站點(diǎn)和通信系統(tǒng)組成。調(diào)度中心主要由計(jì)算機(jī)系統(tǒng)組建,包含SCADA服務(wù)器、SCADA工作站和通信處理機(jī)等;監(jiān)控站點(diǎn)設(shè)備平臺(tái)由RTU/PLC組建,實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)儀表參數(shù)的實(shí)時(shí)監(jiān)控;調(diào)度中心與監(jiān)控站點(diǎn)通過(guò)通信系統(tǒng)進(jìn)行監(jiān)控參數(shù)和指令的信息交換,通信處理機(jī)負(fù)責(zé)監(jiān)控?cái)?shù)據(jù)集中和通信管理。
    數(shù)據(jù)采集服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器是燃?xì)釹CADA系統(tǒng)中最重要的兩個(gè)部分,前者完成整個(gè)系統(tǒng)的數(shù)據(jù)采集、遠(yuǎn)程控制等功能,并負(fù)責(zé)通訊協(xié)議的解析、實(shí)時(shí)數(shù)據(jù)的顯示、實(shí)時(shí)數(shù)據(jù)的入庫(kù)等;后者是整個(gè)SCADA系統(tǒng)的數(shù)據(jù)存儲(chǔ)中心,為燃?xì)釹CADA系統(tǒng)的數(shù)據(jù)分析、報(bào)表、數(shù)據(jù)查詢、數(shù)據(jù)統(tǒng)計(jì)等功能提供數(shù)據(jù)源。一旦數(shù)據(jù)采集服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器發(fā)生故障或應(yīng)用停機(jī),將導(dǎo)致整個(gè)燃?xì)釹CADA系統(tǒng)無(wú)法正常運(yùn)行,給燃?xì)獾陌踩a(chǎn)、安全輸送帶來(lái)巨大的安全隱患,因此為了保證燃?xì)釹CADA系統(tǒng)穩(wěn)定、可靠運(yùn)行,目前國(guó)內(nèi)大型的燃?xì)釹CADA系統(tǒng)在這兩個(gè)部分一般都采用雙機(jī)熱備設(shè)計(jì)。
數(shù)據(jù)庫(kù)服務(wù)器一般安裝0racle、SQL Server等關(guān)系型數(shù)據(jù)庫(kù),操作系統(tǒng)一般采用微軟的Windows Server,微軟的Windows server一般帶有集群管理軟件,可以完成操作系統(tǒng)的集群管理,而關(guān)系型數(shù)據(jù)庫(kù)也都有完善的冗余熱備組件,只要合理配置即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)服務(wù)器的雙機(jī)熱備。數(shù)據(jù)采集服務(wù)器則不同,在數(shù)據(jù)采集服務(wù)器上一般安裝組態(tài)軟件服務(wù)器版和微軟的Windows Server操作系統(tǒng),操作系統(tǒng)可以通過(guò)集群組件實(shí)現(xiàn)雙機(jī)熱備,而組態(tài)軟件一般沒(méi)有專門的熱備組件(如Intouch、WinCC)或者帶有的熱備組件無(wú)法與操作系統(tǒng)實(shí)現(xiàn)同步熱備(如iFix),因此真正實(shí)現(xiàn)數(shù)據(jù)采集服務(wù)器的雙機(jī)熱備是當(dāng)前燃?xì)釹CADA系統(tǒng)設(shè)計(jì)中的一個(gè)技術(shù)難點(diǎn)。
 

1 問(wèn)題的分析
雙機(jī)熱備的數(shù)據(jù)采集服務(wù)器正常情況下由主服務(wù)器完成所有的數(shù)據(jù)采集、數(shù)據(jù)入庫(kù)等工作,備用服務(wù)器實(shí)時(shí)監(jiān)測(cè)主服務(wù)器的工作狀態(tài)。當(dāng)主服務(wù)器發(fā)生故障時(shí),由備服務(wù)器接替主服務(wù)器完成以上工作,并且所有的切換工作均南系統(tǒng)自動(dòng)完成。因此數(shù)據(jù)采集服務(wù)器要實(shí)現(xiàn)真正的雙機(jī)熱備,必須要綜合考慮網(wǎng)絡(luò)狀態(tài)、磁盤狀態(tài)、操作系統(tǒng)運(yùn)行狀態(tài)、組態(tài)軟件運(yùn)行狀態(tài)等4方面的要素,因?yàn)橐陨先魏我粋€(gè)狀態(tài)發(fā)生故障,均會(huì)導(dǎo)致數(shù)據(jù)采集服務(wù)器無(wú)法正常工作。
    目前燃?xì)釹CADA系統(tǒng)常見(jiàn)的解決方案是在兩臺(tái)熱備的數(shù)據(jù)采集服務(wù)器上建立集群管理,對(duì)外虛擬出一個(gè)唯一的IP地址,通過(guò)集群管理器監(jiān)測(cè)兩臺(tái)服務(wù)器的網(wǎng)絡(luò)狀態(tài)、磁盤狀態(tài)和操作系統(tǒng)運(yùn)行狀態(tài),當(dāng)主服務(wù)器的以上3個(gè)狀態(tài)中任意1個(gè)出現(xiàn)故障,備用服務(wù)器接管主服務(wù)器的工作,而此時(shí)的主備服務(wù)器切換只完成了對(duì)網(wǎng)絡(luò)、磁盤和操作系統(tǒng)的切換,無(wú)法完成組態(tài)軟件(數(shù)據(jù)采集服務(wù)器運(yùn)行的最關(guān)鍵的軟件)的切換,此時(shí)大多數(shù)的燃?xì)釹CADA系統(tǒng)的應(yīng)對(duì)方案是在主備服務(wù)器上分別安裝獨(dú)立的組態(tài)軟件,并且主備服務(wù)器上的組態(tài)軟件都處于運(yùn)行狀態(tài),即同一時(shí)刻,不管主備服務(wù)器哪一臺(tái)處于運(yùn)行狀態(tài),主備服務(wù)器上的組態(tài)軟件都在采集實(shí)時(shí)數(shù)據(jù)并向數(shù)據(jù)庫(kù)服務(wù)器存儲(chǔ)實(shí)時(shí)數(shù)據(jù),這樣做會(huì)帶來(lái)兩個(gè)問(wèn)題,其一是同一時(shí)刻總是有兩臺(tái)服務(wù)器在采集各個(gè)終端站的數(shù)據(jù),耗費(fèi)了寶貴的通訊帶寬,特別是對(duì)于GPRS無(wú)線通訊鏈路,在40K左右的有效帶寬上,要同時(shí)保證主備兩套通訊鏈路的實(shí)時(shí)數(shù)據(jù)交換幾乎是不可能的,其通訊的有效性和實(shí)時(shí)性反倒不如未做雙機(jī)熱備情況下單臺(tái)的數(shù)據(jù)采集服務(wù)器效率高,這樣的結(jié)果顯然違背了我們的設(shè)計(jì)初衷;其二是兩臺(tái)數(shù)據(jù)采集服務(wù)器同時(shí)向數(shù)據(jù)庫(kù)服務(wù)器存儲(chǔ)數(shù)據(jù),由于通訊效率低下,導(dǎo)致兩臺(tái)數(shù)據(jù)采集服務(wù)器在同一時(shí)刻獲得的現(xiàn)場(chǎng)設(shè)備狀態(tài)不一致,如主服務(wù)器在0點(diǎn)0分0秒監(jiān)測(cè)到現(xiàn)場(chǎng)某個(gè)閥門狀態(tài)為關(guān)閉,而備用服務(wù)器由于通訊效率問(wèn)題,數(shù)據(jù)顯示延遲,在0點(diǎn)0分0秒讀到的是此閥門在12點(diǎn)59分55秒的數(shù)據(jù),而此時(shí)閥門還處于開(kāi)啟狀態(tài),這樣就導(dǎo)致SCADA系統(tǒng)中數(shù)據(jù)出現(xiàn)二義性,操作員工作站上會(huì)因此出現(xiàn)設(shè)備狀態(tài)的誤報(bào)警,由此產(chǎn)生的分析數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)也會(huì)出現(xiàn)重大問(wèn)題,而最關(guān)鍵的是系統(tǒng)本身無(wú)法識(shí)別這兩個(gè)數(shù)據(jù)哪一個(gè)是準(zhǔn)確的。由此可見(jiàn),采用以上解決方案無(wú)法實(shí)現(xiàn)真正的數(shù)據(jù)采集服務(wù)器雙機(jī)熱備,反而使系統(tǒng)的穩(wěn)定性和數(shù)據(jù)的有效性降低。
   要體現(xiàn)SCADA系統(tǒng)數(shù)據(jù)采集服務(wù)器雙機(jī)熱備的真正作用,就必須尋找一條技術(shù)路徑,將組態(tài)軟件的主備熱切換和集群管理器結(jié)合在一起,同時(shí)確保同一時(shí)刻只有一臺(tái)數(shù)據(jù)采集服務(wù)器上的組態(tài)軟件在工作。
2 解決方案
    針對(duì)前面的問(wèn)題分析,可以看出,問(wèn)題的關(guān)鍵是保證組態(tài)軟件的主備切換和集群管理器的主備切換保持一致。仔細(xì)研究微軟的集群管理器組件的工作原理,不難發(fā)現(xiàn),集群管理實(shí)際上是依托操作系統(tǒng)中的服務(wù)來(lái)完成管理工作的,而且每個(gè)服務(wù)之間都存在繼承關(guān)系,即優(yōu)先級(jí)。優(yōu)先級(jí)最高的是操作系統(tǒng)軟件(集群管理軟件),優(yōu)先級(jí)次之的是磁盤管理服務(wù),然后是網(wǎng)絡(luò)服務(wù),網(wǎng)絡(luò)服務(wù)下面綁定了數(shù)據(jù)庫(kù)訪問(wèn)的服務(wù),即數(shù)據(jù)庫(kù)訪問(wèn)要依存于網(wǎng)絡(luò)服務(wù),網(wǎng)絡(luò)服務(wù)依存于磁盤管理服務(wù),磁盤管理服務(wù)依存于操作系統(tǒng),當(dāng)任何一個(gè)服務(wù)發(fā)生故障時(shí),都會(huì)觸發(fā)主備服務(wù)器的切換,而且切換時(shí)服務(wù)的關(guān)閉順序是首先關(guān)閉數(shù)據(jù)庫(kù)訪問(wèn)服務(wù),其次是網(wǎng)絡(luò)服務(wù),然后是磁盤服務(wù),最后是集群管理軟件。因此,要實(shí)現(xiàn)組態(tài)軟件的主備切換和集群管理器的主備切換保持一致,最簡(jiǎn)單的方法就是在組態(tài)軟件與數(shù)據(jù)庫(kù)訪問(wèn)服務(wù)之間建立一個(gè)依存關(guān)系,即當(dāng)數(shù)據(jù)庫(kù)訪問(wèn)服務(wù)關(guān)閉時(shí),同時(shí)關(guān)閉組態(tài)軟件;當(dāng)數(shù)據(jù)庫(kù)訪問(wèn)服務(wù)開(kāi)啟時(shí),同時(shí)開(kāi)啟組態(tài)軟件。
    解決思路出來(lái)后,在具體實(shí)施過(guò)程中又發(fā)現(xiàn)了一個(gè)小問(wèn)題,即目前國(guó)內(nèi)和國(guó)外的組態(tài)軟件都是多任務(wù)的,無(wú)法找出一個(gè)主服務(wù),通過(guò)對(duì)它的啟停來(lái)控制組態(tài)軟件的啟停。若將組態(tài)軟件所有的任務(wù)進(jìn)程都與數(shù)據(jù)庫(kù)訪問(wèn)服務(wù)建立依存關(guān)系,卻經(jīng)常會(huì)出現(xiàn)某個(gè)進(jìn)程關(guān)閉錯(cuò)誤而導(dǎo)致整個(gè)雙機(jī)切換出現(xiàn)故障。經(jīng)過(guò)反復(fù)試驗(yàn),發(fā)現(xiàn)關(guān)閉組態(tài)軟件主窗口可以實(shí)現(xiàn)組態(tài)軟件的無(wú)故障啟停,由于主窗口無(wú)法通過(guò)服務(wù)或進(jìn)程管理來(lái)關(guān)閉和啟動(dòng),因此需要編程來(lái)建立組態(tài)軟件主窗口與數(shù)據(jù)庫(kù)訪問(wèn)接口之間的依存關(guān)系。
    實(shí)現(xiàn)方式是以集群管理組件作為系統(tǒng)的切換平臺(tái),管理雙機(jī)熱備系統(tǒng)的集群管理器、網(wǎng)絡(luò)、磁盤及Oracle服務(wù)的切換,通過(guò)自己開(kāi)發(fā)的中間件(以下簡(jiǎn)稱HotSwitch)建立iFix軟件與Oracle訪問(wèn)服務(wù)的繼承關(guān)系,把iFix軟件作為0racle主服務(wù)的一個(gè)子服務(wù),當(dāng)Oracle發(fā)生故障時(shí),集群管理組件會(huì)自動(dòng)將服務(wù)從當(dāng)前運(yùn)行的服務(wù)器上切換到備用服務(wù)器上,而此時(shí)iFix軟件會(huì)捕捉到此動(dòng)作,通過(guò)HotSwitch軟件同步完成iFix軟件的切換,iFix軟件的關(guān)閉和啟動(dòng)通過(guò)編程操作iFix軟件的主窗口來(lái)實(shí)現(xiàn)。
    整個(gè)系統(tǒng)的切換由集群管理軟件和HotSwitch軟件管理,其關(guān)系如圖3。
    整個(gè)系統(tǒng)切換步驟如圖4所示。

3 試驗(yàn)驗(yàn)證結(jié)果
    本雙機(jī)熱備解決方案已經(jīng)在實(shí)驗(yàn)室平臺(tái)和多個(gè)國(guó)內(nèi)大型燃?xì)釹CADA系統(tǒng)中得到驗(yàn)證,SCADA系統(tǒng)配置雙機(jī)熱備系統(tǒng)后,系統(tǒng)的穩(wěn)定性和可靠性大幅提高,平均無(wú)故障時(shí)間由3 000h提高到30000h,系統(tǒng)的可用性和可靠性達(dá)到99.9%。系統(tǒng)平均故障切換時(shí)間小于30s,這一指標(biāo)已經(jīng)達(dá)到國(guó)內(nèi)的先進(jìn)水平,能夠真正實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)軟件、操作系統(tǒng)、監(jiān)控軟件三位一體的雙機(jī)熱備。
4 總結(jié)
    本文主要介紹了SCADA系統(tǒng)中數(shù)據(jù)采集服務(wù)器雙機(jī)熱備的必要性,同時(shí)給出了完善的解決方案,從分析、解決方案的制定、遇到的問(wèn)題、程序源方面都做了詳細(xì)的描述,此解決方案已經(jīng)成功北京燃?xì)?、大連煤氣、江蘇省天然氣、西寧燃通過(guò)雙機(jī)熱備配置,使燃?xì)釹CADA系統(tǒng)的穩(wěn)可靠性得到了大幅的提升,最大程度地避免了系統(tǒng)的宕機(jī)故障和應(yīng)用停機(jī),保證了系統(tǒng)數(shù)據(jù)實(shí)時(shí)性和連續(xù)性。同時(shí),本解決方案完全基于Windows平臺(tái),相對(duì)于Unix平臺(tái)而言具有不可比擬的靈活性和擴(kuò)展性,系統(tǒng)配置簡(jiǎn)單、維護(hù)方便,用戶再也不必為傳統(tǒng)意義的小型機(jī)熱備系統(tǒng)投入大量設(shè)備資金和維護(hù)資金。
    本方案以天然氣公司的現(xiàn)狀和實(shí)際需求為依據(jù),也可將此應(yīng)用擴(kuò)展到如水、電、熱力等其他公用行業(yè)中。
 
(本文作者:劉濤1 張國(guó)棟1 宋來(lái)弟2 1.北京航天拓?fù)涓呖萍加邢挢?zé)任公司 100176;2.北京市燃?xì)饧瘓F(tuán)有限責(zé)任公司 100035)