,,,
(中國石油集團工程技術研究院,北京 102206)
泥漿脈沖是石油鉆井領域應用最廣泛的井下數據傳輸方式[1],作為“十三五”深井超深井鉆完井技術發展目標[2],中國石油集團工程技術研究院研制的高速大容量信息傳輸鉆桿(簡稱信息鉆桿)也使用泥漿脈沖作為備份信道。位于井下的泥漿脈沖發生器產生泥漿脈沖壓力信號,包含信息的編碼后的壓力脈沖序列通過水眼內的循環泥漿上行到地面,由安裝在立管上的壓力傳感器采集,立管壓力信號通過硬件濾波、模/數轉換、去噪解碼后得到編碼信息。
去噪大多通過基于傅里葉變換的濾波算法實現[3-4],由于泥漿脈沖信號是典型的非穩定信號,其噪聲與信號高頻有效成分在頻域重疊在一起,難以通過傅里葉分析去除,小波分析有更好的去噪效果[5-7]。雖然解碼成功率更高,但與傅里葉變換相比,小波分析計算量更大。在實際應用中,主計算機運行的程序往往包含泥漿脈沖信號解碼、流程控制、信號處理及顯示等功能,有些地質參數信號反演需要大量耗時的卷積計算。使用小波分析去噪算法后,主計算機系統負擔明顯增加,軟件運行流暢度降低,實時傳輸的泥漿脈沖數據往往無法及時處理,導致井下測量數據丟失。
泥漿脈沖信號網絡解碼器使用高性能單板機完成小波分析去噪,以此來分擔主計算機的計算工作量,并通過高速網絡將含有效信息的波形信號等數據傳回主計算機。為了實現實時數據采集,采用有源低通濾波器對立管壓力信號完成硬件濾波,濾波后的信號由模/數轉換器(ADC)轉換為數字信號,經嵌入式單片機緩沖后轉發給高性能單板機實施小波去噪等后續數字信號處理,完成了高速、低成本泥漿脈沖信號網絡解碼。
泥漿脈沖壓力信號由安裝在立管上的壓力變送器采集,硬件低通濾波器對采集到的泥漿脈沖立管壓力信號進行預處理,可以消除有效信號之外的較高頻率噪聲,例如井場柴油發電機產生的50/60 Hz工頻干擾等。圖1給出了經硬件濾波、模/數轉換后的典型泥漿脈沖立管壓力信號。

圖1 硬件濾波后的泥漿脈沖信號
由于泥漿脈沖發生器和循環泥漿信道的限制,泥漿脈沖的傳輸速率最高僅有數位每秒,信號所需最高帶寬也僅有幾Hz。泥漿脈沖信號的主要噪聲由石油礦場用往復泵(泥漿泵)產生,泥漿泵有單缸泵和多缸泵之分,額定沖次為每分鐘幾十到上百次,即其產生的噪聲頻率約為幾Hz,與泥漿脈沖信號在頻譜上重疊在一起。對于現場服務工程師來說,觀察泥漿泵噪聲的細節有助于判斷泥漿泵“上水”不均勻、空氣包壓力異常等干擾泥漿脈沖信號的異常工況,方便及時處理排除干擾[8]。
需要仔細確定硬件低通濾波器的截止頻率及模/數轉換器的采樣頻率,以保留有效信號并濾除噪聲。實驗表明,采樣率設定為100 sps以上,低通濾波器截止頻率設定為20 Hz即可滿足要求,實際采樣率設定為175 sps。
隨著井深的增加,泥漿泵泵壓不斷上升,而井底傳來的壓力脈沖幅度卻越來越小,為了保證采樣精度,模/數轉換器的采樣分辨率選定為16位,可滿足實際作業需要。
經過硬件濾波和模/數轉換后的信號通過小波分析去噪數字信號處理算法進行解碼處理以還原編碼信息。一維離散小波變換的Mallat算法包含分解與重構兩部分[9],其分解算法公式如下:
(1)

(2)
重構算法公式如下:
(3)
小波去噪效果的優劣與基函數的選擇、分解層數、閾值處理方法有關。這里使用強制去噪,將小波分解結構中的高頻系數全部置零,即濾掉所有高頻部分,然后完成小波重構[10]。使用強制去噪實現基線漂移修正及信號解碼,分解層數分別是10層和8層。
經多種主流計算機實測,對10 500個離散數據點(60 s采樣)的泥漿脈沖數據進行一次完整的基線漂移修正及信號解碼大約耗時2~5 s。為了避免遺漏編碼信息,需要每隔5~10 s重復一次計算。
為了滿足小波去噪計算的需求,考察了臺灣研揚科技基于英特爾凌動處理器的UP創客板[11]、樹莓派(Raspberry Pi)。最終確定選擇樹莓派,原因在于該單板機具有較高的計算能力和性價比、豐富的開源硬件和軟件資源以及適合電池供電的低能耗等特點。
作為泥漿脈沖信號網絡解碼器的計算核心,第三代樹莓派型號B+的處理器為4核Cortex-A53博通BCM2837B0,主頻為1.4 GHz,配備了千兆以太網口,具有I2C、SPI、UART等外設接口[12]。
樹莓派可運行Linux、Windows10 IoT等多種操作系統,為了更好利用外設資源,選用官方建議的基于Linux發行版Debian的Raspbian操作系統,編程語言選用數學計算友好的Python[13]。由于Raspbian不是實時操作系統,為了實時采集立管壓力數據,選用了另一款開源硬件Arduino Nano作為嵌入式控制器從模/數轉換器獲取數據,其板載MCU是以16 MHz頻率運行的Atmel ATmega328P[14],最終完成的泥漿脈沖信號網絡解碼器系統結構如圖2所示。

圖2 系統結構示意圖
為了隔離井場危險區域,使用了模擬量的隔離柵(安全柵),立管壓力變送器采集泥漿脈沖信號,以電流環的方式輸出到隔離柵并轉換為1~5 V的電壓信號,經硬件有源低通濾波器濾波后由模/數轉換器數字化為離散數字信號,通過UART串口發送給Arduino Nano并保存在其MCU內存中,樹莓派定時通過I2C總線從Arduino Nano內存讀取數據,顯然Arduino Nano起到了數據緩沖的作用,保證了立管壓力的實時采集。樹莓派完成信號的小波去噪及解碼,解碼信息及原始波形數據通過以太網發送給外部的主計算機。
采樣率為175 sp/s的16位模/數轉換器每秒鐘可以產生將近3 KB的數據。對于樹莓派而言,使用I2C總線與外設通信是較好的選擇。其常規通信速率為100 kbps,僅用2根線就可以實現多主機、多從機之間的通信。模/數轉換器選用了TI推出的帶UART接口的ADS112U04[15],與I2C及SPI接口的同系列的模/數轉換器相比,ADS112U04可以通過速率高達120 kbps的UART自動連續發送采樣數據,無需通過查詢指令提取,此舉減輕了Arduino Nano的工作壓力。所有通信環節的傳輸速率滿足實時立管壓力數據的傳輸需求。
樹莓派及Arduino均有成品板可供選購,僅需設計包含有源低通濾波器和模/數轉換器的樹莓派擴展板(HAT)。該HAT完整的電路圖如圖3所示。圖中P1為供電輸入VIN和隔離柵的立管壓力電壓信號輸入插座。

圖3 樹莓派HAT電路圖
VIN為兩組TPS5430低紋波穩壓器[16]供電,輸出正負5 V電壓為有源濾波器和模/數轉換器供電,同時為Arduino Nano板供電,該板自帶穩壓器并由二極管自動選擇是否使用USB接口電源,通過插座P2與HAT板相連(UART),通過P3與樹莓派的40PIN引腳相連(I2C)。
立管壓力電壓信號經由運放LM358[17]組成的具有巴特沃斯響應的單位增益Sallen-Key濾波器[18],該二階濾波器截止頻率設計為20 Hz,用±5 V雙電源供電以保證直流響應。使用ADS112U04模/數轉換器的AIN0單端輸入,采樣結果通過UART發送給Arduino Nano。ADS112U04自帶電壓基準和振蕩器,因此外圍器件較少。
由于選用了開源硬件,泥漿脈沖信號網絡解碼器的軟件模塊大多有現成代碼或庫,編程簡便易行,這里主要說明與模/數轉換器的通信流程。
此部分的嵌入式編程使用C語言在Arduino開發環境版本1.8.5中完成,包含通過串口設置并讀取模/數轉換器的程序(Sketch)和作為I2C從機為樹莓派提供采樣數據的程序。
Arduino開發環境提供了大量基礎函數,串口通信通過HardwareSerial類實現,該類實例化為Serial對象:在Begin初始化時設定通信波特率及格式(8-N-1),可用available函數判斷是否收到數據,用read函數讀取,而重載的幾個wirte函數可用于向串口寫入不同類型的數據。
ADS112U04的2線UART兼容串口以字節方式傳送數據,每個字節有1個起始位(S)、8個數據位(先發送LSB)和一個停止位(P)。該串口具有自動波特率檢測功能,主機(這里是Arduino Nano)在發送指令之前先發送同步字(0x55),ADS112U04即可自動識別該同步字并以該波特率返回應答字節,如圖4所示。

圖4 模/數轉換器指令應答

圖5 模/數轉換器初始化及讀取流程
圖5給出了ADS112U04初始化和自動數據讀取的流程圖。
上電后,作為主機的Arduino Nano先發送復位指令,等待ADS112U04復位完成后,通過WREG指令向ADS112U04的5個寄存器寫入需要設置的參數,將其采樣速率Data rate設置為175 sps、單端讀取AIN0以及自動數據讀取模式,之后用START/SYNC指令啟動數據采集,每次采樣數據為16位(LSB與MSB),自動發送給主機。
Arduino開發環境提供了許多擴展庫,用于封裝硬件底層程序或提供特殊應用。Wire庫實現了I2C通信功能,該庫定義了實例化為Wire對象的TwoWire類,與HardwareSerial類相同,均基于Stream流操作類,其Begin函數可設置從機地址,通過onRequest函數在從機模式下注冊用于處理主機請求的函數,一旦收到樹莓派主機發來的讀取數據請求,在處理主機請求的函數中使用write函數返回數據。
此部分使用Python語言編程,Raspbian操作系統版本為9.3,包含通過I2C接口從Arduino Nano讀取立管壓力數據的程序、小波去噪及解碼算法程序和作為UDP服務器為主計算機(客戶端)提供波形及解碼信息的程序。
可用Raspberry Pi Configuration工具使能I2C接口。樹莓派提供了SMBus庫用于I2C接口通信,完成庫安裝后,通過read_byte函數從指定地址的從機讀取數據,注意3B+使用的I2C設備編號為1,默認通信速率為100 kbps。
小波分析的Mallat算法容易用計算機程序實現[9],這里不贅述,未用到Python的Math庫。通過套接字(Socket)編程將樹莓派作為一個UDP服務器,通過以太網交換數據[19]。與TCP相比,UDP因為無需應答而更快。主計算機作為泥漿脈沖信號網絡解碼器的客戶端,讀取立管壓力波形數據及解碼后的編碼信息。
經過地面螺桿鉆具試驗臺的打壓試驗,泥漿脈沖信號網絡解碼器功能正常,滿足設計要求。中石油工程技術研究院成功研制了5英寸全系列高頻磁耦合有纜鉆桿系統。經過大慶油田、吉林油田的多次前期現場試驗,在國內首次完成了全系統、全功能磁耦合有纜鉆桿現場試驗,通信速率為100 kbps。作為信息鉆桿的備用信道,泥漿脈沖信道能夠避免因為通信故障而起鉆,可節省大量施工時間及費用。
