林彩霞,雙 凱
(中國(guó)石油大學(xué)(北京)地球物理與信息工程學(xué)院,北京 102249)
測(cè)井裝備上位機(jī)軟件是測(cè)井裝備非常重要的一部分,它負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的控制,數(shù)據(jù)采集,顯示和存儲(chǔ)等功能,為石油勘探和油田開(kāi)發(fā)提供非常重要的數(shù)據(jù)資料。
目前主流的測(cè)井儀器上位機(jī)軟件基本上采用VC++進(jìn)行開(kāi)發(fā),但是使用VC++進(jìn)行軟件開(kāi)發(fā)對(duì)開(kāi)發(fā)人員水平要求高且工作量大,不同模塊需要從底層開(kāi)發(fā),出發(fā)點(diǎn)低,需要較長(zhǎng)的開(kāi)發(fā)周期[1]。
LabVIEW是一種圖形化編程語(yǔ)言,作為數(shù)據(jù)采集和儀器控制軟件的標(biāo)準(zhǔn)被廣泛的應(yīng)用于工業(yè)界、學(xué)術(shù)界和研究性實(shí)驗(yàn)室。LabVIEW是功能強(qiáng)大、靈活的多平臺(tái)儀器和分析軟件系統(tǒng)。用戶(hù)可以根據(jù)自己的需要靈活地定義儀器的功能,使用人員可以通過(guò)軟件編程或采用現(xiàn)有分析軟件,實(shí)時(shí)、直接地對(duì)數(shù)據(jù)進(jìn)行各種分析與處理。該軟件使用模塊函數(shù),工程師不需要從最底層進(jìn)行開(kāi)發(fā),可大大減少工作量,縮短項(xiàng)目開(kāi)發(fā)周期。
文中旨在使用LabVIEW設(shè)計(jì)實(shí)現(xiàn)一種測(cè)井上位機(jī)系統(tǒng),采用模塊化設(shè)計(jì)方法,根據(jù)測(cè)井測(cè)量參數(shù)的特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)采集、實(shí)時(shí)顯示、數(shù)據(jù)庫(kù)存儲(chǔ)、數(shù)據(jù)查詢(xún)。在軟件開(kāi)發(fā)過(guò)程中為了減少對(duì)硬件的依賴(lài),根據(jù)實(shí)際采集數(shù)據(jù)特點(diǎn),設(shè)計(jì)模擬數(shù)據(jù)源對(duì)軟件系統(tǒng)各模塊進(jìn)行測(cè)試。
如圖1所示,為測(cè)井裝備地面系統(tǒng)總體設(shè)計(jì)模塊圖。為了保證系統(tǒng)的數(shù)據(jù)采集速度,采用硬件對(duì)采集到得數(shù)據(jù)進(jìn)行處理。為了保證速度,系統(tǒng)采用硬件對(duì)上行數(shù)據(jù)的濾波、解碼、解析,傳送至上位機(jī)系統(tǒng)進(jìn)行存儲(chǔ),顯示;上位機(jī)產(chǎn)生的下行數(shù)據(jù)即對(duì)井下系統(tǒng)的控制命令經(jīng)過(guò)封裝和編碼后傳送至井下。
圖1 總體設(shè)計(jì)方案Fig.1 Overall design scheme
根據(jù)實(shí)際需要,設(shè)計(jì)實(shí)現(xiàn)四通道隨鉆測(cè)量上位機(jī)數(shù)據(jù)采集系統(tǒng)。圖2為上位機(jī)系統(tǒng)方案,如圖2所示,主要包括6個(gè)模塊:數(shù)據(jù)接收模塊,數(shù)據(jù)處理模塊,數(shù)據(jù)存儲(chǔ)模塊,數(shù)據(jù)查詢(xún)模塊,數(shù)據(jù)顯示模塊。
圖2 上位機(jī)系統(tǒng)方案Fig.2 System scheme of upper system
傳統(tǒng)測(cè)井儀器采用CPCI總線(xiàn)進(jìn)行數(shù)據(jù)接收,設(shè)計(jì)這樣的系統(tǒng)需要單獨(dú)設(shè)計(jì)數(shù)據(jù)采集板卡,費(fèi)時(shí)費(fèi)力,而普通串口又不能滿(mǎn)足數(shù)據(jù)高速傳輸?shù)囊?,所以文中設(shè)計(jì)方案采用USB作為接口實(shí)現(xiàn)對(duì)處理過(guò)的下行數(shù)據(jù)進(jìn)行采集,同時(shí)為了在軟件開(kāi)發(fā)過(guò)程中不過(guò)分依賴(lài)于硬件的開(kāi)發(fā),使用模擬數(shù)據(jù)源對(duì)軟件各個(gè)功能模塊進(jìn)行測(cè)試[2]。該模塊根據(jù)服務(wù)表內(nèi)容產(chǎn)生數(shù)據(jù),將其發(fā)送到數(shù)據(jù)接收端口,由主程序?qū)Χ丝跀?shù)據(jù)進(jìn)行讀取,端口數(shù)據(jù)暫時(shí)被讀入緩沖區(qū)。數(shù)據(jù)處理模塊主要負(fù)責(zé)對(duì)采集到得數(shù)據(jù)進(jìn)行數(shù)據(jù)報(bào)格式封裝解析和相應(yīng)的計(jì)算處理;實(shí)時(shí)顯示模塊完成對(duì)處理后數(shù)據(jù)的顯示;數(shù)據(jù)存儲(chǔ)模塊采用SQL Server進(jìn)行數(shù)據(jù)存儲(chǔ);數(shù)據(jù)查詢(xún)模塊實(shí)現(xiàn)兩種查詢(xún):基于時(shí)間范圍的查詢(xún),基于通道參數(shù)的查詢(xún);數(shù)據(jù)顯示模塊包括波形圖顯示和表格顯示兩種,以曲線(xiàn)和數(shù)字兩種方式對(duì)采集到得數(shù)據(jù)進(jìn)行顯示;同時(shí)根據(jù)實(shí)際需要可將相應(yīng)數(shù)據(jù)導(dǎo)出到EXCEL表格。
在LabVIEW下,調(diào)用NI-VISA子程序控件,實(shí)現(xiàn)與USB設(shè)備的直接通信。NI-VISA從3.0開(kāi)始支持與USB設(shè)備的通信,為了使用NI-VISA,必須先讓W(xué)indows將NI-VISA作為設(shè)備的缺省驅(qū)動(dòng)程序使用。要做到這點(diǎn)需要完成以下步驟:
1)安裝NI-VISA后,啟動(dòng)VISA Driver Development Wizard程序,出現(xiàn)了為PXI/PCI或USB設(shè)備創(chuàng)建一個(gè)INF文檔的向?qū)Вx擇USB設(shè)備,點(diǎn)NEXT,出現(xiàn)VISA DDW基本設(shè)備信息窗口。
2)正確輸入 USB的 PID和 VID,點(diǎn)擊 NEXT,進(jìn)行最后一步。
3)在USB Instrument Prefix中輸入相應(yīng)信息,并在“output file directory”中選擇存放這些文檔的目錄,然后點(diǎn)擊Finish。INF文檔就被建好并保存至指定的位置。
4)復(fù)制生成的INF文件夾到系統(tǒng)盤(pán)windows文件夾下INF文件夾,點(diǎn)擊右鍵安裝[3]。
經(jīng)過(guò)以上步驟后,當(dāng)插上該USB接口時(shí),Windows系統(tǒng)就能探測(cè)到,并根據(jù)INF硬件配置文件選擇NI-VISA作為底層驅(qū)動(dòng)程序。
圖3所示為使用VISA串口進(jìn)行數(shù)據(jù)采集的程序框圖[4],經(jīng)過(guò)上面的設(shè)置后該框圖實(shí)現(xiàn)對(duì)端口數(shù)據(jù)的采集和下行命令發(fā)送的功能。
圖3 數(shù)據(jù)采集程序圖Fig.3 Program of data acquisition
傳感器采集井下測(cè)井測(cè)量參數(shù),通過(guò)電纜傳送到數(shù)據(jù)處理板,進(jìn)行濾波,解碼,解析,傳送到USB端口,端口采集到數(shù)據(jù)后對(duì)采集到得原始數(shù)據(jù)進(jìn)行計(jì)算處理,得到相應(yīng)的測(cè)井測(cè)量參數(shù)。
介紹兩種基于LabVIEW的數(shù)據(jù)存儲(chǔ)的方法。1)通過(guò)ACTIVEX技術(shù),實(shí)現(xiàn)EXCEL表格的自動(dòng)創(chuàng)建與數(shù)據(jù)的存?。?)在LabVIEW中,通過(guò)LabSQL工具包與SQL Server進(jìn)行連接,將數(shù)據(jù)存入數(shù)據(jù)庫(kù)中[5]。方法1適用于測(cè)井裝備工作狀態(tài)記錄等小量數(shù)據(jù)存儲(chǔ),因此采用方法一生成數(shù)據(jù)報(bào)表;而對(duì)于從井下傳送來(lái)的海量數(shù)據(jù),采用方法2,通過(guò)對(duì)數(shù)據(jù)庫(kù)的調(diào)用來(lái)實(shí)現(xiàn)。
在LabVIEW中,通過(guò)LabSQL工具包完成將采集數(shù)據(jù)向數(shù)據(jù)庫(kù)的存儲(chǔ)?;境绦蛉鐖D4(a)所示。為了實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)存儲(chǔ),采用生產(chǎn)者/消費(fèi)者設(shè)計(jì)模式(數(shù)據(jù))的程序設(shè)計(jì)方法[6],生產(chǎn)者負(fù)責(zé)將采集并處理過(guò)的數(shù)據(jù)送入隊(duì)列,消費(fèi)者負(fù)責(zé)將隊(duì)列中的數(shù)據(jù)存入到數(shù)據(jù)庫(kù)中。如圖4(b)所示,將采集到得數(shù)據(jù)存儲(chǔ)到名稱(chēng)為DATA00的表中。
圖4 存儲(chǔ)模塊Fig.4 Storage module
如圖5(a)所示,為數(shù)據(jù)查詢(xún)模塊界面。數(shù)據(jù)查詢(xún)模塊包括按時(shí)間范圍進(jìn)行查詢(xún)和按通道名進(jìn)行查詢(xún)兩種方式,通過(guò)設(shè)置相應(yīng)的時(shí)間范圍和通道名,可獲得指定的數(shù)據(jù);從圖中可以看出,通過(guò)規(guī)定時(shí)間段,程序能很好的實(shí)現(xiàn)相應(yīng)數(shù)據(jù)的查詢(xún)[7]。該模塊包括EXCEL數(shù)據(jù)報(bào)表導(dǎo)出功能,系統(tǒng)自動(dòng)創(chuàng)建EXCEL表格,將用戶(hù)指定的數(shù)據(jù)導(dǎo)出到報(bào)表中,具體程序框圖如圖 5(b)所示。
圖5 查詢(xún)模塊Fig.5 System query module
報(bào)表自動(dòng)生成模塊主要采用ACTIVEX技術(shù),在LabVIEW中通過(guò)屬性節(jié)點(diǎn)和調(diào)用節(jié)點(diǎn)對(duì)EXCEL表格進(jìn)行操作[8],其中CONVERT子VI實(shí)現(xiàn)的功能是EXCEL表格中每個(gè)單元格的定位。
該隨鉆測(cè)量上位機(jī)系統(tǒng)由數(shù)據(jù)采集界面,數(shù)據(jù)查詢(xún)界面,系統(tǒng)設(shè)置界面3個(gè)界面組成,通過(guò)選項(xiàng)卡標(biāo)簽可以實(shí)現(xiàn)界面的切換[9]。為了實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)顯示,采用生產(chǎn)者/消費(fèi)者模式(數(shù)據(jù)),生產(chǎn)者負(fù)責(zé)數(shù)據(jù)的采集處理,消費(fèi)者負(fù)責(zé)數(shù)據(jù)的實(shí)時(shí)顯示。圖8為數(shù)據(jù)采集界面,打開(kāi)‘顯示’和‘存儲(chǔ)’開(kāi)關(guān),系統(tǒng)在進(jìn)行實(shí)時(shí)顯示的同時(shí)對(duì)采集到得數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)存儲(chǔ)[10]。圖8為主程序運(yùn)行的主界面截圖,系統(tǒng)采用Labview自帶波形圖顯示控件對(duì)采集到得數(shù)據(jù)進(jìn)行存儲(chǔ),橫坐標(biāo)為采集到點(diǎn)的個(gè)數(shù),縱坐標(biāo)為該點(diǎn)所對(duì)應(yīng)不同參數(shù)的數(shù)值,不同曲線(xiàn)對(duì)應(yīng)不同的參數(shù),坐標(biāo)范圍隨采集到參數(shù)數(shù)值大小自動(dòng)調(diào)整。通過(guò)模擬數(shù)據(jù)源測(cè)試,主界面的顯示功能達(dá)到預(yù)期目標(biāo)。
圖6 模擬數(shù)據(jù)源測(cè)試圖Fig.6 Test chart based on simulated data source
文中主要介紹了基于LabVIEW測(cè)井裝備上位機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),下行數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)處理板的處理以后,經(jīng)過(guò)USB接口傳入上位機(jī)系統(tǒng),通過(guò)數(shù)據(jù)處理模塊對(duì)端口接收到得數(shù)據(jù)進(jìn)行計(jì)算處理之后,對(duì)其進(jìn)行顯示,存儲(chǔ),查詢(xún)。系統(tǒng)采用原始數(shù)據(jù)文件作為模擬數(shù)據(jù)源,對(duì)系統(tǒng)功能進(jìn)行測(cè)試,證明系統(tǒng)性能已經(jīng)達(dá)到預(yù)期目標(biāo)。以LabVIEW為軟件開(kāi)發(fā)工具對(duì)隨鉆測(cè)量上位機(jī)軟件進(jìn)行開(kāi)發(fā),可縮短項(xiàng)目開(kāi)發(fā)周期,提高編程效率,大大增強(qiáng)了隨鉆測(cè)量上位機(jī)系統(tǒng)的可擴(kuò)展性。
[1]丁偉.石油測(cè)井車(chē)井上監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].石油天然氣學(xué)報(bào),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]劉濤,王軍寧.測(cè)井軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2008.
[3]程龍飛,何聞.基于LabVIEW的USB數(shù)據(jù)傳輸技術(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)設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(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ù)庫(kù)與報(bào)表的混合編程設(shè)計(jì)技術(shù)[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]陳樹(shù)學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[7]李文濤,曹彥紅,卜旭芳.LabVIEW數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的實(shí)現(xiàn)及應(yīng)用[J].工礦自動(dòng)化,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報(bào)表生成技術(shù)研究[J].測(cè)控技術(shù),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].儀表技術(shù)與傳感器,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)中的應(yīng)用研究[D].廣州:華南理工大學(xué),2012.