陳江浩,張悅, 王成龍,余衛(wèi)東
(中國(guó)石油集團(tuán)測(cè)井有限公司技術(shù)中心,陜西西安710077)
ACME采集控制管理平臺(tái)儀器組件設(shè)計(jì)與開(kāi)發(fā)
陳江浩,張悅, 王成龍,余衛(wèi)東
(中國(guó)石油集團(tuán)測(cè)井有限公司技術(shù)中心,陜西西安710077)
ACME采集控制管理平臺(tái)是EILog成套測(cè)井裝備的控制中樞,作為ACME系統(tǒng)4大組成部分之一的儀器組件庫(kù)控制著所有掛接儀器的實(shí)時(shí)數(shù)據(jù)處理和控制。描述了ACME采集軟件平臺(tái)儀器組件的設(shè)計(jì)原則、接口定義和應(yīng)用規(guī)范。為提高組件開(kāi)發(fā)效率,減少缺陷發(fā)生,提出采用代碼模板的方法,快速搭建儀器組件框架。詳細(xì)介紹了利用代碼模板開(kāi)發(fā)儀器組件的步驟以及注意事項(xiàng)。由于采用組件化技術(shù),整個(gè)儀器的每個(gè)模塊設(shè)計(jì)成單獨(dú)儀器組件,可同步調(diào)試開(kāi)發(fā)和自由組合測(cè)井,既保證了儀器研制進(jìn)度又提高了系統(tǒng)靈活性。ACME采集軟件已掛接不同系列的常規(guī)和成像測(cè)井儀器共135支,測(cè)井10 000余井次,原始資料合格率達(dá)到100%,在國(guó)內(nèi)外16個(gè)地區(qū)得到成功應(yīng)用。
測(cè)井軟件;ACME;設(shè)計(jì)模式;軟件架構(gòu);組件代碼模板;接口定義;模塊化設(shè)計(jì)
測(cè)井采集軟件平臺(tái)ACME[1-2](Acquisition Control Management Expert)是一套通用的測(cè)井采集控制軟件平臺(tái),是EILog[3](Express and Image Logging System)高精度快速與成像測(cè)井系統(tǒng)的重要組成部分,其主要任務(wù)包括儀器數(shù)據(jù)采集、數(shù)據(jù)實(shí)時(shí)處理、測(cè)井過(guò)程監(jiān)控等。ACME采用多層分布式系統(tǒng)架構(gòu),利用面向?qū)ο蟮脑O(shè)計(jì)思想,大量使用組件化技術(shù),使軟件平臺(tái)的可擴(kuò)展性、可維護(hù)性到和可靠性都得到了極大提高。軟件組件化技術(shù)是一種在應(yīng)用程序之間互相訪問(wèn)對(duì)象的機(jī)制,它將面向?qū)ο蟮姆椒ㄌ嵘较到y(tǒng)級(jí),最大程度上實(shí)現(xiàn)了軟件代碼的復(fù)用。ACME采集軟件利用組件化技術(shù)實(shí)現(xiàn)測(cè)井儀器的組件化,形成了一套規(guī)范的儀器組件庫(kù),滿足了不同測(cè)井任務(wù)情況下,儀器組件的動(dòng)態(tài)加載、調(diào)用和卸載等功能。
本文詳細(xì)介紹了ACME測(cè)井采集軟件儀器組件接口標(biāo)準(zhǔn)、組件應(yīng)用規(guī)范以及組件模板,并給出了測(cè)井儀器組件開(kāi)發(fā)的詳細(xì)步驟以及實(shí)際應(yīng)用例子。
EILog測(cè)井系統(tǒng)涵蓋了多種系列的常規(guī)測(cè)井儀器和成像測(cè)井儀器,不同儀器的參數(shù)和處理方法各異。通過(guò)對(duì)不同儀器在實(shí)時(shí)測(cè)井計(jì)算中的輸入輸出參數(shù)和處理邏輯進(jìn)行分析,可以抽象出統(tǒng)一的儀器調(diào)用接口。ACME主控程序通過(guò)調(diào)度儀器統(tǒng)一接口實(shí)現(xiàn)不同儀器串的實(shí)時(shí)處理運(yùn)算,使得處理算法和主控程序在邏輯上相互分離。在組件接口的設(shè)計(jì)中堅(jiān)持標(biāo)準(zhǔn)化、模塊化、組件化的設(shè)計(jì)原則,組件內(nèi)部遵循高內(nèi)聚和低耦合的開(kāi)發(fā)思路。由于儀器組件與儀器組件之間、儀器組件與系統(tǒng)平臺(tái)之間要進(jìn)行頻繁的交互,在主控模塊內(nèi)部實(shí)現(xiàn)了平臺(tái)服務(wù)組件,儀器組件請(qǐng)求的系統(tǒng)平臺(tái)服務(wù)都是通過(guò)該組件調(diào)用完成。儀器組件之間的消息傳遞也是通過(guò)平臺(tái)服務(wù)組件進(jìn)行中轉(zhuǎn)的。

圖1 儀器組件和系統(tǒng)平臺(tái)組件關(guān)系圖
平臺(tái)服務(wù)組件與儀器組件的關(guān)系見(jiàn)圖1。
儀器組件接口規(guī)范主要包括儀器組件接口、儀器組件通訊接口、平臺(tái)服務(wù)組件接口、儀器屬性接口等規(guī)范。其中儀器屬性接口是統(tǒng)一訪問(wèn)儀器屬性的接口,每個(gè)儀器組件都聚合了各儀器屬性接口對(duì)象,實(shí)現(xiàn)對(duì)儀器輸出曲線信息等屬性的訪問(wèn)。系統(tǒng)采用標(biāo)準(zhǔn)接口語(yǔ)言IDL實(shí)現(xiàn)對(duì)組件接口的描述。
儀器組件接口函數(shù)詳細(xì)說(shuō)明見(jiàn)表1。

表1 儀器組件接口說(shuō)明表
系統(tǒng)平臺(tái)組件接口函數(shù)詳細(xì)說(shuō)明見(jiàn)表2。

表2 系統(tǒng)平臺(tái)組件接口函數(shù)說(shuō)明表
儀器消息通知接口只有一個(gè)DoNotify函數(shù),儀器組件通過(guò)實(shí)現(xiàn)該接口實(shí)現(xiàn)與其他組件的通信。它和系統(tǒng)平臺(tái)組件接口的SendNotify和GetTool-Code函數(shù)配套使用。以給HYGR組件發(fā)送消息為例,代碼如下:

儀器組件開(kāi)發(fā)完成后,儀器組件必須按照系統(tǒng)的調(diào)度模型進(jìn)行運(yùn)行。當(dāng)系統(tǒng)根據(jù)當(dāng)前測(cè)井項(xiàng)目服務(wù)表依次加載儀器組件后,會(huì)調(diào)用OpenTool函數(shù)打開(kāi)所有的儀器組件。儀器組件在該期間主要工作就是初始化資源,包括內(nèi)存的申請(qǐng)和前端初始化等。之后,系統(tǒng)會(huì)繼續(xù)調(diào)用組件的Log_Init和Log_LoadAsset函數(shù),做進(jìn)一步的與測(cè)井過(guò)程相關(guān)的初始化。系統(tǒng)會(huì)調(diào)用LoadToolWnd和LogAuxWnd函數(shù),加載儀器組件的窗口界面。至此,儀器組件的初始化結(jié)束。根據(jù)測(cè)井?dāng)?shù)據(jù)采集的驅(qū)動(dòng)模式(時(shí)間或深度驅(qū)動(dòng)),系統(tǒng)會(huì)通過(guò)回調(diào)LogSetData函數(shù)與儀器組件交換數(shù)據(jù)。儀器組件通過(guò)Logprocess函數(shù)進(jìn)行數(shù)據(jù)處理,并進(jìn)行輸出。測(cè)井結(jié)束時(shí),系統(tǒng)依次調(diào)用Log_Term()和CloseTool對(duì)儀器組件申請(qǐng)的資源進(jìn)行釋放。儀器組件應(yīng)用流程圖見(jiàn)圖2。

圖2 儀器組件應(yīng)用流程圖
C++組件實(shí)現(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采集軟件平臺(tái)采用COM技術(shù)作為組件代碼的實(shí)現(xiàn)標(biāo)準(zhǔn)。開(kāi)發(fā)COM組件,在微軟開(kāi)發(fā)工具Visual C++中主要是通過(guò)ATL[5](Active Template Library)庫(kù)作為COM組件的開(kāi)發(fā)工具。
ATL庫(kù)是一套標(biāo)準(zhǔn)的輕量級(jí)模板庫(kù),能夠快速開(kāi)發(fā)高效、簡(jiǎn)潔的代碼,同時(shí)對(duì)COM組件的開(kāi)發(fā)提供代碼自動(dòng)化生成。通過(guò)使用ATL庫(kù)實(shí)現(xiàn)COM組件相關(guān)封裝,儀器組件開(kāi)發(fā)重點(diǎn)側(cè)量于測(cè)井業(yè)務(wù)邏輯。但是由于ATL庫(kù)大量的使用了COM技術(shù)和模板類技術(shù),其生成的代碼包含了復(fù)雜的技術(shù),這對(duì)快速開(kāi)發(fā)高質(zhì)量的儀器組件造成了很大的困擾。為了進(jìn)一步提高ACME組件開(kāi)發(fā)效率,ACME軟件平臺(tái)提供了一套組件開(kāi)發(fā)代碼模板,用戶可以通過(guò)開(kāi)發(fā)向?qū)Ш?jiǎn)單點(diǎn)擊鼠標(biāo)來(lái)生成儀器組件框架(見(jiàn)圖3)。

圖3 儀器組件開(kāi)發(fā)向?qū)?/p>
基于微軟公司的Visual Studio.net 2003開(kāi)發(fā)的ACME2.0采集軟件,其儀器組件開(kāi)發(fā)步驟如下。
(1)利用開(kāi)發(fā)向?qū)纱a框架。向?qū)Ц鶕?jù)選項(xiàng)會(huì)自動(dòng)生成組件的框架代碼。
(2)確定儀器的基本參數(shù)。主要是確定儀器的長(zhǎng)度、重量、原始上傳幀的大小、幀數(shù)據(jù)項(xiàng)含義,通過(guò)儀器配置管理工具對(duì)儀器的配置信息文件XML進(jìn)行對(duì)應(yīng)的修改。注意原始數(shù)據(jù)幀大小一定要配置正確,系統(tǒng)通過(guò)該參數(shù)向儀器遙傳請(qǐng)求上傳數(shù)據(jù)。
(3)了解儀器的處理方法,確定儀器組件的輸出曲線。主要包括曲線名稱、曲線的數(shù)據(jù)類型描述、曲線的縱橫向分辨率等參數(shù)。系統(tǒng)利用這些參數(shù)自動(dòng)計(jì)算組件輸出數(shù)據(jù)的大小。
(4)根據(jù)儀器的特點(diǎn),編寫(xiě)用戶交互界面。系統(tǒng)已經(jīng)默認(rèn)生成CLogWnd和CAuxWnd窗口類,可以在這個(gè)界面基礎(chǔ)上根據(jù)需要添加特定窗口(見(jiàn)圖4)。界面工作任務(wù)主要是實(shí)現(xiàn)刻度界面和相關(guān)控制,計(jì)算并生成刻度文件和刻度報(bào)告,還包括刻度文件的加載、儀器控制命令的下發(fā)等。
(5)實(shí)時(shí)處理方法的實(shí)現(xiàn)。這是整個(gè)儀器組件實(shí)現(xiàn)的最關(guān)鍵部分,了解儀器原始數(shù)據(jù)的含義,根據(jù)儀器處理方法,實(shí)時(shí)計(jì)算并輸出處理結(jié)果。主要工作就是實(shí)現(xiàn)LogSetData()和LogProcess()函數(shù)。其中要注意輸出曲線的濾波,必須使用系統(tǒng)提供的標(biāo)準(zhǔn)濾波器。

圖4 儀器組件定制窗口

圖5 儀器組件庫(kù)
目前ACME2.0采集軟件已經(jīng)掛接了不同系列的常規(guī)和成像測(cè)井儀器共135支(見(jiàn)圖5),測(cè)井10 000余井次,原始資料合格率100%,在國(guó)內(nèi)外16個(gè)地區(qū)得到成功應(yīng)用。由于EILog系統(tǒng)儀器系列眾多,儀器組件庫(kù)分為EILog05、EILog06、WTC、3506、3508、模擬、脈沖等8個(gè)系列。其中地層動(dòng)態(tài)測(cè)試儀組件比較有特點(diǎn),儀器共由13個(gè)模塊組成,目前已經(jīng)組裝了4個(gè)模塊。采用儀器組件技術(shù)開(kāi)發(fā),整個(gè)儀器的每個(gè)模塊設(shè)計(jì)成一個(gè)儀器組件,可以同步調(diào)試開(kāi)發(fā)和自由組合測(cè)井,既保證了儀器的研制進(jìn)度又提高了系統(tǒng)的靈活性(見(jiàn)圖6)。

圖6 地層測(cè)試儀組件界面
(1)每個(gè)組件單獨(dú)開(kāi)發(fā)、編譯、調(diào)試和測(cè)試,這種可以并行開(kāi)發(fā)的模式提高了軟件的開(kāi)發(fā)效率,適應(yīng)測(cè)井儀器不斷發(fā)展更新的需要。
(2)組件化技術(shù)要求組件之間采用標(biāo)準(zhǔn)接口進(jìn)行調(diào)用,有利于代碼統(tǒng)一,在實(shí)際應(yīng)用中,采用統(tǒng)一高效的代碼作為模板,使儀器組件代碼得以實(shí)現(xiàn)標(biāo)準(zhǔn)化,極大地提高了儀器組件開(kāi)發(fā)的效率,減少了軟件缺陷。
(3)儀器掛接方便,擴(kuò)展性強(qiáng),只要按接口規(guī)范實(shí)現(xiàn)組件,就可以被平臺(tái)自動(dòng)識(shí)別,也可以及時(shí)定制儀器組件組合包,方便不同區(qū)塊的應(yīng)用。
(4)可以快速地進(jìn)行故障排除。軟件模塊化設(shè)計(jì),代碼之間都是松耦合關(guān)系,當(dāng)發(fā)現(xiàn)故障時(shí),很容易判斷故障發(fā)生位置,并獨(dú)立修改該組件,系統(tǒng)其他部分不需要修改,就可以排除故障。
[1] 陳江浩,陳文輝,余衛(wèi)東,等,ACME測(cè)井采集控制管理平臺(tái)開(kāi)發(fā)與應(yīng)用[J].石油儀器,2010,24(5):77-79.
[2] 陳江浩,陳文輝.EILog測(cè)井系統(tǒng)采集軟件平臺(tái)系統(tǒng)設(shè)計(jì)[J].測(cè)井技術(shù),2008,32(3):257-259.
[3] 湯天知.EILog測(cè)井技術(shù)現(xiàn)狀和發(fā)展思路[J].測(cè)井技術(shù),2007,31(2):99-102.
[4] Box Don.Essential COM[M].New Jersey:Addison-Wesley Professional,1997.
[5] Tom Armstrong,Ron Patton.,TL開(kāi)發(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年生,碩士,高級(jí)工程師,從事測(cè)井軟件的開(kāi)發(fā)工作。