文档库

最新最全的文档下载
当前位置:文档库 > 基于MATLAB的DSP调试方法在电压闪变仪中的应用

基于MATLAB的DSP调试方法在电压闪变仪中的应用

基于MAT LAB 的DSP 调试方法

在电压闪变仪中的应用

马 涛

Ξ

 程 佳 向 冀

(华北电力大学电气与电子工程学院,河北保定071003)

摘 要:本文简要分析了国际电工委员会(IEC )闪变仪的数字实现方法。选用无限长单位脉冲响应滤波器(IIR )实现闪变仪中的数字滤波环节。通过采用TI 公司的T MS320C67系列DSP 芯片设计出电压闪变仪中的数字滤波器。最后基于Matlab 向目标DSP 中输入原始信号来代替闪变标准源,将所得输出结果与仿真结果对比,表明达到IEC 要求。

关键词:DSP

基于MATLAB的DSP调试方法在电压闪变仪中的应用

;闪变仪;Matlab ;数字滤波器

电压波动与闪变是衡量电能质量的重要指标。电力系统冲击性负荷的增加,加大了电网供电系统电压波动、闪变的严重程度。随着我国电能质量管理工作的日益完善,电压波动和闪变测量仪器在系统中的应用也越来越多。近年来依据IEC 推荐的电压闪变测量原理,通过仿真研究给出了

IEC 闪变仪的数字化实现方法。[1]

而在基于DSP 的电压闪变

仪实现过程中的主要工作是各个环节数字滤波器的设计与实现。多数开发人员采用先确定算法,然后在Matlab 环境下仿真,最后在DSP 上编写调试程序并最终固化到DSP 目标版上。这样开发周期长,并且由于闪变标准源的造价过于昂贵,导致一般条件下无法对滤波器性能进行测试,致使无法保证闪变仪的测量精确性。本文通过Matlab 与CCS 的连接,可实现在Matlab 环境下对目标DSP 的存储器或寄存器数据进行访问,再利用Matlab 强大的分析和可视化工具对其数据进行分析和可视化,[2]对滤波器性能进行测试,以达到要求。

一、IEC 推荐闪变测量原理及滤波器的数字实现

IEC 已经公布了闪变测试仪的设计规范,它由UIE 的提

议发展而来。闪变测试仪结构如图1所示。[3,4]

图中各框的

相关传递函数如下:

图1

0.05H z 高通滤波器传递函数为HP (s )=

s Πω1+s Π

ω,式中ω=2π0.05s

-1

六阶巴特沃斯低通滤波器传递函数为

BW (s )=[1+b 1(s Π

ωc )+1+b 2(s Πωc )2

+b 3(s Πωc )3

+b 4(s Πωc )4+b 5(s Πωc )5+b 6(s Πωc )6]-1式中ω=2π0.05s -1

;b 1=b 5=

3.864;b 2=b 4=7.464;b 3=9.141;b 6=1.0。

视感度加权滤波器传递函数为:

K (s )=

k ω1s s 2

+2λs +ω21×1+s Π

ω2(1+s Π

ω3)(1+s Πω4)式中k =1.74802;;λ=2π4.05981;ω1=2π2.27979;ω3=2π1.22535;ω4=2

π21.9。模拟人脑神经对视觉反映和记忆效应的低通滤波器传递函数为LP (s )=

1

1+τs

,式中τ=300ms 。从模拟系统到数字系统的变换,常用的以模拟滤波器设计数字滤波器的方法有脉冲响应不变变换法和双线性变换法。前者变换简单且能保持变化频率的线性化,但会产生频谱的周期延拓失真;后者变换稍复杂,但不会产生频谱的周期延拓失真。采用双线性变换法,并利用Matlab 内置函数

bilinear 可得各数字滤波器参数

[N d ,D d ]=BI LI NE AR (N ,D ,F s ) (1)

式中N d 、D d 和N 、D 分别为数字滤波器分子和分母的系数矩阵,均按降幂排列;F s 为变换所用的采样频率,选用不同

采样频率可得到对应的数字滤波器参数。

[5,6,7,8]

以六阶巴特沃斯低通滤波器为例,取F s =400,可得:

Ξ作者简介:马涛(1982-),男,湖北潜江人,华北电力大学电气与电子工程学院电工理论与新技术专业05级硕士研究生。

中国电力教育2007年研究综述与技术论坛专刊

D d =

1.00000000000000-3.

基于MATLAB的DSP调试方法在电压闪变仪中的应用

9315663581653-6.6911824855253

-6.24946434346823.3604510817022-0.982754785615830.12178998778657T

N d = 1.

基于MATLAB的DSP调试方法在电压闪变仪中的应用

505948135097e

-49.0356888105925e -42.2589222026541e -33.0118962701904e

-32.2258922202657e -39.0356888105692e -41.5059481351037e

-4

T

反复利用式(1)可得到所有数字滤波器的系统函数。为了便于实际应用,本系统采用无限长单位脉冲响应滤波器

(IIR )。因此这里主要介绍IIR 滤波器在DSP 的实现。

IIR 滤波器的差分方程的一般形式为y (n )=∑N -1

k =0

b k x (n -1)+∑N -1

k =0

a k y (n -1)

式中y (n )为输出;x (n )为输入。

IIR 滤波器的基本结构有3种,即直接型、级联型、并联

型。根据它们的特点,以及所使用的TI 公司的T MS320C67系列DSP 芯片,本系统选用了直接型结构。根据结构设计出在DSP 上的六阶巴特沃斯低通滤波器主要程序:

v oid DSPF sp iir (float 3restrict r1,const float 3x ,float 3restrict r2,const float 3h2,const float 3h1,int nr ){int i ,j ;float sum ;

for (i =0;i

sum =h2[0]3x[5+i ];for (j =1;j <=5;j ++)

sum +=h2[j ]3x[5+i -j ]-h1[j ]3r1[5+i -j ];r1[5+i ]=sum ;r2[i ]=r1[5+i ];}}

在计算电压闪变时,可根据具体的传递函数,确定IIR 滤波器的级数,套用上述程序,便可完成数字滤波功能。

二、Matlab 辅助DSP 实现IIR 滤波器

集成在Matlab6.5中的CCS Link 工具把Matlab 、TI 开发环境(CCS )及硬件DSP 连接起来,允许开发者在Matlab 的环境下就可以完成对CCS 和硬件目标DSP 的操作,它提供了Mat 2

lab 、CCS 和目标DSP 的双向连接,可以把数据从CCS 中传送

到Matlab 中去,也可以把Matlab 中的数据传到CCS 中。[2]

面利用Matlab 与CCS 及目标DSP 的连接利用Matlab 辅助DSP 实现六阶巴特沃斯低通滤波器,并把测试结果与Matlab 中的仿真结果对比。

Matlab 辅助DSP 实现IIR ,其总体过程为在DSP 中编写处

理程序;在Matlab 中利用滤波器设计、分析工具,根据指定的数字滤波器参数,然后把滤波器系数以头文件形式导入CCS 中,头文件中含滤波器阶数和系数数组,在Matlab 中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用C 语言来实现程序。头文件名不变,当Matlab 中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

1.在CCS 中建立主程序

在CCS I DE 中建立iir.pjt 工程,用C 语言编写处理主程序iir.c ,利用汇编语言文件,来定义中断服务程序。另外根据板上的存储器配置方式,编写存储器配置文件(.cmd 文件),编译、链接,生成可执行代码(iir.out 文件),加载到目标

DSP 中。

2.利用FDAT ool 生成六阶巴特沃斯低通滤波器Matlab 中的FDAT ool (Filter Design &Analysis T ool )

基于MATLAB的DSP调试方法在电压闪变仪中的应用

利用图

形界面来设计和分析滤波器,本系统通过指定滤波器参数来快速设计IIR 滤波器。在Matlab 命令窗中输入fdatool ,打开

FDAT ool 图形设计界面。按所得参数添入,点击Design Filter ,

开始生成六阶巴特沃斯低通滤波器。图2为FDAT ool 工具的设计界面及滤波器的频幅响应特性。

选择菜单T argets ->Export to C ode C om poser S tudio (tm )

I DE ,打开Export to C Header File 对话框,选择C header file ,指

定变量名(滤波器阶数和系数向量),输出数据类型可选浮点

5

9基于MAT LAB 的DSP 调试方法在电压闪变仪中的应用

型或32b ,16b 整型等,根据自己安装选择目标板板号和处理器号,单击OK,保存该头文件,需指定文件名(filtercoeff.h )和路径。打开iir 工程文件夹,该滤波器系数头文件filterco 2

eff.h 已含在工程中。该头文件用到Matlab 中的tm wtypes.h

文件,需把该文件也包含在工程中,还要在fir.c 文件中声明包含滤波器参数头文件,即:

#include 〃filtercoeff.h 〃

然后编译、链接工程,添加的头文件自动在工程目录中显示,目标DSP 自动为滤波器系数分配相应的存储空间。

3.Matlab 向目标DSP 传送数据并运行、显示结果

利用如下一段M atlab 代码向目标DSP 中输入原始数据,[2]

并运行目标DSP 中的程序,读出DSP 中的处理结果。

fs =400;%采样频率f1=10;f2=100;

x =1003sin (23pi 3f13[1:100]Πfs )+1003sin (23pi 3f23[1:100]Πfs );%产生输入信号

cc =ccsdsp (‘boardnum ’,0,’procnum ’,0); %创建与CCS I DE 相连接的对象

inp-bu ffer =

基于MATLAB的DSP调试方法在电压闪变仪中的应用

createobj (cc ,’inp-bu ffer ’

); %创建输入数据变量inp-bu ffer 的嵌入式对象

out-bu ffer =createobj (cc ,’out-bu ffer ’

); %创建输入数据变量out-bu ffer 的嵌入式对象

write (inp-bu ffer ,round (x )); %向目标DSP 的输入缓

冲区写入数据

run (cc ); %运行目标DSP 中的程序pause (5); %运行一段时间halt (cc ); %停止目标DSP

figue

inpbu ffer =read (inp-bu ffer ); %读出DSP 中的输入数据

DSPresult =read (out-bu ffer ); %读出DSP 中的输出数据

subplot (2,2,1)

plot (inpbu ffer ); %画出DSP 中的输入信号title (‘DSP 输入数据’);subplot (2,2,2)

plot (DSPresult ); %画出DSP 中的输出滤波结果title (‘

DSP 滤波结果’);结果表明100H z 的信号分量经过滤波器后被滤除掉了,最后滤波输出的结果为10H z 的正弦信号,同时与Matlab 中的处理结果进行比较,证明了所建立的算法程序正确。

三、结论

基于DSP 的电压闪变仪具有体积小、功能强、精度高、测量通道多的特点。辅助Matlab 向目标DSP 中输入原始数据以代替闪变标准源,测试闪变仪中的滤波器性能,甚至闪变仪的整体性能,大大缩短了开发时间,提高了设计效率,具有广泛的应用前景。

参考文献:

[1]马玉龙.IEC 闪变测量原理的数字化实现方法[J ].中国电机

工程学报,2001,21(11).

[2]李真芳,苏涛,黄小宇.DSP 程序开发:M AT LAB 调试及直接目

标代码生成[M].西安:西安电子科技大学出版社,2003,10.

[3]孙树勤.电压波动与闪变[M].北京:中国电力出版社,1999.[4]IEC.61000.4.15.Flickermeter -functional and design specifica 2tions[S].IEC.1997.

[5]康伟.电压闪变测量方法的研究与实现[D].华北电力大学硕

士学位论文,2003.

[6]郭上华.电压波动与闪变微机检测方法的研究[D].湖南大学

硕士学位论文,2003.

[7]白先红.IEC 闪变仪的数字化实现的研究[D].河海大学硕士

学问论文,2004.

[8]付卫.新型数字闪变仪的研制[D ].清华大学硕士学位论文,1992.

6

9基于MAT LAB 的DSP 调试方法在电压闪变仪中的应用