基于電磁感應(yīng)的多層管柱電磁探傷測(cè)井系統(tǒng)
通信協(xié)議設(shè)計(jì)
井下設(shè)備完全受井上PC客戶端控制,如開始測(cè)井、暫停測(cè)井等,井下設(shè)備負(fù)責(zé)響應(yīng)上位機(jī)的命令。本系統(tǒng)中定義了測(cè)井?dāng)?shù)據(jù)幀、命令幀和應(yīng)答幀三種幀結(jié)構(gòu)。數(shù)據(jù)幀主要用于井下設(shè)備向上位機(jī)發(fā)送的測(cè)井?dāng)?shù)據(jù),命令幀用于上位機(jī)向井下設(shè)備發(fā)送控制命令,應(yīng)答幀為雙方接收到測(cè)井?dāng)?shù)據(jù)幀和命令幀之后應(yīng)答成功或者失敗的幀結(jié)構(gòu)。
- 測(cè)井?dāng)?shù)據(jù)幀
測(cè)井?dāng)?shù)據(jù)幀結(jié)構(gòu)定義如表格1所示。測(cè)井?dāng)?shù)據(jù)幀包括起始標(biāo)志字節(jié)、幀序號(hào)字節(jié)、類型字節(jié)、當(dāng)前時(shí)間字節(jié)、當(dāng)前深度字節(jié)、溫度字節(jié)、伽馬射線字節(jié)、發(fā)射電路字節(jié)、縱向探頭A電壓字節(jié)、橫向探頭B電壓字節(jié)、橫向探頭C電壓字節(jié)、校驗(yàn)和字節(jié)以及結(jié)束標(biāo)志字節(jié)。
表格 1 測(cè)井?dāng)?shù)據(jù)幀結(jié)構(gòu)
起始標(biāo)志 | 幀序號(hào) | 類型字節(jié) | 當(dāng)前時(shí)間 | 當(dāng)前深度 |
FSTA | 3字節(jié) | 1字節(jié)(’D’) | 4字節(jié) | 4字節(jié) |
溫度 | 伽馬射線 | 發(fā)射電流 | 縱向探頭A電壓 | 橫向探頭B電壓 |
4字節(jié) | 2字節(jié) | 2字節(jié) | 48*3*2字節(jié) | 48*2字節(jié) |
橫向探頭C電壓 | 校驗(yàn)和 | 結(jié)束標(biāo)志 | ||
48*2字節(jié) | 4字節(jié) | FEND |
由于PIC32MX7為32位單片機(jī),處理int型數(shù)據(jù)(4字節(jié))較快,并且CAN2.0B標(biāo)準(zhǔn)幀每幀可以發(fā)送8字節(jié)的數(shù)據(jù),所以在協(xié)議中采用4字節(jié)為一個(gè)單位的設(shè)計(jì)。
起始標(biāo)志字節(jié)為“FSTA”四個(gè)字節(jié),結(jié)束標(biāo)志字節(jié)為“FEND”四個(gè)字節(jié),幀序號(hào)為啟動(dòng)測(cè)井儀器后發(fā)送的數(shù)據(jù)幀的序號(hào),類型字節(jié)為“D”。其他字節(jié)為當(dāng)前深度下采集的測(cè)井?dāng)?shù)據(jù)。
協(xié)議采用簡(jiǎn)單的校驗(yàn)和的方法進(jìn)行幀的校驗(yàn)。先將每四個(gè)字節(jié)組成一個(gè)int型的數(shù)據(jù),然后所有的數(shù)據(jù)相加,然后將結(jié)果截短到一個(gè)int型數(shù)據(jù)的長(zhǎng)度。發(fā)送端將待發(fā)送的數(shù)據(jù)進(jìn)行校驗(yàn)和計(jì)算,將校驗(yàn)和值放在數(shù)據(jù)后一起發(fā)送,在接收端對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn)和計(jì)算,然后和接收到的校驗(yàn)和字節(jié)比較,來進(jìn)行誤碼判斷。設(shè)定要進(jìn)行校驗(yàn)和和計(jì)算的字節(jié)不包括起始和結(jié)束標(biāo)志字節(jié)。
- 命令幀
命令幀結(jié)構(gòu)定義如表格2所示。命令幀包括起始標(biāo)志字節(jié)、幀序號(hào)字節(jié)、類型字節(jié)、校驗(yàn)和字節(jié)和結(jié)束標(biāo)志字節(jié)。
表格 2 命令幀結(jié)構(gòu)
起始標(biāo)志 | 幀序號(hào) | 類型字節(jié) | 校驗(yàn)和 | 結(jié)束標(biāo)志 |
FSTA | 3字節(jié) | 1字節(jié)(命令字) | 4字節(jié) | FEND |
根據(jù)系統(tǒng)的需要,命令字設(shè)有開始命令字、暫停命令字、繼續(xù)命令字和結(jié)束命令字,類型字節(jié)分別是‘S’、‘P’、‘C’、‘E’。
- 應(yīng)答幀
應(yīng)答幀結(jié)構(gòu)定義如表格3所示。令幀包括起始標(biāo)志字節(jié)、幀序號(hào)字節(jié)、類型字節(jié)、校驗(yàn)和字節(jié)和結(jié)束標(biāo)志字節(jié)。其中接收成功ACK應(yīng)答幀類型字節(jié)為‘A’,接收失敗NAK應(yīng)答幀類型字節(jié)為‘N’。
表格 3 應(yīng)答幀結(jié)構(gòu)
起始標(biāo)志 | 幀序號(hào) | 類型字節(jié) | 校驗(yàn)和 | 結(jié)束標(biāo)志 |
FSTA | 3字節(jié) | 1字節(jié)(’A’/’N’) | 4字節(jié) | FEND |
除了幀結(jié)構(gòu)的定義以外,整個(gè)系統(tǒng)的通信還需要遵守以下規(guī)則:
- 數(shù)據(jù)傳輸?shù)碾p方以100kbps的速率傳輸數(shù)據(jù),使用主從式通信,主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù);
- 從機(jī)在接收完數(shù)據(jù)幀后,將根據(jù)最后的校驗(yàn)結(jié)構(gòu)判斷數(shù)據(jù)接收是否成功,若校驗(yàn)正確,則向主機(jī)發(fā)送ACK應(yīng)答幀,標(biāo)志接收成功,若校驗(yàn)錯(cuò)誤,則發(fā)送NAK應(yīng)答幀,表示錯(cuò)誤,請(qǐng)求重發(fā);
- 主機(jī)接收到ACK應(yīng)答幀,則通信結(jié)束,否則主機(jī)將重新發(fā)送這組數(shù)據(jù)。
表格4是測(cè)井?dāng)?shù)據(jù)傳輸模型,為整個(gè)測(cè)井過程中數(shù)據(jù)傳輸模型。
表格 4 測(cè)井?dāng)?shù)據(jù)傳輸模型
開始測(cè)井標(biāo)志 | 數(shù)據(jù)幀 | 應(yīng)答幀 | 數(shù)據(jù)幀 | 應(yīng)答幀 | …… | 數(shù)據(jù)幀 |
EMISTART | 數(shù)據(jù)幀0 | ACK | 數(shù)據(jù)幀1 | ACK | …… | 數(shù)據(jù)幀n |
應(yīng)答幀 | 數(shù)據(jù)幀 | 應(yīng)答幀 | …… | 結(jié)束測(cè)井標(biāo)志 | ||
NAK | 數(shù)據(jù)幀n | ACK | …… | EMITOEND |
輔助測(cè)量模塊
溫度探頭
溫度傳感器的選擇主要是要考慮被測(cè)量物體的溫度范圍、電阻材料的化學(xué)穩(wěn)定性、電阻值與溫度變化要保持線性關(guān)系等。
一般來講,地殼中溫度與深度成正比,深度每增加100米溫度便要上升3℃左右。除此之外,還要考慮油井的深度。早期油井只有幾十至幾百米深,近年來油井深度逐漸加深,大部分石油生產(chǎn)并的深度在1000米至3000米之間。石油生產(chǎn)井的最深記錄是6500米。由于地溫梯度的存在,井下的溫度將隨深度的增加而升高,由此可以對(duì)溫度傳感器的所需測(cè)溫范圍進(jìn)行估算。
井底最高溫度可由下式進(jìn)行計(jì)算確定:
式中為井底最高溫度(℃),為地溫梯度(℃/100m),h為井深(m)。
當(dāng)取為℃/100m,則在6500米處溫度則為23+4.5×6500/100=315.5℃。因此,測(cè)溫部分的溫度傳感器測(cè)量范圍選在0—320℃即可滿足絕大多數(shù)條件下的測(cè)溫要求。
在此溫度范圍內(nèi)可供選擇的有熱電偶、熱電阻及集成測(cè)溫元件等。考慮到其使用環(huán)境等因素,選用熱電阻作為系統(tǒng)的測(cè)溫元件較為適合。
鉑電阻具有測(cè)量溫度范圍大、精度高、穩(wěn)定性好、性能可靠等優(yōu)點(diǎn),而且具有高熔點(diǎn)、高穩(wěn)定性,因此被我們選為系統(tǒng)的測(cè)溫元件。
具體的測(cè)溫電路如下圖所示:
圖 21 溫度測(cè)量原理圖
TL431為OP07提供恒壓源,由于電壓源也不是純粹的恒壓,為消除電壓波動(dòng),添加R5和C1作為電源濾波。R2,R3,R4,RT作為測(cè)量電橋,通過檢測(cè)C端和D端的電壓差來計(jì)算溫度的變化,根據(jù)集成運(yùn)算放大器工作在線性區(qū)域的輸入端虛短特性,OP072端電壓等于3端電壓;由于TL431為OP07提供了相對(duì)穩(wěn)定的電壓源,根據(jù)集成運(yùn)算放大器工作在線性區(qū)域的輸入端虛斷特性,流過R4的電流只流經(jīng)RT,所以相當(dāng)于有一個(gè)恒流源流經(jīng)R4和RT。當(dāng)電橋達(dá)到動(dòng)態(tài)平衡時(shí),有:。通過計(jì)算可知,,從而求出RT的變化量。通過查鉑電阻溫度表,即可得到溫度值。
伽馬探頭
自然伽馬測(cè)井儀測(cè)量由地層中放射性元素衰變所產(chǎn)生的自然伽馬射線的強(qiáng)度。自然伽馬資料可以用來劃分地層巖性、求地層的泥質(zhì)含量。在套管井測(cè)井中,自然伽馬曲線、套管接箍定位曲線與裸眼井資料的對(duì)比可以保證地層定位和射孔深度的準(zhǔn)確性。一般自然伽馬電路分閃爍探測(cè)器、輸入極、選擇整形級(jí)、放大輸出級(jí)和高壓電源部分。結(jié)構(gòu)圖如圖 22所示。
圖 22 自然伽馬探測(cè)結(jié)構(gòu)圖
軟件系統(tǒng)設(shè)計(jì)
下位機(jī)軟件設(shè)計(jì)
主程序流程圖
圖 23 主程序流程圖
主程序進(jìn)入之后首先對(duì)各模塊進(jìn)行初始化,包括全局變量、單片機(jī)I/O口、CAN總線等模塊。其后進(jìn)入系統(tǒng)工作狀態(tài)判斷,根據(jù)不同的工作狀態(tài),系統(tǒng)執(zhí)行不同的內(nèi)容。系統(tǒng)的工作狀態(tài)由系統(tǒng)和上位機(jī)控制切換,上位機(jī)是通過命令幀給下位機(jī)發(fā)送命令。
測(cè)井流程圖
圖 24 測(cè)井流程圖
在測(cè)井狀態(tài)中,單片機(jī)控制IGBT全橋電路產(chǎn)生125ms的正向脈沖,根據(jù)不同的時(shí)刻控制可編程放大的倍數(shù)并進(jìn)行A/D采樣。采樣結(jié)束后單片機(jī)控制IGBT全橋電路再次產(chǎn)生125ms的負(fù)向脈沖,同時(shí)通過CAN總線向上位機(jī)發(fā)送測(cè)井?dāng)?shù)據(jù)幀,如果100ms內(nèi)未發(fā)送成功則返回發(fā)送失敗標(biāo)志并推出發(fā)送。負(fù)向脈沖后重復(fù)放大和采樣,并發(fā)送測(cè)井?dāng)?shù)據(jù)幀。最后判斷是否有發(fā)送失敗的測(cè)井?dāng)?shù)據(jù)幀,并發(fā)送失敗的數(shù)據(jù)幀。
CAN總線數(shù)據(jù)處理流程圖
系統(tǒng)采用PIC32MX的CAN1模塊,波特率設(shè)為100kbps,分別使用2個(gè)32個(gè)報(bào)文深的FIFO作為發(fā)送和接收FIFO,采用接收中斷的方式來接收上位機(jī)的數(shù)據(jù)。在接收中斷服務(wù)程序中對(duì)接收到的數(shù)據(jù)進(jìn)行處理。如圖 25為CAN總線數(shù)據(jù)處理的流程圖。
圖 25 CAN總線數(shù)據(jù)處理的流程圖
系統(tǒng)在接收到一個(gè)完整的數(shù)據(jù)幀之后,且校驗(yàn)和正確,會(huì)對(duì)接收緩存數(shù)據(jù)進(jìn)行處理,會(huì)根據(jù)不同的類型的數(shù)據(jù)幀做相應(yīng)的操作。當(dāng)發(fā)生未能正確接收一個(gè)完整的數(shù)據(jù)幀時(shí),下位機(jī)會(huì)返回錯(cuò)誤類型,并回復(fù)NAK應(yīng)答幀。
實(shí)時(shí)時(shí)鐘
PIC32MX 器件上提供的實(shí)時(shí)時(shí)鐘和日歷(Real-Time Clock and Calendar,RTCC)硬件模塊及其操作。RTCC是為需要長(zhǎng)時(shí)間維持精確時(shí)間的應(yīng)用設(shè)計(jì)的,無需或只需最少的CPU干預(yù)。該模塊為低功耗使用進(jìn)行了優(yōu)化,以便在跟蹤時(shí)間的同時(shí)延長(zhǎng)電池的使用壽命。使用RTCC模塊的要求是需要一個(gè)外部32.768 kHz時(shí)鐘晶振。
測(cè)井?dāng)?shù)據(jù)幀的當(dāng)前時(shí)間使用RTCC模塊提供,該模塊只需要初始化并設(shè)置起始時(shí)鐘和日歷即可自動(dòng)運(yùn)行。
上位機(jī)軟件設(shè)計(jì)
概述
需求概述
本軟件的功能主要為接收本系統(tǒng)硬件部分發(fā)送的數(shù)據(jù),通過一定的協(xié)議解析,提取并分析信息,計(jì)算管壁厚度,繪制厚度可視化的圖形,為工程人員提供直接的和有效的資料。
由于本系統(tǒng)在探傷的同時(shí),著重分析損傷位置,因此必須對(duì)遠(yuǎn)近有所分離,另外最好能夠繪制從遠(yuǎn)到近的厚度譜圖,因此,本軟件需要繪制兩種圖線,一種劃分為遠(yuǎn)場(chǎng)近場(chǎng)兩條曲線,另一種給出彩色的厚度譜圖。
由于測(cè)井時(shí)間很長(zhǎng),工程人員很難全程跟蹤,為了便于從存儲(chǔ)的信息中恢復(fù)信息以便日后查閱,還需要給本軟件增加文件存儲(chǔ)和圖像存儲(chǔ)的功能。
最后,工程人員還需要實(shí)施觀測(cè)現(xiàn)場(chǎng)狀況,隨時(shí)得到從井下傳遞來的信息,這樣隨時(shí)觀測(cè)的方法,可以有效的節(jié)省測(cè)井時(shí)間,對(duì)于損傷過大的井可不必測(cè)完。
軟硬件支持環(huán)境
本軟件采用VS2008編譯通過,在編寫中使用了.net3.5架構(gòu),因此運(yùn)行本軟件需要Microsoft .net3.5運(yùn)行時(shí)庫(kù)的支持。
另外,本系統(tǒng)采用USBCAN模塊進(jìn)行通信,由于廠商沒有給出其在Windows Vista和Windows 7下的驅(qū)動(dòng),因此,本軟件只能工作在Windows XP系統(tǒng)下,且需要安裝USBCAN模塊驅(qū)動(dòng)。
程序建模
本程序采用面向?qū)ο蟪绦蛟O(shè)計(jì)方法,其中的多數(shù)功能被封裝在對(duì)象中,程序有較好的移植性和安全性。程序主要封裝在以下幾個(gè)類中
類 | 用途 |
記錄測(cè)井全程信息、 | |
文件存儲(chǔ)和讀出 | |
由下位機(jī)傳來的8字節(jié)信息 | |
由下位機(jī)傳來的數(shù)據(jù)包 | |
其中包括一正一反兩個(gè)數(shù)據(jù)包,記錄其平均值和其他的數(shù)據(jù)處理結(jié)果 | |
測(cè)井曲線圖 | |
衰減曲線圖 | |
|
另外本軟件采用了多線程處理技術(shù),主程序負(fù)責(zé)按鍵響應(yīng)、圖形顯示等處于主線程中,而信息處理算法由子進(jìn)程執(zhí)行。這樣有效的提升了數(shù)據(jù)處理算法的效率和獨(dú)立性,使得又原先的每包處理時(shí)間1000ms左右大幅降至14ms左右。
界面設(shè)計(jì)
下圖為一軟件運(yùn)行時(shí)截圖,可以看到程序右左上方的文件/設(shè)備控制區(qū),右上方圖形控制區(qū),左下方的信息顯示區(qū)以及右下方的圖形顯示區(qū)組成。而其中最重要的,也是占用面積最大部分是圖形顯示區(qū),較大的面積保證了觀看的方便。另外,為了觀察直觀的一手?jǐn)?shù)據(jù),我們還專門設(shè)置了顯示由采樣設(shè)備直接傳來的未經(jīng)處理的衰減信號(hào),以便工程人員直接判斷測(cè)井系統(tǒng)是否正常工作,以及管壁是否發(fā)生嚴(yán)重?fù)p傷。這個(gè)衰減曲線是可以隱藏的,因?yàn)樗吘共皇侵饕枰@示的內(nèi)容,而且占用屏幕空間較大。如果你覺得圖像顯示空間還不夠大,甚至可以隱藏圖例。這里圖例被設(shè)計(jì)成懸浮于繪圖之上,可以跟隨滾動(dòng)條滑動(dòng)而動(dòng)。
評(píng)論