林彩霞,雙 凱
(中國石油大學(北京)地球物理與信息工程學院,北京 102249)
測井裝備上位機軟件是測井裝備非常重要的一部分,它負責對整個系統(tǒng)的控制,數(shù)據(jù)采集,顯示和存儲等功能,為石油勘探和油田開發(fā)提供非常重要的數(shù)據(jù)資料。
目前主流的測井儀器上位機軟件基本上采用VC++進行開發(fā),但是使用VC++進行軟件開發(fā)對開發(fā)人員水平要求高且工作量大,不同模塊需要從底層開發(fā),出發(fā)點低,需要較長的開發(fā)周期[1]。
LabVIEW是一種圖形化編程語言,作為數(shù)據(jù)采集和儀器控制軟件的標準被廣泛的應用于工業(yè)界、學術界和研究性實驗室。LabVIEW是功能強大、靈活的多平臺儀器和分析軟件系統(tǒng)。用戶可以根據(jù)自己的需要靈活地定義儀器的功能,使用人員可以通過軟件編程或采用現(xiàn)有分析軟件,實時、直接地對數(shù)據(jù)進行各種分析與處理。該軟件使用模塊函數(shù),工程師不需要從最底層進行開發(fā),可大大減少工作量,縮短項目開發(fā)周期。
文中旨在使用LabVIEW設計實現(xiàn)一種測井上位機系統(tǒng),采用模塊化設計方法,根據(jù)測井測量參數(shù)的特點,設計實現(xiàn)了數(shù)據(jù)采集、實時顯示、數(shù)據(jù)庫存儲、數(shù)據(jù)查詢。在軟件開發(fā)過程中為了減少對硬件的依賴,根據(jù)實際采集數(shù)據(jù)特點,設計模擬數(shù)據(jù)源對軟件系統(tǒng)各模塊進行測試。
如圖1所示,為測井裝備地面系統(tǒng)總體設計模塊圖。為了保證系統(tǒng)的數(shù)據(jù)采集速度,采用硬件對采集到得數(shù)據(jù)進行處理。為了保證速度,系統(tǒng)采用硬件對上行數(shù)據(jù)的濾波、解碼、解析,傳送至上位機系統(tǒng)進行存儲,顯示;上位機產生的下行數(shù)據(jù)即對井下系統(tǒng)的控制命令經過封裝和編碼后傳送至井下。
圖1 總體設計方案Fig.1 Overall design scheme
根據(jù)實際需要,設計實現(xiàn)四通道隨鉆測量上位機數(shù)據(jù)采集系統(tǒng)。圖2為上位機系統(tǒng)方案,如圖2所示,主要包括6個模塊:數(shù)據(jù)接收模塊,數(shù)據(jù)處理模塊,數(shù)據(jù)存儲模塊,數(shù)據(jù)查詢模塊,數(shù)據(jù)顯示模塊。
圖2 上位機系統(tǒng)方案Fig.2 System scheme of upper system
傳統(tǒng)測井儀器采用CPCI總線進行數(shù)據(jù)接收,設計這樣的系統(tǒng)需要單獨設計數(shù)據(jù)采集板卡,費時費力,而普通串口又不能滿足數(shù)據(jù)高速傳輸?shù)囊?,所以文中設計方案采用USB作為接口實現(xiàn)對處理過的下行數(shù)據(jù)進行采集,同時為了在軟件開發(fā)過程中不過分依賴于硬件的開發(fā),使用模擬數(shù)據(jù)源對軟件各個功能模塊進行測試[2]。該模塊根據(jù)服務表內容產生數(shù)據(jù),將其發(fā)送到數(shù)據(jù)接收端口,由主程序對端口數(shù)據(jù)進行讀取,端口數(shù)據(jù)暫時被讀入緩沖區(qū)。數(shù)據(jù)處理模塊主要負責對采集到得數(shù)據(jù)進行數(shù)據(jù)報格式封裝解析和相應的計算處理;實時顯示模塊完成對處理后數(shù)據(jù)的顯示;數(shù)據(jù)存儲模塊采用SQL Server進行數(shù)據(jù)存儲;數(shù)據(jù)查詢模塊實現(xiàn)兩種查詢:基于時間范圍的查詢,基于通道參數(shù)的查詢;數(shù)據(jù)顯示模塊包括波形圖顯示和表格顯示兩種,以曲線和數(shù)字兩種方式對采集到得數(shù)據(jù)進行顯示;同時根據(jù)實際需要可將相應數(shù)據(jù)導出到EXCEL表格。
在LabVIEW下,調用NI-VISA子程序控件,實現(xiàn)與USB設備的直接通信。NI-VISA從3.0開始支持與USB設備的通信,為了使用NI-VISA,必須先讓Windows將NI-VISA作為設備的缺省驅動程序使用。要做到這點需要完成以下步驟:
1)安裝NI-VISA后,啟動VISA Driver Development Wizard程序,出現(xiàn)了為PXI/PCI或USB設備創(chuàng)建一個INF文檔的向導,選擇USB設備,點NEXT,出現(xiàn)VISA DDW基本設備信息窗口。
2)正確輸入 USB的 PID和 VID,點擊 NEXT,進行最后一步。
3)在USB Instrument Prefix中輸入相應信息,并在“output file directory”中選擇存放這些文檔的目錄,然后點擊Finish。INF文檔就被建好并保存至指定的位置。
4)復制生成的INF文件夾到系統(tǒng)盤windows文件夾下INF文件夾,點擊右鍵安裝[3]。
經過以上步驟后,當插上該USB接口時,Windows系統(tǒng)就能探測到,并根據(jù)INF硬件配置文件選擇NI-VISA作為底層驅動程序。
圖3所示為使用VISA串口進行數(shù)據(jù)采集的程序框圖[4],經過上面的設置后該框圖實現(xiàn)對端口數(shù)據(jù)的采集和下行命令發(fā)送的功能。
圖3 數(shù)據(jù)采集程序圖Fig.3 Program of data acquisition
傳感器采集井下測井測量參數(shù),通過電纜傳送到數(shù)據(jù)處理板,進行濾波,解碼,解析,傳送到USB端口,端口采集到數(shù)據(jù)后對采集到得原始數(shù)據(jù)進行計算處理,得到相應的測井測量參數(shù)。
介紹兩種基于LabVIEW的數(shù)據(jù)存儲的方法。1)通過ACTIVEX技術,實現(xiàn)EXCEL表格的自動創(chuàng)建與數(shù)據(jù)的存??;2)在LabVIEW中,通過LabSQL工具包與SQL Server進行連接,將數(shù)據(jù)存入數(shù)據(jù)庫中[5]。方法1適用于測井裝備工作狀態(tài)記錄等小量數(shù)據(jù)存儲,因此采用方法一生成數(shù)據(jù)報表;而對于從井下傳送來的海量數(shù)據(jù),采用方法2,通過對數(shù)據(jù)庫的調用來實現(xiàn)。
在LabVIEW中,通過LabSQL工具包完成將采集數(shù)據(jù)向數(shù)據(jù)庫的存儲?;境绦蛉鐖D4(a)所示。為了實現(xiàn)數(shù)據(jù)的實時存儲,采用生產者/消費者設計模式(數(shù)據(jù))的程序設計方法[6],生產者負責將采集并處理過的數(shù)據(jù)送入隊列,消費者負責將隊列中的數(shù)據(jù)存入到數(shù)據(jù)庫中。如圖4(b)所示,將采集到得數(shù)據(jù)存儲到名稱為DATA00的表中。
圖4 存儲模塊Fig.4 Storage module
如圖5(a)所示,為數(shù)據(jù)查詢模塊界面。數(shù)據(jù)查詢模塊包括按時間范圍進行查詢和按通道名進行查詢兩種方式,通過設置相應的時間范圍和通道名,可獲得指定的數(shù)據(jù);從圖中可以看出,通過規(guī)定時間段,程序能很好的實現(xiàn)相應數(shù)據(jù)的查詢[7]。該模塊包括EXCEL數(shù)據(jù)報表導出功能,系統(tǒng)自動創(chuàng)建EXCEL表格,將用戶指定的數(shù)據(jù)導出到報表中,具體程序框圖如圖 5(b)所示。
圖5 查詢模塊Fig.5 System query module
報表自動生成模塊主要采用ACTIVEX技術,在LabVIEW中通過屬性節(jié)點和調用節(jié)點對EXCEL表格進行操作[8],其中CONVERT子VI實現(xiàn)的功能是EXCEL表格中每個單元格的定位。
該隨鉆測量上位機系統(tǒng)由數(shù)據(jù)采集界面,數(shù)據(jù)查詢界面,系統(tǒng)設置界面3個界面組成,通過選項卡標簽可以實現(xiàn)界面的切換[9]。為了實現(xiàn)數(shù)據(jù)的實時顯示,采用生產者/消費者模式(數(shù)據(jù)),生產者負責數(shù)據(jù)的采集處理,消費者負責數(shù)據(jù)的實時顯示。圖8為數(shù)據(jù)采集界面,打開‘顯示’和‘存儲’開關,系統(tǒng)在進行實時顯示的同時對采集到得數(shù)據(jù)進行數(shù)據(jù)庫存儲[10]。圖8為主程序運行的主界面截圖,系統(tǒng)采用Labview自帶波形圖顯示控件對采集到得數(shù)據(jù)進行存儲,橫坐標為采集到點的個數(shù),縱坐標為該點所對應不同參數(shù)的數(shù)值,不同曲線對應不同的參數(shù),坐標范圍隨采集到參數(shù)數(shù)值大小自動調整。通過模擬數(shù)據(jù)源測試,主界面的顯示功能達到預期目標。
圖6 模擬數(shù)據(jù)源測試圖Fig.6 Test chart based on simulated data source
文中主要介紹了基于LabVIEW測井裝備上位機系統(tǒng)的設計與實現(xiàn),下行數(shù)據(jù)經過數(shù)據(jù)處理板的處理以后,經過USB接口傳入上位機系統(tǒng),通過數(shù)據(jù)處理模塊對端口接收到得數(shù)據(jù)進行計算處理之后,對其進行顯示,存儲,查詢。系統(tǒng)采用原始數(shù)據(jù)文件作為模擬數(shù)據(jù)源,對系統(tǒng)功能進行測試,證明系統(tǒng)性能已經達到預期目標。以LabVIEW為軟件開發(fā)工具對隨鉆測量上位機軟件進行開發(fā),可縮短項目開發(fā)周期,提高編程效率,大大增強了隨鉆測量上位機系統(tǒng)的可擴展性。
[1]丁偉.石油測井車井上監(jiān)測系統(tǒng)的設計與實現(xiàn)[J].石油天然氣學報,2012,34(6):100-103.
DING Wei.The design and implementation of monitoring system of well logging wheeled machine[J].Journal of oil and gas,2012,34(6):100-103.
[2]劉濤,王軍寧.測井軟件系統(tǒng)的設計與實現(xiàn)[D].西安:西安電子科技大學,2008.
[3]程龍飛,何聞.基于LabVIEW的USB數(shù)據(jù)傳輸技術研究[J].機床與液壓,2009,37(7):105-108.
CHENG Long-fei,HE Wen.Research on USB data transmission technology based on LabVIEW[J].Machine Tool&Hydraulics,2009,37(7):105-108.
[4]趙奇峰,閔濤,楊黔龍.基于LabVIEW串口數(shù)據(jù)采集系統(tǒng)設計[J].計算機技術與發(fā)展,2011, 21(11):224-226.
ZHAO Qi-feng,MIN Tao,YANG Qian-long.Design of serial data collection system based on LabVIEW [J].Computer Technology and Development,2011,21(11):224-226.
[5]張榮.LabVIEW數(shù)據(jù)庫與報表的混合編程設計技術[J].信息與電子工程,2010,8(4):476-479.
ZHANG Rong.Design ofdatabaseand reporthybrid programmingbased on LabVIEW [J].Information and Electronic Engineering,2010,8(4):476-479.
[6]陳樹學,劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[7]李文濤,曹彥紅,卜旭芳.LabVIEW數(shù)據(jù)庫訪問技術的實現(xiàn)及應用[J].工礦自動化,2012(2):69-71.
LI Wen-tao,CAO Yan-hong,PU Xu-fang.Implementation of database accessing technique of LabVIEW and its application[J].Industry and mine automation,2012,2:69-71.
[8]胡紹海,高亞峰,肖坦.基于LabVIEW的Excel報表生成技術研究[J].測控技術,2007,26(10):64-69.
HU Shao-hai,GAO Ya-feng,XIAO Tan.Excelreport generation technology based on LabVIEW[J].Measurement and control technology,2007,26(10):64-69.
[9]顧文武,何慶中,周鐵.基于LabVIEW與智能儀器數(shù)據(jù)采集系統(tǒng)[J].儀表技術與傳感器,2012(11):53-58.
GU Wen-wu,HE Qing-zhong,ZHOU Tie.Data acquisition system based on LabVIEW and intelligent instrument[J].Instrument Technique and Sensor,2012(11):53-58.
[10]何俊偉,張齊.Labview在多通道數(shù)據(jù)采集系統(tǒng)中的應用研究[D].廣州:華南理工大學,2012.