陳文輝,雙 凱
(中國石油大學(北京)地球物理與信息工程學院,北京 102249)
隨鉆測量是在鉆井過程中進行井下信息實時測量和上傳的技術的簡稱。連續(xù)油管隨鉆采用電纜傳輸井底信號,能及時的把地下所測得的隨鉆數(shù)據(jù)傳輸?shù)降孛妫┑孛嫒藛T分析使用。目前國內(nèi)大多數(shù)仍采用泥漿脈沖隨鉆測量,相應的地面監(jiān)控軟件一般采用VC或VB開發(fā),地面硬件系統(tǒng)一般采用數(shù)據(jù)采集卡、防爆箱以及信號調(diào)理電路等構成,通過USB或串口的方式與PC機通信[1],有關連續(xù)油管隨鉆測量監(jiān)控軟件的研究則很少。LabVIEW作為美國國家半導體公司推出的基于圖形程序的虛擬儀器儀表開發(fā)平臺,采用數(shù)據(jù)流的編程方式,內(nèi)部包含了眾多用于測試測量、控制仿真、信號處理等領域的函數(shù)工具包,以及友好美觀的儀器儀表外觀界面,采用LabVIEW進行原理研究,設計、測試并實現(xiàn)儀器系統(tǒng)時能夠縮短開發(fā)時間,大大提高工作效率。在該背景下,本文提出了一種基于LabVIEW的連續(xù)油管隨鉆測量監(jiān)控軟件的設計與實現(xiàn),并通過Altera公司的DE2-115開發(fā)板作為硬件測試平臺對該軟件的應用效果進行了測試。
該監(jiān)控軟件采用模塊化的方式實現(xiàn),包括通信模塊、數(shù)據(jù)庫模塊以及隨鉆測量模塊,各個模塊的結(jié)構和所包含的功能如圖1所示。
圖1 軟件整體設計結(jié)構圖Fig.1 Structure diagram of the software system
隨鉆測量模塊是該監(jiān)控軟件最主要的模塊,用于隨鉆測量數(shù)據(jù)接收、顯示和儲存的模塊,進入該模塊后需要先登陸數(shù)據(jù)庫服務器并選擇用于存儲的數(shù)據(jù)庫,然后需要輸入上位機IP地址和端口號將監(jiān)控軟件和上位機建立連接,正確連接后即可看到顯示界面。在該隨鉆測量顯示界面,操作人員在控制命令發(fā)送區(qū)寫入命令字符串并點擊發(fā)送按鈕,上位機接收到命令后返回井下儀器狀態(tài)或隨鉆數(shù)據(jù),這些狀態(tài)和數(shù)據(jù)將在顯示界面上實時顯示,同時還可以觀看歷史數(shù)據(jù)以及歷史曲線等信息,與此同時,這些隨鉆數(shù)據(jù)信息被保存在指定數(shù)據(jù)庫中。
在該監(jiān)控軟件設計過程中,主要采用了基于XControl的隨鉆度盤設計、基于Winsock的中斷式以太網(wǎng)通信設計以及基于LabSQL的數(shù)據(jù)庫訪問技術。
隨鉆度盤是一種用于顯示隨鉆井斜、方位和工具面參數(shù)數(shù)值的儀表盤,通常度盤除了顯示井斜、方位和當前工具面值以外還可以顯示4個歷史工具面值,工具面分重力工具面和磁力工具面,分別用兩種不同顏色的指針區(qū)分,5個工具面值中最外層是最新的值,最內(nèi)層的是最老的值。
由于LabVIEW中沒有具有隨鉆度盤功能的顯示控件,本文采用LabVIEW的XControl技術設計和實現(xiàn)隨鉆度盤。XControl是 NI公司在LABVIEW 8.X新推出的一種特殊控件結(jié)構,XControl擴展了自定義控件的功能,允許用戶以自定義控件的形式定義控件的功能,它不但可以定義控件的外觀,還可以定義控件的行為,實現(xiàn)具有特殊功能的儀表控件。XControl控件由4部分組成[2]:
1)數(shù)據(jù).ctl,定義 XControl的數(shù)據(jù)類型,即 XControl控件能接收的數(shù)據(jù)類型。
2)狀態(tài).ctl,定義 XControl的狀態(tài),記錄 XControol內(nèi)部數(shù)據(jù)狀態(tài)變化。
3)外觀.vi,定義XControl的外觀和功能,前面板定義外觀,程序面板編程實現(xiàn)功能。
4)初始化.vi,定義 XControl的初始狀態(tài)。
設計隨鉆度盤時,主要設計狀態(tài).ctl和外觀.vi。狀態(tài)用于保存4個歷史工具面的狀態(tài),共采用9個變量,其中8個用來表征4個歷史工具面的數(shù)值和類型,最后一個變量記錄接收數(shù)據(jù)的次數(shù)。外觀是在LabVIEW自帶的量表基礎上,通過自定義控件實現(xiàn),隨鉆度盤的外觀.vi對應的程序流程圖如圖2所示。
外觀.vi的前面板設計使用了11個自定義量表,將他們依次疊加放在一起,這樣11個量表看起來就是一個隨鉆度盤。每次有新數(shù)據(jù)到來時,后面板程序讀取出當前井斜、方位和工具面值并通過對應3個量表顯示出來,然后程序通過查詢歷史工具面的狀態(tài)值,確定歷史工具面的數(shù)值以及是重力還是磁力工具面,控制其余量表進行顯示。
圖2 隨鉆度盤程序設計流程圖Fig.2 Program flow diagram of the MWD gauge
LabVIEW自身帶有TCP和UDP通信功能的Vi,但是它們都是基于輪詢機制而不是事件機制,本文考慮到數(shù)據(jù)傳輸?shù)膶崟r性采用基于事件中斷方式的Winsock控件實現(xiàn)網(wǎng)絡通信。
WinSock控件是一個專門用于Windows網(wǎng)絡編程的ActiveX控件。它提供了訪問TCP和UDP網(wǎng)絡服務的方便途徑。它可以作為服務器被其他客戶端軟件調(diào)用,實現(xiàn)網(wǎng)絡編程。用WinSock控件編寫網(wǎng)絡通信程序,不需要了解TCP/IP的具體細節(jié)或調(diào)用底層Winsock API,通過設置WinSock控件的屬性、配置事件中斷服務、調(diào)用該控件的方法,可容易的連接到遠程計算機并進行雙向數(shù)據(jù)交換[3-4]。
由于LabVIEW自身不帶有Winsock控件,要在LabVIEW中正常調(diào)用Winsock控件,需要先注冊MSWinsock.ocx文件,并將對應的License key導入注冊表。本文設計的隨鉆測量監(jiān)控軟件以客戶端的模式工作,主要用到了Winsock的Connect方法、SendData方法、Close方法以及DataArrival事件,采用Winsock進行中斷式網(wǎng)絡通信的程序如圖3所示。
在該程序中,先通過Close方法關閉Winsock以防止其在上次應用完畢后沒有關閉導致錯誤發(fā)生,再調(diào)用Connect方法重新打開Winsock,通過輸入遠程服務器IP地址和端口號與服務器進行連接,連接成功后即注冊一個中斷服務程序,該中斷服務程序在有網(wǎng)口有數(shù)據(jù)到來時將數(shù)據(jù)接收存放在名為“收到的字符串”的隊列中。圖中的小while循環(huán)在隊列有數(shù)據(jù)時將數(shù)據(jù)取出并顯示在“收到的字符串”控件中,帶有事件結(jié)構的while循環(huán)檢測前面板按鍵,當前面板“發(fā)送”按鍵按下時即把“發(fā)送字符串”中的數(shù)據(jù)發(fā)送出去;當前面板“斷開連接”按鍵按下時即關閉Winsock、取消注冊事件并釋放隊列引用,從而控制整個程序停止運行。
圖3 中斷式網(wǎng)絡通信程序圖Fig.3 Program code of Ethernet communication in the interruption way
隨鉆測量參數(shù)多樣、數(shù)據(jù)量大,為了有效的對隨鉆數(shù)據(jù)進行存儲和管理,本文采用數(shù)據(jù)庫SQL Server記錄隨鉆數(shù)據(jù)??紤]到實際隨鉆測量所需存儲的參數(shù)類型和其他相關信息,采用Power Designer設計了該連續(xù)油管隨鉆測量數(shù)據(jù)庫,通過設計概念數(shù)據(jù)模型,生成物理數(shù)據(jù)模型,最后在SQL Server 2008中生成設計好的數(shù)據(jù)庫。連續(xù)油管隨鉆數(shù)據(jù)庫E-R圖如圖4所示。
圖4 連續(xù)油管隨鉆測量數(shù)據(jù)庫E-R圖Fig.4 E-R diagram of the MWCTD database
在該連續(xù)油管隨鉆數(shù)據(jù)庫中,主要設計了工程、井、鉆次、專家、測量工程師、井隊、測斜數(shù)據(jù)、伽馬、電阻率、工具面和井深共11個實體。其中一個工程對應多口井,一口井對應多個鉆次,而在每個鉆次中主要記錄的測量數(shù)據(jù)有定向數(shù)據(jù)、鉆井參數(shù)和地層特性,對于本課題測量數(shù)據(jù)簡化考慮只有測斜數(shù)據(jù)、伽馬、電阻率、工具面和井深,此外,對應每一個鉆次都有多個專家、測量工程師和井隊負責[1]。
實現(xiàn)LabVIEW對數(shù)據(jù)庫的操作主要可采用的方法有:LabVIEW SQL Toolkit、LabVIEW ActiveX、LabSQL 和 調(diào) 用 動態(tài)鏈接庫DLL。由于LabVIEW SQL Toolkit工具包需購買且價格昂貴,采用ActiveX和DLL方式訪問數(shù)據(jù)庫需要進行復雜的編程,對程序員要求較高,而LabSQL是一個免費的、多數(shù)據(jù)庫、跨平臺的數(shù)據(jù)庫訪問工具包,所以本文采用LabSQL工具包開發(fā)數(shù)據(jù)庫應用程序。
ODBC(Open Database Connectivity)即開放數(shù)據(jù)庫連接,是一種強大而靈活的數(shù)據(jù)庫訪問標準,用戶可以通過ODBC實現(xiàn)對不同操作系統(tǒng)下不同數(shù)據(jù)庫軟件的訪問。而一般訪問ODBC數(shù)據(jù)源接口采用ADO (ActiveX Data Objects)方式,LabSQL正是將復雜的底層ADO及SQL操作封裝成一系列的LabSQL VIs,通過這些VI訪問ODBC數(shù)據(jù)源從而實現(xiàn)對數(shù)據(jù)庫的訪問[5-6]。
如圖5所示是LabSQL編程訪問數(shù)據(jù)庫的一般過程,先通過ADO Create Conn.vi建立一個自動化連接,再通過向ADO Open Conn.vi輸入正確的連接字符串即可與數(shù)據(jù)庫服務器或指定數(shù)據(jù)庫實現(xiàn)連接,然后就可以通過SQL Execute.vi執(zhí)行SQL語句并返回查詢結(jié)果,最后通過Close Conn.vi和Destroy Conn.vi關閉并銷毀連接。
圖5 LabSQL以Windows身份驗證方式登錄訪問數(shù)據(jù)庫程序流程Fig.5 Program code of LabSQL accessing database by Windows user authentication
連接字符串的內(nèi)容根據(jù)連接方式的不同而不同,圖5中所示連接字符串通過Windows身份驗證的方式連接到連續(xù)油管隨鉆數(shù)據(jù)庫,將表格 “工程”中的數(shù)據(jù)讀出顯示在Data控件中,而不需要輸入用戶名密碼進行驗證。當通過SQL Server身份認證的方式登錄連續(xù)油管隨鉆數(shù)據(jù)庫時,則應當在連接字符串中加入用戶名和密碼信息。連接字符串可以通過以下方法獲?。盒陆ㄒ粋€文本文檔,重命名為xxx.udl,然后在打開方式中選擇OLE DB Core Services,打開后將出現(xiàn)一個配置窗口,在“提供程序”里選擇數(shù)據(jù)庫,然后在“連接”里進行其他相關設置,最后點擊確定。這時候再打開該udl文件即可看到生成的連接字符串,該字符串可用作與數(shù)據(jù)庫的連接。
為了測試該隨鉆測量監(jiān)控軟件,采用ALTERA公司的DE2-115開發(fā)板作為硬件測試平臺,向該FPGA開發(fā)板移植嵌入式實時操作系統(tǒng)μC/OS-II,并采用NicheStack TCP/IP以太網(wǎng)協(xié)議棧和Socket套接字進行網(wǎng)絡編程,最終開發(fā)了和監(jiān)控軟件進行以太網(wǎng)通信的上位機程序。系統(tǒng)測試結(jié)果如圖6、圖7所示。
圖6 軟件測試結(jié)果Fig.6 Test result of the software system
圖7 數(shù)據(jù)存儲測試結(jié)果Fig.7 Test result of data storage
測試中,DE2-115每隔一秒鐘發(fā)送一次數(shù)據(jù),發(fā)送的井斜、方位和工具面值為定值,伽馬和電阻率在一定范圍內(nèi)是隨機值。從圖中可以看到監(jiān)控軟件能正確顯示各隨鉆數(shù)據(jù),同時這些數(shù)據(jù)被寫入數(shù)據(jù)庫的對應表格中。
本文開發(fā)了基于LabVIEW的連續(xù)油管隨鉆測量監(jiān)控軟件,經(jīng)測試,該軟件能夠?qū)崟r地接收、顯示和存儲上位機傳來的數(shù)據(jù),采用DE2-115硬件平臺以及LabVIEW軟件開發(fā)平臺,節(jié)約了開發(fā)時間,收到了良好的實際效果。
[1]丁景麗.無線隨鉆測井儀軟件系統(tǒng)的設計與實現(xiàn)[D].大連:大連理工大學,2006.
[2]陳寅,張方,姜金輝.基于虛擬儀器平臺的海量數(shù)據(jù)處理分析系統(tǒng)開發(fā)[J].國外電子測量技術,2011,30(7):39-42.CHEN Yin,ZHANG Fang,JIANG Jin-hui.A mass data processing system based on virtual instrument platform[J].Foreign Electronic Measurement Technology,2011,30 (7):39-42.
[3]姜志廷.Winsock ActiveX控件在網(wǎng)絡程序中的應用 [J].赤峰學院學報:自然科學版,2007,23(1):70-71.JIANG Zhi-ting.Application of winsock activeX control in network program[J].Journal of Chifeng College:Natural Science Edition,2007,23(1):70-71.
[4]胡吉朝,王定遠,王占鋒.中斷式網(wǎng)絡通信技術在LabVIEW下的實現(xiàn)[J].微計算機信息,2008,24(12-3):167-168.HU Ji-chao,WANG Ding-yuan,WANG Zhan-feng.Realization of network communication in LabVIEW using interruption Technology[J].Microcomputer Information,2008,24(12-3):167-168.
[5]畢虎,律方成,李燕青,等.LabVIEW中訪問數(shù)據(jù)庫的幾種不同方法[J].微計算機信息,2006,22(1-1):131-134.BI Hu,LV Fang-cheng,LI Yan-qing.Several methods of accessing database in labview[J].Microcomputer Information,2006,22(1-1):131-134.
[6]劉翔宇,陳曾漢.利用LabSQL實現(xiàn)對遠程數(shù)據(jù)庫的訪問[J].測控技術,2011,27(6):68-69.LIU Xiang-yu,CHEN Zeng-han.Access to remote database using LabSQL[J].Measurement&Control Technology,2011,27(6):68-69.