趙 斌,曹旭東,黃 華,王志博
(1.中原油田分公司石油工程技術(shù)研究院,河南濮陽 457000;2.中國石油大學(xué)(北京)信息科學(xué)與工程學(xué)院,北京 102249)
過套管地層電阻率測(cè)井儀系統(tǒng)通過測(cè)量套管外地層的電阻率能夠快速判斷油層的動(dòng)用程度,評(píng)價(jià)油層水淹程度,是分析確定剩余油分布的卓有成效的技術(shù)方法[1-2]。
測(cè)井過程中儀器的主要工作內(nèi)容包括過套管電阻率測(cè)井工作、自然伽馬數(shù)據(jù)的采集和回傳、儀器狀態(tài)反饋和儀器工作環(huán)境信息的采集回傳等。
研制的過套管電阻率測(cè)井儀器通信系統(tǒng)由DSP處理器、曼碼信號(hào)濾波及調(diào)制電路單元、耦合變壓器3 部分組成[3]。
通過7 芯電纜接收井下上傳數(shù)據(jù),通過變壓器藕合方式將傳輸數(shù)據(jù)進(jìn)行分離,通信線上的直流信號(hào)與曼碼信號(hào)被分成兩路,曼碼信號(hào)通過硬件電路濾波調(diào)制,然后送到DSP 處理器進(jìn)行編碼解析,實(shí)現(xiàn)數(shù)據(jù)通信功能。
系統(tǒng)選用TI 公司最新推出的TMS320F28335芯片,其時(shí)鐘頻率能達(dá)到150 MHz,同時(shí)兼?zhèn)鋽?shù)字信號(hào)處理能力、事件管理能力和嵌入式控制功能。
系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖如圖1 所示。由DSP 芯片構(gòu)成主控電路,用于執(zhí)行通訊協(xié)議,接收總線上的曼碼數(shù)據(jù),按照其特定的格式發(fā)送曼徹斯特II 型編碼數(shù)據(jù),從而實(shí)現(xiàn)總線和終端的連接及控制測(cè)井儀器通訊系統(tǒng)的地面系統(tǒng)。其中,曼徹斯特碼編解碼器采用DSP 片上定時(shí)模塊以及邊沿捕捉模塊實(shí)現(xiàn),用于完成數(shù)據(jù)的發(fā)送和接收、曼碼的調(diào)制與解調(diào)、數(shù)據(jù)的串并和并串轉(zhuǎn)換、同步頭的產(chǎn)生與檢測(cè)、地址識(shí)別以及錯(cuò)誤檢測(cè)等功能。
圖1 系統(tǒng)設(shè)計(jì)方案
調(diào)制解調(diào)模塊由濾波整形電路以及發(fā)送調(diào)制電路構(gòu)成。在曼碼接收過程中,總線上傳輸?shù)牟罘致a通過電壓耦合后送到濾波電路,去除掉干擾尖峰脈沖之后再輸入到ADM485 芯片的總線引腳上完成信號(hào)電壓的比較,電壓比較器輸出幅度為5 V 和0 V 的單極性的曼徹斯特編碼信號(hào),直接送到DSP 的邊沿捕捉引腳上進(jìn)行解碼[4]。在曼碼發(fā)送過程中,發(fā)送調(diào)制電路從DSP 同時(shí)接收兩種編碼信號(hào),兩信號(hào)構(gòu)成差分的曼徹斯特串碼,其差分信號(hào)引入到功率場(chǎng)效應(yīng)管的柵極來控制通訊變壓器的編碼部分的中斷與導(dǎo)通,通過電壓器耦合,在總線上產(chǎn)生±12 V 差分曼徹斯特碼,傳輸?shù)骄聝x器。
基于MIL-STD-1553B 編碼格式的Manchester 碼其信息幀格式,每位占用時(shí)間10 μs,由20 位組成。其0~2 位為同步字頭,用于表示幀的類型,也標(biāo)識(shí)每一幀的開始。如果前一個(gè)半位為高電平,后一個(gè)半位為低電平時(shí)表示此幀為命令/狀態(tài)字,前一個(gè)半位為低電平,后一個(gè)半位為高電平時(shí)表示為數(shù)據(jù)字,解碼器也可利用同步字頭提取位同步信息[5-6]。3~18 位為待編碼數(shù)據(jù)位,第19 位為數(shù)據(jù)校驗(yàn)位,其作用是對(duì)3~18 位進(jìn)行數(shù)據(jù)校驗(yàn)。
在曼徹斯特編碼與解碼的過程中,有如下幾個(gè)模塊:編解碼時(shí)鐘CLK、數(shù)據(jù)移位寄存器Data、位計(jì)數(shù)寄存器Count、位分頻計(jì)數(shù)器Feq、奇偶檢驗(yàn)位P。CLK 為曼碼的編解碼時(shí)鐘,時(shí)鐘速率為其數(shù)據(jù)位傳輸速率的10 倍,由于DSP 系統(tǒng)時(shí)鐘為150 MHz,而曼徹斯特碼的編碼速率為100 kbit/s,所以可用定時(shí)器對(duì)DSP 系統(tǒng)時(shí)鐘進(jìn)行150 倍分頻得到。Data 為曼碼編碼及解碼的緩存寄存器,所要編碼的數(shù)據(jù)以及解碼得到的數(shù)據(jù)都暫存在其中。Count 為數(shù)據(jù)位計(jì)數(shù)器,按照MIL-STD-1553B 編碼格式,每個(gè)信息幀包含20 個(gè)數(shù)據(jù)位,在數(shù)據(jù)編碼及解碼過程中,利用它來指示有多少位數(shù)據(jù)尚未編碼及解碼。Feq 為位分頻計(jì)數(shù)器,對(duì)編解碼時(shí)鐘計(jì)數(shù),計(jì)數(shù)區(qū)間為0~9,計(jì)數(shù)值為10 時(shí),則溢出清零重新開始計(jì)數(shù),可用前5 個(gè)計(jì)數(shù)周期表示數(shù)據(jù)位的前0.5 bit,后5 個(gè)計(jì)數(shù)周期表示數(shù)據(jù)位的后0.5 bit。奇偶檢驗(yàn)位:用于對(duì)輸入的16 位數(shù)據(jù)進(jìn)行奇校驗(yàn),生成校驗(yàn)位。
2.1.1 基于DSP的曼碼編碼方案
曼徹斯特碼編碼的過程是指DSP 編碼模塊將DSP 程序模塊接收到的數(shù)據(jù)以曼徹斯特II 型編碼串行數(shù)據(jù)的格式,以100 kb/s 的速率發(fā)送到總線。編碼模塊有同步頭控制、同步數(shù)據(jù)編碼、奇偶位產(chǎn)生等功能[7]。
1)幀的同步頭編碼
根據(jù)總線協(xié)議,同步位的寬度為3 個(gè)數(shù)據(jù)位,如果信息幀為命令字,則前一個(gè)半位波形為正,后一個(gè)半位波形為負(fù),如果信息幀為數(shù)據(jù)字,則與命令字波形相反,所以幀的同步頭占用3 位數(shù)據(jù)位,共30 個(gè)CLK 周期[8]。前15 個(gè)時(shí)鐘周期為1(或0),后15 個(gè)時(shí)鐘周期為0(或1),位計(jì)數(shù)器相對(duì)應(yīng)的值為0~2。
2)幀的數(shù)據(jù)位編碼
同步頭之后就是數(shù)據(jù)位編碼,每個(gè)數(shù)據(jù)碼元間隔的中點(diǎn)以數(shù)據(jù)‘1’和‘0’分別表示下降沿和上升沿。數(shù)據(jù)移位寄存器的最低位表示當(dāng)前待編碼數(shù)據(jù)位,在位計(jì)數(shù)寄存器遞增時(shí)右移一位。當(dāng)分頻計(jì)數(shù)器Feq 值為零時(shí),位計(jì)數(shù)寄存器遞增,讀入數(shù)據(jù)移位寄存器的最低位值,輸出相應(yīng)的波形,當(dāng)分頻計(jì)數(shù)器Feq 遞增到5 時(shí)對(duì)輸出波形進(jìn)行跳變,以產(chǎn)生相對(duì)應(yīng)的跳變沿,分頻計(jì)數(shù)器Feq 遞增到10 完成一個(gè)數(shù)據(jù)位的編碼,進(jìn)入下一位編碼循環(huán)。位計(jì)數(shù)器相對(duì)應(yīng)的值為:3~18。
3)奇偶校驗(yàn)位編碼
信息幀的第19 位是奇偶校驗(yàn)位。在數(shù)據(jù)編碼完成后,奇偶校驗(yàn)位已經(jīng)根據(jù)移位寄存器的18 次移位數(shù)據(jù)計(jì)算出校驗(yàn)結(jié)果,根據(jù)校驗(yàn)結(jié)果輸出相應(yīng)的編碼信息[9-10]。
2.1.2 曼碼解碼實(shí)現(xiàn)方案
曼徹斯特碼解碼的過程是DSP 解碼模塊接收數(shù)據(jù)時(shí),將接收的曼碼型串行數(shù)據(jù),實(shí)現(xiàn)同步頭檢出等,同時(shí)將處理后的數(shù)據(jù)送入DSP 程序模塊進(jìn)行分析。接收數(shù)據(jù)通過采樣判定完成,即首先檢測(cè)到電平極性的變化,再用計(jì)數(shù)器進(jìn)行計(jì)數(shù),在同一極性的情況下,計(jì)數(shù)到一個(gè)設(shè)定的值時(shí)確定半位曼碼的極性,不同極性的曼碼組合形成完整的信息幀。
1)幀的同步頭的監(jiān)測(cè)
同步頭包括3 位數(shù)據(jù)位,前1.5 位與后1.5 位極性相反。在實(shí)際的波形監(jiān)測(cè)中得到以下6 種信息幀的同步頭,如圖2 所示。
圖2 曼切斯特編碼信息幀同步頭波形圖
圖中的①~③表示命令幀的3 種同步頭,④~⑥表示數(shù)據(jù)幀的3 種同步頭。在波形監(jiān)測(cè)中,如果對(duì)③和⑥同步頭不處理好,就會(huì)丟失信息,也有可能造成對(duì)信息幀類型判斷失誤[11]。
根據(jù)曼徹斯特碼的碼型特征可知,偵測(cè)同步頭的關(guān)鍵是如何識(shí)別曼徹斯特碼的前1.5 位和后1.5 反極性位?,F(xiàn)以圖2 的③為例,介紹問題的解決方法。
第一步,當(dāng)監(jiān)測(cè)到圖中的1、2、3 半位相同極性的曼碼以及4、5、6 半位反極性碼元時(shí),初步判定它們?yōu)閹筋^的前1.5 位和后1.5 位,如果緊跟的兩個(gè)半位曼碼極性不同,則說明其后面緊隨的是數(shù)據(jù)碼,符合曼碼編碼協(xié)議,可以進(jìn)行數(shù)據(jù)碼的接收。但如果緊跟的兩個(gè)半位曼碼極性相同,那么就不符合曼碼編碼的規(guī)則了,如圖3 中的第7、8 半位,一些編碼芯片對(duì)其檢測(cè)產(chǎn)生錯(cuò)誤,造成數(shù)據(jù)丟失或數(shù)據(jù)錯(cuò)亂。在本設(shè)計(jì)中,遇到7、8 半位相同的情況時(shí),丟棄初始判斷的前1.5 位,把第4、5、6 半位重新設(shè)置為前1.5 位同步頭[12]。
圖3 信息幀同步頭分解圖
第二步,在7、8 半位相同的情況下,繼續(xù)對(duì)第9半位進(jìn)行檢測(cè)。如果其極性位與7、8 極性不同,則停止此次判斷,重新開始幀同步頭的檢測(cè)。如果7、8、9 半位極性相同,則4、5、6、7、8、9 又組成了一個(gè)幀同步頭,回到了第一步開始情況。再次檢測(cè)10、11兩個(gè)半位的極性,如果極性相反的話進(jìn)入數(shù)據(jù)碼接收,如果相同的話繼續(xù)以第二步方法檢測(cè)。
第三步,在運(yùn)行完以上兩步之后,得到了信息幀的一個(gè)同步頭,其后緊跟的是數(shù)據(jù)碼。根據(jù)同步頭中前1.5 位與后1.5 位的極性,可以確定信息幀的類型。
2)信息幀數(shù)據(jù)位的接收
在同步頭檢測(cè)到之后,緊接的就是數(shù)據(jù)碼,任何兩位數(shù)據(jù)的組合結(jié)果只有4 種:00、01、10、11;從波形上看,它會(huì)出現(xiàn)4 種情況,如圖4 所示。
圖4 總線數(shù)據(jù)譯碼波形圖
由圖4 可以看出,此時(shí)只可能有兩種的波形寬度一個(gè)位和半個(gè)位寬度,由于編解碼時(shí)鐘CLK 是數(shù)據(jù)位編碼時(shí)鐘的10 倍,所以相應(yīng)分頻計(jì)數(shù)器Feq 的計(jì)數(shù)值的范圍是4~5 和8~9 之間。所以,只要得到的數(shù)據(jù)位計(jì)數(shù)值滿足以上兩個(gè)寬度范圍,則認(rèn)為數(shù)據(jù)格式正確,接收的數(shù)據(jù)有效。根據(jù)前一時(shí)鐘的碼元信息以及現(xiàn)時(shí)刻分頻計(jì)數(shù)器值,可得到即時(shí)所接收到的碼元極性,完成了數(shù)據(jù)同步接收[13]。
3)數(shù)據(jù)校驗(yàn)
對(duì)每一幀數(shù)據(jù),在接收完16 位數(shù)據(jù)之后,最后一位為奇偶校驗(yàn)值,如果數(shù)據(jù)接收過程沒有出現(xiàn)差錯(cuò),則數(shù)據(jù)的奇偶校驗(yàn)值與接收到的值相對(duì)應(yīng)[14]。
在數(shù)據(jù)傳輸?shù)倪^程中,可通過循環(huán)冗余校驗(yàn)算法,對(duì)串行數(shù)據(jù)進(jìn)行差錯(cuò)檢驗(yàn),確保數(shù)據(jù)傳輸?shù)目煽啃?。其主要有兩種校驗(yàn)方法,按位計(jì)算法和查表法。按位計(jì)算CRC 雖然代碼簡單,但占用處理器資源。而使用查表法,可生成16 位CRC 校驗(yàn)碼表,數(shù)據(jù)運(yùn)算量小、速度快。
該設(shè)計(jì)在DSP 芯片具有足夠的內(nèi)存空間情況下,采用查表法來實(shí)現(xiàn)循環(huán)冗余碼校驗(yàn),以優(yōu)化微處理芯片資源配置[15]。以下兩組數(shù)據(jù)就是數(shù)據(jù)校驗(yàn)完的結(jié)果,前12 個(gè)字節(jié)是數(shù)據(jù),后面緊跟的2 個(gè)字節(jié)為校驗(yàn)碼:0xAA 0xFE 0x03 0x55 0x40 0x00 0xE9 0x01 0x00 0x33 0x5A 0xA0 0x15 0x25;0xAA 0xFE 0x03 0x56 0x80 0x00 0x0F 0x02 0x00 0x39 0x0A 0x50 0x6A 0xCD。
曼碼編碼實(shí)現(xiàn)采用軟硬件結(jié)合方式,DSP 通過對(duì)AD847兩個(gè)輸入端邏輯電平的控制,實(shí)現(xiàn)對(duì)信號(hào)的編碼。曼碼信號(hào)經(jīng)AD847 幅度放大[16],TD823 功率放大后發(fā)送到電纜上。其具體實(shí)現(xiàn)電路如圖5所示。
圖5 曼碼編碼電路
曼碼解碼實(shí)現(xiàn)也同樣采用軟硬件方式,電纜上的曼碼信號(hào)經(jīng)一階微分電路,再經(jīng)放大電路幅度放大,最后經(jīng)LM193 比較電路整形產(chǎn)生一系列脈寬不等的曼碼脈沖信號(hào)。單片機(jī)捕捉脈沖信號(hào)后經(jīng)處理算法解碼出數(shù)據(jù),實(shí)現(xiàn)對(duì)曼碼信號(hào)的解碼。具體實(shí)現(xiàn)電路如圖6 所示。
上位機(jī)控制軟件通過總線發(fā)送指令到上遙測(cè)板,其長度為2 個(gè)字。上遙測(cè)板轉(zhuǎn)發(fā)指令到電纜2、3芯上。
圖6 曼碼解碼電路
下遙測(cè)板感應(yīng)到指令信號(hào),解碼指令,正確解析指令之后上傳數(shù)據(jù)幀到電纜2、3 芯上。上遙測(cè)板感應(yīng)到數(shù)據(jù)信號(hào),正確解碼數(shù)據(jù)之后上傳到計(jì)算機(jī)。
根據(jù)曼碼波形分析,上遙測(cè)板通訊變壓器2 腳與3 腳相連,下遙測(cè)板通訊變壓器2 腳與3 腳斷開的情況下,上通訊變壓器的1 腳和4 腳的差分信號(hào)如圖7 所示。
圖7 井上遙測(cè)板通訊變壓器1與4腳指令感應(yīng)差分波形
通過上面的波形不難看出,利用曼碼編碼繞組來獲取到導(dǎo)線上的曼碼信號(hào)盡管波形衰減嚴(yán)重,可是畸變的情況基本能夠接納,通過下遙測(cè)板上通信變壓器接受繞組獲取的信號(hào)能夠順利解碼。這就說明:只要上下遙測(cè)板通訊變壓器2、3 腳相連接,則整個(gè)通訊握手協(xié)議實(shí)現(xiàn),能夠完成整個(gè)采集周期數(shù)據(jù)傳輸。
從DSP 的編碼信號(hào)開始,到發(fā)送端信號(hào),再到電纜的兩端,最后接收端信號(hào)和輸入DSP 的解碼信號(hào)。數(shù)字編碼信號(hào)如圖8 所示,電纜一端2、3 芯接收曼碼差分信號(hào)測(cè)試如圖9 所示,經(jīng)過濾波調(diào)整后數(shù)字解碼輸入信號(hào)如圖10 所示。
圖8 數(shù)字編碼信號(hào)
由此看出,通訊系統(tǒng)的效果得以展現(xiàn),Manchester 碼編碼解碼順利進(jìn)行,可以當(dāng)場(chǎng)順利地使用。
圖9 電纜一端23芯接收曼碼差分信號(hào)
圖10 數(shù)字解碼輸入信號(hào)
基于DSP 的過套管曼徹斯特編碼通信系統(tǒng)曼徹斯特編碼以及解碼是通過軟件來完成的。編碼是通過GPIO 復(fù)用口輸出編碼控制信號(hào),配合IRF7341 驅(qū)動(dòng)芯片和耦合變壓器實(shí)現(xiàn)的;而解碼是通過CAP 輸入信號(hào),進(jìn)行邊沿捕捉和定時(shí)器中斷觸發(fā)的方式實(shí)現(xiàn)的。由于井下和地面間的長距離輸送,設(shè)計(jì)中通過變壓器耦合的方式,實(shí)現(xiàn)信號(hào)的差分傳輸功能,減輕了噪聲干擾及誤差,同時(shí)接收一方使用收發(fā)芯片ADM485,把該差分信號(hào)轉(zhuǎn)換為單路NRZ 信號(hào),最后輸入GPIO 復(fù)用口。
通過實(shí)驗(yàn)檢驗(yàn)表明,該方案建立的通訊系統(tǒng)工作擁有良好的平穩(wěn)性,值得我們進(jìn)行更加深入的研究及應(yīng)用。