陳文輝,雙 凱
(中國石油大學(北京)地球物理與信息工程學院,北京 102249)
隨鉆測量是在鉆井過程中進行井下信息實時測量和上傳的技術的簡稱。連續油管隨鉆采用電纜傳輸井底信號,能及時的把地下所測得的隨鉆數據傳輸到地面,供地面人員分析使用。目前國內大多數仍采用泥漿脈沖隨鉆測量,相應的地面監控軟件一般采用VC或VB開發,地面硬件系統一般采用數據采集卡、防爆箱以及信號調理電路等構成,通過USB或串口的方式與PC機通信[1],有關連續油管隨鉆測量監控軟件的研究則很少。LabVIEW作為美國國家半導體公司推出的基于圖形程序的虛擬儀器儀表開發平臺,采用數據流的編程方式,內部包含了眾多用于測試測量、控制仿真、信號處理等領域的函數工具包,以及友好美觀的儀器儀表外觀界面,采用LabVIEW進行原理研究,設計、測試并實現儀器系統時能夠縮短開發時間,大大提高工作效率。在該背景下,本文提出了一種基于LabVIEW的連續油管隨鉆測量監控軟件的設計與實現,并通過Altera公司的DE2-115開發板作為硬件測試平臺對該軟件的應用效果進行了測試。
該監控軟件采用模塊化的方式實現,包括通信模塊、數據庫模塊以及隨鉆測量模塊,各個模塊的結構和所包含的功能如圖1所示。

圖1 軟件整體設計結構圖Fig.1 Structure diagram of the software system
隨鉆測量模塊是該監控軟件最主要的模塊,用于隨鉆測量數據接收、顯示和儲存的模塊,進入該模塊后需要先登陸數據庫服務器并選擇用于存儲的數據庫,然后需要輸入上位機IP地址和端口號將監控軟件和上位機建立連接,正確連接后即可看到顯示界面。在該隨鉆測量顯示界面,操作人員在控制命令發送區寫入命令字符串并點擊發送按鈕,上位機接收到命令后返回井下儀器狀態或隨鉆數據,這些狀態和數據將在顯示界面上實時顯示,同時還可以觀看歷史數據以及歷史曲線等信息,與此同時,這些隨鉆數據信息被保存在指定數據庫中。
在該監控軟件設計過程中,主要采用了基于XControl的隨鉆度盤設計、基于Winsock的中斷式以太網通信設計以及基于LabSQL的數據庫訪問技術。
隨鉆度盤是一種用于顯示隨鉆井斜、方位和工具面參數數值的儀表盤,通常度盤除了顯示井斜、方位和當前工具面值以外還可以顯示4個歷史工具面值,工具面分重力工具面和磁力工具面,分別用兩種不同顏色的指針區分,5個工具面值中最外層是最新的值,最內層的是最老的值。
由于LabVIEW中沒有具有隨鉆度盤功能的顯示控件,本文采用LabVIEW的XControl技術設計和實現隨鉆度盤。XControl是 NI公司在LABVIEW 8.X新推出的一種特殊控件結構,XControl擴展了自定義控件的功能,允許用戶以自定義控件的形式定義控件的功能,它不但可以定義控件的外觀,還可以定義控件的行為,實現具有特殊功能的儀表控件。XControl控件由4部分組成[2]:
1)數據.ctl,定義 XControl的數據類型,即 XControl控件能接收的數據類型。
2)狀態.ctl,定義 XControl的狀態,記錄 XControol內部數據狀態變化。
3)外觀.vi,定義XControl的外觀和功能,前面板定義外觀,程序面板編程實現功能。
4)初始化.vi,定義 XControl的初始狀態。
設計隨鉆度盤時,主要設計狀態.ctl和外觀.vi。狀態用于保存4個歷史工具面的狀態,共采用9個變量,其中8個用來表征4個歷史工具面的數值和類型,最后一個變量記錄接收數據的次數。外觀是在LabVIEW自帶的量表基礎上,通過自定義控件實現,隨鉆度盤的外觀.vi對應的程序流程圖如圖2所示。
外觀.vi的前面板設計使用了11個自定義量表,將他們依次疊加放在一起,這樣11個量表看起來就是一個隨鉆度盤。每次有新數據到來時,后面板程序讀取出當前井斜、方位和工具面值并通過對應3個量表顯示出來,然后程序通過查詢歷史工具面的狀態值,確定歷史工具面的數值以及是重力還是磁力工具面,控制其余量表進行顯示。

圖2 隨鉆度盤程序設計流程圖Fig.2 Program flow diagram of the MWD gauge
LabVIEW自身帶有TCP和UDP通信功能的Vi,但是它們都是基于輪詢機制而不是事件機制,本文考慮到數據傳輸的實時性采用基于事件中斷方式的Winsock控件實現網絡通信。
WinSock控件是一個專門用于Windows網絡編程的ActiveX控件。它提供了訪問TCP和UDP網絡服務的方便途徑。它可以作為服務器被其他客戶端軟件調用,實現網絡編程。用WinSock控件編寫網絡通信程序,不需要了解TCP/IP的具體細節或調用底層Winsock API,通過設置WinSock控件的屬性、配置事件中斷服務、調用該控件的方法,可容易的連接到遠程計算機并進行雙向數據交換[3-4]。
由于LabVIEW自身不帶有Winsock控件,要在LabVIEW中正常調用Winsock控件,需要先注冊MSWinsock.ocx文件,并將對應的License key導入注冊表。本文設計的隨鉆測量監控軟件以客戶端的模式工作,主要用到了Winsock的Connect方法、SendData方法、Close方法以及DataArrival事件,采用Winsock進行中斷式網絡通信的程序如圖3所示。
在該程序中,先通過Close方法關閉Winsock以防止其在上次應用完畢后沒有關閉導致錯誤發生,再調用Connect方法重新打開Winsock,通過輸入遠程服務器IP地址和端口號與服務器進行連接,連接成功后即注冊一個中斷服務程序,該中斷服務程序在有網口有數據到來時將數據接收存放在名為“收到的字符串”的隊列中。圖中的小while循環在隊列有數據時將數據取出并顯示在“收到的字符串”控件中,帶有事件結構的while循環檢測前面板按鍵,當前面板“發送”按鍵按下時即把“發送字符串”中的數據發送出去;當前面板“斷開連接”按鍵按下時即關閉Winsock、取消注冊事件并釋放隊列引用,從而控制整個程序停止運行。

圖3 中斷式網絡通信程序圖Fig.3 Program code of Ethernet communication in the interruption way
隨鉆測量參數多樣、數據量大,為了有效的對隨鉆數據進行存儲和管理,本文采用數據庫SQL Server記錄隨鉆數據。考慮到實際隨鉆測量所需存儲的參數類型和其他相關信息,采用Power Designer設計了該連續油管隨鉆測量數據庫,通過設計概念數據模型,生成物理數據模型,最后在SQL Server 2008中生成設計好的數據庫。連續油管隨鉆數據庫E-R圖如圖4所示。

圖4 連續油管隨鉆測量數據庫E-R圖Fig.4 E-R diagram of the MWCTD database
在該連續油管隨鉆數據庫中,主要設計了工程、井、鉆次、專家、測量工程師、井隊、測斜數據、伽馬、電阻率、工具面和井深共11個實體。其中一個工程對應多口井,一口井對應多個鉆次,而在每個鉆次中主要記錄的測量數據有定向數據、鉆井參數和地層特性,對于本課題測量數據簡化考慮只有測斜數據、伽馬、電阻率、工具面和井深,此外,對應每一個鉆次都有多個專家、測量工程師和井隊負責[1]。
實現LabVIEW對數據庫的操作主要可采用的方法有:LabVIEW SQL Toolkit、LabVIEW ActiveX、LabSQL 和 調 用 動態鏈接庫DLL。由于LabVIEW SQL Toolkit工具包需購買且價格昂貴,采用ActiveX和DLL方式訪問數據庫需要進行復雜的編程,對程序員要求較高,而LabSQL是一個免費的、多數據庫、跨平臺的數據庫訪問工具包,所以本文采用LabSQL工具包開發數據庫應用程序。
ODBC(Open Database Connectivity)即開放數據庫連接,是一種強大而靈活的數據庫訪問標準,用戶可以通過ODBC實現對不同操作系統下不同數據庫軟件的訪問。而一般訪問ODBC數據源接口采用ADO (ActiveX Data Objects)方式,LabSQL正是將復雜的底層ADO及SQL操作封裝成一系列的LabSQL VIs,通過這些VI訪問ODBC數據源從而實現對數據庫的訪問[5-6]。
如圖5所示是LabSQL編程訪問數據庫的一般過程,先通過ADO Create Conn.vi建立一個自動化連接,再通過向ADO Open Conn.vi輸入正確的連接字符串即可與數據庫服務器或指定數據庫實現連接,然后就可以通過SQL Execute.vi執行SQL語句并返回查詢結果,最后通過Close Conn.vi和Destroy Conn.vi關閉并銷毀連接。

圖5 LabSQL以Windows身份驗證方式登錄訪問數據庫程序流程Fig.5 Program code of LabSQL accessing database by Windows user authentication
連接字符串的內容根據連接方式的不同而不同,圖5中所示連接字符串通過Windows身份驗證的方式連接到連續油管隨鉆數據庫,將表格 “工程”中的數據讀出顯示在Data控件中,而不需要輸入用戶名密碼進行驗證。當通過SQL Server身份認證的方式登錄連續油管隨鉆數據庫時,則應當在連接字符串中加入用戶名和密碼信息。連接字符串可以通過以下方法獲取:新建一個文本文檔,重命名為xxx.udl,然后在打開方式中選擇OLE DB Core Services,打開后將出現一個配置窗口,在“提供程序”里選擇數據庫,然后在“連接”里進行其他相關設置,最后點擊確定。這時候再打開該udl文件即可看到生成的連接字符串,該字符串可用作與數據庫的連接。
為了測試該隨鉆測量監控軟件,采用ALTERA公司的DE2-115開發板作為硬件測試平臺,向該FPGA開發板移植嵌入式實時操作系統μC/OS-II,并采用NicheStack TCP/IP以太網協議棧和Socket套接字進行網絡編程,最終開發了和監控軟件進行以太網通信的上位機程序。系統測試結果如圖6、圖7所示。

圖6 軟件測試結果Fig.6 Test result of the software system

圖7 數據存儲測試結果Fig.7 Test result of data storage
測試中,DE2-115每隔一秒鐘發送一次數據,發送的井斜、方位和工具面值為定值,伽馬和電阻率在一定范圍內是隨機值。從圖中可以看到監控軟件能正確顯示各隨鉆數據,同時這些數據被寫入數據庫的對應表格中。
本文開發了基于LabVIEW的連續油管隨鉆測量監控軟件,經測試,該軟件能夠實時地接收、顯示和存儲上位機傳來的數據,采用DE2-115硬件平臺以及LabVIEW軟件開發平臺,節約了開發時間,收到了良好的實際效果。
[1]丁景麗.無線隨鉆測井儀軟件系統的設計與實現[D].大連:大連理工大學,2006.
[2]陳寅,張方,姜金輝.基于虛擬儀器平臺的海量數據處理分析系統開發[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控件在網絡程序中的應用 [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]胡吉朝,王定遠,王占鋒.中斷式網絡通信技術在LabVIEW下的實現[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中訪問數據庫的幾種不同方法[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實現對遠程數據庫的訪問[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.