摘 要:本文介绍了一种以ADC与DSP处理器相结合为基础的高可靠性配电网监测系统,该系统不仅硬件设计简洁,而且可靠性高、测量速度快。
关键词:电能质量;FFT;频谱泄漏;栅栏效应;谐波 引言 电能质量是衡量电网质量的标准,电能质量问题包含电压凹陷(sag)、电压隆起(swell)、尖峰脉冲(spikes)、谐波畸变(harmonic aberration)和电气噪声(electric yawp)等,其中对电能质量影响最大的就是谐波畸变。因此,本系统的设计就是以对谐波畸变分析为主要目的。这方面的研究比较多,而且也开发出了相应的设备。以往的配电网监测设备多以51、96系列单片机为处理器,在精度和速度方面都不能满足电力系统的要求,还有就是用TI公司的DSP作为处理器,并配合ADC来完成系统设计。 ADI公司先后上市了ADE7753、ADE7758等电力测量专用芯片,并成功地将它们应用到电网当中。最近,ADI公司又推出了高性能的强强组合,即DSP+ADC的电力测量方案。此监控系统就是采用这一组合实现的。
图1 系统硬件设计框图
图2 软件框图
ADC简介 AD73360是ADI公司推出的一款专门应用于电能质量监测的IC,与一般ADC相比,AD73360有如下优势:6路独立的A/D转换通道,不仅互不干扰,而且严格保证采样同步;高精度,6个16位转换精度转换通道非常适合电能质量监测的需要。采样速率可在8KHz、16KHz、32KHz范围内编程设置,适应范围广。AD73360为适应不同的场合提供了直流/交流、单端/差动4种不同的输入方式;采用串行接口,与DSP芯片的连接非常简单。 无论从精度、速度、采样路数或者同步采样的实现来考虑,在电力监测系统中使用AD73360都是比较理想的选择。 系统采用的DSP处理芯片ADSP2191M是ADI公司的16位定点DSP。ADSP2191M处理器具有的资源概括如下:可访问的存储空间大小为16M words,分为256页,每页的大小为64K words,其中第0页是内部RAM,第255页是内部ROM,其它空间被分为4个部分,并由ms0~ms3进行选择。有256页I/O存储区间,每页的大小为1K words,其中前8页为内部I/O存储区间,其它为外部I/O存储区间。处理器有一个主机接口、3个同步串行接口、两个SPI接口、16个可编程标志引脚、1个异步串行接口和3个32位定时器。 与AD73360连接必须采用串行总线方式,ADSP2191M就有3个这样的同步串口。 整个系统的硬件设计以ADSP2191M和AD73360为核心,再配以周边电路完成。硬件设计的框图如图1所示。 由图1可以看出,系统的硬件设计非常简单,而且没有最麻烦的同步保持电路和系统存储空间的扩展。这是因为AD73360能够实现多通道的同步转换,免除了同步保持电路的设计、ADSP2191M内部具有64K RAM,能够满足系统设计的要求。在系统硬件设计中,传感器用来将配电网参数的电能信号转化为ADC的输入信号,然后送到AD73360进行同步采样,转换后的采样数据通过同步串口传入DSP处理器,进行数据处理、谐波分析和其它操作。最后,处理器将分析结果送到LCD进行显示,并通过串口送到PC进行相应的处理。Flash用来存放系统代码。 整个系统设计中,Flash和LCD为基本的系统扩展,异步串口为基本的开发,这里只介绍一下DSP处理器与ADC的连接。它们必须通过串行接口,其中ADSP2191M为6线串行方式,而AD73360为5线的串行方式,它们的区别在于前者的串行时钟分为串口发送时钟和串口接收时钟,是彼此独立的,而后者合二为一。比较时序图会发现,二者时序基本相同,但要控制AD73360,处理器还必须能够满足下面的要求:串口工作方式可设置为外部时钟模式,串口字长可达到16bit,发送和接收的每个字都有同步帧信号,对处理器而言,接收同步帧信号为输入信号,发送同步帧信号为输入信号,帧同步信号产生在串口字高位出现的前一个时钟周期,帧同步信号为高有效。 作为AD73360的同类处理器,ADSP2191M可以通过设置轻易地达到上述要求。
图3 硬件系统分析与理论分析对比
系统软件设计 系统的软件设计比较复杂,分为A/D采样控制、LCD控制、串口传输、数据处理和谐波分析算法等几个部分。整个软件框图如图2所示。 其中,谐波分析算法代码量最大,也最重要,系统对配电网电能质量的分析就由它来完成;Flash驱动代码用于对Stm29w040进行驱动,它不在系统监测中使用,而是用来实现程序代码的下载。在系统开发代码的语言选择上,采用DSP汇编语言和C语言相结合的方式,以C语言为主,汇编语言为辅。 文件的处理:在介绍整个系统流程之前,先介绍一下文件。当软件主函数存在于C文件的时候, 文件被系统默认为项目的一部分,并对项目进行中断向量初始化。当中断发生后,程序指针跳转到该文件的相应位置,通过___lib_int_determiner函数来寻找中断服务程序的入口,一旦找不到服务程序入口,就会造成程序死锁,无法正常运行,而采用C语言实现中断函数比较复杂。为了提高系统开发速度,减少系统程序代码,系统开发时要先对中的中断向量表进行修改,将中断服务程序入口直接给中断向量表就可以完成该函数的功能。系统软件的开发工具为ViusalDSP++3.0。 在软件设计中,最重要的是谐波分析算法的设计。因为它是软件设计的核心,不仅代码量比较大,而且也是系统测量精度的决定性因素之一。本方案采用成熟的FFT(快速傅立叶算法)作为系统的谐波分析算法,同时,为了抑制FFT算法自身的栅栏效应和频谱泄露问题,加入了汉宁窗和插值算法。由于代码量较大,这里就不给出源代码了。 在系统的软件设计中,用到了两个中断:同步串口发送中断和同步串口接收中断。前者用来实现对AD73360的配置,后者用来实现从AD73360读取转换后的采样数据。它们的代码也不在此详述了。 除此之外,系统还开发了异步串口、可编程标志引脚和LCD控制等待,使整个系统更加智能化、人性化。这里就不一一介绍了。 系统分析与软件分析的比较 系统开发完毕后,为了对系统分析的结果进行检测,使用与软件分析进行比较的方法。将时域原始数据导入Matlab软件,通过该软件内的FFT算法对数据进行分析,可以得到一组相应的时域波形、幅值谱和相位谱图形。将这些图形与系统硬件分析在DSP系统中所得到的对应图型进行比较,就可以看出本设计的硬件系统分析与理论分析的差异。图3就是这些图形的对比情况。 DSP硬件系统与Matlab软件所分析的原始数据是相同的,但是它们所采用的分析方法是不同的:一个是系统开发的算法、一个是软件自带的工具,所以,可以通过对比来审核开发系统算法的可靠性。可以看出,在对比图中,开发系统得到的时域信号的波形和幅值、相位谱与Matlab软件的分析结果具有相当的一致性。限于篇幅,最终的分析数据不再详述了。 为了比较系统的可信度,可采用多次分析的方法,分析比较数据可以看出,虽然采用不同的分析系统,但是二者结果误差很小,基本相同,这就说明系统的硬件监测结果有相当的可靠性。 结语 以AD73360和ADSP2191M处理器为系统硬件核心,系统具有如下特点: |
(转载)