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

下载本文档

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

文档简介

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

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

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

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

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

6、电线应用铁管来防止磁辐射, 还应做好大楼建筑的 接地系统的设计与实施安装。3、限制用电负荷产生的谐波前已述及,用电负荷是电网谐波的最主要的来源。 首先要求用户对电网电压的畸变率与谐波电流的限制要做到负荷国家要求。 根据国家 水电部颁发的SD126-84规定,如果超过极限值,则应采取抑制措施。其次,就是要把 维护电网不受谐波污染定成规章制度, 用户与电气设备制造厂商都要配合发供电部门 齐抓共管。具体来说应做到下面几点:(1)对容量在100kVA以上的整流装置与非线性用电设备, 必须就地增设滤波装 置,吸收高次谐波。(2)具有整流元件的设备,虽是小型用电器,也要增加整流相数与脉冲数,或 把晶闸管移

7、相触发改为过零触发,或者增设滤波装置,做到尽可能减少谐波。例如有 些厂家生产的晶闸管调光台灯就增设了滤波原件。 虽然成本有所增加, 但能抑制谐波 对电视机等设备的干扰,应受到推广。(3)制造电磁感应式设备的厂家,要采用高质量的电磁材料,也可适当降低磁密。对于劣质元件的电磁设备要限制出售使用。(4)对于电容器组等大容量的设备,应在回路串电抗器或增设限流装置,抑制 高次谐波。5)合理选择供电电压,尽量保持三相平衡。对能产生谐波的大容量设备还可采用较高电压供电,以减少系统的阻抗,从而减少谐波引起的网损。(6)在产品的设计上还可采用干扰频率转嫁措施。如在变压器降压整流稳压的 设备中,采用开关电源的逆变

8、技术,就能大大降低低频段的污染,而转嫁到 150kHz 以上频率的污染,而这种较高频率的谐波容易被抑制。总之,面对日趋严重的电网谐波污染, 必须引起高度重视, 这就需要发供电部门、 用户及电气设备的制造厂商都从大局出发, 共同努力,清扫和维护电网的“公共卫生”。 同时只有这样, 才能有利于各行各业的生产发展, 才能有利于人民生活水平的不断提22课题分析1 课题来源 随着电力电子技术的迅速发展,各种变频器、变流器、开关电源和电抗器的应用 日益增多,电网随之产生的谐波污染也日益严重,影响了电力系统的安全运行及线路 周围的电磁环境,因此电网谐波测量成为热门研究课题。22 设计思路将220V勺交流电压

9、通过电压采样环节,得到模拟量电压,将得到的模拟量电压接 到USB200采样卡模拟输入通道,接着由采样卡的采样环节变换成离散的数字量,然 后运用傅立叶变换作谱分析, 由于栅栏效应, 谱线位置与分析点可能不重合, 可采用 具有实谱特性的窗函数对信号进行加窗处理,然后对信号及其时移连续作两次FFT分析(实为一次复时域信号分析) ,则在窗谱的主瓣将含有若干个由窗泄漏造成的相位 相同的谱分析值, 据此可以判定这些分析值由同一条真实谱线引起。 继而可精确求出 诸分立谱线的频率、幅度,然后将计算获得的数据显示在计算机屏幕上。本课题是从电网中采集数据然后运用 DFT来分析电网中存在的谐波。根据课题的 需要可分

10、成两大块, 一块是数据采集, 一块是数据处理。 在数据采集模块里包括数据的采集和保存,本设计采用阿尔泰科贸生产的 USB200理号的采集卡进行采集。在数据处理模块中将采用DFT来进行数据处理从而得到谱线的幅度和频率, 进而求出纹波 系数。由于要用到编程来解决数据的采集、 存盘和处理,我们将采用VC6.0做用户界 面,通过调用MATLA引擎的方法处理数据,以实现本课题的要求。3 数据采集3.1 数据采集卡的介绍USB又称之为通用串行总线,它将计算机和外设连接在一起,能进行数字图象处 理,同时为数字化设计提供了许多创造空间。课题中我们所用的采集卡型号是 USB2002它是USB总线兼容的数据采集板

11、,可 经过USB电缆接入计算机,构成实验室、产品质量检验中心、野外测控、医疗设备等 领域的数据采集、 波形分析和处理系统, 也可构成工业生产过程控制的系统。 而且它 具有体积小, 即插即用等特点, 因此是便捷式系统用户的最佳选择。 现在我们使用的 是USB2.0的版本,它的传输速度最高达到 480MBit。同时本卡的使用是由软硬件共 同完成的。3.2 数据采集卡的技术指标及应用1、模拟信号输入部分模拟通道输入数: 32 路单端 /16 路双端模拟信号输入, 支持通道扫描及伪同时采 集(同步采集)扫描模式(注:伪同步模式:即模拟同步采集模式,采样被定时器或 外部时钟启动后,USB2002以 40

12、0KHZ的最大速度对用户设置的一组通道采样,结束 后等待下一次启动,如此循环采样) 。(1)模拟电压输入围:土 5V,0V(AD7899-1)(2)模拟输入阻抗:100MQ3) 模拟输入共模电压围: 2V(4)放大器建立时间:2卩S2、A/D转换电路部分( 1) A/D 分辨率: 14Bit ( 16384)(2) 非线性误差:土 1LSB(最大)(3) 转换时间:2.5卩S( 4)系统测量精度(满量程) : 0.1 ( 5)采样速度: 400KHZ3、应用数据采集卡的主要应用在以下几个方面:野外采集、信号采集和 医疗设备3.3 程序调试现在由于在实验室操作,为了安全问题,我们先将电网 220

13、V的电压通过变压器 降压,然后再用电阻分压 (当然使用了变压器会对我们要处理的电网谐波有一定的影 响)。将电压采样电路和数据采集卡连好后,我们便将电源打开,接着打开我们要运 行的程序。点击程序运行按钮,系统自动弹出一个框,在这个框中,我们进行一些参 数的设置, 参数设置完后我们便开始数据采集, 采集的数据将在左半边出现, 而图形 以正弦波的形式在右半边出现。采集结束后点击存盘按钮,数据将存入相应的盘中。 在操作中我们发现如果使用单通道输入会有一些干扰, 而使用双通道输入则可以抑制 一些干扰。4 数据处理4 1 综述数据处理就是对采集到的信号进行分析,分析的步骤有以下几方面:首先取两组相差为一个

14、采样周期的两组数据,然后对数据加布莱克曼-哈里斯窗,接着对数据作DFT变换,最后用查询方法寻找真实谱线,流程图如图4.1所示:4. 2 VC+调用 MATLAB4. 2. 1 VC调用MATLA的三种方法Visual C+是基于Window平台下的一种应用程序开发环境,现在已升级到了 6.0 版本。应用VC6.0可以方便地开发各种用户需要的界面和工具,并且能够直接与系统的 底层硬件交换数据。在VC6.0环境下开发的软件,具有容易维护、界面友好及运行速度 快等许多优点。但是,在VC6.0下进行编程是比较烦琐的,不易掌握。因此,将VC6.0图 4.1 数据处理部分流程图环境与MATLA进行有效连接

15、将会使得VC程序的开发大大简化13。以下是三种VC调用MATLA的方法,它们各具特色,在应用中要结合具体需求进行 选择。第一种:MCC编译器法可以直接对MATLA护生的.m文件进行编译,在MATLAB 提供的C/C+函数库、图形库的支持下,能将绘制各种复杂图形的MATLA程序高效的转 化为C/C+代码,与单纯用VC编程实现相比大大减轻编程人员的工作量和编程难度;第二种:采用Matcom编译法进行转换更加方便,且生成的C/C+代码的可读性较好,是解 决图形、图像处理问题的一种理想方法;第三种:使用MATLA计算引擎法时,由于其工作时MATLA后台工作,只有小部分引擎通信函数库与程序相连,因此节省

16、了资源,提 高了应用程序的整体性能和处理效率。4. 2. 2调用MATLA引擎MATLA允许用户通过 MATLABI擎调用MATLAB勺函数,即将MATLA当作应用程 序进行数据计算的引擎。MATLA提供了一系列操作 MATLABI擎的API函数,通过这 些API函数,用户可以充分发挥 MATLA进行矩阵计算的优势,将应用程序的计算功 能交给MATLA引擎完成,而界面部分则可以通过采用 VC+来实现。这些为应用程序 的实现提供了很大的灵活性。1、 API 函数介绍1) int engClose(Engine *ep);退出MATLA引擎。2) int engEvalString(Engine

17、*ep,const char *string);使MATLA引擎执行字符串string中的表达式。3) mxArray *engGetVariable(Engine *ep, const char *name);从MATLA引擎工作空间中复制名字为name的变量4) int engGetVisible(Engine *ep,bool *value);判断MATLA引擎工作窗口是否可见。5) Engine *engOpen(const char *startcmd);启动一个MATLA引擎,在 Windows操作环境下startcmd参数必须为NULL6) Engine *eng OpenSin

18、gleUse(const char *startcmd,void *dcom,int *retstatus);启动一个只允许用户使用的 MATLA引擎,在 Windows系统中startcmd和dcom 参数始终为NULL retstatus 为返回engOpenSingleUse函数的执行状态。7) int engOutputBuffer(Engine *ep,char *p,int n);设置MATLA引擎的输出存,存储engEvalString函数执行字符串后的输出结果。 其中n表示设置的输出存可以存放的字符个数,如果输出结果的字符串大于n,则只存储前 n 个字符。8) int engP

19、utVariable(Engine *ep,const char *name,const mxArray *mp);向MATLA引擎工作空间中写入一个 MATLA阵列变量,其中name为写入变量在 MATLA引擎工作空间中的名字。9) int engSetVisible(Engine *ep,bool value);设置MATLA引擎工作窗口是否可见的属性,如果 value=true,则MATLA引擎窗 口可见;如果value=false,则MATLA引擎窗口不可见。2、Visual C+6.0 MFC 工程中调用 MATLA引擎首先创建一个单文档的 Visual C+6.0 工程 matla

20、benginetest, 其中 view 类的 基类选为 CFormView。添加到 CMatlabenginetestView 中的界面元素及其 ID 如下表所列。ID控件类型界面兀素IDC_SrartE ngi neButton启动EngineIDC_DrawSi ncButton计算并绘制Sine图象IDC_CloseE ngi neButton关闭EngineIDC_HIDEENGINECHECKCheck butt on隐藏MATLABE擎窗口IDC_CMDEDITEdit命令输入编译框IDC_EVALUATESTRINGButton执行用户输入的命令IDC_OUTPUTEDITEd

21、itMATLAB引擎结果显示编译框Matlabenginetest 通过engEvalString函数调用MATLA引擎执行相应的命令并计算显示sinc函数曲线,通过函数engOutputBuffer 将m_outbuff设为MATLA引擎输出的结果存储的缓冲区。另外需要注意的是,由于本工程调用MATLABH擎的API函数,因此需要在工程设置中加入静态库 libe ng.lib 。4.2.3 程序代码/* * * * * * * * * * * * * * * * * imatlabenginest h * * * * * * * * * * * * */#if !defi ned(AFX_M

22、ATLABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317 C086_INCLUDED_)#defi neAFX_MATLABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317C086_INCLUDED_#if _MSC_VER 1000 #pragma once#e ndif / _MSC_VER 1000 #i nclude en gi ne.h #define _MAX_BUFF_CHAR_NUM 2000 class CMatlabenginetestView : public CForm

23、View protected: / create from serialization only CMatlabenginetestView();DECLARE_DYNCREATE(CMatlabenginetestView) public:/AFX_DATA(CMatlabenginetestView)enum IDD = IDD_MATLABENGINETEST_FORM ; CEdit m_outputedit;BOOL m_nIsCheck;CString m_cmdedit;/AFX_DATA/ Attributes public:CMatlabenginetestDoc* GetD

24、ocument();/ Operationspublic:Engine * m_ep;char m_outbuff_MAX_BUFF_CHAR_NUM;/ Overrides/ ClassWizard generated virtual function overrides /AFX_VIRTUAL(CMatlabenginetestView)public:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supp

25、ortvirtual void OnInitialUpdate(); / called first time after constructvirtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);/AFX_VIRTUAL/ Im

26、plementationpublic:virtual CMatlabenginetestView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:/ Generated message map functionsprotected:/AFX_MSG(CMatlabenginetestView)afx_msg void OnCloseEngine();afx_msg void OnDrawSinc();afx_msg void OnS

27、tartEngine();afx_msg void OnPaint();afx_msg void OnHideenginecheck();afx_msg void OnEvaluatestring();afx_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*

28、CMatlabenginetestView:GetDocument() return (CMatlabenginetestDoc*)m_pDocument; #endif/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif/ !defined(AFX_MATLABENGINETESTVIEW_H_2BA448E9_DCB7_4CAB_8DE3_46FED317C 086_INCLUDED_)/* * * *

29、 * * * * * * * * * * * matlabenginetest.cpp * * * * * * * * * * * * * * * */ #include stdafx.h#include matlabenginetest.h#include matlabenginetestDoc.h#include matlabenginetestView.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMatlabenginetestViewIMPLEMEN

30、T_DYNCREATE(CMatlabenginetestView, CFormView)BEGIN_MESSAGE_MAP(CMatlabenginetestView, CFormView)/AFX_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_HIDEENGIN

31、ECHECK, OnHideenginecheck)ON_BN_CLICKED(IDC_EVALUATESTRING, OnEvaluatestring)ON_WM_SIZE()ON_EN_CHANGE(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_P

32、RINT_PREVIEW, CFormView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMatlabenginetestView construction/destructionCMatlabenginetestView:CMatlabenginetestView(): CFormView(CMatlabenginetestView:IDD)/AFX_DATA_INIT(CMatlabenginetestView)m_nIsCheck = FALSE;m_cmdedit = _T();/AFX_DATA_INIT/ TODO: add constructi

33、on code herem_ep = NULL;memset(m_outbuff,0,_MAX_BUFF_CHAR_NUM*sizeof(char);CMatlabenginetestView:CMatlabenginetestView()if(m_ep!=NULL)engClose(m_ep);void CMatlabenginetestView:DoDataExchange(CDataExchange* pDX)CFormView:DoDataExchange(pDX);/AFX_DATA_MAP(CMatlabenginetestView)DDX_Control(pDX, IDC_OUT

34、PUTEDIT, m_outputedit);DDX_Check(pDX, IDC_HIDEENGINECHECK, m_nIsCheck);DDX_Text(pDX, IDC_CMDEDIT, m_cmdedit);/AFX_DATA_MAPBOOL CMatlabenginetestView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CFormView:PreCreateWindow(cs);v

35、oid CMatlabenginetestView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();m_outputedit.SetWindowText();/ CMatlabenginetestView printingBOOL CMatlabenginetestView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);

36、CPrintInfo*CPrintInfo*void CMatlabenginetestView:OnBeginPrinting(CDC* /*pDC*/, /*pInfo*/)/ TODO: add extra initialization before printingvoid CMatlabenginetestView:OnEndPrinting(CDC* /*pDC*/, /*pInfo*/)/ TODO: add cleanup after printingvoid CMatlabenginetestView:OnPrint(CDC* pDC, CPrintInfo* /*pInfo

37、*/)/ TODO: add customized printing code here/ CMatlabenginetestView diagnostics#ifdef _DEBUGvoid CMatlabenginetestView:AssertValid() constCFormView:AssertValid();void CMatlabenginetestView:Dump(CDumpContext& dc) constCFormView:Dump(dc);CMatlabenginetestDoc* CMatlabenginetestView:GetDocument() / non-

38、debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMatlabenginetestDoc); return (CMatlabenginetestDoc*)m_pDocument;#endif /_DEBUG/ CMatlabenginetestView message handlersvoid CMatlabenginetestView:OnCloseEngine()/ TODO: Add your control notification handler code hereengClose(m_ep);m_ep

39、=NULL;void CMatlabenginetestView:OnDrawSinc()/ TODO: Add your control notification handler code here if(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

40、);engEvalString()中为调用的 MATLAB?序/产生一个错误,从而验证MATLA引擎的输出已经被捕获engEvalString(m_ep,1/0);m_outputedit.SetWindowText(m_outbuff);elseAfxMessageBox(请启动 MATLA引擎,MB_OK,NULL);void CMatlabenginetestView:OnStartEngine()/ TODO: Add your control notification handler code herem_ep = engOpen(NULL);engOutputBuffer(m_ep

41、,m_outbuff,_MAX_BUFF_CHAR_NUM);void CMatlabenginetestView:OnPaint()CPaintDC dc(this); / device context for painting/ TODO: Add your message handler code here/ Do not call CFormView:OnPaint() for painting messagesvoid CMatlabenginetestView:OnHideenginecheck()/ TODO: Add your control notification hand

42、ler code here if(m_ep=NULL) return;UpdateData(true);engSetVisible(m_ep,!m_nIsCheck);void CMatlabenginetestView: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

43、*)pstr);m_outputedit.SetWindowText(m_outbuff);elseAfXMessageBox(请启动 MATLA引擎,MB_OK,NULL);void CMatlabenginetestView:OnSize(UINT nType, int cx, int cy)CFormView:OnSize(nType, cx, cy);/ TODO: Add your message handler code here if(:IsWindow(m_outputedit.GetSafeHwnd()m_outputedit.MoveWindow(0,140,cx,cy-1

44、40,true);void CMatlabenginetestView:OnChangeOutputedit()/ TODO: If this is a RICHEDIT control, the control will notthe/ send this notificationunless you overrideCFormView:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your co

45、ntrol notification handler code here图4.2 VC调用MATLAB引擎的用户界面图4.3通过调用方法实现绘制 sine图形4. 3数据分组本课题为一路数据采集,得到一组电压信号数据。谱线的精确辨识需要相继两次 DFT分析,考虑到完全对称窗的选取,需从数据采集得到的数据中取N+2个数据,这里取4098个数据 ai, a?,,&4。98 。将印和84097 的平均值作为第一个点,其余不变,得到第一组数据,记为 x (n) ,将a?和a4098的平均值作为第一点,其余依次,得到第二组数据,记为y (n) 。两组数据相差一个采样周期。4. 4加窗4.4.1 窗函数的

46、选取对时域信号作DF分析首先应作加窗处理,选取理想的窗函数的基本原则是:(1) 窗函数频谱的主瓣应尽量窄,能量尽可能集中在主瓣,从而在谱分析时获得 较高的频率分辨力,在数字滤波器设计中获得较小的过渡带。(2) 窗谱的旁瓣高度应尽量小而且随频率尽快衰减,以减小谱估计时的泄漏失 真,在设计数字滤波器时减小通带的波动,提高阻带的衰减。但主瓣既窄,旁瓣又小衰 减又快的窗函数是不容易找到的,比如矩形窗的旁瓣很大,但其主瓣宽度是最窄的,因 此,在数据处理时通常需要做综合考虑取其折中。在应用窗函数时,除了要考虑窗谱本身的特性外,还应当充分考虑被分析信号的 特点以及具体的处理要求。在谱分析中,如果仅要求分析谱

47、峰的频率而不计及幅值的 精度,则可选用主瓣较窄而便于分辨的矩形窗。如果要分析窄带信号且具有较强的干 扰噪声时,则应选用旁瓣幅度较小的窗函数如 Hamming窗等。如果干扰距离信号较远, 则可以采用旁瓣衰减速度较快的窗函数如 Papoulis窗等。对于随时间衰减的信号如 脉冲响应信号等,可以应用指数窗等来提高分析的信噪比12 o下面是几种常见的窗函数(1)矩形窗时域:w n RN n.N 1 j - 窗谱:WR ejWR e 2幅频函数:WrNsin 一2sin波形:(2)三角形窗时域:窗谱:幅频函数:(3)汉宁窗时域:窗谱:Whej幅频函数:Wb ejWb2n12nN 1cosWhsinsin

48、sinRn nsinsinN2sin 2Wh0.5Wr0.25 WR当N1, N-1近似N,所以此式能使三部分之和相互抵消,能量更集中在主瓣, 主瓣宽度却比矩形窗宽一倍,为8 N。波形:图4.5汉宁窗及其频谱(4)海明窗Whm0.54Wr0.23 Wr时域:w n0.54 0.46cos2 n _Rn nN 1窗谱:N 1WHM eWHMj 2e幅频函数:波形:图4.6 海明窗及其频谱F面是五种常见窗函数的基本参数比较2:表4.2五种窗函数基本参数窗函数类型旁瓣峰值 n/dB过渡带宽度 B阻带最小衰减s/dB矩形窗134 /N21三角窗258 /N25汉宁窗318 /N44海明窗418 /N5

49、3布莱克曼窗5712 /N74一般电网信号主要含有整数次谐波,因而常采用基于余弦窗的组合窗,这类窗只要选取观测时间是信号周期的整数倍, 其频谱在各次整数倍谐波频率处幅值为零, 因 而谐波之间不发生相互泄漏。即使信号频率作小围波动,泄漏误差也较小。余弦窗 般可以表达为(H为窗的项数-1)公式4.11 H2 nhw nah cosN h oN但同时较多项数的窗的项数越多,主瓣宽度越大,从而引起频谱分辨力的降低。窗函数能够产生较大的旁瓣衰减,有利于提高频谱计算精度,但组合窗的项数一般不大于4,容易推得H 1wah c WRhh 0 2公式4.2把式公式1代入公式2并简化得到j H ahw sin e

50、.2sinNho2NhhsinsinNNahh 0公式4.3公式4.3表明,欲使组合窗具有线形相位特性,应满足ah 0, H故常用的窗为两项汉宁(Hanning)窗、三项布莱克曼(Blackman)窗、四项布莱克曼哈里斯(Blackman-Harris )窗。如果测量时间为信号周期整数倍(且大于等于 4),则基波和各次谐波频率归化后正好位于上述组合窗幅频特性零点,此时整数次谐波相互干扰误差为零。当信号 频率波动时,各次谐波频率在窗零点附近也作一定的波动, 不同窗的零点附近特性不同,故产生的泄漏误差也不相同。相同条件下,窗宽 L和采样点数同时增大,频谱泄漏减小。四项布莱克曼-哈里斯窗大多数谐波衰

51、减90dB以上,性能最优,布莱克曼窗次之15。布莱克曼哈里斯窗(blackman harris )的定义布拉克曼窗也称二阶升余弦窗布拉克曼利用更多的矩形窗频谱线性组合构成布拉克曼窗,其偶对称表示为K 1am cos2mnN,1,0,1 -2单边表示ma m cosmn0,1,2 N 1单边表示的布拉克曼窗幅度频谱函数为这个窗函数中系数的选择应满足以下约束条件1amm 01.0假如布拉克曼窗有K个非零的系数am,则其振幅频谱将由(2K-1)个中心频率不同的矩形窗频谱线性组合 而成。显然,要使窗函数频谱的主瓣宽度窄,则K值不能选得很大。哈利斯曾找到了布拉克曼窗的一组三项及四项非零系数,如表4.3所

52、示。表4.3 am系数值最大副瓣电平三项系数四项系数-67dB-92dBA0.423230.35875A10.497550.48829A0.079220.14128A0.01168由这些系数所构成的窗函数成为布拉克曼一一哈利斯窗,可获得很小的副瓣电平。布拉克曼一一哈利斯窗取三项时得最大副瓣电平为-67dB,取四项系数时可得最大副瓣电平为-92dB 4。在本课题设计中,我采用的是四项布莱克曼一一哈里斯窗,其窗函数为:其波形图如图4.7所示:(b)图4.7 布莱克曼-哈里斯窗及其频谱a)时域特性 b)频域特性as.J4.4.3 窗函数的使用设连续时域信号为x t ,截断用窗函数为wt ,其宽度为T

53、 ,则相应的分辨力为 f =1/T,其傅立叶变换谱为W f,即周期为Ts的采样脉冲序列g t可写为g t =t nTsn其傅立叶变换谱为G f = fs (f mfs)m式中fs = 1Ts为采样频率,则相应的数字窗wnTs的窗谱WG f为WG( f) = F w(t)g(t) = W f * G fN2j2 fnTs=w(nTs) en N1W f mfs对信号X t的DFT分析实质上是x t的加权截断采样脉冲序列公式4.4Xwg (t) = X t w t g t的傅立叶变换在诸离散频率点f =k f上的谱密度采样值,即X(k) = F(Xwg(t)XWG(f)公式4.5公式4.6公式4.7设信号xt具有有限条分立谱线,即X(f) = Ae八(ffi)i则依公式4.4可得XWG(f) = X(f) * WG(f)=Ai ej Wg( f f i)i引用公式4.5、公式4.6有X(k) = Aej,WG(k ffi)i虽然公式4.7表明X(k)是具有真实谱线的函数,但如果采用具有实域化窗谱的窗函数,以致WG(f)在主瓣之外可完全忽略。则当诸真实谱线频差大于 WG(f)的主瓣 宽度B,即I fi fj B (i j)时,只可能有一条与k f相差在主

温馨提示

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

评论

0/150

提交评论