特別是對測量井下鉆頭姿態的慣性導航傳感器影響巨大,在隨鉆振動環境中,如果對信號不作處理,根本就不能測量出正確的井斜角和方位角,也就無法實現井眼軌跡隨鉆控制的要求。本文介紹應用SoC芯片中的DMA技術對振動的高速采集和存儲功能的實現方法,并給出了鉆井環境中測試的結果。
1 方法的提出
傳統的數據采集方法采用CPU直接控制的方式進行數據采集,數據傳送需要經過CPU的中轉才能存入存儲器,傳送速度慢且采集速率受到CPU的限制,極大影響了系統的采樣頻率,不能滿足對振動信號高速采集的要求。而在DMA傳送方式下,數據傳送不經過CPU,由DMA控制器來實現內存和外設之間數據的直接快速傳送。在XTCS的測控系統中,CPU采用的SoC芯片中集成有DMA,將其與其它器件協作就可以實現采集與存儲的同時進行,達到高速采集信號的目的,得到高保真的井下振動信號。
2 系統介紹
該采集系統以C8051F060 SoC為核心,C8051F060內部集成有ADC和DMA。另外,以大容量存儲芯片K9F2808作為數據存儲器。系統結構如圖1所示。
圖1 信號采集系統結構圖
該系統應用于井下相關信號的檢測裝置。由于通過壓力與振動傳感器所采集的壓力和振動信號比較微弱,故還需放大電路對信號進行調理放大。傳感器的輸出均為模擬信號,采集數據時會受到噪聲的干擾,為了消除噪聲并提高電路的共模抑制比和輸入阻抗,該采集放大電路使用了前置輸入緩沖器三運放結構。由于SoC內的ADC0只能采集正信號,因而在經過調理放大電路后設有偏置電路,將-5V ~ +5V的電壓轉換為0V~+2.5V,以利于信號的采集。
CPU控制多路選擇開關進行信號的采集,然后通過ADC轉換,在DMA的傳送方式下,采集的數據直接寫入存儲器K9F2808中,在DMA存儲數據的同時,ADC也一直進行采集。經軟件測試,即采用SoC內集成的定時器2記錄采集一頁512個字節所需時間是1.277ms,而向片外存儲器K9F2808寫一頁數據需要0.722ms。
ADC采集一頁的時間小于DMA向片外寫一頁數據的時間,因而可實現數據采集與存儲的同時進行,而不會出現數據覆蓋丟失現象,實現快速準確的數據采集。
3 硬件部分
C8051F060單片機與51系列單片機內核兼容,其內部集成有兩個16位SAR(逐次比較)ADC和一個DMA功能模塊。片內有4352個字節的數據存儲器、64KB 閃存和64KB的數據存儲器接口,可以進行系統編程。兩個SAR ADC的精度為16位,可作為兩個單端或一個差分轉換器。若采用DMA直接將數據存儲到RAM中,就不再需要額外的軟件開銷。
4 A/D轉換與數據存儲
C8051F060的ADC子系統中集成了跟蹤保持電路、可編程窗口檢測器和DMA接口。這兩個ADC可以被配置為兩個獨立的單端方式ADC或組成一個差分對。數據轉換方式、窗口檢測器和DMA接口都可用軟件特殊功能寄存器來控制。ADC控制寄存器ADCnCN中的ADnEN位被置為邏輯1時ADCn被使能。該系統選用的ADC0有4種轉換啟動方式,由ADC0CN中的ADC0啟動轉換方式位(AD0CM1,AD0CM0)的狀態決定。該測控系統軟件采用定時器3溢出進行定時的連續轉換采集。將ADC初始化后,定時器3溢出一次ADC就自動采集一次。當采集完一頁的數據后,在DMA傳送方式下,采集的數據直接存儲到片外的閃存存儲器K9F2808中,并對該芯片進行讀、寫及擦除。
在該測控系統中,采用VB語言編寫上位機程序,采用C51語言編寫下位機程序。通過上位機來控制下位機執行相應的任務。由于該系統的SoC集成有UART,可以通過PC機的RS232串口實現通信,下位機每次接收到任務命令后,下位機程序跳入到相應的串行中斷程序中執行任務。下位機主程序包括連續啟動DMA程序、調用片外存儲器K9F2808UOC的寫程序,將用DMA方式采集的512字節送到K9F2808中,實現采集與存儲同步進行。主程序流程圖如圖3所示。子程序主要包括:晶振初始化、端口初始化、串口初始化、ADC初始化、DMA初始化、定時器3初始化、片外存儲器K9F2808UOC的擦除程序、延遲程序等。
MDX61B0011-5A3-4-OT
MTS MPM1142ATG6G1R SERVO MOTOR
FANUC A06B-0314-B501 SERVO MOTOR
HEIDENHAIN ENCODER ROD 320.020-5000
FANUC PULSECODER
ELAU SERVO MOTOR SH100
KAWASAKI SERVO MOTOR 68BM122HBX22
ALLEN BRADLEY SERVO MOTOR 1326AB-C3E-11
FANUC SERVO MOTOR AO6B-0346-B255
ALLEN BRADLEY 1791-IOBX DISTRIBUTED I/O MODULE
Baldor DBSC1005-24-AAA Servo Drive
MAXIMATOR AIR DRIVEN LIQUID PUMP L0 10 M
SIEMENS SIMO DRIVE 1P 1P 6SN1124-1AB00-0AA1
SIEMENS SIMO DRIVE 1P 6SN1124-1AB00-0BA1
GE FANUC A06B-0313-B504 SERVO MOTOR
GE FANUC A06B-0313-B505 SERVO MOTOR
BOSCH SERVO MOTOR SE- B4 130 030 14 000
EMERSON SERVO MOTPOR MGE-316-CONS-0000
FANUC SERVO MOTOR A06B-0315-B001#7000
AC SERVO MOTOR SGM-08AWF-J73
ALLEN BRADLEY SERVO MOTOR 1326DS-L4D-FL
SIEMENS SIMATIC 6ES5460-4UA12
ELAU SERVO MOTOR SM 070-60-010-P0-45-S1-B0
ELAU SERVO MOTOR SM 100-40-050-P0-45-S1-B0
ALLEN BRADLEY PANELVIEW 2711-B6C3
CONTROL TECHNIQUE FLUX VECTOR DRIVE VB75 ICD NP
NACHI AC SERVO MOTOR
FANUC MOTOR A06B-0310-B101
ALLEN BRADLEY AC SERVO CONTROLLER 1394-AM03
CONTROLLER CARD AW0016-6511 REV B
FANUC AC SERVO MOTOR A06B-0116-B704#0037
SIEMENS CONTROLLER CARD 6SE7034-6EC85-0JA0
SIEMENS CONTROLLER CARD 6SE7036-0EF85-0EAC
SIEMENS CONTROLLER CARD Q6P8-0711
HEIDENHAIN ENCODER ROD 320.002-1250
INDRAMAT MAGNET MOTOR MAC041B-0-BS-4-E/050-B-1/WI673L
FANUC α 3/3000 SERVO MOTOR
CONTROL TECHNIQUES DXM-340C SERVO MOTOR
SERVO Drive MOOG
AC SERVO MOTOR USAREM-02CMA32
ACTUS AC SERVO MOTOR NA20-1.5F-G10
ACTUS AC SERVO MOTOR NA20-6BF
ACTUS AC SERVO MOTOR NA20-6F-636
FANUC SERVO MOTOR A06B-0314-B031#70753
PANASONIC AC SERVO MOTOR MDM082Q2V
ALLEN BRADLEY SERVO MOTOR MPL-A330P-MJ2AA
FANUC SERVO MOTOR A06B-0315-B005#7008
SIEMENS TI 6ES5453-4UA12 PLC NEW
SIEMENS SIMO DRIVE 1P 6SN1123-1AA00-0AA0
BERGER LAHR WDP 3.014.0801
MODICON CL112 CYBERLINE 1000
REXROTH INDRADRIVE HMS02.1N-W0028
FANUC I/O BASE UNIT A03B-0801-C008
SIEMENS 1FT6024-6AK71-4AG2 SERVO MOTOR
YASAKAWA AC SERVO MOTOR SGMPH-02A1AJ16B
AMK SERVO MOTOR DV4-1-4-0B0
MITSUBISHI FREQROL-F2 575 V SERIES DRIVE
FANUC A06B-6047-H040 VELOCITY DRIVE
BALDOR SERVO DRIVE DBSC105-AAA
SIEMENS PW-MODUL 1P 6SN1113-1AB01-0BA1
YASKAWA SERVOPACK CACR-PR02AA4AH
BALDOR FLEX DRIVE
HEIDENHAIN ENCODER ERN 1387.001-2048
GETTY SERVO MOTOR M432-NAN0-7207
PACIFIC SCIENTIFIC CONTROL DIVISION SERVO DRIVE
SIEMENS BREAKING UNIT 6SE7023-2EA87-2DA0
SIEMENS MASTERDRIVES 6SE7023-2ES87-2DA1
MITSUBISHI SERVO MOTOR HC-SF52K
EMERSON DIGITAL SERVO DRIVE EN-204
MITSUBISHI INVERTER E500 FR-E520-0.4K.NA
INDRAMAT SERVO MOTOR MKD025B-144-KPO-UN
OMRON AC SERVO DRIVER R88D-MT20
OMRON DRIVER R7D-AP04L
EUROTHERM SERVO DRIVE 605/015/400/3/F/0010/UK/000
PARKER SERVO DRIVE C3S038V4 F10 I11 T30 M00
SIEMENS BOARD 6RB2025-0FA01
TEXAS INSTRUMENT CONTROLLER 305-02B
YASKAWA SERVO DRIVE JUSP-ACP05KAA
MODICON CYBERLINE POWER SUPPLY DR-PLS4-000
ABB CARD 3HAB2241-1
SICK SERVO POWER SUPPLY PS51-1000-7-022-834-0110
HEIDENHAIN ENCODER EQI 1325.005-32
ELECTRO-CRAFT S-4050-P-H00AA SERVO MOTOR
EXLAR GS30-0602-MFM-EM2-MV-DS
LEXIUM MHDS1017N00
MTS SERVO MOTOR MPM724CSG71N
SIEMENS SERVO MOTOR 1FT5024-0AF01-1-Z
CINCINNATI MILACRON CONTROLLER CARD
INDRAMAT PERMANENT MAGNET MOTOR MKD041B-144-GP0-KN
YASKAWA SERVO PACK SGDA-04AS
AEG SERVO MOTOR CCD20-T
INDRAMAT ANALOG CONTROLLER CARD DAE02 1
FANUC DC SERVO MOTOR A068-0641-B205
Kollmorgen Servo Motor
BINDER BRAKE 86 61114407
ELMO AC SERVO MOTOR PS 60/4-112 P - 3197
HEIDENHAIN ENCODER
FANUC AS SERVO MOTOR A06B-0128-B575#7008
FANUC LTD DRIVE A20B-1000-0770-01
SIEMENS SIMODRIVE 6SN1112-1AC01-0AA0
HEIDENHAIN ENCODER ERN 1387-020-2048
INDRAMAT SERVO MOTOR MAC041B-0-BS-4-E
PARKER SERVO DRIVE C3S025V2 F10 I12 T11 M12
PARKER SERVO DRIVE C3S075V4F10 I12 T11 M12
MODICON CYBERLINE SERVO DRIVE 110 091
CUSTOM SERVO MOTORS MPM 892-2192
CUSTOM SERVO MOTORS MPM892BSG7JX1N
SUPERCOOL SERVO DRIVE DA-024-24-02-41-AR
ALLEN BRADLEY ENCODER 842D-60131331BDA
SIEMENS SITOP POWER SUPPLY 6EP1931-2FC01
SIEMENS PRECISION GEAR BOX
FANUC ABS PULSE CODER TYPE-A860-0324-T102 -2500P
EXLAR SLM SERIES CLASS 180(H) SLM060-KMGS-EM2-268
DANFOSS VLT 6000 HVAC SERVO DRIVE
FANUC MDT/CRT UNIT
MODICON AEG POWER SUPPLY
ABB SERVO MOTOR LC42TL R0012
ALLEN BRADLEY 1785-L20B PROCESSOR MODULE
FANUC SERVO DRIVE A06B-6050-H002
BALDOR AC SERVO DRIVE DBSC1105-24-AAA
BALDOR AC SERVO DRIVE DBSC1115-24-AAA
ALLEN BRADLEY I/O SCANNER 1775-S4B
SIEMENS SERVO DRIVE 1P 6SN1123-1AB00-0AA1
AEG SERVO MOTOR M307B-A00-102
FANUC A290-0561-V501 PULSECOSER
RELAINCE ELECTRIC AC SERVO DRIVE 3RA2002
ALLEN BRADLEY SERVO MOTOR 1326DP-S2B-A2-FLN-X010
KUKA SERVO DRIVE E93DA5521413531