文獻標識碼: A
文章編號: 0258-7998(2011)010-0073-04
輸油管道泄漏監(jiān)測技術(shù)是當今石油化工領(lǐng)域科研工作者研究的熱門課題[1]。目前,輸油管道現(xiàn)場應(yīng)用的泄漏監(jiān)測系統(tǒng)存在各種問題。首先,現(xiàn)場很多站點正在使用太陽能閥室設(shè)計,而廣泛使用于全國各地輸油管道監(jiān)測系統(tǒng)中的基于PC的采集傳輸設(shè)備,因其高功耗、高成本的缺點不適合在太陽能閥室中應(yīng)用。其次,許多現(xiàn)場管道為分布式網(wǎng)絡(luò)布局,一個站點可能安置了多個測量節(jié)點,并且在主站有多個監(jiān)控PC獲得現(xiàn)場數(shù)據(jù)進行監(jiān)測,很多監(jiān)測系統(tǒng)的多通道采集和多用戶處理能力達不到滿意要求。再次,由于一些現(xiàn)場會使用電話線撥號網(wǎng)絡(luò)或微波無線網(wǎng)絡(luò),帶寬和穩(wěn)定性無法達到正常網(wǎng)絡(luò)環(huán)境要求,很多現(xiàn)場設(shè)備因經(jīng)常出現(xiàn)數(shù)據(jù)丟失的情況而不能對泄漏發(fā)生做出及時判斷定位。所以針對這種情況需要應(yīng)用一些專門機制來保證網(wǎng)絡(luò)通信的實時性和完整性,為輸油管道泄漏監(jiān)測與定位提供準確的數(shù)據(jù)來源。為解決上述泄漏監(jiān)測系統(tǒng)的問題,設(shè)計了一套基于ARM的分布式管道泄漏監(jiān)測系統(tǒng)。
在當今嵌入式應(yīng)用領(lǐng)域,ARM由于性價比、功耗、可靠性在同類產(chǎn)品中非常突出,尤其是結(jié)合開源的嵌入式Linux操作系統(tǒng)以后,得到了越來越多設(shè)計者的青睞[2]。在本輸油管道泄漏監(jiān)測設(shè)計中,遠程測控終端(RTU)采用ARM和嵌入式Linux的方案,監(jiān)控PC采用LabVIEW圖形編程方案,所有節(jié)點通過基于TCP/IP協(xié)議的局域網(wǎng)進行通信。
1 系統(tǒng)概述
管道泄漏檢測系統(tǒng)采用分布式網(wǎng)絡(luò)結(jié)構(gòu),由多個主站監(jiān)測PC和多個從站遠程測控終端(RTU)組成。圖1是分布式管道泄漏監(jiān)測系統(tǒng)結(jié)構(gòu)示意圖。
系統(tǒng)基于負壓波原理,通過安裝在各個管道測量節(jié)點的壓力變送器測得壓力變化情況,并通過從站RTU將各個節(jié)點信號數(shù)據(jù)傳送給主站監(jiān)測PC。當管道網(wǎng)絡(luò)中某段發(fā)生破裂時, 主站監(jiān)測PC能立即接收到管段內(nèi)輸送介質(zhì)泄漏瞬間所產(chǎn)生的泄漏信號, 通過比較數(shù)據(jù)庫中的模型來確定管道是否發(fā)生泄漏,利用管道兩端節(jié)點RTU傳送信號的時差確定泄漏位置。多個主站監(jiān)測PC可同時監(jiān)測整個管道網(wǎng)絡(luò)的狀態(tài)。
2 系統(tǒng)硬件組成原理
2.1 RTU硬件組成原理
S3C2440是SAMSUNG公司生產(chǎn)的一款基于ARM920T內(nèi)核的32位RISC微處理器,其具有低功耗、高速的處理計算能力,負責(zé)控制整個RTU。以太網(wǎng)控制器通過隔離器高速、穩(wěn)定地將系統(tǒng)接入局域網(wǎng)。GPS校時模塊把導(dǎo)航信息通過UART總線傳送至S3C2440芯片,利用秒脈沖中斷實現(xiàn)RTU自動高精度時鐘同步。由于S3C2440已經(jīng)集成了SD模塊,直接外接SD物理層接口實現(xiàn)本地數(shù)據(jù)儲存功能。
根據(jù)系統(tǒng)要求設(shè)計的RTU系統(tǒng)框圖如圖2所示。
2.2 A/D模塊硬件設(shè)計
RTU工作時,首先由信號調(diào)理單元電路獲取壓力變送器采集到的電流信號,經(jīng)由光電隔離芯片和數(shù)字濾波器得到適合于模/數(shù)轉(zhuǎn)換器(ADC)的輸出。模/數(shù)轉(zhuǎn)換器(ADC)采用一款內(nèi)置序列器的4通道、200 kS/s、12 bit AD7923芯片。AD7923芯片由AD780芯片提供2.5 V參考電壓。該A/D模塊通過SPI總線將轉(zhuǎn)換后的數(shù)字信號傳送給ARM核心控制模塊進一步處理。A/D模塊接口電路如圖3所示。
3 系統(tǒng)軟件設(shè)計
軟件總體設(shè)計包括RTU服務(wù)器程序、A/D模塊驅(qū)動程序和監(jiān)控PC的LabVIEW客戶端程序設(shè)計。RTU選用代碼開放、快速高效且易于移植的分時Linux作為嵌入式操作系統(tǒng),在其基礎(chǔ)之上開發(fā)應(yīng)用程序和驅(qū)動程序。RTU服務(wù)器程序負責(zé)從A/D模塊獲得數(shù)據(jù),并通過網(wǎng)絡(luò)接口與監(jiān)控PC進行數(shù)據(jù)交互,完成壓力信號的采集、存儲和通信等一系列功能。其中,A/D模塊的驅(qū)動程序作為應(yīng)用程序與AD7923芯片溝通的橋梁,將SPI總線傳來的數(shù)據(jù)通過特定接口傳遞到用戶空間。監(jiān)控PC的LabVIEW客戶端程序接收到RTU服務(wù)器的數(shù)據(jù),在處理和分析判斷后決定是否報警和泄漏定位。LabVIEW客戶端還需有實時顯示和本地存儲功能,以供現(xiàn)場人員在線監(jiān)測和后續(xù)數(shù)據(jù)分析。
3.1 A/D模塊驅(qū)動程序
A/D模塊驅(qū)動程序主要實現(xiàn)配置模塊和接收A/D轉(zhuǎn)換數(shù)據(jù)功能。由于AD7923芯片與S3C2440芯片通過SPI總線通信,實際相當于通過SPI總線接口來間接驅(qū)動AD7923芯片。AD7923驅(qū)動模塊為字符型設(shè)備,其主要驅(qū)動接口函數(shù)如下:
AD7923_open( ):該函數(shù)對設(shè)備進行初始化,是其他接口函數(shù)執(zhí)行的前提。它首先申請I/O內(nèi)存區(qū)域,將S3C2440芯片中SPI總線相關(guān)的寄存器硬件地址映射成Linux內(nèi)核的虛擬地址。映射成功后可以直接訪問虛擬地址讀寫SPI寄存器。然后,它對SPI各個寄存器進行初始化配置。
AD7923_ioctl( ):用戶空間的應(yīng)用程序通過此函數(shù)配置設(shè)備的功能。函數(shù)的主要工作是解析用戶空間傳過來的配置命令(cmd),并將其轉(zhuǎn)換成符合AD7923芯片控制寄存器格式的2 B配置數(shù)據(jù)。
AD7923_read( ):該函數(shù)將配置數(shù)據(jù)發(fā)送給AD7923芯片。同時,AD7923芯片將上次發(fā)送配置數(shù)據(jù)后得到的A/D轉(zhuǎn)換結(jié)果傳回給該函數(shù),再通過函數(shù)返回給用戶空間的應(yīng)用程序。
驅(qū)動程序編譯完畢之后,將其動態(tài)加載到內(nèi)核之中,并以設(shè)備文件的形式保存。這樣,RTU服務(wù)器程序可以直接通過打開、讀寫設(shè)備文件的方式與A/D模塊進行通信。
3.2 RTU軟件設(shè)計
應(yīng)用程序總體結(jié)構(gòu)如圖4所示。
管道泄漏監(jiān)測系統(tǒng)各節(jié)點通過基于TCP/IP協(xié)議的以太網(wǎng)進行通信。RTU作為服務(wù)器,需要同時處理多個監(jiān)測PC客戶端的請求,所以提前創(chuàng)建線程池為客戶端的登錄作資源預(yù)分配。同時,需要獨立的線程實現(xiàn)SD卡存儲與管理、GPS同步校時等功能。
在數(shù)據(jù)采集主線程中,系統(tǒng)壓力信號采樣時間間隔一般為50 ms,由于聲波在液體中的傳播速度高達每秒上千米,如果采集時間間隔精度不夠高,將直接造成泄漏點位置計算的誤差過大。所以使用捕獲SIGNAL信號軟中斷的方法,設(shè)置精度為微秒的定時函數(shù),實現(xiàn)50 ms精確定時,完全保證定位泄漏點的準確度。
為了保證網(wǎng)絡(luò)通信的實時性和完整性,同時也針對分布式網(wǎng)絡(luò)結(jié)構(gòu),RTU使用了打包時間標識、消費者/生產(chǎn)者模型和心搏包等方案。當一個客戶端連接入服務(wù)器時,服務(wù)器獲取客戶端信息并判斷客戶端是否為已注冊客戶端,如果已注冊并且首次連接則為其數(shù)據(jù)緩沖隊列分配內(nèi)存空間,拒絕未注冊的客戶端。RTU采用消費者/生產(chǎn)者模型,將數(shù)據(jù)緩沖區(qū)設(shè)計為先進先出的隊列,大大提高整個數(shù)據(jù)通信流程的效率。建立數(shù)據(jù)緩沖隊列線程作為生產(chǎn)者,已連接成功的客戶端處理線程和SD卡存儲線程作為消費者。時間標識可以使監(jiān)控PC獲得采集數(shù)據(jù)的絕對時間,對網(wǎng)絡(luò)通信的實時性起到重要作用。數(shù)據(jù)采集主線程在中斷20次后得到1 s的采樣數(shù)據(jù),與時間標識一并打包分別插入生產(chǎn)者線程中的各個已連接客戶端緩沖隊列,客戶端處理線程負責(zé)將緩沖隊列中的數(shù)據(jù)發(fā)送至各個客戶端。同時,打包的數(shù)據(jù)也通過SD卡存儲線程寫入SD卡。服務(wù)器生產(chǎn)/消費模型圖如圖5所示。
為保持服務(wù)器與客戶端的實時連接性,客戶端需每秒向服務(wù)器發(fā)送心搏包。服務(wù)器收到心搏包后將對應(yīng)的緩沖隊列中已有全部數(shù)據(jù)發(fā)送給客戶端并清空隊列。服務(wù)器一旦未收到數(shù)據(jù)而超時,將自動關(guān)閉與某個客戶端的連接,但它不會釋放生產(chǎn)者線程中對應(yīng)的緩沖隊列??蛻舳丝赡芤驗槟承┊惓G闆r(如設(shè)備掉電、強制退出、網(wǎng)絡(luò)異?;蛉藶檎`操作等)暫時終止傳輸。為保證采集數(shù)據(jù)的完整性,需要在與客戶端被動斷開時仍能把這段時間所采集的數(shù)據(jù)保存在緩沖隊列中,待網(wǎng)絡(luò)重新連接成功后將緩沖隊列中累積的全部數(shù)據(jù)發(fā)送給客戶端。服務(wù)器只有在接收到對方客戶端斷開連接請求時才會釋放其緩沖隊列。
客戶端在接收到指定時間的數(shù)據(jù)之后會進行一次完整性檢查,確定這段時間沒有數(shù)據(jù)丟失。由于網(wǎng)絡(luò)環(huán)境不一定理想以及緩沖隊列所分配內(nèi)存有限,服務(wù)器不可能完全保證采集數(shù)據(jù)都發(fā)送到客戶端??蛻舳藱z查到某些段時間有數(shù)據(jù)丟失,向服務(wù)器申請重傳已丟失的數(shù)據(jù)。服務(wù)器接收到重傳申請,臨時建立新的線程處理這些申請并重新發(fā)送數(shù)據(jù)到客戶端。
3.3 監(jiān)測PC軟件設(shè)計
監(jiān)測PC軟件在LabVIEW平臺下開發(fā)。監(jiān)測PC的LabVIEW程序框圖如圖6所示。
為了實現(xiàn)客戶端數(shù)據(jù)通信的實時性和完整性,數(shù)據(jù)通信模塊每秒鐘向服務(wù)器發(fā)送脈搏包用以請求數(shù)據(jù)接收和保持與服務(wù)器實時連接,將各個RTU服務(wù)器發(fā)送的數(shù)據(jù)傳入數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊檢查到某個RTU服務(wù)器的數(shù)據(jù)有丟失,發(fā)送時間標識包請求服務(wù)器重新發(fā)送已丟失的數(shù)據(jù)。實時、完整的數(shù)據(jù)傳到壓力分析模塊作數(shù)據(jù)處理,用以判斷管道是否發(fā)生泄露以及泄露的具體位置。
4 管道泄漏監(jiān)測實驗
為了驗證分布式管道泄漏監(jiān)測系統(tǒng)的實際性能,在新疆塔里木油田東輪線搭建了整個監(jiān)測系統(tǒng)平臺,組織了放油實驗。主站監(jiān)測PC接收輪西站和東一聯(lián)站RTU傳送的數(shù)據(jù),得出監(jiān)測結(jié)果。輪西站放油前后數(shù)據(jù)如圖7所示,東一聯(lián)站放油前后數(shù)據(jù)如圖8所示。
由上兩圖得知,放油后,16:59:10,輪西站壓力由0.281 MPa下降到0.276 MPa,16:59:59,東一聯(lián)站由0.307 MPa下降到0.302 MPa。系統(tǒng)結(jié)合這兩個下降進行分析,泄漏發(fā)生在距東一聯(lián)站62.81 km,而實際放油點在62.64 km處,誤差0.17 km。為保證實驗數(shù)據(jù)準確性,共做了多次實驗。實驗數(shù)據(jù)如表1,定位結(jié)果均值為63.06 km,最大定位誤差為0.65 km。由實驗結(jié)果可以看出,主站監(jiān)測PC能夠準確地監(jiān)測管道壓力變化,做出及時的泄漏預(yù)警與定位。
本文設(shè)計了一個分布式管道泄漏監(jiān)測系統(tǒng),由于遠程測控終端(RTU)采用了嵌入式ARM-Linux解決方案,其低功耗、低成本等特點非常適用于現(xiàn)場多測量節(jié)點的太陽能閥室設(shè)計。文中提及的一系列網(wǎng)絡(luò)機制,保證了信號采集時數(shù)據(jù)傳輸?shù)膶崟r性和完整性,為避免現(xiàn)場因網(wǎng)絡(luò)不穩(wěn)定和異常造成傳輸誤差提供了有力支持。該系統(tǒng)已經(jīng)在輸油管道現(xiàn)場進行了網(wǎng)絡(luò)傳輸和泄漏監(jiān)測實驗,實驗結(jié)果充分地證明了分布式管道泄漏監(jiān)測系統(tǒng)的準確性和可靠性。
參考文獻
[1] 張 宇,陳世利,李 健. 基于動態(tài)壓力變送器的輸油管道泄漏檢測與定位系統(tǒng)[J]. 傳感技術(shù)學(xué)報,2009,22(9):1347-1351.
[2] 陳 璞,劉文波.基于ARM和嵌入式Linux的遠程數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計[J].測控技術(shù), 2007,26(9):54-56.
[3] Li Jian, Zhang Yu, Jin Shijiu. Pipeline leakage monitor system based on virtual instrument[C]. In: The 2009 IEEE Intl Conf. on Mechatronics and Automation, Changchun, China,2009.
[4] CORBET J, RUBINI A,HARTMAN G K. Linux device driver 3rd[M]. Oreilly & Associates Inc,2005.
[5] 艾 紅,王洪濤.基于ARM的嵌入式遠程監(jiān)控系統(tǒng)[J].電子技術(shù)應(yīng)用,2008,34(9):66-69.
[6] 劉貴杰,王 強,梅 寧. 海底油氣管道檢測數(shù)據(jù)采集系統(tǒng)研究 [J].儀器儀表學(xué)報,2006,27(6):1379-1380.