新闻中心
你的位置:主页 > 新闻中心 >

基于Xilinx FPGA 实现FFT算法的电力谐波检测的设计

作者:ag8亚洲游戏 发布时间:2020-03-10 18:32 点击:

  基于FFT算法的电力系统谐波检测装置,大多采用DSP芯片设计。DSP芯片是采用哈佛结构设计的一种CPU,运算能力很强,速度很快;但是其顺序执行的模式限制了其进行FFT运算的速度。而现场可编程逻辑门阵列(Field Programmable Gate Array, FPGA)在近年来获得了突飞猛进的发展,目前已成为实现数字系统的主流平台之一。与DSP相比,FPGA最大的优势就是可以进行并行计算。在进行FFT这类并行运算为主的算法时,采用FPGA的优势不言而喻。用FPGA实现FFT算法进行谐波检测成为了一大热点。

  以往FPGA的设计主要依靠硬件描述语言来完成。Xilinx公司推出了专门针对实现DSP的设计软件System Generator。在使用FPGA为原型平台运行算法时,它不仅能够对硬件的真实情况进行仿真,还能够自动生成硬件实现所需要的硬件描述语言代码。与语言设计相比,使用System Generator有三大优势:第一,图形化操作,简单易用;第二,实现的算法能确保与仿真结果相符;第三,无需为仿真和实现建立不同的模型。因此,利用System Generator可以大幅度减少用FPGA设计DSP的工作量,缩短开发周期[1,2]。

  (1)采样电路部分:包括互感器及滤波电路、锁相倍频电路和A/D转换电路。

  待测电压、电流信号经互感器调理电路转化成便于采样的低压信号,经滤波器滤除检测范围外的高次谐波、高频干扰信号和噪声;然后进入A/D转换电路,电压、电流的模拟信号转换成可以用于计算的数字信号。锁相倍频电路用于跟踪待测信号的频率变化,以实现对信号的整周期采样。

  (2)如图1所示,虚线框内部分由FPGA实现。最主要部分就是控制单元和FFT模块。控制单元主要由状态机的形式实现,当接收到锁相倍频电路送来的倍频信号时,驱动A/D转换器进行采样。A/D转换器完成一次采样,先将数据送入到FIFO模块暂存,当数据达到进行FFT计算所需点数后,状态机控制FIFO模块将数据送入FFT模块进行计算。为保证数据由A/D转换电路进入FPGA时的同步,A/D转换电路中的时钟由FPGA对开发板上的时钟分频后提供。

  FPGA部分采用模块化的设计方法。在Simulink环境下搭建仿线所示。模型的核心部分是FFT计算模块(FFT v4_1),围绕它设计了数据输入子系统data_in、数据输出子系统(data_out)和控制单元模块(st_ctr)。用simulink中的信号模块模拟出电压u(t)、电流信号i(t),考虑到后续数据输出控制的设计,预留了中断信号输入INT(signal 3),为便于仿真,其间隔时间与采样时间同步。数据输入子系统主要用于对采样数据的转换和暂存, 数据输入子系统的主要包括scale模块、convert模块和FIFO模块。数据输出子系统用于对FFT计算所得的结果进行处理,计算出电压、电流基波及各次谐波的幅值和相位。

  然后,搭建三相的电压、电流谐波检测模型(图3),其中包括了控制模块(ST_MA、da_out_ctr)和三个子系统A、B、C,每个子系统内均有一个单相谐波检测模型。控制模块ST_MA实现对整个模型运行时序的控制以及对硬件采样电路的控制;da_out_ctr用于控制数据的输出。

  如图4所示,系统硬件由两大部分组成,分别是虚线框内的采样电路部分和开发板部分[6-7]。本文采用的Spartan-3A DSP 入门级开发板是Xilinx公司出品的基于Spartan-3A DSP FPGA设计的一个开发平台。采样电路实现对三相电压、电流的整周期同步采样,其设计尺寸与Spartan-3A DSP开发板相同,通过EXP接口实现与开发板的通信。它包括:电压、电流互感器、调理电路、低通滤波电路、锁相倍频电路、AD转换器及电平转换电路。

  由于实验条件所限,本文采用的是单相220V的市电为检测对象。接入额定电压220V,标称功率800W的电加热器为负载。首先用FLUKE434型电能质量分析仪检测出该负载上的电压、电流的各次谐波参数,如表1所列,其电压总谐波畸变率THDV=4.9%,电流总谐波畸变率THDI=4.8%。

  经采样后得到的数字信号量在0~5V之间,依照给定参数分别乘系数J、K,利用Simulink中模块生成一组表征电压、电流的数字信号作为系统的输入信号。如图5所示。

  将FFT模块中的采样点数分别设置成为128、256、512、1024,并设置相应的采样频率,然后运行硬件联合仿真模型;将计算结果再乘系数1/J、1/K,得到表2~表5所示结果。

  由各表中可以看出,计算出的幅值以及根据幅值计算所得总谐波畸变率的误差都比较小。随着采样点数的增加,计算所得基波和较低次数的谐波幅值的误差和总谐波畸变率的误差并没有明显减小,而次数较高的谐波误差减小较明显。究其原因,N点FFT计算可以分解出0~N/2-1次谐波,N=128时就可以分解出63次以内的谐波了。而对于次数较高的谐波,采样点数的增加对其幅值误差的改善还是比较明显的。硬件实现时,在计算精度满足要求的情况下,考虑到实时性的要求,可选用256点FFT进行计算。

  此外,计算所得相位出现了很大的偏差;原本设想通过改变待测信号参数,分析仿真结果来推导出相位偏差的规律,但是随着数值的改变,相位偏差规律并不明显,并未达到预期目的。然而,在改变信号参数的分析过程中发现,相位的改变对谐波幅值和总谐波畸变率的计算并没有太大影响,计算精度基本满足要求。因此,实际硬件实现时,舍弃掉相位计算,只计算出各次谐波的幅值及总谐波畸变率。

ag8亚洲游戏