用MATLAB_仿真SVPWM模块..doc
文本预览下载声明
用MATLAB 仿真SVPWM模块,给出程序和输出波形?
1 SVPWM仿真原理
SVPWM是确定三相逆变电源电力电子器件开断时刻的一种方式。三相桥式逆变电路每个桥臂有两个开关管,其开关信号互补。三相桥式逆变电路各桥臂通断状态的组合为6个有效的空间矢量V4(100)、V6(110)、V2(010)、V 3(011)、V1(001)、V5(101)和2个零矢量V0(000)、V7(111)。为了得到旋转空间矢量V,在不降低直流电压利用率情况下能调控三相逆变器输出的基波电压和消除低次谐波,可用矢量V所在扇区边界的两个相邻特定矢量Vx和Vy及零矢量Vz合成一个等效的电压矢量V,调控V的大小和相位。则在时间很短的一个开关周期Ts中,矢量存在时间就由组成这个区域的两个相邻的非零矢量Vx存在Tx时间、Vy存在Ty时间以及零矢量Vz存在T0时间来等效,即
VxTx+VyTy+VzT0=VTs=V(Tx+Ty+T0)(1)
将Vx=2/3VD、Vy=2/3VDej600、Vz=0代入上式,得
(2)
(3)
(4)
通过矢量V所在的二维静止坐标系α轴和β轴的分量uα、uβ来计算电压矢量所在的扇区(我们把圆周分成6个扇区,扇区序号用N表示)。若uβ>0,则A=1,否则A=0;若uα-uβ>0,则B=1,否则B=0;若-uα-uβ>0,则C=1,否则C=0。扇区N=A+2B+4C。每个扇区内的矢量有扇区所在的两个边界矢量和零矢量共同合成,其作用时间如上所说。利用MATLAB/SIMULINK仿真,其仿真框图如下
图3.1 基于SVPWM逆变器仿真框图
图3.1中SVPWM模块为根据空间矢量控制方法确定电力电子器件开关时刻模块。
图3.2 确定开关管开断时刻模块
图3.2 中的svpwm 为MATLAB的S函数,其程序如下:
/*u[4]={ uα、uβ,Tz,Vdc}*/
int A,B,C,N;
double X,Y,Z,Tx,Ty,T0,Tl,Tm,Th;
if (u[1]0) A = 1;
else A=0;
if ((1.732051*u[0]-u[1])0) B = 1;
else B=0;
if ((-1.732051*u[0]-u[1])0) C = 1;
else C=0;
N=A+2*B+4*C;
X=1.732051*u[1]*u[2]/u[3];
Y=(0.8660*u[1]+1.5*u[0])*u[2]/u[3];
Z=(-0.8660*u[1]+1.5*u[0])*u[2]/u[3];
switch (N)
{
case 1: Tx= Y;Ty=-Z;break;
case 2: Tx=-X;Ty= Y;break;
case 3: Tx= Z;Ty= X;break;
case 4: Tx=-Z;Ty=-X;break;
case 5: Tx= X;Ty=-Y;break;
default: Tx=-Y;Ty= Z;
}
if ((Tx+Ty)u[2])
{
Tx=Tx*u[2]/(Tx+Ty);
Ty=Ty*u[2]/(Tx+Ty);
}
T0=(u[2]-(Tx+Ty))/4;
Tl=(u[2]+Tx-Ty)/4;/*Tl=T0/4+Tx/2*/
Tm=(u[2]-Tx+Ty)/4;/*Tm=T0/4+Ty/2*/
Th=(u[2]+Tx+Ty)/4;/*Th=T0/4+Ty/2+Ty/2*/
switch (N)
{
case 1 :y[0]=Tm;y[1]=T0;y[2]=Th;break;
case 2 :y[0]=T0;y[1]=Th;y[2]=Tm;break;
case 3 :y[0]=T0;y[1]=Tl;y[2]=Th;break;
case 4 :y[0]=Th;y[1]=Tm;y[2]=T0;break;
case 5 :y[0]=Th;y[1]=T0;y[2]=Tl;break;
default :y[0]=Tl;y[1]=Th;y[2]=T0;
}
2 SVPWM仿真波形
图3.3 开关函数Sa的波形
图3.4 开关函数Sb的波形
图3.5 开关函数Sc
显示全部