您好,欢迎来到微智科技网。
搜索
您的当前位置:首页基于FFT频谱仿真的研究与设计

基于FFT频谱仿真的研究与设计

来源:微智科技网
2011年第12期 中图分类号:TP391.9 文献标识码:A 文章编号:1009—2552(2011)12—0055—04 基于FFT频谱仿真的研究与设计 洪 涛 (中国石油大学(华东)规划建设处,青岛266555) 摘要:电力电子技术的关键知识点很多,电力电子技术的研究对象是功率处理和变换,电力 电子技术离不开表征电能的电压、电流、频率、波形和相位等若干基本参数的控制与转换,快 速傅里叶变换(简称FFr)是电工电子中计算离散傅里叶变换的一种重要的计算公式,提出了 一种计算算法,频域分析的编程中以FFT算法为基础,在对时域波形进行采样后,经过FF-I'处 理离散数据,最终得到相关量的振幅谱,并且对算法编程实现,仿真试验达到预期目的。 关键词:电力电子技术;FFr;仿真 Research and design of the simulation based on FFT spectrum HONG Tao (Planning and Construction Department,China University of Petroleum(East China),Qingdao 266555,Chi腿) Abstract:There many key points in the knowledge of he powert electronics technology,and the research objects of the power electronics technology are the power processing and transformation,thus the power electronics technology is inseparable from the characterization of electric voltage,current,frequency, waveform and phase of some basic parameters control and conversion,and the fast Fourier transform (F兀’)algorihm its designed to process the sampling in time domain and get the simulation waves in frequency domain.The paper proposes the kind of FFT which processes the sampling date in time.the related volume amplitude spectrum is got,and the simulation experiments have achieved the desired objectives. Key words:power electronics technology;fast Fourier transform;simulation 0 引言 电力电子技术通过利用功率半导体器件的开关 其重要的地位。 快速傅里叶变换(简称F丌)是电工电子中计 算离散傅里叶变换的一种重要的计算公式。通过在 时域上的取样得到频域周期性函数,利用离散傅里 叶级数变换得到频域里的周期函数,并计算出信号 的振幅谱、功率谱、相位谱等频域参数。实验过程中 可在示波器上观察各种不同线路在不同负载下的电 压、电流波形,但由于模拟实验装置的局限性及受实 作用的方式来控制电功率的流动,进而实现对电能 进行变换的技术。电力电子技术的用途非常之多, 无论是工业、还是在交通以及农业等各个领域,均有 应用 。 通常来说,电力电子技术的研究对象是功率处 理和变换。电力电子技术离不开表征电能的电压、 电流、频率、波形和相位等若干基本参数的控制与转 换,而电力电子技术能够对这些参数实现精确控制 与高效处理。电力电子技术是一门国内外新兴技 术,它是由电力学、电子学和控制理论三个学科交叉 而成的,已成为现代电气工程与自动化专业不可缺 少的一门专业基础课,在培养本专业人才中占有及 验室所用普通示波器观察波形时的,对某些特 殊的现象不能看得很清楚。对于电路的仿真,使用 Marlab或Pspice可以很好地满足要求,但是需要学 收稿日期:2011—07—12 作者简介:洪涛(1976一),男,工程师,工学硕士,研究方向为访问 控制、控制理论与控制工程。 一55— 生熟练地掌握软件的使用功能,在现阶段并不能保 证学生都会使用这些软件,因此在实际教学过程中, 如何让绝大多数学生能够通过计算机仿真来观察仿 真结果成为学习这门课程的一个瓶颈。利用Bor- land C++Builder 6.0面向对象的开发工具开发出 的这套教学软件可以弥补这个不足。本文余下部分 对傅里叶变换的原理进行分析和总结,并结合实况, 提出了相应的F丌算法,并编程实现,最后仿真试 验图样显示结果达到了预期目的。 l 周期离散时间信号的傅里叶变换 对信号进行频域分析,是为了了解信号在频域 中的特点,特别关注的是输出波形在整数倍基波频 率的幅值,即波形的振幅谱。当用数字计算机对信 号进行频谱分析时,输入信号是在时域中的离散值, 而计算机输出得到的频谱值自然也是离散的。在时 域上的取样得到频域周期性函数,可以利用离散傅 里叶级数变换得到频域里的周期函数,并计算出信 号的振幅谱、功率谱、相位谱等频域参数。快速傅里 叶变换 (简称FFT)是计算离散傅里叶变换的一 种快捷的途径,使总的运算次数大大减少 J。 设定周期为£ 的周期性连续时间信号 (t)的 傅里叶变换离散频率函数如下算式表述: 1 .+t.,/2 X(m11)=_1 I 。(£)・e邶d£ p 一tj2 两相邻谱线分量之间的角频率增量与周期£。之间 的关系 为: Q=2 ̄r/t =2耵F,其中,F=1/tp 非周期离散时间信号的傅里叶变换为: X( ): ( )・e 取样的角频率为11 =2.rr/T,取样的数字频率 为 =2叮T。 以数字频率∞为变量的 ( )被离散化时,其 变量 _5 则成为: =ko)1=k・2叮T/Ⅳ,其中,k=0,1,…,N一1。 定义 因子: =e1百,离散周期序列 (11,)的傅 里叶级数可写成: N一1 ,一 ( )= ( ) :‰:∑ (凡)・eIt,=0 -J = N一1 ∑ (凡)。一0  n =其中,k:0,1,…,Ⅳ一1。 公式中 ( ) 的周期为2盯,也就是说,X(k) 只有,v个不同的值,X(k)与 (/7,)都是以Ⅳ个取样 值为一个周期的周期性函数。上式就是离散傅里叶 一S6一 变换(DFq7)的定义。 离散傅里叶变换可以看成是连续函数在时 域 、频域取样构成的变换。只要取出 (n)的一个 周期,乘以相应的内插函数就可以恢复原连续函 数 J。对频域也可取出X(k)的一个周期,乘以相 应的内插函数,就可以恢复原连续的频率函数。 (n)及X(k)都是长度为Ⅳ的序列 J,都有,v个独 立的复值,因而具有的信息是等量的,离散傅里叶变 换可以看作是连续傅里叶变换的近似。 (n)及 X(k)都是有限长序列,便于计算机计算,这样对连 续函数的处理可以代之以离散取样 的处理,从而 得到频域离散函数值,进而进行函数的频域分析。 2 基2的时间抽取型FFT算法 快速傅里叶变换(FFr)是减少离散傅里叶变换 (DF'F)计算次数的一种快速有效的算法。这里使用 的是基2的时间抽取的FFT算法,即N=2 ,其中,n 为整数。 由DFT的定义 J, (n)是列长为J7v的输人序 列,把它按tl,的奇偶分为两个子序列: 『 (2r)= 1(r) 【 (2r+1)= 2(r) ^, 其中,r=0,1,…, 一1 二 则由DKr的定义式得: X(k)=DFT[( (/7,))]= N/2—1 N/2—1 ∑x(2r) +∑x(2r+1) ” = r 0 r 0 N/2—1 N/2—1 ∑ (r)( ) + ∑ (r)( ) r:U r=U 由于 =e一 舒。 =e一就= :,上式可表示为: N/2—1 N/2—1 ( )∑ 。(r) + ∑ :(r) := r=0 r=U X (k)+ (k) 式中, (k)及 (k)分别是 ( )及 (y)的N/2 点的DFT。考虑到 (r)、 (r)的列长为N/2,通过 上式得到的只是X(k)的前一半项数的结果,利用 系数的周期性,可以得到X(k)的后一半项数的 结果: N/2—1^‘/2 1 x(N/2+后)=∑ (r) :一 ∑ :(r) : r=U r=U (k)一 Xz( ) 通过这种方法,一个J7v点的DFT被分解成为两 个N/2点的DFT,两个N/2点的DFT又可以合成一 个Ⅳ点的DFT,这一步骤称为蝶形运算。进一步, 把一个N/2点的DFT分解成为两个N/4点的DFT, 两个N/4点的DFT又可以合成一个17/4点的DFT。 { 对于基2的N值,通过y=(10g:Ⅳ)次的分解后,最 终达到了N/2个两点DFT的运算。 这种方法,每一步分解都是按每级输入序列在 时间上的次序是属于偶数还是奇数来分解为两个更 t=X[i];X[i]=x[j];x[j]=t; t=Y[i];Y[i]=y[j];y[j]=t; } k=n/2; 短的子序列,被称为“按时间抽取法”。 考虑到FFr输入端 (n)与输出端X( )的次序 对应关系,在进行FFT变换之前还要先将时域采样 参数 (17,)整序。由自然顺序的序号n得到顺序二 进制数,将此二进制数以中间位为中心前后位进行 对调,得到反序二进制数,进一步转化成十进制数的 反序序号n。当 =It.时,存储单元的数据不必调 换,当n≠n时,必须将原来存放数据 (n)的存储单 元中调入数据 (凡),而将存放数据 (r1.)的存储单 元中调入数据 (n) 。】。 根据按时间抽取的FFT算法原理,FFT的每级 计算都是由Ⅳ个复数经N/2个蝶形运算变成了另 外Ⅳ个复数。每一蝶形运算结构完成下述基本迭 代运算: A (i)=A 一1(i)+A 一1( ) A ( )=A 一 (i)-A 一。(_『) 以上数据都是复数,在实际运算中,要用两个数 组分别存放实部和虚部,然后根据上式完成与复数 直接运算相同的蝶形运算。 3 基2的FFT算法核心实现算法 3.1核心算法 接口参数说明: ]数组存放离散数据序列实部,在输出时用 于存放离散傅里叶变换后的实部数据, y[]数组存放离散数据序列虚部,在输出时用 于存放离散傅里叶变换后的虚部数据。 凡为基2的离散数据序列长度 函数的调用格式: FF]r.-tRadix2(double¥X,double Y,int n) 以下是程序源代码: voidfastcall TfrrnFigure::FFr一一—tRadix2(double,Ic x,double Y,int 13) { int i,iO,il,j,11,ns,k; double s,c,sl,cl,SC,xl,yl,t; sc=PI: j=0; for(i=0;i<n一1;++i) { if(i<=i) while(k<=j) { j一=k;k/:2; } J+=k: } //整序结束 ns=1; while(ns<=n/2) { cl=COS(SC);sl:sin(f sc); c=1.0;s=0.0; for(11=0;11<ns;++l1) { for(i0=11;i0<n;i0+=2 ns、 { il=i0+ns: xl=X[il] c—Y[il] s;yl=Y [il] C+X[il] S; X[il]=x[i0]一xl;y[il]=Y[i0] 一yl; X[i0]+=xl;Y[i0]+=yl; } t=el C—s1 S: S=sl,IE c+e1 S: C=t: } ns =2;se/=2.0; } } 3.2核心算法 为了了解信号的特点,频谱分析是一项十分重 要的工作,在电力电子电路中,由于电路中的输入信 号绝大部分都是50Hz的工频信号,更应该关注的 是以50Hz为基波的振幅和基波的整数倍频率上的 振幅。因此,利用FFT对波形作振幅谱分析时也要 立足于这一点进行分析。 对连续时间信号 (t)(t≥0)进行频谱分析,实 际上是对长度为N=2 的离散信号 (nA),n=0, 1,…,Ⅳ一1,进行频谱分析。因此,频谱分析中参数 一57— △和Ⅳ的选取很重要。对连续信号 (t),用两个参 数来刻画其频谱的特点: 一 (t)的截止频率, 一 (t)的频率分辨间隔。根据抽样定理,要求△满 足: 。由离散傅里叶变换知,有限离散频谱的 频率间隔为: ,因此要求N……一Ⅳl ≤ 。 这里,取频率分辨间隔 =2Hz,截频 = 500Hz,要求抽样间隔△≤ 1 芝_ 丽s=lms,抽样 点数, ≥ 1 =500。实际取样中,为了得到频 域的频率间隔为2Hz,对时域信号在500ms时间段 上取Ⅳ=2048>500个点,△= mS 0.244ms< Ims,只需要在频域中显示前250个采样点的振幅 谱就可以满足频谱分析的需要了。 3.3参数设定 通过时域的仿真,得到波形的稳态值,这些数值 作为离散信号存储在数组中,从500ms时间段上取 N=2048=2“个点进行分析。由于FFr的输入量是 复值,因此截取的信号值 (凡△)作为实部,虚部赋 值为0。通过以下语句实现取样的: for(int i_0;i<n;i++) { int ii; ii:(i,lc25)%2000; //利用仿真结果存储的周期性取样 X[i]=P[ii].Y; //p[].Y存放的是每周期2000点的时域信号 Y[i]=0.0; } 获得振幅谱: 对时域离散信号作FFr计算频谱 (m),得到 Ⅳ个频谱值, (m)是由实部 和虚部 组成的 复数, (m)=U + ,m=0,1,…,N一1,表示对应 于频率, (^『△)的频谱值。求得振幅谱: A =l (m)I= ̄/ + 。 由于在信号中往往含有干扰成分,使振幅谱极 不平滑,因此常要作平滑处理。平滑因子P 通常 取5个点, =(P P P。,P ,P:),(寺,吾,吾,吾,告) 2 平滑后振幅谱为: =P A =∑P=一2 A 平滑处理程序如下: 一58一 f0r(i-0;i<250;++i) ,共取250 { ampm=0.0; if(i<2) { f0.r(intji=0;ji<=4;ji++) //前两点平滑值要利用 ampm+=qq[ji] am[n+i—ji+2]; //X(m)的周期性获得 } else { f0r(int ji=0 <=4;ji++) //乘以平滑因子qq[ji] ampm+=qq[ji]¥am[i—ji+2]; } } 3.4仿真 建立以J ∽J为纵轴,频率 为横轴的坐标系, 为了便于分析应用,横轴以50Hz工频为单位,将各 个点的振幅利用曲线连接起来,得到相应波形的振 幅谱图。图1为单相双半波有源逆变电路输出电压 的频谱图,图2为三相半波可控整流电路输出电压 的频谱图,图3为三相桥式全控整流电路输出电压 的频谱图。 图1 单相双半波有源逆变电路输出电压频谱图 图2三相半波可控整流电路输出电压频谱图 图3 三相桥式不可控整流电路输出电压频谱图 (下转第62页) 型WDM(Windows Driver Mode1)的,它采用分层驱 DSP处理过的数据流,然后根据项目的具体要求来 完成各种基于Windows程序的处理(分析、存储、显 示等)。本系统采用VC++来编制应用程序,同串 口编程类似。首先必须查找设备,调用Win32函数 动程序模型,由USB总线驱动程序和USB功能驱动 程序两部分组成,总线驱动程序由操作系统提供,用 来处理USB的硬件,用户应用程序并不直接与硬件 打交道,而是给设备驱动程序发I/O请求包(IRP)。 用户只需要编写相应的功能驱动程序。 USB设备功能驱动是应用程序和硬件之间的接 口,起着承上启下的作用。CY7C68001套件包括 CY7C68001芯片和主机PC端的CY7C68001驱动 程序。在DSP端,CY7C68001芯片用固件程序处理 USB通讯中的基本事务;在主机Pc端,驱动程序以 及动态链接库等软件向PC机应用层提供API函数 供应用程序使用。USB驱动程序主要完成以下 功能: (1)发现、配置、关闭USB设备。通过一系列有 关即插即用(Plug and Play)的派遣函数来完成。例 如Ezusb—PnPAddDevice(),Ezusb—DispatchPnp()等 函数。 CreateFile()打开设备的句柄;然后调用Win32函数 DeviceControl()进行数据读写和控制操作;最后关 闭设备句柄。 3 结束语 本文介绍了以TMS320VC5502 DSP为核心处理 器,由ADC芯片ADS8341和USB控制器芯片 CY7C68001构成的数据采集与传输系统的硬件接 口设计和软件编程思想。多通道缓冲串口MCBSP0 的应用,使DSP片上资源的利用率有了较大提高, 也使得数据采集更加流畅;DMA控制器控制数据采 集的方式,可以使DSP专心于数据处理的工作,使 (2)驱动程序与应用函数的接口。像Ezusb— Creat(),Ezusb—Close()等函数。应用程序调用 EzusbCreate()后,返回惟一的Windows句柄后,才 能调用驱动程序的其他函数,完成驱动程序对 CY7C68001的一系列操作和数据传送。应用程序 通过调用函数CreateFile()来实现对Ezusb—Create —其核心处理单元的运算能力得以发挥;加上与传统 串口传输有较大提升的USB口传输,使得数据传输 率和实时性都有了较大幅度的改善,并获得了当下 计算机接口更为广泛的支持。该系统具有较高的采 样精度和采样速率,同时功耗低、实时性好、数据传 输速率快,具有广泛的应用前景。 参考文献: [1]TMS320C55x DSP Peripherals Reference Guide[z].Texas Instru— ments,2001. ()的访问。 [2 2 TMS320VC5502 Fixed—Point D ̄gital Signal Processor[z].Texas Instruments Incorporatd,e2004. (3)控制与数据传送接口。这是驱动程序的主 要部分。它是Windows的异步I/O操作。应用程序 使用标准Win32API函数DevieeloControl()来执行 这样的操作。在驱动一方,这个DeviceloControl() 调用被转化成一个带IRP—MJ—DEVICE—CONTROL 功能码的IRP。像读取与写入FIFO数据、endpointO 的操作均是通过异步I/O的方式来完成的。 2.2.3主机端应用程序 主机应用程序的主要任务是从USB口接收被 (上接第58页) [3]TMS320C55x Chip Support Library API Reference Guide[z].Tex— as Instruments,2004. E43邓玖根,张正荣,胡松。等.基于DDK的USB接口WDM驱动开 发[J].计算机技术与发展,2008. [5]马伟.计算机USB系统原理及其主/从机设计[M].北京航空航 天大学出版社,2004. [6]李强.基于USB2.0的高速数据采集系统研究[J].计算机应用 技术,2004. 责任编辑:张禹 [3]俞卞章.数字信号处理[M].西安:西北工业大学出版社,1994: 1O一25. 4 结束语 本文分析和总结了FfTr频谱仿真方法,给出了 F丌频谱仿的仿真设计,给出了仿真的公式,最后结 合实例给出了仿真的波形图,试验效果显示本设计 能够直观显示模拟电路的特征变量的波形,具有较 高的可用性,达到了预期目的。 参考文献: [1]孙鹤旭,迟岩.电力电子系统计算机仿真和辅助分析[M].哈尔 滨:哈尔滨工程大学出版社,1994:19—25. [4]王平庆.用c语言实现数值计算方法及程序实例[M].北京:人 民邮电出版社,1999:238—242. [5]胡广书.数字信号处理:理论、算法与实现[M].北京:清华大学 出版社,2003:8—25. [6]李素芝,等.时域离散信号处理[M].长沙:国防科技大学出版 社,1999:35—48. [7]程乾生.数字信号处理[M].北京:北京大学出版社,2003:25— 34. [8]张加胜.交流调速系统[M].山东:石油大学(华东)出版社, 1999:48—54. [2]王世一.数字信号处理[M].北京:北京理工大学出版社,2001: l25一l34 一[9]林辉,王辉,等.电力电子技术[M].武汉:武汉理:L大学出版 社,2003:160—163. 责任编辑:张禹 62一 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务