电网谐波测量_第1页
电网谐波测量_第2页
电网谐波测量_第3页
电网谐波测量_第4页
电网谐波测量_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第 39 页 共 38 页1 绪论随着国民经济的发展和人们生活水平的提高,电力电子产品广泛地应用于工业控制领域,用户对电能质量的要求也越来越高,其中最为突出的是电压质量和谐波的问题,因此,如何提高电压质量、治理谐波就成为输配电技术中最为迫切的问题之一。所以,面对我国目前电网结构薄弱和输配电技术普遍存在的技术手段的落后、自动化水平低的现状,针对电压质量和谐波问题,研究电网谐波治理问题和无功补偿新技术及新装备,具有十分重要的理论和现实意义3。11 谐波的定义“谐波”这一名词起源于声学,在声学中谐波表示一根弦或一个空气柱以基波频率的倍数频率振动。电气学中所谓电网谐波,就是电网正弦电压波形畸变后,其

2、波形可以按傅立叶级数进行分解,除了基波(50HZ)之外,还有一系列频率为基波频率整数倍的正(余)弦波,这些正(余)弦波称之为谐波。正是由于这些谐波注入了电网,就使得电网电压波形畸变14。12 谐波的危害电网谐波的危害主要有以下几点:1、相同频率的谐波电压余谐波电流要产生同此谐波的有功功率与无功功率,从而降低电网电压,浪费电网容量。2、高次谐波能使电容器出现过电流与过负荷,温度增高,寿命减少,甚至出现发热、鼓肚、击穿或爆炸事故。同时在电压已经畸变的电网中,电容器的投入,还可能使电网的谐波加剧(谐波放大现象)。3、谐波往往引起继电保护不工作或误动作,从而造成设备与系统的事故,尤其是半导体继电保护与

3、整流型继电保护更为严重。4、谐波能增大仪表的计量误差,干扰通讯网络的正常工作。5、电机中有谐波电流,且频率接近某个零件的固有频率时,使电机产生机械振动并发出很大的噪声。6、谐波对人体有影响。从人体生理学来看,人体细胞在受到刺激兴奋时,会在细胞膜静息电位基础上发生快速电波动或可逆翻转。其频率如果与谐波频率相接近,电网谐波的磁辐射就会直接影响人的脑磁场和心磁场。13 谐波的产生电网谐波来源于三个方面:其一是发电源质量不高产生谐波;其二是输电网产生谐波;其三是用电设备产生的谐波。其中以电气设备产生的谐波最多,具体情况如下:1、整流设备。由于晶闸管整流的广泛应用(如电力机车的、路电解槽、电池充电器等)

4、,给电网造成大量的谐波。统计表明:由于整流装置产生的谐波占所有谐波的40%左右,这是最大的谐波源。2、电弧炉、电石炉。由于加热原料时电炉的三项电极很难同时接触到高低不平的炉料,使得燃料不稳定,引起三项负荷不平衡,产生谐波电流,经变压器的形连接线圈而注入电网。其中主要是27次的谐波,平均可达基波的8%20%,最大可达45%。3、电力变压器。由于变压器铁心的饱和,磁化曲线的非线性,加上设计变压器时考虑经济型,其工作磁密选择在磁化曲线的近饱和段上,这样就使得磁化电流呈尖顶波形,因而含有奇次谐波,其次谐波电流可达额定电流的0.5%。另外变压器空载合闸时出现的涵流中也含有大量的谐波量。4、家用电器。如电

5、视机、录像机、电子调光灯具、调温炊具等,因具有调压整流装置,会产生较深的奇次谐波;在洗衣机、电风扇、空调器等有绕组的设备中,因不平衡电流的变化也能是波形改变。14 谐波抑制的三种方法为了产少谐波的危害,根据谐波的来源,抑制谐波的方法大致从三个方面考虑:1、确保电源的质量 从发电机本身来说,产生谐波是很少的,这主要就是要从管理上保证发配电的质量,尤其是对于自发电设备的企业,要制定相应的措施予以保证。2、减少输电网谐波的产生与磁辐射 如尽可能采用高压直流输电;低压供电尽可能采用地下电缆;高层建筑内部的供电线应用铁管来防止磁辐射,还应做好大楼建筑的接地系统的设计与实施安装。3、限制用电负荷产生的谐波

6、前已述及,用电负荷是电网谐波的最主要的来源。首先要求用户对电网电压的畸变率与谐波电流的限制要做到负荷国家要求。根据国家水电部颁发的SD126-84规定,如果超过极限值,则应采取抑制措施。其次,就是要把维护电网不受谐波污染定成规章制度,用户与电气设备制造厂商都要配合发供电部门齐抓共管。具体来说应做到下面几点:(1)对容量在100kVA以上的整流装置与非线性用电设备,必须就地增设滤波装置,吸收高次谐波。(2)具有整流元件的设备,虽是小型用电器,也要增加整流相数与脉冲数,或把晶闸管移相触发改为过零触发,或者增设滤波装置,做到尽可能减少谐波。例如有些厂家生产的晶闸管调光台灯就增设了滤波原件。虽然成本有

7、所增加,但能抑制谐波对电视机等设备的干扰,应受到推广。(3)制造电磁感应式设备的厂家,要采用高质量的电磁材料,也可适当降低磁密。对于劣质元件的电磁设备要限制出售使用。(4)对于电容器组等大容量的设备,应在回路内串电抗器或增设限流装置,抑制高次谐波。(5)合理选择供电电压,尽量保持三相平衡。对能产生谐波的大容量设备还可采用较高电压供电,以减少系统的阻抗,从而减少谐波引起的网损。(6)在产品的设计上还可采用干扰频率转嫁措施。如在变压器降压整流稳压的设备中,采用开关电源的逆变技术,就能大大降低低频段的污染,而转嫁到150kHz以上频率的污染,而这种较高频率的谐波容易被抑制。总之,面对日趋严重的电网谐

8、波污染,必须引起高度重视,这就需要发供电部门、用户及电气设备的制造厂商都从大局出发,共同努力,清扫和维护电网的“公共卫生”。同时只有这样,才能有利于各行各业的生产发展,才能有利于人民生活水平的不断提高。2 课题分析21 课题来源随着电力电子技术的迅速发展,各种变频器、变流器、开关电源和电抗器的应用日益增多,电网随之产生的谐波污染也日益严重,影响了电力系统的安全运行及线路周围的电磁环境,因此电网谐波测量成为热门研究课题。22 设计思路将220V的交流电压通过电压采样环节,得到模拟量电压,将得到的模拟量电压接到USB2002采样卡模拟输入通道,接着由采样卡的采样环节变换成离散的数字量,然后运用傅立

9、叶变换作谱分析,由于栅栏效应,谱线位置与分析点可能不重合,可采用具有实谱特性的窗函数对信号进行加窗处理,然后对信号及其时移连续作两次FFT分析(实为一次复时域信号分析),则在窗谱的主瓣内将含有若干个由窗泄漏造成的相位相同的谱分析值,据此可以判定这些分析值由同一条真实谱线引起。继而可精确求出诸分立谱线的频率、幅度,然后将计算获得的数据显示在计算机屏幕上。本课题是从电网中采集数据然后运用DFT来分析电网中存在的谐波。根据课题的需要可分成两大块,一块是数据采集,一块是数据处理。在数据采集模块里包括数据的采集和保存,本设计采用北京阿尔泰科贸有限公司生产的USB2002型号的采集卡进行采集。在数据处理模

10、块中将采用DFT来进行数据处理从而得到谱线的幅度和频率,进而求出纹波系数。由于要用到编程来解决数据的采集、存盘和处理,我们将采用VC6.0做用户界面,通过调用MATLAB引擎的方法处理数据,以实现本课题的要求。3 数据采集3.1 数据采集卡的介绍USB又称之为通用串行总线,它将计算机和外设连接在一起,能进行数字图象处理,同时为数字化设计提供了许多创造空间。 课题中我们所用的采集卡型号是USB2002。它是USB总线兼容的数据采集板,可经过USB电缆接入计算机,构成实验室、产品质量检验中心、野外测控、医疗设备等领域的数据采集、波形分析和处理系统,也可构成工业生产过程控制的系统。而且它具有体积小,

11、即插即用等特点,因此是便捷式系统用户的最佳选择。现在我们使用的是USB2.0的版本,它的传输速度最高达到480MBit。同时本卡的使用是由软硬件共同完成的。3.2 数据采集卡的技术指标及应用1、模拟信号输入部分模拟通道输入数:32路单端/16路双端模拟信号输入,支持通道扫描及伪同时采集(同步采集)扫描模式(注:伪同步模式:即模拟同步采集模式,采样被定时器或外部时钟启动后,USB2002以400KHZ的最大速度对用户设置的一组通道采样,结束后等待下一次启动,如此循环采样)。(1)模拟电压输入范围:5V,10V(AD7899-1)(2)模拟输入阻抗:100M(3)模拟输入共模电压范围:2V(4)放

12、大器建立时间:2S2、A/D转换电路部分(1)A/D分辨率:14Bit(16384)(2)非线性误差:1LSB(最大)(3)转换时间:2.5S(4)系统测量精度(满量程):0.1(5)采样速度:400KHZ3、应用数据采集卡的主要应用在以下几个方面:野外采集、信号采集和医疗设备3.3 程序调试现在由于在实验室操作,为了安全问题,我们先将电网220V的电压通过变压器降压,然后再用电阻分压(当然使用了变压器会对我们要处理的电网谐波有一定的影响)。将电压采样电路和数据采集卡连好后,我们便将电源打开,接着打开我们要运行的程序。点击程序运行按钮,系统自动弹出一个框,在这个框中,我们进行一些参数的设置,参

13、数设置完后我们便开始数据采集,采集的数据将在左半边出现,而图形以正弦波的形式在右半边出现。采集结束后点击存盘按钮,数据将存入相应的盘中。在操作中我们发现如果使用单通道输入会有一些干扰,而使用双通道输入则可以抑制一些干扰。4 数据处理41 综述数据处理就是对采集到的信号进行分析,分析的步骤有以下几方面:首先取两组相差为一个采样周期的两组数据,然后对数据加布莱克曼哈里斯窗, 接着对数据作DFT变换,最后用查询方法寻找真实谱线,流程图如图4.1所示:42 VC+调用MATLAB421 VC调用MATLAB的三种方法 Visual C+是基于Windows平台下的一种应用程序开发环境,现在已升级到了6

14、.0版本。应用VC6.0可以方便地开发各种用户需要的界面和工具,并且能够直接与系统的底层硬件交换数据。在VC6.0环境下开发的软件,具有容易维护、界面友好及运行速度快等许多优点。但是, 在VC6.0下进行编程是比较烦琐的,不易掌握。因此, 将VC6.0VC调用MATLAB引擎结束开始查找完?查找真实谱线作DFT变换加窗取两组数据图4.1 数据处理部分流程图环境与MATLAB进行有效连接将会使得VC程序的开发大大简化13。以下是三种VC调用MATLAB的方法,它们各具特色,在应用中要结合具体需求进行选择。第一种:MCC 编译器法可以直接对MATLAB 产生的.m文件进行编译,在MATLAB提供的

15、C/C+函数库、图形库的支持下,能将绘制各种复杂图形的MATLAB程序高效的转化为C/C+代码,与单纯用VC编程实现相比大大减轻编程人员的工作量和编程难度;第二种:采用Matcom 编译法进行转换更加方便,且生成的C/C+代码的可读性较好,是解决图形、图像处理问题的一种理想方法;第三种:使用MATLAB计算引擎法时,由于其工作时MATLAB后台工作,只有小部分引擎通信函数库与程序相连,因此节省了资源,提高了应用程序的整体性能和处理效率。422 调用MATLAB引擎MATLAB允许用户通过MATLAB引擎调用MATLAB的函数,即将MATLAB当作应用程序进行数据计算的引擎。MATLAB提供了一

16、系列操作MATLAB引擎的API函数,通过这些API函数,用户可以充分发挥MATLAB进行矩阵计算的优势,将应用程序的计算功能交给MATLAB引擎完成,而界面部分则可以通过采用VC+来实现。这些为应用程序的实现提供了很大的灵活性。1、API函数介绍1)int engClose(Engine *ep);退出MATLAB引擎。2)int engEvalString(Engine *ep,const char *string);使MATLAB引擎执行字符串string中的表达式。3)mxArray *engGetVariable(Engine *ep, const char *name);从MATL

17、AB引擎工作空间中复制名字为name的变量。4)int engGetVisible(Engine *ep,bool *value);判断MATLAB引擎工作窗口是否可见。5)Engine *engOpen(const char *startcmd);启动一个MATLAB引擎,在Windows操作环境下startcmd参数必须为NULL。6)Engine *eng OpenSingleUse(const char *startcmd,void *dcom,int *retstatus);启动一个只允许用户使用的MATLAB引擎,在Windows系统中startcmd和dcom参数始终为NULL,

18、retstatus为返回engOpenSingleUse函数的执行状态。7)int engOutputBuffer(Engine *ep,char *p,int n);设置MATLAB引擎的输出内存,存储engEvalString函数执行字符串后的输出结果。其中n表示设置的输出内存可以存放的字符个数,如果输出结果的字符串大于n,则只存储前n个字符。8)int engPutVariable(Engine *ep,const char *name,const mxArray *mp);向MATLAB引擎工作空间中写入一个MATLAB阵列变量,其中name为写入变量在MATLAB引擎工作空间中的名字

19、。9)int engSetVisible(Engine *ep,bool value);设置MATLAB引擎工作窗口是否可见的属性,如果value=true,则MATLAB引擎窗口可见;如果value=false,则MATLAB引擎窗口不可见。2、Visual C+6.0 MFC工程中调用MATLAB引擎首先创建一个单文档的Visual C+6.0 工程matlabenginetest,其中view类的基类选为CFormView。添加到CMatlabenginetestView中的界面元素及其ID如下表所列。表4.1 matlabenginetest CmatlabenginetestView

20、 控件列表ID控件类型界面元素IDC_SrartEngineButton启动EngineIDC_DrawSincButton计算并绘制Sinc图象IDC_CloseEngineButton关闭EngineIDC_HIDEENGINECHECKCheck button隐藏MATLAB引擎窗口IDC_CMDEDITEdit命令输入编译框IDC_EVALUATESTRINGButton执行用户输入的命令IDC_OUTPUTEDITEditMATLAB引擎结果显示编译框Matlabenginetest通过engEvalString函数调用MATLAB引擎执行相应的命令并计算显示sinc函数曲线,通过函

21、数engOutputBuffer将m_outbuff设为MATLAB引擎输出的结果存储的缓冲区。另外需要注意的是,由于本工程调用MATLAB引擎的API函数,因此需要在工程设置中加入静态链接库libeng.lib。74.2.3 程序代码/* * * * * * * * * * * * * * * * * matlabenginest.h * * * * * * * * * * * * * */#if !defined(AFX_MATLABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317C086_INCLUDED_)#define AFX_MAT

22、LABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317C086_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#include engine.h#define _MAX_BUFF_CHAR_NUM 2000class CMatlabenginetestView : public CFormViewprotected: / create from serialization onlyCMatlabenginetestView();DECLARE_DYNCREATE(CMat

23、labenginetestView)public:/AFX_DATA(CMatlabenginetestView)enum IDD = IDD_MATLABENGINETEST_FORM ;CEditm_outputedit;BOOLm_nIsCheck;CStringm_cmdedit;/AFX_DATA/ Attributespublic:CMatlabenginetestDoc* GetDocument();/ Operationspublic:Engine * m_ep;char m_outbuff_MAX_BUFF_CHAR_NUM;/ Overrides/ ClassWizard

24、generated virtual function overrides/AFX_VIRTUAL(CMatlabenginetestView)public:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportvirtual void OnInitialUpdate(); / called first time after constructvirtual BOOL OnPreparePrinting(C

25、PrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);/AFX_VIRTUAL/ Implementationpublic:virtual CMatlabenginetestView();#ifdef _DEBUGvirtual void AssertValid() const;virtu

26、al void Dump(CDumpContext& dc) const;#endifprotected:/ Generated message map functionsprotected:/AFX_MSG(CMatlabenginetestView)afx_msg void OnCloseEngine();afx_msg void OnDrawSinc();afx_msg void OnStartEngine();afx_msg void OnPaint();afx_msg void OnHideenginecheck();afx_msg void OnEvaluatestring();a

27、fx_msg void OnSize(UINT nType, int cx, int cy);afx_msg void OnChangeOutputedit();/AFX_MSGDECLARE_MESSAGE_MAP();#ifndef _DEBUG / debug version in matlabenginetestView.cppinline CMatlabenginetestDoc* CMatlabenginetestView:GetDocument() return (CMatlabenginetestDoc*)m_pDocument; #endif/AFX_INSERT_LOCAT

28、ION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_MATLABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317C086_INCLUDED_)/* * * * * * * * * * * * * * * matlabenginetest.cpp * * * * * * * * * * * * * * * * */#include stdafx.h#includ

29、e matlabenginetest.h#include matlabenginetestDoc.h#include matlabenginetestView.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMatlabenginetestViewIMPLEMENT_DYNCREATE(CMatlabenginetestView, CFormView)BEGIN_MESSAGE_MAP(CMatlabenginetestView, CFormView)/AFX_

30、MSG_MAP(CMatlabenginetestView)ON_BN_CLICKED(IDC_CloseEngine, OnCloseEngine)ON_BN_CLICKED(IDC_DrawSinc, OnDrawSinc)ON_BN_CLICKED(IDC_StartEngine, OnStartEngine)ON_WM_PAINT()ON_BN_CLICKED(IDC_HIDEENGINECHECK, OnHideenginecheck)ON_BN_CLICKED(IDC_EVALUATESTRING, OnEvaluatestring)ON_WM_SIZE()ON_EN_CHANGE

31、(IDC_OUTPUTEDIT, OnChangeOutputedit)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMatlabenginetestView construction/dest

32、ructionCMatlabenginetestView:CMatlabenginetestView(): CFormView(CMatlabenginetestView:IDD)/AFX_DATA_INIT(CMatlabenginetestView)m_nIsCheck = FALSE;m_cmdedit = _T();/AFX_DATA_INIT/ TODO: add construction code herem_ep = NULL;memset(m_outbuff,0,_MAX_BUFF_CHAR_NUM*sizeof(char);CMatlabenginetestView:CMat

33、labenginetestView()if(m_ep!=NULL)engClose(m_ep);void CMatlabenginetestView:DoDataExchange(CDataExchange* pDX)CFormView:DoDataExchange(pDX);/AFX_DATA_MAP(CMatlabenginetestView)DDX_Control(pDX, IDC_OUTPUTEDIT, m_outputedit);DDX_Check(pDX, IDC_HIDEENGINECHECK, m_nIsCheck);DDX_Text(pDX, IDC_CMDEDIT, m_c

34、mdedit);/AFX_DATA_MAPBOOL CMatlabenginetestView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CFormView:PreCreateWindow(cs);void CMatlabenginetestView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParentFrame()-RecalcLayout(

35、);ResizeParentToFit();m_outputedit.SetWindowText();/ CMatlabenginetestView printingBOOL CMatlabenginetestView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMatlabenginetestView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra init

36、ialization before printingvoid CMatlabenginetestView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printingvoid CMatlabenginetestView:OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)/ TODO: add customized printing code here/ CMatlabenginetestView diagnostics#ifdef _DEBUGvoid CM

37、atlabenginetestView:AssertValid() constCFormView:AssertValid();void CMatlabenginetestView:Dump(CDumpContext& dc) constCFormView:Dump(dc);CMatlabenginetestDoc* CMatlabenginetestView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMatlabenginetestDoc);return (CMat

38、labenginetestDoc*)m_pDocument;#endif /_DEBUG/ CMatlabenginetestView message handlersvoid CMatlabenginetestView:OnCloseEngine() / TODO: Add your control notification handler code hereengClose(m_ep);m_ep=NULL;void CMatlabenginetestView:OnDrawSinc() / TODO: Add your control notification handler code he

39、reif(m_ep!=NULL)engEvalString(m_ep,x1=0.01:0.01:10*pi);engEvalString(m_ep,x2=-10*pi:0.01:-0.01);engEvalString(m_ep,y1=sin(x1)./x1);engEvalString(m_ep,y2=sin(x2)./x2);engEvalString(m_ep,plot(x2 x1,y2 y1);/engEvalString()中为调用的MATLAB程序/产生一个错误,从而验证MATLAB引擎的输出已经被捕获engEvalString(m_ep,1/0);m_outputedit.Set

40、WindowText(m_outbuff);elseAfxMessageBox(请启动MATLAB引擎,MB_OK,NULL);void CMatlabenginetestView:OnStartEngine() / TODO: Add your control notification handler code herem_ep = engOpen(NULL);engOutputBuffer(m_ep,m_outbuff,_MAX_BUFF_CHAR_NUM);void CMatlabenginetestView:OnPaint() CPaintDC dc(this); / device c

41、ontext for painting/ TODO: Add your message handler code here/ Do not call CFormView:OnPaint() for painting messagesvoid CMatlabenginetestView:OnHideenginecheck() / TODO: Add your control notification handler code hereif(m_ep=NULL) return;UpdateData(true);engSetVisible(m_ep,!m_nIsCheck);void CMatlab

42、enginetestView:OnEvaluatestring() / TODO: Add your control notification handler code hereUpdateData(true);LPSTR pstr = m_cmdedit.GetBuffer(m_cmdedit.GetLength();if(m_ep!=NULL)engEvalString(m_ep,(const char*)pstr);m_outputedit.SetWindowText(m_outbuff);elseAfxMessageBox(请启动MATLAB引擎,MB_OK,NULL);void CM

43、atlabenginetestView:OnSize(UINT nType, int cx, int cy) CFormView:OnSize(nType, cx, cy);/ TODO: Add your message handler code hereif(:IsWindow(m_outputedit.GetSafeHwnd()m_outputedit.MoveWindow(0,140,cx,cy-140,true);void CMatlabenginetestView:OnChangeOutputedit() / TODO: If this is a RICHEDIT control,

44、 the control will not/ send this notification unless you override the CFormView:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code here图4.2 VC调用MATLAB引擎的用户界面图4.3 通过调用方法实现绘制sinc图形43 数据分组本课题为一

45、路数据采集,得到一组电压信号数据。谱线的精确辨识需要相继两次DFT分析,考虑到完全对称窗的选取,需从数据采集得到的数据中取N+2个数据,这里取4098个数据,, 。将和的平均值作为第一个点,其余不变,得到第一组数据,记为x(n),将和的平均值作为第一点,其余依次,得到第二组数据,记为y(n)。两组数据相差一个采样周期。44 加窗4.4.1 窗函数的选取对时域信号作DFT分析首先应作加窗处理,选取理想的窗函数的基本原则是:(1)窗函数频谱的主瓣应尽量窄,能量尽可能集中在主瓣内,从而在谱分析时获得较高的频率分辨力,在数字滤波器设计中获得较小的过渡带。(2)窗谱的旁瓣高度应尽量小而且随频率尽快衰减,

46、以减小谱估计时的泄漏失真,在设计数字滤波器时减小通带的波动,提高阻带的衰减。但主瓣既窄,旁瓣又小衰减又快的窗函数是不容易找到的,比如矩形窗的旁瓣很大,但其主瓣宽度是最窄的,因此,在数据处理时通常需要做综合考虑取其折中。在应用窗函数时,除了要考虑窗谱本身的特性外,还应当充分考虑被分析信号的特点以及具体的处理要求。在谱分析中,如果仅要求分析谱峰的频率而不计及幅值的精度,则可选用主瓣较窄而便于分辨的矩形窗。如果要分析窄带信号且具有较强的干扰噪声时,则应选用旁瓣幅度较小的窗函数如Hamming 窗等。如果干扰距离信号较远,则可以采用旁瓣衰减速度较快的窗函数如Papoulis 窗等。对于随时间衰减的信号

47、如脉冲响应信号等,可以应用指数窗等来提高分析的信噪比12。下面是几种常见的窗函数(1) 矩形窗5时域: 窗谱: 幅频函数: 波形:图4.4 矩形窗及其频谱(2)三角形窗时域:窗谱:幅频函数:(3)汉宁窗时域: 窗谱: 幅频函数:当N1,N-1近似N,所以此式能使三部分之和相互抵消,能量更集中在主瓣,但主瓣宽度却比矩形窗宽一倍,为。波形:图4.5 汉宁窗及其频谱(4)海明窗时域:窗谱:幅频函数:波形:图4.6 海明窗及其频谱下面是五种常见窗函数的基本参数比较 2 :表4.2 五种窗函数基本参数窗函数类型旁瓣峰值/dB过渡带宽度B阻带最小衰减/dB矩形窗134/N21三角窗258/N25汉宁窗31

48、8/N44海明窗418/N53布莱克曼窗5712/N74一般电网信号主要含有整数次谐波,因而常采用基于余弦窗的组合窗,这类窗只要选取观测时间是信号周期的整数倍,其频谱在各次整数倍谐波频率处幅值为零,因而谐波之间不发生相互泄漏。即使信号频率作小范围波动,泄漏误差也较小。余弦窗一般可以表达为(H为窗的项数-1) 公式4.1窗的项数越多,主瓣宽度越大,从而引起频谱分辨力的降低。但同时较多项数的窗函数能够产生较大的旁瓣衰减,有利于提高频谱计算精度,但组合窗的项数一般不大于4,容易推得 公式4.2把式公式1代入公式2并简化得到 公式4.3公式4.3表明,欲使组合窗具有线形相位特性,应满足故常用的窗为两项汉宁(Hanning)窗、三项布莱克曼(Blackman)窗、四项布莱克曼哈里斯(Blackma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论