摘 要
本文提出了如何利用计算机来分析电力系统中存在的谐波的方法。电力系统中的谐波危害十分严重,能使电能的利用效率降低,烧毁设备,对通信系统也会产生严重的干扰,因此准确分析电力系统中的谐波信号变的十分必要。
本文论述了采用LABVIEW软件分析电力系统中谐波信号的方法,实时显示谐波的时域信号,频域信号,经过滤波后的时域信号及频域信号。
本文重点研究信号傅里叶变换;各种滤波器的性能,及对谐波信号的影响。通过如何使用计算机来实现快速傅里叶变换和设计IIR及FIR滤波器来加深对信号分析过程的理解。
本文主要利用LABVIEW软件对信号进行时域及频域分析,用C语言来实现信号的傅里叶变换,和滤波器的设计,并通过matlab来验证C语言实现的傅里叶变换和滤波器的结果。
关键词:电力谐波;快速傅里叶; 滤波器设计
I
ABSTRACT
This paper puts forward how to use computer to analysis the harmonic existing in the electric power system The power system harmonic wave is severe, can make the electric energy efficiency in the use of equipment to reduce, burned, communication system can also have serious interference, so accurate analysis of the power system harmonic signal is very necessary.
This paper discusses the method how to analysis the harmonic signal existing in the power system ,display the time domain signal ,the frequency domain signal and the ones being processed by filter using the labview software.
This paper focuses on Fourier transform, the performance of some kinds of filters and the influence on the harmonic signal. Through how to use computer to realize fast Fourier transform and design IIR and FIR filters to deepen the understanding of signal analysis process.
This paper mainly uses the labview software to analysis signal in time domain and frequence domain. Using the C language to design the Fourier transform and the filters. Through the matlab to verify the results of the Fourier transform and the filters designed by C language.
Keywords: Power harmonic; Fast Fourier transform; Filter designing
II
河南工大学毕业设计(论文)说明书
目 录
1 绪论 ............................................................................................................. 1
1.1 选题意义 .......................................................................................... 1 1.2 电力谐波及其危害 .......................................................................... 2 1.3 研究内容 .......................................................................................... 2 2 快速傅里叶变换及实现 ............................................................................. 4 2.1 傅里叶变换的推导 .......................................................................... 4 2.2 序列的傅里叶变换 .......................................................................... 6
2.2.1信号的理想抽样 .................................................................... 6 2.2.2 序列傅里叶变换公式推导 ................................................... 8 2.3 离散傅里叶变换 .............................................................................. 9 2.4 快速傅里叶算法及实现 ................................................................ 10 3 滤波器设计及实现 ................................................................................... 14
3.1 IIR 滤波器的设计及MATLAB仿真 ........................................... 14 3.2 FIR 滤波器的设计及MATLAB仿真 .......................................... 19 4 LABVIEW谐波分析软件 ......................................................................... 22
4.1 系统总图 ........................................................................................ 22 4.2 信号生成模块 ................................................................................ 22 4.3 滤波模块 ........................................................................................ 25
4.3.1 IIR Filter模块 ...................................................................... 26 4.3.2 FIR Filter模块 ..................................................................... 27 4.4 Fourier 变换模块 ........................................................................... 30 4.5 系统调试 ........................................................................................ 31 总结 ............................................................................................................... 32 致 谢 ........................................................................................................... 33 参考文献 ....................................................................................................... 34 附 录 ........................................................................................................... 35
- 1 -
河南工大学毕业设计(论文)说明书
1 绪论
1.1 选题意义
随着科学技术的发展,各种电子产品在电力系统中得到大量应用,特别是各种非线性负载包括可控整流传动装置及高压直流输电系统的投入,以及各种电力电子装置在电力系统工业、交通、及家庭中的应用日益广泛,理想电力系统的近似程度变差,直接表现是电网中的电压和电流波形产生周期性畸变。电网中除了与供电电源同频率的正弦量(称为基波分量)以外,还出现了一系列大于基波频率整倍数的正弦波分量(高次谐波分量)。这一系列正弦分量统称为电力谐波。当电网中存在的谐波成分超过一定指标,轻者增加能耗,缩短设备运行寿命,重则造成电事故,直接影响安全生产。所以对电网中谐波含量准确的测量,确切掌握电网中谐波的实际状况,对于防止谐波危害、维护电网的安全运行是十分必要的。
LABVIEW是实验室虚拟仪器集成环境(Laboratory Virtual In-strument Engineering Workbench)开发平台的简称,是由美国 Na-tional Instruments (NI)公司开发的一种以数据流驱动的图形化(Graphics)编程语言替代文本编程语言创建应用程序的开发工具,这种编程强调信号处理的过程,编程简单,调试方便, 其外观和操作方式也与诸如示波器、万用表等实际物理仪器相仿,使用者操作这台计算机,就像是在操纵一台自己专门设计的传统电子仪器。因此被广泛应用于电子、通信、生物医学、机械等众多学科领域。
用 LABVIEW编制出的图形化 VI是分层次和模块化的。可以将之用于顶层程序,也可用作其他程序或子程序的子程序。一个VI用在其它VI中,称之为sub VI,sub VI在调用它的程序中同样是以一个图标的形式出现的;为了区分各个sub VI,它们的图标是可编辑的。LABVIEW依附并发展了模块化程序设计的概念。用户可以把一个应用任务分解成为系列的任务,每个子任务还以分解成许多更低级的子任务,直到把一个复杂的问题分解成为许
1
河南工大学毕业设计(论文)说明书
多子任务的组合。首先设计sub VI完成每个任务,然后将之逐步组合成为能够解决最终问题的VI。图形化的程序设计编程简单、直观、开发效率高。随着虚拟仪器技术的不断发展,图形化的编程语言必将成为测试和控制领域内敲有前途的发展方向。
1.2 电力谐波及其危害
电网谐波一般有三种来源:
(1) 是发电源质量不高产生谐波,发电机由于三相绕组在制作上很难做到绝对对称,铁心也很难做到绝对均匀一致和其他一些原因,电源多少也会产生一些谐波,但一般来说很少。
(2) 是输配电系统产生谐波,输配电系统中主要是电力变压器产生谐波,由于变压器铁心的饱和,磁化曲线的非线性,加上设计变压器时考虑经济性,其工作磁密选择在磁化曲线的近饱和段上,这样就使得磁化电流呈尖顶波形,因而含有奇次谐波。
(3) 是用电设备产生的谐波,晶闸管整理设备,变频装置,电弧炉,还有家用电器如电视机,计算机,等因有调压整流装置也会产生谐波。
谐波的危害十分严重。谐波使电能的生产、传输和利用的效率降低,使电气设备过热、产生振动和噪声,并使绝缘老化,使用寿命缩短,甚至发生故障或烧毁。谐波可引起电力系统局部并联谐振或串联谐振,使谐波含量放大,造成电容器等设备烧毁。谐波还会引起继电保护和自动装置误动作,使电能计量出现混乱。对于电力系统外部,谐波对通信设备和电子设备会产生严重干扰。因此对电网中谐波含量准确的测量,确切掌握电网中谐波的实际状况,对于防止谐波危害、维护电网的安全运行是十分必要的。
1.3 研究内容
本文研究重点可分为两个方面:理论分析和Labview软件设计。在理论分析方面重点研究了从傅里叶级数到快速傅里叶变换这一详细过程,将连续
2
河南工大学毕业设计(论文)说明书
变为离散,将时域化为频域。并且对有限长滤波器和无线长滤波器作了一定的分析,用C语言编写程序计算出公式,然后用matlab分析滤波器的频域特性。Labview软件设计方面,本文用labview软件设计了一个教学演示程序。程序分为信号产生模块,滤波器模块,FFT模块。流程是将两个周期信号叠加分别经过IIR滤波器和FIR滤波器,最后分别进行FFT分析。此Labview系统软件的目的是验证各种滤波器的性能,对FFT有更好的理解,加深对基础知识的掌握。
3
河南工大学毕业设计(论文)说明书
2 快速傅里叶变换及实现
计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。正是由于FFT的出现,使信号的频域分析不再只停留在纯粹的数学公式上,更使在硬件上的实现变为了一种可能,从而在实际工程中得到了广泛的应用,下面将开始分析如何将时域的信号转变到频域中去。
2.1 傅里叶变换的推导
在高等数学中学过傅里叶级数,可知任一信号都能分解为正弦分量和余弦分量,公式如下:
f(x)aa20n1ncos(nw1t)bnsin(nw1t)
(2-1)
其中:
2T2a0T2Tf(t)dt
2Tan2Tf(t)cos(nw1t)dt
T22T2bnTT2f(t)sin(nw1t)dt
(1)指数形式的傅里叶级数推导: 由欧拉公式可得:
1jnw1tjnwt(ee1)21jnwtjnwtsin(nw1t)(e1e1)2j cos(nw1t)
4
河南工大学毕业设计(论文)说明书
将上式代入①式整理可得:
a0anjbnjnw1tanjbnjnw1tf(t)()e()e2n122
(2-2)
F(nw1)anjbnajbnaF(nw1)nF(0)0222 ,,
则(2-2)式可化简为
f(t)nFnejnw1t (2-3)
(2)傅里叶变换推导:
ajbn而 F(nw1)n
212T22T2=(Tf(t)cos(nw1t)dt-jTf(t)sin(nw1t)dt) 2T2T21T2=Tf(t)(cos(nw1t)-jsin(nw1t))dt T21T2jnwt=Tf(t)e1dt T2则
T21jnwt2*F(nw1)=Tf(t)e1dt ,T=
2w1T令 T,w1=
20 则nw1w 可推出: TF(w)f(t)ejwtdt (2-4)
而 f(t)所以:
F(nw1)jnw1tw1,w1dw
w1eF(nw1)jwtf(t)dw e2=
12F(w)edw
jwt(2-5)
(2-4)和(2-5)两式就是傅里叶正反变换公式。
f(t)就是我们最熟悉的时域信号,是以t为横轴,f(t)为纵轴的信号。
而F(w)就是频域信号,是以w为横轴,F(w)为纵轴的信号。
5
河南工大学毕业设计(论文)说明书
如果f(t)为连续周期信号,由傅里叶级数可知,f(t)可以分解为有限个正弦和余弦信号的叠加,则F(w)一定是离散的信号。
如果f(t)为非周期连续的信号,由傅里叶变换可知,F(w)一定也是是非周期连续的频谱信号。
下面所有研究都集中在如何将(2-4)和(2-5)两式子离散化而进行的。离散化的顺序是先时域离散,后频域离散。
2.2 序列的傅里叶变换
时域信号的离散是靠抽样来实现的,抽样就是利用周期性抽样脉冲序列从连续信号中抽取一系列的离散值,得到抽样信号即离散时间信号。抽样器可以看成是一个电子开关,开关每隔T秒闭合一次。下面我们来分析信号被抽样后其频谱将如何变化。
2.2.1信号的理想抽样
输入信号:
x(t)
am抽样序列: T(t)=
(tmT) a理想抽样输出: a(t)(t)(tmT)
m将上述三式进行傅里叶变换:
XTa(j)FT[xa(t)]
(j)FT[T(t)]
aˆXˆa(t)] (j)FT[x其中,FT表示信号的傅里叶变换
将T(t)表示成复数形式的傅里叶级数:
6
河南工大学毕业设计(论文)说明书
1jkst2T(t)e,s
TkT则
T(j)FT[T(t)]
1jkst=FT[e]
Tk2=Tk(k)
s则
ˆX
aˆa(t)] (j)FT[x =FT[
mx(t)(tmT)]
a
12[=
2Tk(k)Xsa(j)]
1=Xa(j)(ks)d Tk
1=Xa(jjks) Tk由此看出,一个连续时间信号经过理想抽样后,其频谱将以抽样频率s为间隔而重复出现,这就是频谱产生周期延拓的现象。
为了方便以后的讨论,在这里我们引入数字频率w,它和模拟频率的关系为:
wTf2 fsfs可以看出,数字频率是模拟角频率对抽样频率的归一化值。
7
河南工大学毕业设计(论文)说明书
2.2.2 序列傅里叶变换公式推导
由上一小节我们抽样得到了序列x(n),下面我们将对其进行傅里叶分析。
首先我们定义序列x(n)的傅里叶变换为:
X(e)DTFT[x(n)]jwnx(n)ejwn
DTFT表示离散时间傅里叶变换。
由于时域是离散的,故频域一定是周期的。可以从下式看出
ejwnej(w2)nejwn
是以2为周期的正交周期性函数,所以
X(e)jwjw也是以2为周期的
周期性函数。又由于时域x(n)是非周期的,则频域X(e)一定是以w为变量的连续函数。
下面我们来推导反变换公式。由于X(e)是连续函数,我们直接利用傅里叶反变换:
12jwX(e)ejwjwm1dw2(x(n)ejwn)ejwmdw
1 =x(n)[2nejw(mn)dw]
=
nx(n)(mn)
=x(m)
jwjwn将上式中的m换成n,有
1x(n)2X(e)edw
由以上讨论我们得到了序列的傅里叶变换公式,将一个时域连续信号抽样得到抽样序列x(n),然后求其离散傅里叶变换,进行频谱分析。得到的
8
河南工大学毕业设计(论文)说明书
ˆXa(j)将是
1•Xa(j)以s为周期延拓的频域信号。 T序列的离散是使时间离散,频率连续,但是这还不适于在计算机上实现,我们希望时域和频域都是离散的,下面我们将讨论如何将连续频域离散化。
2.3 离散傅里叶变换
由上节讨论我们得到了序列x(n)的正反傅里叶变换对,如下:
X(e)jwnx(n)ejwjwn
1x(n)2X(e)edw
jwn为了计算方便我们将数字频率w换为模拟频率,关系为w=T,T为抽样时间间隔,抽样频率为fs12,角频率为s代入上式: TsTjTX(e)nx(nT)eX(ejTjTn
1x(nT)ss2s2)ejnTd
令k0,则d0,代入上式:
X(ejk0T)x(nT)en0N1jk0Tn
x(nT)0sX(ek0N1jk0T)ejnk0T1=NX(ek0N1jk0T)ejnk0T
又 0T202 代入上式得 sNN1n0jk2nN正变换 X(k)x(n)e
9
河南工大学毕业设计(论文)说明书
1反变换 x(n)NX(k)ek0N1j2nkN
此时时域和频域都是周期性离散信号了。
2.4 快速傅里叶算法及实现
从以上的分析我们得出了离散傅里叶变换的公式,下面我们将重点研究如何改进其运算,使其能够用硬件实现,这就是快速傅里叶变换FFT。
为了表达方便,我们引入符号:
WNej2N
将上一节中的正反变换化简为:
X(k)x(n)WNn01 x(n)NN1n0N1nk
nkX(k)WN
上面两个式子差别只在于WN的指数符号不同,以及差一个常数乘因子,因而下面我只讨论正变换。
按时间抽选的基-2 FFT算法原理:
先设序列的点数为N2L,L为整数。如果不满足这个条件,可以认为地加上若干零值点,使之达到这一要求。
将N2L的序列x(n)先按n的奇偶分成以下两组:
x(2r)x1(r)x(2r1)x2(r)则将DFT化为
,r0,1,,N1 2X(k)x(n)WNn0N1nkn0n为偶数N12N1x(n)W+x(n)WNNn0n为奇数N122rknkN1nk
=x(2r)WNr010
x(2r+1)WNr0(2r1)k
河南工大学毕业设计(论文)说明书
k=x1(r)(W2)WNx2(r)(W2)
NNr0r0N12rkN12rk利用系数的可约性,即W2NN12rkWNN122,上式可表达为:
rkkk X(k)x1(r)(W2)WNx2(r)(W2)X1(k)WNX2(k)(2-6)
NNr0r0中X1(k)与X2(k)分别是x1(r)及x2(r)的N2点DFT:
X1(k)x1(r)WN2
r0N12rkX2(k)x2(r)WN2
r0N12rk(2-6)式只得到的是X(k)的前一半项数的结果,要用X1(k)与X2(k)式来表达全部X(k)值,还要用到系数的周期性,即
r(kN)2W这样可得到
rkN2WN2
X1(Nk)x1(r)W2r0N12Nr(k)2N2x1(r)WN2X1(k)
r0N12rk同理可得:
X2(Nk)X2(k) 2又由于
W前半部分X(k)
r(kNN)2WNN2WkNWN
kX(k)X1(k)WNX2(k) k0,1,后半部分
kN1 2
11
河南工大学毕业设计(论文)说明书
NNNN(k)X(k)X1(k)WN2X2(k)
222=X1(k)WNX2(k)
k0,1,N12
k用蝶形信号流图符号表示:
X1(k)X2(k)X1(k)WNX2(k)kWkN1X1(k)WNX2(k)
k图2-1选法蝶形运算
采用这种方法,并依次分解下去最后两个输入组成一个蝶形算法,下图为N=8的情况
图2-2 按时间抽选法 FFT运算流图
倒序算法:
由上图看出,按原位计算时,FFT的输出X(k)是按照正常顺序排列在存
12
河南工大学毕业设计(论文)说明书
储单元中的,但是这时的输入x(n)却不是按自然顺序存储的,而是俺看起来好像是“混乱无序”的,实际上是有规律才,我们称之为倒位序。造成倒位序的原因是输入x(n)按标号n的奇偶不断分组。如下图,我们必须先将输入按照这个规律,调整顺序。
n00n10n201010101x(000)x(100)x(010)x(110)x(001)x(101)x(011)x(111)1x(n2,n1,n0)011
图2-3位序的树状图
W乘上2rN的确定:
r的求解方法如下:蝶形运算两节点中的第一个节点标号值,即K值,
LM,M为第M级运算,L为总级数。
由以上分析,我们用C语言来实现,程徐流程图如下图3-4所示。
输入序列倒位序算法第m级蝶形算法此级第n次蝶形算法n=n+1nN2mmLm=m+1序列输出N2L
图2-4 基-2按时间抽选 FFT流程图
13
河南工大学毕业设计(论文)说明书
3 滤波器设计及实现
滤波器按所处理的信号可分为模拟滤波器和数字滤波器。按所通过信号的频段可分为:低通﹑高通﹑带通﹑带阻滤波器。
本章我们所讨论的是数字滤波器,数字滤波器也有低通﹑高通﹑带通﹑带阻滤波器四种形式。而后三种滤波器可以通过低通滤波器数学变换得到,所以我们重点讨论数字低通滤波器的实现。而数字滤波器按实现形式不同可分为无限长单位冲激响应(IIR)滤波器和有限长单位冲激响应(FIR)滤波器,下面分别介绍,并实现。
3.1 IIR 滤波器的设计及MATLAB仿真
无限长滤波器有以下几个特点: (1) (2) (3)
系统的单位冲激响应是无限长的; 系统函数在有限z平面上有极点; 结构上存在着输出到输入的反馈;
其实现形式有四种:直接I型﹑直接II行﹑级联型和并联型四种。实现时我们多用级联型,下面只对其介绍。
数字滤波器的系统函数可以分解为以下形式:
11kz12kz2H(z)AAHk(z) 122kzk11kzk其级联结构如下图4-1所示。
x[k]A11y[k]z1z111211L2Lz1z11L2L
21图3-1 级联IIR结构网络
14
河南工大学毕业设计(论文)说明书
级联的特点是调整系数就能单独调整滤波器的零极点,而不影响其他零极点,所以这种结构便于准确实现滤波器零极点和调整滤波器频率响应的性能。
数字滤波器往往是由模拟滤波器离散化得来的,利用模拟滤波器设计数字滤波器步骤如下:
(1) 将给定的数字滤波器的性能指标,按某一变换转换成相应的模拟滤波器的性能指标。
(2) 如果要设计的不是数字低通滤波器,则还需要将(1)中变换得到的相应的高通﹑带通﹑带阻模拟滤波器性能指标变换成模拟滤波器的性能指标。 (3) 用所得到的模拟低通滤波器的性能能指标,利用某种模拟滤波器的逼近方法,设计查表求得此模拟低通滤波器的系统函数,以它作为设计数字滤波器的“样本”。
(4) 利用与步骤(1) ﹑(2)中的变换规则,将此作为“样本”的模拟原型低通滤波器的系统函数最终变换成所需的数字各型滤波器的系统函数。
模拟原型滤波器的设计有多种方法,例如巴特沃兹滤波器,切比雪夫滤波器等等。这里我们选用巴特沃兹滤波器。将模拟滤波器变换成数字滤波器有以下方法:冲激响应不变法﹑阶跃响应不变法﹑双线性变换法。
本节将利用巴特沃兹,双线性变换来设计一个低通数字滤波器: (1) 由所给指标,求得最低巴特沃兹低通滤波器的阶数N; (2) 由N值求系统极点,将系统函数表示成级联形式; (3) 利用双线性变换,查表得到数字滤波器的系统函数; (4) 用matlab来验证所得到的数字滤波器系统函数的正确性; N为偶数时,巴特沃兹系统函数可表示如下:
22cHa(s)Hk(s)
2k122k1s2ccos()sck122N2NN为奇数时,巴特沃兹系统函数可表示如下:
15
河南工大学毕业设计(论文)说明书
2c1212Ha(s)Hk(s)
s1k1s22cos(2k1)s2s1k1cc22N1N1将以上两式进行双线性变换时有两种情况:
一阶系统的变换:因为此式一阶系统较为固定,且只在N为奇数时才出现,其双线性变换为:
1z1 1(1c)z(1c)二阶系统的变换:因为上面两式大部分都可表示为二阶系统级联的形式,这种形式也利于编程实现,且二阶系统的双线性变换可以查表,可以将表示成:
d2s2d1sd0 Ha(s)2e2se1se0A2z2A1z1A0 H(z)21B2zB1z1其中系数之间的对应关系有表可查。
下面是用C语言编程实现计算出技术指标为:抽样频率为10khz,频率为1khz时幅度值下降1dB,在频率为1.5khz时衰减为15dB时的系数:
经求得,巴特沃兹系统函数为:
Ha(s)12.0923141018(s23.64003103s49.4505106)(s29.94475103s49.4505106)(s213.58478103s49.4505106)
双线性变换后的系数如下图3-2所示。
16
河南工大学毕业设计(论文)说明书
图3-2 双线性变换后的系数
用计算机计算好了系数后,用matlab程序验证如下:
图3-3 幅值频率特性
17
河南工大学毕业设计(论文)说明书
图3-4 域相位频率特性
图3-5 域幅值频率特性
18
河南工大学毕业设计(论文)说明书
图3-6 域相位频率特性
3.2 FIR 滤波器的设计及MATLAB仿真
IIR滤波器虽然易于实现,在相同的技术质变下,IIR滤波器由于存在着输出到熟入的反馈,所以可用比FIR滤波器较少的阶数来满足指标的要求,但是其相位的非线性十分严重。而FIR滤波器可以得到严格的线性相位,在数据传输以及图像处理等要求具有线性相位的系统中有广泛的应用。
有限长滤波器有以下几个特点: (1) (2) (3)
系统的单位冲激响应在有限个n值处不为零; 系统函数在除原点的z平面处收敛,且只有零点; 结构上主要是非递归结构,没有输出到输入的反应;
其实现形式有横截I型(卷积型),级联型,频率抽样型和线性相位型。这里我们选用线性相位型,下面我们只对其介绍。
19
河南工大学毕业设计(论文)说明书
我们知道,如果FIR滤波器单位冲激响应为实数,且满足一下的条件 偶对称:h(n)h(N1n) 奇对称: h(n)h(N1n)
则这种FIR滤波器就具有严格线性相位。 FIR滤波器的系统函数为:
H(z)h(n)zn
n0N1当N为奇数时:
H(z)N112n0h(n)znh(N1N21)z2N112n0h(N1n)z(N1n)
代入相位奇偶关系:
H(z)N112n0h(n)[zz1nz(N1n)N1N21]h()z
2z1结构图如图3-7所示。
x[k]z11z11z111z11z1h[0]y[k]h[1]h[2]h[M3]2h[M1]2
图3-7 N为奇数时线性相位FIR滤波器的直接型结构
当N为偶数时:
N12n0N12n0H(z)h(n)znh(N1n)z(N1n)
代入相位奇偶关系:
H(z)h(n)[znz(N1n)]
n0N12
20
河南工大学毕业设计(论文)说明书
结构图如下图3-8所示。
x[k]z1z1z11z11z111M1]2z1h[0]y[k]h[1]h[2]h[h[M]2
图3-8 N为偶数时线性相位FIR滤波器的直接型结构
本文采用FIR最优化设计,即加权切比雪夫等纹波逼近。 仿真如下图3-8所示。
图3-8 最优化设计幅值频率特性
21
河南工大学毕业设计(论文)说明书
4 LABVIEW谐波分析软件
4.1 系统总图
系统总图如图4-1所示。 时域谐波信号 IIR 滤波器 FIR滤波器 FFT分析 图4-1 系统图
FFT分析 由于条件限制本系统采用LABVIEW产生时域信号,将该信号分别经过IIR滤波器和FIR滤波器,然后对滤波后的信号进行频域分析。
4.2 信号生成模块
信号生成模块如图4-2所示。
22
河南工大学毕业设计(论文)说明书
图4-2 前面板
图4-3 程序框图
本子VI可产生两路正弦波或三角波,方波。信号的幅度和频率可调,用以方便组合成任意频率和幅值的信号,供后续分析之用。
LABVIEW中有丰富的数学函数,对仿真十分便利。如本子VI中正弦波产生模块,只需要配置好参数,就能生成幅值和频率可调的正弦波。下面简单介绍正弦波模块:
23
河南工大学毕业设计(论文)说明书
图4-4 Sine Wave
Reset phase:相位复位端,默认值为TRUE。如果外接的布尔常量为TRUE,则产生的信号的初试相位由phase in端的输入决定。如果外接的布尔常量为FALSE,则产生的信号的初试相位会跟随phase out端的输出而时刻变化。
Samples:采样点数,此值决定可显示的信号长度,默认值为128。 Amplitude:幅值,默认值为1.0。
Frequency:频率,此频率为归一化的频率。Frequency=cycles/sample,
即每周期采样点数,可等价于 信号频率/采样频率。默认值为1/128。
Phase in:初试相位输入,只有在Reset phase端为TRUE时才有效。 Sine wave:正弦波输出。
Phase out:下一个正弦波采样点的相位。 正弦波表达式:
yi = a*sin(phase[i]) (4-1) phase[i] = initial_phase + f*360*I (4-2)
图4-5 正弦波
24
河南工大学毕业设计(论文)说明书
本子VI可产生多种信号:正弦波、三角波、方波,这是利用结构框图来实现的。与C语言等文本编程语言不同,LABVIEW中结构的实现是通过结构框图实现,将程序放到结构框图中就能实现C语言中if,while等功能,从这里可以看到LABVIEW图形化编程的特点。
LABVIEW的另一个特点是层次化的编程模式,一个VI就是一个C语言里的一个函数,这个VI作为上层调用其他的VI,也可以作为子VI供其他VI调用。要将一个VI包装成一个子VI,需要经过以下三步:
(1)新建一个Blank VI,编写程序框图。
(2)编辑VI图标。打开前面板,右键单击右上角的图标,选择编辑图标,将弹出如图4.6所示的对话框,按自己需要编辑图标。
(3)建立连接端子。继续上步,右键单击图标,选择显示连接端子,如果所示的连接端子不够可以通过模式对话框重新选择。
图4-6 图标编辑器
4.3 滤波模块
实际中的信号由于各种原因,会掺杂各种高频信号,进行信号分析时,需要将这些信号过滤掉。滤波器分为高通,低通,带通,带阻滤波器,我们会在以后的分析中来讲,这里我们选用低通滤波器。二滤波器的实现有IIR
25
河南工大学毕业设计(论文)说明书
滤波器和FIR滤波器两种。我们利用LABVIEW分别设计了这两种滤波器。
4.3.1 IIR Filter模块
图4-7 IIR滤波器程序框图
LABVIEW中也有相应的信号处理模块,这里我们用到的Butterworth等滤波器详细介绍如下4-8所示。
图4-8 Butterworth滤波器
Filter type:指定滤波器的类型,具体如下表4-1所示。
26
河南工大学毕业设计(论文)说明书
表2-1滤波器的类型
X为滤波器的输入端;Sampling freq为滤波器的采样频率,必须大于0,默认值是1.0;High cutoff freq:滤波器的高频截止频率。如果filter type是0(Lowpass)或者1(Highpass)时,此VI会忽略这个参数。如果filter type是2(Bandpass),3(Bandstop),那么此值应该大于low cutoff freq,而且应该遵循乃奎斯特采样定律;Low cutoff freq为滤波器的低频截止频率,遵循乃奎斯特采样定律。默认值为0.125。当filter type为2(Bandpass)或3(Bandstop)时。此值应当小于high cutoff freq;Order为滤波器的阶数,默认值为2;
Init/cont决定内部状态的初始值,默认值为FALSE。当第一次运行此VI或者Init/cont为FALSE时LABVIEW初始化内部状态为0。如果Init/cont为TRUE,LABVIEW将内部状态初始化为上一次调用此VI时的最后的状态。Filtered X为波器的输出。
4.3.2 FIR Filter模块
图4-9 FIR滤波器的程序框图
27
河南工大学毕业设计(论文)说明书
此子VI用到两个滤波器模块:FIR加窗滤波器系数和FIR滤波器。 FIR加窗滤波器系数:
此VI用来生成你需要实现一种FIR窗口的过滤器的滤波系数。 具体参数如下:
图4-10 FIR加窗滤波器系数
Window parameter为Kaiser窗的β参数,Gaussian窗的标准差,切比雪夫窗主叶与旁瓣的比值。如果window为其他的窗函数,此VI忽略此输入。默认值为NaN,此时将Kaiser窗的β参数设为0,Gaussian窗的标准差设为0.2,切比雪夫窗主叶与旁瓣的比值设为60;High cutoff freq为滤波器的高频截止频率。如果filter type是0(Lowpass)或者1(Highpass)时,此VI会忽略这个参数。如果filter type是2(Bandpass),3(Bandstop),那么此值应该大于low cutoff freq,而且应该遵循乃奎斯特采样定律;Filter type为指定滤波器的类型,具体如下表2-2所示;
表4-2滤波器的类型
Sampling freq为滤波器的采样频率,必须大于0,默认值是1.0;Taps决定了FIR滤波器系数N,默认值为25。对高通和带阻滤波器,此值必须是奇数。
Window为窗的类型,具体如下表4-3所示;
28
河南工大学毕业设计(论文)说明书
表 4-3 窗的类型
Option指定是否限制FIR Windowed Coefficients的值。0:不限制。1:限制;FIR Windowed Coefficients为输出滤波器系数;FIR Filter是用参数为FIR Coefficients的直接形式的FIR滤波器处理输入端X序列。具体参数如下图4-11所示;
图4-11 FIR Filter
Init/cont决定内部状态的初始值,默认值为FALSE。当第一次运行此VI或者Init/cont为FALSE时,labview初始化内部状态为0。如果Init/cont为TRUE,labview将内部状态初始化为上一次调用此VI时的最后的状态;X为滤波器的输入序列;FIR Coefficients为滤波器的系数。如果此值没有输入,滤波器将直接将输入送到输出端,不进行滤波。Filtered X为滤波器的输出。输出表达式如下。
N1j0yibj•ij (4-3)
式中FIR Coefficients的个数;bj为FIR Coefficients。
29
河南工大学毕业设计(论文)说明书
4.4 Fourier 变换模块
图4-12 FFT模块
本VI由FFT VI和单边变换两部分组成,下面详细介绍:
FFT VI的功能是对输入信号进行傅里叶变换,详细参数如下图4-13所示。
图4-13 FFT
X为复数形式的序列输入;Shift指定该VI是否将直流分量转移至FFT{X}的中心,默认值为FALSE;FFT size是FFT序列的长度。如果该值比输入的X的元素数目大,则在X序列的末尾补零。如果该值比输入的X的元素数目小,则只取前FFT size个X序列元素转换。如果FFT size小于等于0,则将X序列的长度作为FFT size;FFT{X}为傅里叶转换的输出。傅里叶表达式为:
N1n0ykn•ej2kn/N (4-4)
30
河南工大学毕业设计(论文)说明书
4.5 系统调试
图4-14 程序框图
31
河南工大学毕业设计(论文)说明书
总结
本文结合labview仿真软件建立了一个研究谐波的软件系统,使信号的分析变得简单快捷。之后详细讨论了信号从时域到频域,从连续到离散的变化过程,从这个过程中深入体会了如何用数学工具分析实际中的物理现象的方法。
傅里叶变换是分析信号特性的基础方法,它提供了另一个分析问题的角度,从频率的角度分析信号。而如何使用计算机来处理信号则是数字信号处理的核心问题,为此,将连续信号装变成离散信号和如何将连续福利叶变换转换为离散傅里叶变换紧密的联系在了一起。在得到信号的频域信息后,对信号的后期处理就十分方便了。IIR滤波器和FIR滤波器就是基于频域分析的基础上展开的。在相同的技术指标下,IIR滤波器由于存在着输出对输入的反馈,所以可用比FIR滤波器较少的阶数来满足指标的要求,所以用的存储单元少,运算次数少,较为经济。FIR滤波器可得到严格的线性相位,而IIR滤波器做不到这一点,其相位的非线性越严重。
32
河南工大学毕业设计(论文)说明书
致 谢
大学四年的学习以今天的毕业论文画了一个句号。感谢大学四年,各位老师对我的教诲,感谢大家有缘能在生命中重要的四年,出现在彼此的生活中。
很幸运,在我大学的最后一次作业的完成中,能得到各位老师的指导与帮助,有了一次宝贵的机会跟各位老师接触。各位老师严谨治学的态度,在我的心里留下深刻的影响,在以后的日子里,我要学习各位老师的求实精神。这里,真诚的向老师说一句:各位老师,感谢您,祝您一切都好。 在此,同时感谢我的父母,对我的支持,没有他们的支持,我走不到今天。
感谢与我共同走过大学的朋友们、同学们,每个在我脆弱、困难的时候,扶过我一把的你,我都记得。感谢上天,感谢命运,能有机会在彼此的生命中出现,并共同走过一个春天。
感谢所有帮助过我的老师、同学、朋友,感谢你们,希望你们在以后的日子里,开心、快乐,希望你们过得比我好!
历时半载,从论文选题到搜集资料,从开题报告、写初稿到反复修改,期间经历了喜悦、聒噪、痛苦和彷徨,在写作论文的过程中心情是如此复杂。如今,伴随着这篇毕业论文的最终成稿,复杂的心情烟消云散,自己甚至还有一点成就感。
最后,我要感谢四年的大学生活,感谢所有老师同学以及我的家人和那些永远也不能忘记的朋友,他们的支持与情感,是我永远的财富。
33
河南工大学毕业设计(论文)说明书
参考文献
[1] 王超,安建伟,周贤伟. 数字信号处理. 国防工业出版社. 2010. [2] 张德丰. MATLAB数字信号处理. 电子工业出版社. 2010. [3] 李正周. MATLAB数字信号处理与应用. 清华大学出版社. 2008. [4] 郑成德. 数值计算方法. 清华大学出版社. 2010.
[5] 谢进,李大美. MATLAB与计算方法实验. 武汉大学出版社. 2009. [6] 王新民,董小刚. 计算方法简明教程. 科学出版社. 2010.
[7] 雷振山,赵晨光,魏丽. LabVIEW 8.2基础教教程. 中国铁道出版社.
2008.
[8] 张桐,陈国顺,王正林. 精通LabVIEW程序设计. 电子工业出版社.
2008.
[9] 陈锡辉,张银鸿. LabVIEW 8.20程序设计从入门到精通. 清华大学出
版社. 2008.
[10] 李刚,林凌. LabVIEW. 北京航空航天大学出版社. 2001.
34
河南工大学毕业设计(论文)说明书
附 录
FFT C语言程序
#include typedef std::complex int N=16,N1=4; //N为总输入数,N1为总级数 int r=0; complex a[64],b[64];//a[64]为每一级蝶形算法输入,b[64]为每一级蝶形算法的输出 const double pi=3.141592653589793; int reverse_order(int N,int a) //倒序算法 N为总级数(带入N1) { int c[20],res=0; for(int i=N-1;i>=0;i--) { if(a%2==0) c[i]=0; else c[i]=1; a=a/2; res+=c[i]*pow(2,i); } return res ; 35 河南工大学毕业设计(论文)说明书 } void butterfly(int layer) { complex w; int c1=pow(2,N1-layer); //本级包含基本蝶形算法的次数 int c2=pow(2,layer-1); //本级蝶形算法包含的次数 int c3=pow(2,layer); for(int i=0;i w=complex(cos(2*pi*r/N),-sin(2*pi*r/N)); b[j+i*c3]=a[j+i*c3]+a[j+c2+i*c3]*w; b[j+c2+i*c3]=a[j+i*c3]-a[j+c2+i*c3]*w; } } for(int k=0;k for(i=0;i 36 河南工大学毕业设计(论文)说明书 } } void main() { int i; double num1[64]={1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0}; //输入 double num2[64]; double res; for(i=0;i 37 num2[i]=num1[reverse_order(N1,i)]; a[i]=complex(num2[i],0); res=sqrt(a[i].real()*a[i].real()+a[i].imag()*a[i].imag()); printf(\"%f\\ 河南工大学毕业设计(论文)说明书 double e1[20]; //s域系数存储 double A0[20],A1[20],A2[20],B2[20],B1[20]; //z域系数存储 double wc; //通带截止频率 double fs=10000; //抽样频率 double pi=3.141592653589793; void Butterworth(double f1,double f2,double d1,double d2) { int i; f1=2*pi*f1;f2=2*pi*f2; N=(int)(log10((pow(10,d1/10)-1)/(pow(10,d2/10)-1))/(2*log10(f1/f2)))+1; } 38 wc=f1/pow(pow(10,d1/10)-1,(double)1/(2*N)); if(N%2==0) //N为偶数 { } else //N为奇数 { } for(i=1;i<=(N-1)/2;i++) { } e1[i-1]=-2*wc*cos(pi/2+(double)(2*i-1)*pi/(2*N)); for(i=1;i<=N/2;i++) { } e1[i-1]=-2*wc*cos(pi/2+(double)(2*i-1)*pi/(2*N)); 河南工大学毕业设计(论文)说明书 void ZTransform() { int i; double c=2*fs; double R[20]; double d0,d1,d2,e0,e2; d0=wc*wc;d1=0;d2=0;e0=wc*wc;e2=1; if(N%2==0) //N为偶数 { } else { for(i=0;i<(N-1)/2;i++) R[i]=(e0+e1[i]*c+e2*c*c); for(i=0;i R[i]=(e0+e1[i]*c+e2*c*c); for(i=0;i<(N-1)/2;i++) 39 河南工大学毕业设计(论文)说明书 } } { } A0[i]=(d0+d1*c+d2*c*c)/R[i]; A1[i]=(2*d0-2*d2*c*c)/R[i]; A2[i]=(d0-d1*c+d2*c*c)/R[i]; B1[i]=(2*e0-2*e2*c*c)/R[i]; B2[i]=(e0-e1[i]*c+e2*c*c)/R[i]; void main() { } int i; double d=1; Butterworth(1000,1500,1,15); ZTransform(); printf(\"离散后的Z域分子分母的系数\\n\"); for(i=0;i 40 河南工大学毕业设计(论文)说明书 IIR 滤波器matlab仿真程序 >> c1=[1,3640.03,49450400]; //S域验证 >> c2=[1,9944.75,49450400]; >> c3=[1,13584.78,49450400]; >> c=conv(c1,conv(c2,c3)); >> [H1,w1]=freqs(d,c); >> plot(w1,abs(H1)); >> plot(w1,angle(H1)); >> a1=[0.094686,0.189372,0.094686]; //Z域验证 >> a2=[0.076271,0.152541,0.076271]; >> a3=[0.068571,0.137142,0.068571]; >> a=conv(a1,conv(a2,a3)); >> b1=[0.591303,-1.342459,1]; >> b2=[0.476302,-1.081368,1]; >> b3=[0.428219,-0.972202,1]; >> b=conv(b1,conv(b2,b3)); >> [H,w]=freqz(a,b); >> plot(w,abs(H)); >> plot(w,angle(H)); 41 河南工大学毕业设计(论文)说明书 FIR 滤波器matlab仿真程序 >> f=[0,0.6,0.7,1]; >> A=[1,1,0,0]; >> weigh=[1,10]; >> b=remez(32,f,A,weigh); >> [h,w]=freqz(b,1,256); >> plot(w,abs(h)); 42 因篇幅问题不能全部显示,请点此查看更多更全内容