基于LabView的间谐波检测

2013-09-01 02:32刘含露林绿浩
电气技术 2013年9期
关键词:二进制谐波幅值

刘含露 林绿浩

(湖北咸宁供电公司,湖北 咸宁 437100)

伴随着现代工业化的快速发展,各种非线性负荷例如变频装置、换流设备、电气化铁道、电弧炉以及节能灯和电视机等在电网中越来越广泛地被采用。由于非线性负荷引起的谐波和间谐波反馈到电网中,导致公用电网中的电压/电流波形产生畸变,严重的污染以至于影响电网环境。间谐波会产生闪变,导致屏幕闪烁,造成滤波器谐振、过负荷,引起感应线圈噪声,干扰电力载波通信以及引起过零点检测误差等,对电网中的电力设备的安全运行造成巨大危害。国内外学者对谐波已经进行了大量研究,间谐波由于其本身频率是基波的非整数倍,幅值又远小于基波和谐波的幅值的特点,检测的难度也远大于谐波。随着对谐波研究的深入,间谐波引起的危害也越来越受到人们的关注。我国于 2009年颁布了《公用电网间谐波 GB/T 24337-2009》[1],并于2010年开始实施。新标准的颁布可以看出电力部门越来越重视间谐波对电网危害,因此,对间谐波进行测量和治理具有重要的现实意义。

1 间谐波检测方法

在理论研究和实际应用方面,现有的间谐波检测算法主要有:加窗FFT算法[2]、参数化谱估计[3]、小波变换[4]、人工神经网络等[5]。文献[6]中提出一种新的离散傅里叶变换和迭代算法的计算方法来检测间谐波,并称之为迭代傅里叶(IDFT)算法。

IDFT算法是一种基于离散傅里叶变换和迭代算法的频谱分析方法,该算法的原理是,首先对信号选取矩形窗内信号基于核函数的变换,再取该变换同无穷时间区间上信号的傅里叶变换偏差的平方为目标函数,通过解这个目标函数最小的微分方程来得到一个核函数表达式,然后根据求得的矩形窗内信号的基于该核函数的变换,通过迭代求解出信号中各分量的频率,最后根据间谐波的特点,推导出求解间谐波参数(主要是幅值和相位)的表达式。

2 LabView实现IDFT算法

LabView利用控件图标和连线将复杂、笼统的语言编程简化为简单的图形化编程[7],将用户从复杂的编程工作中解放出来。但是当所编写的程序较为复杂的时候,程序框图里面的控件和数据的连线分布很密,程序的可读性较差,并且影响程序的修改和编辑。

2.1 调用Mathscript节点实现IDFT算法测量间谐波

LabView中带有各种功能不同的节点,MathScript节点是其中之一[8]。在程序框图中选中控件选板,MathScript节点处于“函数—编程—结构”模板中,MathScript节点的特殊性就在于它是LabView中唯一的一个与Matlab脚本语法兼容、可以运行Matlab中 M文件的节点。并且在 LabView中使用MathScript节点进行编程运算时,我们无需安装Matlab软件就可以使用MathScript节点,进行M文件的建立及执行。

IDFT算法首先是用Matlab语言编写的,因此在实现 IDFT算法时,我们首先考虑到的是利用Mathscript节点直接调用已经写好的M文件。通过LabView数据采集卡采集数据,将采集到的数据由Matlab程序进行处理计算,最后通过LabView前面板显示间谐波的测量结果。

在文献[8]中叶介绍了利用Mathscript节点进行间谐波测量的方法。但是在对间谐波进行实时测量时,随着时间的增加数据量会不断的增大。而计算机的数据存储容量有限,如果将数据以二进制的形式保存则可以计算机的存储节约空间,因此选择先将测量的数据以二进制的形式进行保存,这样数据内存的占有空间就小得多。利用 Mathscript节点实现 IDFT算法的程序框图如图 1所示,中间的Mathscript节点中的程序即为IDFT算法的M文件。程序用一个 While循环来保证程序的连续运行采集数据。点击运行程序后,首先创建一个名为Binaryfile.date的二进制文件,并将其属性选择仅写入,并且由用户选择将二进制文件保存的位置;其次数据采集卡进行数据采集,Mathscript节点里的程序将采集到的信号进行分析计算处理,同时测量到的间谐波的幅值/频率/相位以数组的形式不断的写入二进制文件,并且将幅值、相位和频率通过创建XY图的形式在前面板生成幅频图和相频图;最后程序停止运行并且关闭二进制文件。

图1 Mathscript节点实现IDFT算法程序框图

这样测量得到的二进制文件是不可读的,需要转化成可读的文本文件。利用LabView编写读取二进制文件程序,程序通过顺序结构实现先读取数据再写入Excel保存,间谐波测量结果写入Excel的程序图如图2所示。

图2 间谐波测量结果写入Excel程序框图

2.2 利用LabView自带函数实现IDFT算法测量间谐波

在调用Matlab节点进行间谐波测量时,由于软件需要通过调用外部的节点来进行间谐波的测量计算,这样程序运行的时间就不便于控制,也就是在采样时间上不能得到精确地控制,调用Matlab节点会使程序运行上面有延误。LabView中自带有相当多的函数,IDFT算法从计算上来看主要是通过矩阵的计算,不断的迭代来实现的,因此可以考虑完全利用LabView中自带的函数来实现IDFT算法,以减小由于调用外部节点进行计算而引起的时间上的延误。运用LabView自带函数实现IDFT算法的程序框图如图3所示。

图3 LabView自带函数实现IDFT算法程序框图

3 测量结果

为了验证 IDFT算法的准确性,进行了采用LabView自带函数实现 IDFT算法测量间谐波的仿真实验。设仿真信号为

式中,采样时间分别为0.2s和0.12s,采样的频率为1000Hz。仿真结果如图4和图5所示。

图4 采样时间为0.2s时间谐波检测图

图5 采样时间为0.12s时间谐波检测图

从图4、图5可以看出,采用LabView自带函数实现 IDFT算法准确的检测出了间谐波。幅频图上波峰周围的幅值迅速下降,说明受频谱泄漏的影响非常的小。当ts=0.12s时,并没有受到栅栏效应的影响,测量出的间谐波的频率、幅值和相位仍然准确,一般都是采取更短的采样时间来避免非同步采样的影响,当采样时间更短时,IDFT仍然能够准确的检测出间谐波,说明 IDFT算法受非同步采样的影响非常的小。

4 结论

文章介绍了两种编程方法在LabView软件上实现了 IDFT算法的间谐波检测。一种通过调用MathScript节点实现 IDFT算法,LabView中的MathScript节点在运行时不需要安装任何第三方软件(Matalb等),在LabView环境中即可完成Matlab中 M 文件的创建和执行。该方法通过直接调用Matlab中的M文件实现算法,缺点是由于外部调用节点程序的运行时间难以控制;考虑到调用MathScript节点实现IDFT算法时,程序打开和运行时间都相对滞后,是否可以完全利用LabView软件中自带的函数及控件实现 IDFT算法,这就是第二种实现方法:完全利用LabView软件中自带的函数及控件实现 IDFT算法,无需调用其他软件的文件来实现程序,程序运行时间可以得到控制,进行间谐波的测量,准确的检测出了间谐波的成分含量。其次考虑到间谐波检测时的数据量较大,选择将测量的数据通过写入二进制文件保存,再通过读取二进制文件将测量到的间谐波的频率/幅值/相位以及图形在 Excel文件中显示,便于测量人员直接观察电网中的间谐波含量。两种方法都准确的检测出了间谐波的成分含量,并且检测结果受频谱泄漏和非同步采样的影响非常小,提高了测量的准确性。

[1] 林海雪.公用电网间谐波国家标准介绍[J].供用电,2010,27(6):8-11.

[2] 钱昊, 赵荣祥.基于插值 FFT算法的间谐波分析[J].中国电机工程学报,2005,25(21):87-91.

[3] 沈睿佼,杨洪耕.基于奇异值总体最小二乘法的间谐波估计算法[J].电网技术,2006,30(23):45-49.

[4] 曹健,林涛,刘林,张蔓,崔一铂.基于最小二乘法和复连续小波变换的电力系统间谐波测量方法[J].电网技术,2009,33(17):86-90.

[5] 李涛,何怡刚.基于支持向量机与神经网络的间谐波测量混合算法[J].高电压技术,2008,34(8):1710-1714.

[6] ZHANG Q M, LIU H J, et al.A precise and adaptive algorithm for interharmonics measurement based on iterative DFT[J].IEEE Trans on Power Delivery,2008,23(4): 1728-1735.

[7] 阮奇桢.我和LabVIEW:一个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2009.

[8] 金维刚,刘会金.MathScript在谐波/间谐波检测系统中的应用[J].电力系统及自动化学报,2009,2(3):85-89.

猜你喜欢
二进制谐波幅值
用二进制解一道高中数学联赛数论题
AFM轻敲模式下扫描参数对成像质量影响的研究
《液压与气动》常用单位的规范
有趣的进度
二进制在竞赛题中的应用
SFC谐波滤波器的设计及应用
自适应的谐波检测算法在PQFS特定次谐波治理中的应用
基于S变换的交流电网幅值检测系统计算机仿真研究
电网谐波下PWM变换器的谐波电流抑制
枢纽牵引供电系统谐波问题探讨