夏 龍,鄭 萍,曹 林,李 易,王紅梅
(西華大學(xué)電氣信息學(xué)院,四川成都610039)
石油是經(jīng)濟(jì)發(fā)展的血液,由于我國(guó)石油資源匱乏,建立國(guó)家原油戰(zhàn)略儲(chǔ)備庫(kù)工程已經(jīng)成為應(yīng)對(duì)國(guó)際石油市場(chǎng)波動(dòng)和石油戰(zhàn)略儲(chǔ)備的有效途徑之一。石油具有易燃、易爆、易揮發(fā)等特點(diǎn),而且儲(chǔ)存石油的油罐體積大,儲(chǔ)油區(qū)油罐多,必須具有多重消防措施?;馂?zāi)隱患通過主動(dòng)防護(hù)系統(tǒng)去除;明火通過消防炮系統(tǒng)進(jìn)行強(qiáng)力滅火;每個(gè)罐壁發(fā)生火情通過泡沫滅火系統(tǒng)滅火[1]。罐區(qū)消防的監(jiān)控點(diǎn)多,控制措施復(fù)雜,因此對(duì)消防系統(tǒng)的上位監(jiān)控提出了新的要求。本文根據(jù)罐區(qū)消防系統(tǒng)上位監(jiān)控必須工作可靠和監(jiān)控方式靈活的要求,討論了基于工控機(jī)、平板電腦以及Android手機(jī)監(jiān)控平臺(tái)分別實(shí)現(xiàn)的上位監(jiān)控、中心手動(dòng)操作盤的冗余監(jiān)控和移動(dòng)監(jiān)控三種監(jiān)控模式[2~3],以構(gòu)成廣覆蓋、性能可靠的新型上位監(jiān)控系統(tǒng)。
整個(gè)系統(tǒng)由三個(gè)底層控制系統(tǒng)和上位監(jiān)控系統(tǒng)構(gòu)成,如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
底層控制系統(tǒng)由主動(dòng)惰化防護(hù)系統(tǒng)、消防炮滅火系統(tǒng)和泡沫滅火系統(tǒng)三大系統(tǒng)以及消防聯(lián)動(dòng)設(shè)備構(gòu)成。底層控制系統(tǒng)一方面負(fù)責(zé)采集油罐數(shù)據(jù)和現(xiàn)場(chǎng)視頻圖像信息,出于防爆的要求,通過光纖以太網(wǎng)傳輸給上位機(jī)和存儲(chǔ)設(shè)備,同時(shí)接受來自上位監(jiān)控系統(tǒng)的控制命令。每個(gè)系統(tǒng)動(dòng)作,都將觸發(fā)相應(yīng)的聯(lián)動(dòng)設(shè)備進(jìn)行消防廣播、打開警鈴等操作。各系統(tǒng)的功能如下:
1)主動(dòng)惰化防護(hù)系統(tǒng)是以預(yù)防油罐發(fā)生火災(zāi)和爆炸為出發(fā)點(diǎn)。系統(tǒng)定期檢測(cè)浮頂式石油儲(chǔ)罐內(nèi)密封部位一、二次密封裝置之間的混合氣體濃度并進(jìn)行相關(guān)數(shù)據(jù)處理后發(fā)送給上位機(jī)[4],上位機(jī)將所得到的信息解析出惰化曲線,根據(jù)不同的情況發(fā)出相關(guān)的惰化命令。
2)消防炮滅火系統(tǒng)主要是針對(duì)罐區(qū)內(nèi)油罐周圍發(fā)生火災(zāi)的情況而設(shè)計(jì)的。它由固定攝像機(jī)、炮前攝像機(jī)和數(shù)控消防炮構(gòu)成,為上位機(jī)提供火災(zāi)視頻信息并解析出火點(diǎn)坐標(biāo),同時(shí)接受來自上位機(jī)根據(jù)火點(diǎn)坐標(biāo)計(jì)算出的運(yùn)行參數(shù)控制消防炮進(jìn)行滅火。
3)泡沫滅火系統(tǒng)是用來對(duì)石油儲(chǔ)罐內(nèi)部浮頂周圍進(jìn)行滅火的。通過在油罐頂部安裝的防爆型紫外火焰探測(cè)器將信息送往上位機(jī),由上位機(jī)控制泡沫混合發(fā)生器進(jìn)行滅火[5]。
上位監(jiān)控系統(tǒng)又分為基于工控機(jī)的中心計(jì)算機(jī)、基于平板電腦的中心手動(dòng)操作盤和移動(dòng)監(jiān)控。
1)中心計(jì)算機(jī):一般情況下,由中心計(jì)算機(jī)上位監(jiān)控系統(tǒng)負(fù)責(zé)對(duì)下位機(jī)發(fā)送過來的數(shù)據(jù)和視頻圖像信息進(jìn)行存儲(chǔ)、分析和顯示,以及對(duì)下位機(jī)進(jìn)行控制。
2)中心手動(dòng)操作盤:在中心計(jì)算機(jī)出現(xiàn)異常時(shí),中心手動(dòng)操作盤作為冗余設(shè)備接管中心計(jì)算機(jī),可對(duì)底層控制系統(tǒng)進(jìn)行一些簡(jiǎn)單的控制以應(yīng)急。
圖2 中心計(jì)算機(jī)上位界面框圖
3)移動(dòng)監(jiān)控:以Android手機(jī)為載體,從監(jiān)控中心和底層設(shè)備獲取油罐數(shù)據(jù)和視頻圖像信息并顯示,可以實(shí)現(xiàn)對(duì)罐區(qū)的監(jiān)控,該功能給不在控制室的重要人員提供方便的移動(dòng)監(jiān)控。
監(jiān)控中心的控制室里安放中心計(jì)算機(jī)和中心手動(dòng)操作盤。
中心計(jì)算機(jī)上位監(jiān)控系統(tǒng)由中心計(jì)算機(jī)、聯(lián)動(dòng)控制器和NVR硬盤錄像機(jī)構(gòu)成,要完成對(duì)三個(gè)底層控制系統(tǒng)的全面監(jiān)控。NVR硬盤錄像機(jī)用來存儲(chǔ)下位機(jī)發(fā)送過來的視頻圖像。
1)中心計(jì)算機(jī)主界面設(shè)計(jì)
中心計(jì)算機(jī)上位監(jiān)控主要由主界面、主動(dòng)惰化防護(hù)系統(tǒng)界面、消防炮滅火系統(tǒng)界面和泡沫滅火系統(tǒng)界面構(gòu)成,如圖2所示。主界面作為門戶界面,展示了這個(gè)罐區(qū)的重要數(shù)據(jù)、油罐的安全狀況信息以及進(jìn)入各系統(tǒng)界面的通道;后三者分別對(duì)應(yīng)于現(xiàn)場(chǎng)的三大系統(tǒng),每個(gè)界面都顯示了與該系統(tǒng)相關(guān)的執(zhí)行機(jī)構(gòu)的設(shè)備狀態(tài)信息、油罐的一些重要數(shù)據(jù)以及各自的操作面板。
2)中心計(jì)算機(jī)主界面程序設(shè)計(jì)
中心計(jì)算機(jī)上位監(jiān)控程序的設(shè)計(jì)采用MFC來實(shí)現(xiàn)[6],主界面程序流程圖如圖3所示。
圖3 主界面程序流程圖
主界面利用多線程技術(shù)編程。根據(jù)它們功能的不同,可以將其分為主線程、刷新子線程和通信子線程三類。主線程繼承于MFC框架類中的CWinApp類,它的功能主要是用來偵聽界面按鈕;刷新子線程是在主線程中利用Win32提供的API函數(shù)創(chuàng)建的,用來從底層讀數(shù)據(jù)并更新數(shù)據(jù)庫(kù)和界面關(guān)聯(lián)組件;通信子線程的創(chuàng)建過程和刷新子線程一樣,主要用來接收和處理中心手動(dòng)操作盤與Android手機(jī)的數(shù)據(jù)請(qǐng)求。利用API函數(shù)創(chuàng)建刷新子線程的代碼如下:主界面利用TCP/IP協(xié)議來實(shí)現(xiàn)數(shù)據(jù)之間的上下行交互。它包括與底層控制系統(tǒng)、中心手動(dòng)操作盤和Android手機(jī)之間通信。利用WinSocket API函數(shù)創(chuàng)建Socket服務(wù)端代碼如下:
主界面程序利用MySQL數(shù)據(jù)庫(kù)來存放重要的油罐數(shù)據(jù)[7]。在主線程中,從數(shù)據(jù)庫(kù)中讀取用戶信息對(duì)用戶身份進(jìn)行驗(yàn)證。在刷新子線程中,對(duì)從底層讀取的數(shù)據(jù)進(jìn)行存儲(chǔ)。在通信子線程中,從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)予以響應(yīng)。訪問數(shù)據(jù)庫(kù)代碼如下:
主界面運(yùn)行效果如圖4所示。
圖4 主界面程序運(yùn)行效果圖
主動(dòng)惰化防護(hù)系統(tǒng)界面、消防炮滅火系統(tǒng)界面和泡沫滅火系統(tǒng)界面的編寫方法與主界面類似,都采用了多線程編程技術(shù)、Socket通訊技術(shù)和數(shù)據(jù)庫(kù)訪問技術(shù)。其中,消防炮滅火系統(tǒng)界面還涉及到視頻的顯示。由于底層設(shè)備采用H.264格式壓縮視頻,RTSP協(xié)議傳送視頻,因此在發(fā)送請(qǐng)求接收到RTSP視頻流之后,還需要對(duì)其進(jìn)行解壓縮后才能播放。
中心手動(dòng)操作盤作為一種冗余的監(jiān)控方式,只有在中心計(jì)算機(jī)監(jiān)控系統(tǒng)出現(xiàn)異常,比如死機(jī)、故障等情況下,才能通過它對(duì)下位機(jī)進(jìn)行一些簡(jiǎn)單的控制操作,因此要求中心手動(dòng)操作盤接入方便、操作直接明了。這里采用了平板電腦和Android系統(tǒng)作為其硬件和軟件平臺(tái),通過無線網(wǎng)絡(luò)接入以太網(wǎng)。系統(tǒng)采用Java語言編寫,開發(fā)環(huán)境為基于JDK、Eclipse、ADT和Android SDK共同搭建的Android虛擬機(jī)。主要使用的技術(shù)為數(shù)據(jù)庫(kù)訪問技術(shù)、Socket通訊技術(shù)和多線程編程技術(shù)[8]。其監(jiān)控界面如圖5所示。
圖5 中心手動(dòng)操作盤上位界面
1)手動(dòng)操作盤的操作。首先從右上角的下拉列表中選擇要監(jiān)控的油罐號(hào),左上角馬上顯示選中油罐當(dāng)前的安全狀況和一些重要數(shù)據(jù),右下角顯示對(duì)應(yīng)于選中油罐三大系統(tǒng)的操作面板,左下角顯示當(dāng)前正在對(duì)油罐進(jìn)行的操作。
2)中心計(jì)算機(jī)與手動(dòng)操作盤的聯(lián)動(dòng)。中心計(jì)算機(jī)正常的情況下每隔固定時(shí)間給手動(dòng)操作盤發(fā)送一個(gè)心跳信號(hào)和相關(guān)同步數(shù)據(jù),此時(shí)手動(dòng)操作盤被設(shè)置為點(diǎn)擊無效模式;若未接收到心跳信號(hào),則視中心計(jì)算機(jī)監(jiān)控系統(tǒng)出現(xiàn)異常,手動(dòng)操作盤接管中心計(jì)算機(jī)的部分工作,激活界面按鈕,定時(shí)給底層控制系統(tǒng)發(fā)送讀數(shù)據(jù)請(qǐng)求,得到新數(shù)據(jù)并解析后,更新顯示模塊。
基于Android智能手機(jī)而設(shè)計(jì)的移動(dòng)監(jiān)控系統(tǒng),可為不在控制室的重要相關(guān)人員通過手機(jī)訪問中心計(jì)算機(jī)中的數(shù)據(jù)庫(kù)和罐區(qū)瞭望塔上的IP攝像機(jī)實(shí)現(xiàn)對(duì)罐區(qū)的整體監(jiān)控。另外,系統(tǒng)還增加了快速撥號(hào)功能,緊急情況下,可以對(duì)現(xiàn)場(chǎng)工作人員進(jìn)行指導(dǎo)。
系統(tǒng)是在Android虛擬機(jī)和Android NDK平臺(tái)下利用Java和C++語言混合編程實(shí)現(xiàn)的。其程序流程圖如圖6所示。
圖6 移動(dòng)監(jiān)控上位程序流程圖
1)數(shù)據(jù)傳送。采用TCP/IP協(xié)議來進(jìn)行油罐數(shù)據(jù)的傳送。
2)視頻圖像傳送。利用RTSP協(xié)議實(shí)現(xiàn)視頻圖像傳送。系統(tǒng)配置IP攝像機(jī)采用H.264格式壓縮視頻,然后通過搭建RTSP服務(wù)器進(jìn)行傳輸。當(dāng)Android手機(jī)端編寫的RTSP客戶端接收到RTSP視頻流數(shù)據(jù)后,調(diào)用移植的FFmpeg庫(kù)對(duì)獲得的H.264視頻進(jìn)行軟解碼操作,最后交由畫圖控件SurfaceView將圖像畫到顯示區(qū)域[9]。
手機(jī)的監(jiān)控界面如圖7所示。需要說明的是,移動(dòng)監(jiān)控模式只有相關(guān)人員才獲得登陸密碼,由于遠(yuǎn)離現(xiàn)場(chǎng)和控制室,為了安全考慮,主要用于監(jiān)視,一般不能進(jìn)行控制。但對(duì)于特殊的人員,可賦予控制權(quán)限,但需在中心計(jì)算機(jī)和中心手動(dòng)操作盤放棄操作后方可獲得操作權(quán)限。
圖7 移動(dòng)監(jiān)控上位程序運(yùn)行效果圖
本文主要討論了如何利用工控機(jī)、平板電腦和Android手機(jī)各自的特點(diǎn)來實(shí)現(xiàn)一個(gè)多模式的監(jiān)控系統(tǒng),為石油儲(chǔ)備的罐群消防系統(tǒng)的上位監(jiān)控提供了靈活、可靠的先進(jìn)措施,有效的解決了現(xiàn)代罐區(qū)消防系統(tǒng)對(duì)上位監(jiān)控的需求。這種多模式的監(jiān)控方式大大提升了監(jiān)控系統(tǒng)的功能,可變通實(shí)施在許多的控制系統(tǒng)中,因而具有良好的應(yīng)用前景。
[1]石油化工儲(chǔ)罐區(qū)火災(zāi)報(bào)警滅火系統(tǒng)設(shè)計(jì)指導(dǎo)書.合肥科大立安安全技術(shù)股份有限公司消防技術(shù)研究所,2012.8.
[2]彭鑫,譚彰,黃文君,等.基于Android的工業(yè)控制監(jiān)控軟件設(shè)計(jì)[J].計(jì)算機(jī)工程,2013,39(7):86 -89.
[3]李濤.基于Android客戶端的油罐儲(chǔ)庫(kù)防災(zāi)救援系統(tǒng)的設(shè)計(jì)[D].寧夏:北方民族大學(xué),2013.
[4]郎需慶,高鑫,宮宏,等.降低大型浮頂儲(chǔ)罐密封圈內(nèi)油氣濃度的研究[J].石油天然氣學(xué)報(bào),2008,30(2):618-619.
[5]侯建萍.大型浮頂油罐泡沫滅火系統(tǒng)設(shè)置的探討[J].煉油技術(shù)與工程,2010,40(9):62 -64.
[6]任哲.MFC Windows應(yīng)用程序設(shè)計(jì)(第3版)[M].北京:清華大學(xué)出版社,2013.
[7]王雨竹,高飛.MySQL入門經(jīng)典[M].北京:機(jī)械工業(yè)出版社,2013.
[8]趙啟朋.Android典型技術(shù)模塊開發(fā)詳解[M].北京:中國(guó)鐵道出版社,2012.
[9]任克強(qiáng),曹宏強(qiáng).基于Android和 H.264的實(shí)時(shí)視頻監(jiān)控系統(tǒng)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(9):2448-2450.