王小進,涂煜
?
基于AD7606的繼電保護數據處理設計
王小進,涂煜
(武漢船用電力推進裝置研究所,武漢 430064)
AD7606是一種16位8通道自同步模數轉換器,具有性價比高、精度高、能耗低、轉換速度快等優點,尤其適合于繼電保護數據的測量。本文以繼電保護系統為例,提出了一種基于AD7606的數據處理設計方法,主要介紹了AD7606的主要特性、電路設計和數據處理實現。
AD7606 繼電保護 AD采集 數據處理
隨著科學技術的迅速發展對繼電保護不斷提出新的要求,繼電保護裝置[1]不僅需要從網上獲取電力系統運行和故障的任何信息和數據,也要將所獲得的被保護元件的任何信息和數據傳送給網絡控制中心或任一終端。因此每個繼電保護裝置不但可完成繼電保護功能,而且在無故障正常運行情況下完成測量、控制、數據通信功能,亦即實現保護、控制、測量、數據通信一體化。因此需要同時采集多路保護和測量數據,而且信號處理的實時性要求很高,于是多通道、高精度同時采集尤為重要。
AD7606是一種16位8通道自同步模數轉換器,具有性價比高、精度高、能耗低、轉換速度快等優點,尤其適合繼電保護系統的數據采集和處理。本文主要介紹了AD7606的主要特性、電路設計和數據處理實現。
AD7606是一種逐次逼近(SAR)型的雙極性、多通道自同步模數轉換器(ADC),在保證數據轉換的速度和精度前提下,提高了性能,縮小封裝尺寸,降低了功耗,并且只需要很少的外接元器件,從而非常適合于對模擬信號進行測量與控制的系統。例如:電能質量監控和繼電保護等領域。
其主要特性有:
1)雙極性模擬輸入;
2)可通過管腳或軟件方式選擇電壓輸入范圍(±10 V,±5 V);
3)最大吞吐率為200 ksps;
4)低功耗:在供電電壓為5 V,速率為200 ksps 時的功耗為100 mW,待命時是25 mW;
5)寬帶寬輸入:輸入頻率為50 Hz時的信噪比(SNR)為95.5 dB;
6)并行、串行和菊花鏈接接口模式;
7)與SPI/QSPI/uWire/DSP兼容的高速串行接口;
8)64引腳QFP。
AD7606包含了8個逐次逼近ADC,8個采集保持器,片外提供了5V基準參考電壓和基準緩沖器(芯片ADR421提供),高速的并行和串行接口。具體如圖1。

AD7606是高速低功耗、允許8路同時采集的逐次逼近式ADC,包括1個比較器、1個模數轉換器、1個逐次逼近寄存器(SAR)和1個邏輯控制單元。轉換中的逐次逼近是按對分原理有控制邏輯電路完成,其工作過程大致如下:啟動轉換后,控制邏輯電路首先把逐次逼近寄存器的最高位置1,其它置0,逐次逼近寄存器的內容經過模數轉換器轉換后得到電壓值。這個電壓值在比較器中與輸入信號進行比較。比較器的輸出反饋到模數轉換器,并在下一次比較前進行修正。在邏輯控制電路的時鐘驅動下,逐次逼近寄存器,不斷進行比較和移位,直到完成最低有效位的轉換。
AD7606轉換是通過脈沖調制CONVSTx信號開始的,在CONVSTx的上升沿,被選中的ADC的跟蹤保持電路會被置為保持模式,轉換開始。在CONVSTx信號的上升沿后,BUSY信號會置1,這表示轉換正在進行。轉換時鐘是由內部產生的,轉換時間是從CONVSTx信號上升沿開始的3μs,當BUSY信號變為低電平,表示轉換結束。在BUSY信號的下降沿,跟蹤保持電路返回跟蹤模式,數據通過并行或串行接口從輸出寄存器中被讀出。圖2為AD7606一次轉換后的數據讀取,在CONVSTx上升t5后再經過t1時間后BUSY信號變為高電平,經過tCONV時間后表示轉換結束,t4時間后CS信號變為低電平就開始讀取數據了。
結合繼電保護的項目背景來闡述AD7606的電路設計。本項目CPU采用的DSP28335,由DSP28335通過GPIO引腳提供PWM信號給AD7606,作為轉換信號(CONVSTx)。由芯片ADR421給AD7606提供基準參考電壓,具體如圖3所示。實際的波形圖如下圖4,通過下一節的數據處理可以得到高精度快速的數據值。示波器通道1為AD760的CS引腳信號,通道2為AD760的CONVSTx引腳信號,通道3為AD760的BUSY引腳信號。

DSP28335的GPIO0引腳配置PWM信號的簡要代碼如下
//總長度9.7 μs,高電平8.5μs,低電平1.2 μs,對應的BUSY高電平4 μs,低電平6.8 μs
#define EPWM1_FULL_DUTY 90
#define EPWM1A_DUTY 80
#define EPWM1B_DUTY 10
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
//PWM1A related.
EPWM1A_MUX = EPWM_MUX; //select the corresponding pin pwm function.
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4;
EPwm1Regs.TBCTL.bit.CTRMODE = 0; //up count mode.
EPwm1Regs.TBCTL.bit.PHSEN = 0; //don't load TBCTR from TBPHS.
EPwm1Regs.TBCTL.bit.SYNCOSEL = 0; //disable the synchronization.
EPwm1Regs.TBPRD = EPWM1_FULL_DUTY; //configure the pwm frequency 100Hz.
EPwm1Regs.TBCTR = 0; //clear the counter register.
EPwm1Regs.TBPHS.all = 0; //set the TBPHS register value as 0.
EPwm1Regs.CMPA.half.CMPA = EPWM1A_DUTY; //compare event trigger value.
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0; //load CMP when TBCTR=ZERO;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; //set high when TBCTR=ZERO occurs.
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; //set low when TBCTR=CPA occurs.
EPWM1B_MUX = EPWM_MUX;
EPwm1Regs.CMPB = EPWM1B_DUTY; //compare event trigger value.
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0; //load CMP when TBCTR=ZERO;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; //set high when TBCTR=ZERO occurs.
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; //set low when TBCTR=CPA occurs.
//enable the synchronization.
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
將AD7606的CS引腳鏈接到DSP28335的XZCS0n區域(0x4000),通過一個外部中斷來讀取XZCS0n區域采集過來的數據。外部中斷通過引腳(GPIO34)下降沿觸發,這部分的GPIO配置簡要代碼如下:
//外部中斷程序初始化定義 GPIO34
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
//選擇GPIO口
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0;
//選擇輸入口
GpioCtrlRegs.GPBQSEL1.bit.GPIO34= 0;
//GPIO時鐘和系統時鐘一樣且支持GPIO
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 34;
//中斷3選擇GPIO
XIntruptRegs.XINT3CR.bit.POLARITY= 0;
//觸發模式為下降沿觸發
XIntruptRegs.XINT3CR.bit.ENABLE = 1;
//使能中斷
定義外部中斷服務程序:
PieVectTable.XINT3 = &ISRExint; //外部中斷3
讀取數據代碼:
Vari.IO.ChannelAD.ProcessData[0][Vari.IO.ChannelAD.DataCount]= *(( int16 *)0x4000);
Vari.IO.ChannelAD.ProcessData [1][Vari.IO.ChannelAD.DataCount] = *(( int16 *)0x4000);
Vari.IO.ChannelAD.ProcessData[2][Vari.IO.ChannelAD.DataCount] = *(( int16 *)0x4000);
Vari.IO.ChannelAD.ProcessData[3][Vari.IO.ChannelAD.DataCount] = *(( int16 *)0x4000);
i1 = *(( int16 *)0x4000);
i2 = *(( int16 *)0x4000);
i3 = *(( int16 *)0x4000);
i4 = *(( int16 *)0x4000);
Vari.IO.ChannelAD.DataCount++;
再做濾波算法就可以得出需要的數據,如下:
if(Vari.IO.ChannelAD.DataCount > 9) {
max[k] = Vari.IO.ChannelAD.ProcessData[k][0];
min[k] = Vari.IO.ChannelAD.ProcessData[k][0];
addtemp[k] = 0;
for(m=0;m<10;m++)
{
Vari.IO.ChannelAD.DataCount = 0;
for(k=0;k<4;k++)
{
if(max[k] < Vari.IO.ChannelAD.ProcessData[k][m])
{max[k] = Vari.IO.ChannelAD.ProcessData[k][m];}
if(min[k] > Vari.IO.ChannelAD.ProcessData[k][m])
{min[k] = Vari.IO.ChannelAD.ProcessData[k][m];}
addtemp[k] = addtemp[k] + Vari.IO.ChannelAD.ProcessData[k][m];
}
}
Vari.IO.ChannelAD.I_average = (addtemp [1]-max[1]-min[1]) >>3;
Vari.IO.ChannelAD.U_average = (addtemp [2]-max[2]-min[2]) >>3;
Vari.IO.ChannelAD.U15_average = (addtemp [3]-max[3]-min[3]) >>3;
基于AD7606設計的繼電保護數據處理可以同時完成8通道數據的采集處理,并且具有很高的精度,滿足繼電保護系統的實際要求,驗證了該設計的可行性和有效性。
[1] 張文華. 淺談繼電保護技術的現狀與發展[M],北京:電氣與儀表安裝, 2012.
[2] 美國ADI公司.AD7606數據手冊[Z]. Norwood:ADI,2010.
Design of Data Transaction for Relay Protection Based on AD7606
Wang Xiaojin,Tu Yu
(Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China)
TM581
A
1003-4862(2014)09-0046-04
2014-07-15
國家科技支撐計劃項目(2012BAG03B01)
王小進(1981-),男,高級工程師。研究方向:電力電子技術。