陳江浩,張悅, 王成龍,余衛(wèi)東
(中國石油集團(tuán)測井有限公司技術(shù)中心,陜西西安710077)
ACME采集控制管理平臺儀器組件設(shè)計與開發(fā)
陳江浩,張悅, 王成龍,余衛(wèi)東
(中國石油集團(tuán)測井有限公司技術(shù)中心,陜西西安710077)
ACME采集控制管理平臺是EILog成套測井裝備的控制中樞,作為ACME系統(tǒng)4大組成部分之一的儀器組件庫控制著所有掛接儀器的實時數(shù)據(jù)處理和控制。描述了ACME采集軟件平臺儀器組件的設(shè)計原則、接口定義和應(yīng)用規(guī)范。為提高組件開發(fā)效率,減少缺陷發(fā)生,提出采用代碼模板的方法,快速搭建儀器組件框架。詳細(xì)介紹了利用代碼模板開發(fā)儀器組件的步驟以及注意事項。由于采用組件化技術(shù),整個儀器的每個模塊設(shè)計成單獨儀器組件,可同步調(diào)試開發(fā)和自由組合測井,既保證了儀器研制進(jìn)度又提高了系統(tǒng)靈活性。ACME采集軟件已掛接不同系列的常規(guī)和成像測井儀器共135支,測井10 000余井次,原始資料合格率達(dá)到100%,在國內(nèi)外16個地區(qū)得到成功應(yīng)用。
測井軟件;ACME;設(shè)計模式;軟件架構(gòu);組件代碼模板;接口定義;模塊化設(shè)計
測井采集軟件平臺ACME[1-2](Acquisition Control Management Expert)是一套通用的測井采集控制軟件平臺,是EILog[3](Express and Image Logging System)高精度快速與成像測井系統(tǒng)的重要組成部分,其主要任務(wù)包括儀器數(shù)據(jù)采集、數(shù)據(jù)實時處理、測井過程監(jiān)控等。ACME采用多層分布式系統(tǒng)架構(gòu),利用面向?qū)ο蟮脑O(shè)計思想,大量使用組件化技術(shù),使軟件平臺的可擴(kuò)展性、可維護(hù)性到和可靠性都得到了極大提高。軟件組件化技術(shù)是一種在應(yīng)用程序之間互相訪問對象的機(jī)制,它將面向?qū)ο蟮姆椒ㄌ嵘较到y(tǒng)級,最大程度上實現(xiàn)了軟件代碼的復(fù)用。ACME采集軟件利用組件化技術(shù)實現(xiàn)測井儀器的組件化,形成了一套規(guī)范的儀器組件庫,滿足了不同測井任務(wù)情況下,儀器組件的動態(tài)加載、調(diào)用和卸載等功能。
本文詳細(xì)介紹了ACME測井采集軟件儀器組件接口標(biāo)準(zhǔn)、組件應(yīng)用規(guī)范以及組件模板,并給出了測井儀器組件開發(fā)的詳細(xì)步驟以及實際應(yīng)用例子。
EILog測井系統(tǒng)涵蓋了多種系列的常規(guī)測井儀器和成像測井儀器,不同儀器的參數(shù)和處理方法各異。通過對不同儀器在實時測井計算中的輸入輸出參數(shù)和處理邏輯進(jìn)行分析,可以抽象出統(tǒng)一的儀器調(diào)用接口。ACME主控程序通過調(diào)度儀器統(tǒng)一接口實現(xiàn)不同儀器串的實時處理運算,使得處理算法和主控程序在邏輯上相互分離。在組件接口的設(shè)計中堅持標(biāo)準(zhǔn)化、模塊化、組件化的設(shè)計原則,組件內(nèi)部遵循高內(nèi)聚和低耦合的開發(fā)思路。由于儀器組件與儀器組件之間、儀器組件與系統(tǒng)平臺之間要進(jìn)行頻繁的交互,在主控模塊內(nèi)部實現(xiàn)了平臺服務(wù)組件,儀器組件請求的系統(tǒng)平臺服務(wù)都是通過該組件調(diào)用完成。儀器組件之間的消息傳遞也是通過平臺服務(wù)組件進(jìn)行中轉(zhuǎn)的。
圖1 儀器組件和系統(tǒng)平臺組件關(guān)系圖
平臺服務(wù)組件與儀器組件的關(guān)系見圖1。
儀器組件接口規(guī)范主要包括儀器組件接口、儀器組件通訊接口、平臺服務(wù)組件接口、儀器屬性接口等規(guī)范。其中儀器屬性接口是統(tǒng)一訪問儀器屬性的接口,每個儀器組件都聚合了各儀器屬性接口對象,實現(xiàn)對儀器輸出曲線信息等屬性的訪問。系統(tǒng)采用標(biāo)準(zhǔn)接口語言IDL實現(xiàn)對組件接口的描述。
儀器組件接口函數(shù)詳細(xì)說明見表1。
表1 儀器組件接口說明表
系統(tǒng)平臺組件接口函數(shù)詳細(xì)說明見表2。
表2 系統(tǒng)平臺組件接口函數(shù)說明表
儀器消息通知接口只有一個DoNotify函數(shù),儀器組件通過實現(xiàn)該接口實現(xiàn)與其他組件的通信。它和系統(tǒng)平臺組件接口的SendNotify和GetTool-Code函數(shù)配套使用。以給HYGR組件發(fā)送消息為例,代碼如下:
儀器組件開發(fā)完成后,儀器組件必須按照系統(tǒng)的調(diào)度模型進(jìn)行運行。當(dāng)系統(tǒng)根據(jù)當(dāng)前測井項目服務(wù)表依次加載儀器組件后,會調(diào)用OpenTool函數(shù)打開所有的儀器組件。儀器組件在該期間主要工作就是初始化資源,包括內(nèi)存的申請和前端初始化等。之后,系統(tǒng)會繼續(xù)調(diào)用組件的Log_Init和Log_LoadAsset函數(shù),做進(jìn)一步的與測井過程相關(guān)的初始化。系統(tǒng)會調(diào)用LoadToolWnd和LogAuxWnd函數(shù),加載儀器組件的窗口界面。至此,儀器組件的初始化結(jié)束。根據(jù)測井?dāng)?shù)據(jù)采集的驅(qū)動模式(時間或深度驅(qū)動),系統(tǒng)會通過回調(diào)LogSetData函數(shù)與儀器組件交換數(shù)據(jù)。儀器組件通過Logprocess函數(shù)進(jìn)行數(shù)據(jù)處理,并進(jìn)行輸出。測井結(jié)束時,系統(tǒng)依次調(diào)用Log_Term()和CloseTool對儀器組件申請的資源進(jìn)行釋放。儀器組件應(yīng)用流程圖見圖2。
圖2 儀器組件應(yīng)用流程圖
C++組件實現(xiàn)技術(shù)主要包括微軟公司的COM/DCOM[4](Component Object Model)技術(shù)和OMG(Object Management Group)組織的CORBA(Common Object Request Broker Architecture)技術(shù)。微軟公司的COM/DCOM在Windows操作系統(tǒng)上已經(jīng)是成熟的標(biāo)準(zhǔn),ACME采集軟件平臺采用COM技術(shù)作為組件代碼的實現(xiàn)標(biāo)準(zhǔn)。開發(fā)COM組件,在微軟開發(fā)工具Visual C++中主要是通過ATL[5](Active Template Library)庫作為COM組件的開發(fā)工具。
ATL庫是一套標(biāo)準(zhǔn)的輕量級模板庫,能夠快速開發(fā)高效、簡潔的代碼,同時對COM組件的開發(fā)提供代碼自動化生成。通過使用ATL庫實現(xiàn)COM組件相關(guān)封裝,儀器組件開發(fā)重點側(cè)量于測井業(yè)務(wù)邏輯。但是由于ATL庫大量的使用了COM技術(shù)和模板類技術(shù),其生成的代碼包含了復(fù)雜的技術(shù),這對快速開發(fā)高質(zhì)量的儀器組件造成了很大的困擾。為了進(jìn)一步提高ACME組件開發(fā)效率,ACME軟件平臺提供了一套組件開發(fā)代碼模板,用戶可以通過開發(fā)向?qū)Ш唵吸c擊鼠標(biāo)來生成儀器組件框架(見圖3)。
圖3 儀器組件開發(fā)向?qū)?/p>
基于微軟公司的Visual Studio.net 2003開發(fā)的ACME2.0采集軟件,其儀器組件開發(fā)步驟如下。
(1)利用開發(fā)向?qū)纱a框架。向?qū)Ц鶕?jù)選項會自動生成組件的框架代碼。
(2)確定儀器的基本參數(shù)。主要是確定儀器的長度、重量、原始上傳幀的大小、幀數(shù)據(jù)項含義,通過儀器配置管理工具對儀器的配置信息文件XML進(jìn)行對應(yīng)的修改。注意原始數(shù)據(jù)幀大小一定要配置正確,系統(tǒng)通過該參數(shù)向儀器遙傳請求上傳數(shù)據(jù)。
(3)了解儀器的處理方法,確定儀器組件的輸出曲線。主要包括曲線名稱、曲線的數(shù)據(jù)類型描述、曲線的縱橫向分辨率等參數(shù)。系統(tǒng)利用這些參數(shù)自動計算組件輸出數(shù)據(jù)的大小。
(4)根據(jù)儀器的特點,編寫用戶交互界面。系統(tǒng)已經(jīng)默認(rèn)生成CLogWnd和CAuxWnd窗口類,可以在這個界面基礎(chǔ)上根據(jù)需要添加特定窗口(見圖4)。界面工作任務(wù)主要是實現(xiàn)刻度界面和相關(guān)控制,計算并生成刻度文件和刻度報告,還包括刻度文件的加載、儀器控制命令的下發(fā)等。
(5)實時處理方法的實現(xiàn)。這是整個儀器組件實現(xiàn)的最關(guān)鍵部分,了解儀器原始數(shù)據(jù)的含義,根據(jù)儀器處理方法,實時計算并輸出處理結(jié)果。主要工作就是實現(xiàn)LogSetData()和LogProcess()函數(shù)。其中要注意輸出曲線的濾波,必須使用系統(tǒng)提供的標(biāo)準(zhǔn)濾波器。
圖4 儀器組件定制窗口
圖5 儀器組件庫
目前ACME2.0采集軟件已經(jīng)掛接了不同系列的常規(guī)和成像測井儀器共135支(見圖5),測井10 000余井次,原始資料合格率100%,在國內(nèi)外16個地區(qū)得到成功應(yīng)用。由于EILog系統(tǒng)儀器系列眾多,儀器組件庫分為EILog05、EILog06、WTC、3506、3508、模擬、脈沖等8個系列。其中地層動態(tài)測試儀組件比較有特點,儀器共由13個模塊組成,目前已經(jīng)組裝了4個模塊。采用儀器組件技術(shù)開發(fā),整個儀器的每個模塊設(shè)計成一個儀器組件,可以同步調(diào)試開發(fā)和自由組合測井,既保證了儀器的研制進(jìn)度又提高了系統(tǒng)的靈活性(見圖6)。
圖6 地層測試儀組件界面
(1)每個組件單獨開發(fā)、編譯、調(diào)試和測試,這種可以并行開發(fā)的模式提高了軟件的開發(fā)效率,適應(yīng)測井儀器不斷發(fā)展更新的需要。
(2)組件化技術(shù)要求組件之間采用標(biāo)準(zhǔn)接口進(jìn)行調(diào)用,有利于代碼統(tǒng)一,在實際應(yīng)用中,采用統(tǒng)一高效的代碼作為模板,使儀器組件代碼得以實現(xiàn)標(biāo)準(zhǔn)化,極大地提高了儀器組件開發(fā)的效率,減少了軟件缺陷。
(3)儀器掛接方便,擴(kuò)展性強(qiáng),只要按接口規(guī)范實現(xiàn)組件,就可以被平臺自動識別,也可以及時定制儀器組件組合包,方便不同區(qū)塊的應(yīng)用。
(4)可以快速地進(jìn)行故障排除。軟件模塊化設(shè)計,代碼之間都是松耦合關(guān)系,當(dāng)發(fā)現(xiàn)故障時,很容易判斷故障發(fā)生位置,并獨立修改該組件,系統(tǒng)其他部分不需要修改,就可以排除故障。
[1] 陳江浩,陳文輝,余衛(wèi)東,等,ACME測井采集控制管理平臺開發(fā)與應(yīng)用[J].石油儀器,2010,24(5):77-79.
[2] 陳江浩,陳文輝.EILog測井系統(tǒng)采集軟件平臺系統(tǒng)設(shè)計[J].測井技術(shù),2008,32(3):257-259.
[3] 湯天知.EILog測井技術(shù)現(xiàn)狀和發(fā)展思路[J].測井技術(shù),2007,31(2):99-102.
[4] Box Don.Essential COM[M].New Jersey:Addison-Wesley Professional,1997.
[5] Tom Armstrong,Ron Patton.,TL開發(fā)指南[M].北京:電子工業(yè)出版社,2000.
ACME Instrument Component Design and Development
CHEN Jianghao,ZHANG Yue,WANG Chenglong,YU Weidong
(Technical Center,China Petroleum Logging CO.LTD.,Xi’an,Shaanxi 710077,China)
ACME is the control center of EILog logging system.As one of four parts of ACME,the instrument component library controls and manages all the real time data processing and control of the all matched logging tools.Described are design principle of the components,interface definition and application specification.In order to improve the components development efficiency and reduce defects,proposed is a method using the code template to rapidly build instruments component framework.Introduced in detail are steps of developing components with code template and eye-catching points.Due to the components technology,each EILog module is designed with an independent component,which could be debug synchronously and make free combination loggings,thereby,not only ensuring the instrument development schedule but also improving the system flexibility.ACME has worked with 135conventional and imaging downhole logging tools in different logging series,and has operated successfully over 10 000times in 16areas at home and abroad.The raw log data acceptability reaches up to 100%.
log software,ACME(Acquisition Control Management Expert),design model,software framework,componentc code template,interface definition,modular design
TE19
A
2012-3-5 本文編輯 王小寧)
1004-1338(2012)04-0406-04
陳江浩,男,1975年生,碩士,高級工程師,從事測井軟件的開發(fā)工作。