基于AD7606的继电保护数据处理设计
2014-05-07王小进涂煜
王小进,涂煜
基于AD7606的继电保护数据处理设计
王小进,涂煜
(武汉船用电力推进装置研究所,武汉 430064)
AD7606是一种16位8通道自同步模数转换器,具有性价比高、精度高、能耗低、转换速度快等优点,尤其适合于继电保护数据的测量。本文以继电保护系统为例,提出了一种基于AD7606的数据处理设计方法,主要介绍了AD7606的主要特性、电路设计和数据处理实现。
AD7606 继电保护 AD采集 数据处理
0 引言
随着科学技术的迅速发展对继电保护不断提出新的要求,继电保护装置[1]不仅需要从网上获取电力系统运行和故障的任何信息和数据,也要将所获得的被保护元件的任何信息和数据传送给网络控制中心或任一终端。因此每个继电保护装置不但可完成继电保护功能,而且在无故障正常运行情况下完成测量、控制、数据通信功能,亦即实现保护、控制、测量、数据通信一体化。因此需要同时采集多路保护和测量数据,而且信号处理的实时性要求很高,于是多通道、高精度同时采集尤为重要。
AD7606是一种16位8通道自同步模数转换器,具有性价比高、精度高、能耗低、转换速度快等优点,尤其适合继电保护系统的数据采集和处理。本文主要介绍了AD7606的主要特性、电路设计和数据处理实现。
1 主要特性[2]
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。
2 电路设计
2.1 AD7606内部结构
AD7606包含了8个逐次逼近ADC,8个采集保持器,片外提供了5V基准参考电压和基准缓冲器(芯片ADR421提供),高速的并行和串行接口。具体如图1。
2.2 工作原理
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信号变为低电平就开始读取数据了。
2.3 电路设计
结合继电保护的项目背景来阐述AD7606的电路设计。本项目CPU采用的DSP28335,由DSP28335通过GPIO引脚提供PWM信号给AD7606,作为转换信号(CONVSTx)。由芯片ADR421给AD7606提供基准参考电压,具体如图3所示。实际的波形图如下图4,通过下一节的数据处理可以得到高精度快速的数据值。示波器通道1为AD760的CS引脚信号,通道2为AD760的CONVSTx引脚信号,通道3为AD760的BUSY引脚信号。
3 数据处理
3.1 PWM信号提供
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;
3.2 外部中断读取AD
将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;
4 结论
基于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-),男,高级工程师。研究方向:电力电子技术。