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