最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

电力电子spwm和svpwm程序实现和psim仿真

来源:动视网 责编:小OO 时间:2025-09-24 10:28:10
文档

电力电子spwm和svpwm程序实现和psim仿真

三相桥式正弦波SPWM逆变器如图1所示。图1三相桥式正弦波SPWM逆变器解:(1)、当采用叠加三次谐波的方法时,调制信号变为式中为三次谐波,其相对基波的幅值为,。对求最大值,由得:又得:则则,将、带入得:,此时是的函数,由得:,此时。当A=1V时,调制比,叠加三次谐波后直流电压利用率为:此时对应的值即对应取得最大值时的值,即:叠加上述幅值的三次谐波后,要保持输出电压不含低次谐波,原调制信号(和)幅值A还能提高,当刚好达到满调制时,即:,得:,即A可提高到1.155。(2)、:当k=0.5时,有
推荐度:
导读三相桥式正弦波SPWM逆变器如图1所示。图1三相桥式正弦波SPWM逆变器解:(1)、当采用叠加三次谐波的方法时,调制信号变为式中为三次谐波,其相对基波的幅值为,。对求最大值,由得:又得:则则,将、带入得:,此时是的函数,由得:,此时。当A=1V时,调制比,叠加三次谐波后直流电压利用率为:此时对应的值即对应取得最大值时的值,即:叠加上述幅值的三次谐波后,要保持输出电压不含低次谐波,原调制信号(和)幅值A还能提高,当刚好达到满调制时,即:,得:,即A可提高到1.155。(2)、:当k=0.5时,有
三相桥式正弦波SPWM逆变器如图1所示。

图1  三相桥式正弦波SPWM逆变器

解:

(1)、当采用叠加三次谐波的方法时,调制信号变为

    

式中为三次谐波,其相对基波的幅值为,。

对求最大值,由得:  

又得: 则

则,将、带入得:,此时是的函数,由得:,此时。

当A=1V时,调制比,叠加三次谐波后直流电压利用率为: 

此时对应的值即对应取得最大值时的值,即: 

叠加上述幅值的三次谐波后,要保持输出电压不含低次谐波,原调制信号(和)幅值A还能提高,当刚好达到满调制时,即:,得:,即A可提高到1.155。 

(2)、

:当k=0.5时,有:

 

对A相,加入零序电压后有:

则: 

知,当刚达到满调制时,有,则,即基波幅值可提高到1.15倍的载波幅值,使直流电压利用率提高到1。

优点:可以提高直流电压利用率

缺点:不能减少开关频率

:当时,有:

对A相,加入零序电压后有:

则: 

当时,达到满调制;在时,此时直流电压利用率为:。当时,可是负半部分利用率达到最大。

优点:不仅可以提高直流电压利用率,而且可以使开关频率减少1/3,有利于减少开关损耗。

缺点:由于有一段时间持续满调制,可能是输出含有的谐波次数降低,使滤波变得困难。

(3)、仿真(以a相为例):

:叠加三次谐波时,若, ,则此时的仿真图如图2所示。

图2  ,时的仿真图

由图可见,当,,调制波叠加三次谐波后其峰值达到载波峰值,且基波幅值大于调制波峰值,从而提高了直流电压利用率,与理论分析相符。

:叠加k=0.5的零序电压时,若,则此时的仿真图如图3所示。

图3  时的仿真图

由图可见,当,调制波叠加零次谐波后其峰值达到载波峰值,且基波幅值大于调制波峰值,从而提高了直流电压利用率,与理论分析相符。

:叠加k=1的零序电压时,若,则此时的仿真图如图4所示。

图4  时的仿真图

由图可见,当,调制波叠加零次谐波后其峰值达到载波峰值,且基波幅值大于调制波峰值,从而提高了直流电压利用率,与理论分析相符。

由理论计算及仿真可知:

通过在相电压的参考指令里注入1/6倍的基波分量幅值的三次谐波,就使得在不发生过调制的情况下调制系数m可以达到1.15,从而使输出线电压的峰值最大可以达到Ud

通过在相电压的参考指令里注入零次谐波,当k取一定的值时可以减小开关频率,从而减少开关损耗;但同时可能使输出的谐波减小,从而使滤波变得困难。

(4)、采用空间矢量法(SVPWM)进行三相SVPWM调制,其仿真原理图如图5所示。

图4  SVPWM仿真原理图

合成矢量为: ,则初始相位为: 

程序流程图如图5所示。

图5   程序流程图

程序清单:

#define pi 3.1415

static int n=0;

static double t1,t2,t0,ta,tb,tc,ura,urb,urc;

int flag;//判断扇区的变量

double  a0=270,a1,a2;//矢量的相位角

double b=1.8;//每过Ts旋转的角度

double Ts=0.0001;//载波周期

if(t>=n*Ts)

{

    a1=a0+b*n;//每过Ts角度增加b

    a2=a1-((int)a1/360)*360;//转的角度超过一圈时,减去圈数对应的角度,从而判读所在扇区

/******判断所在扇区******/

    if(a2<60)    

        flag=1;

else if(a2<120)

        flag=2;

else if(a2<180)

        flag=3;

else if(a2<240)

        flag=4;

else if(a2<300)

        flag=5;

    else

        flag=6;

/******根据所在扇区,计算时间******/

    switch(flag)

    {

        case 1:

        {

            t1=sqrt(3)*Ts*sin((60-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin(a2*2*pi/360)/200;

            t0=Ts-t1-t2;

            ta=t1+t2+t0/2;         

            tb=t2+t0/2;

            tc=t0/2;

            break;

        }

        case 2:

        {

            t1=sqrt(3)*Ts*sin((60*2-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tb=t1+t2+t0/2;          

            ta=t1+t0/2;

            tc=t0/2;

            break;

        }

        case 3:

        {

            t1=sqrt(3)*Ts*sin((60*3-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*2)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tb=t1+t2+t0/2;          

            tc=t2+t0/2;

            ta=t0/2;

            break;

        }

        case 4:

        {

            t1=sqrt(3)*Ts*sin((60*4-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*3)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tc=t1+t2+t0/2;          

            tb=t1+t0/2;

            ta=t0/2;

            break;

        }

        case 5:

        {

            t1=sqrt(3)*Ts*sin((60*5-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*4)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tc=t1+t2+t0/2;          

            ta=t2+t0/2;

            tb=t0/2;

            break;

        }

        case 6:

        {

            t1=sqrt(3)*Ts*sin((60*6-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*5)*2*pi/360)/200;

            t0=Ts-t1-t2;

            ta=t1+t2+t0/2;          

            tc=t1+t0/2;

            tb=t0/2;

            break;

        }

    }

/******根据各管导通的时间计算调制电压******/

    ura=2*ta/Ts-1;

    urb=2*tb/Ts-1;

    urc=2*tc/Ts-1;

    

    

    n++;    

};

/******输出调制电压,用于和三角载波比较******/

y1=ura;

y2=urb;

y3=urc;

仿真结果如图6、7所示。

    图6  C block模块输出信号

图7  与图6对应的各输出信号与三角载波比较后输出信号

由仿真图可知,与理论相符合

(5)、采用调整零矢量的方法实现三相SVPWM调制,其原理图同图4。

当k=1,即零矢量用, ,,则在、扇区,Sa=1;在、扇区,Sb=1;在、扇区,Sc=1。

程序清单:

#define pi 3.1415

static int n=0;

static double t1,t2,t0,ta,tb,tc,ura,urb,urc;

int flag;//判断扇区的变量

double  a0=270,a1,a2;//矢量的相位角

double b=1.8;//每过Ts旋转的角度

double Ts=0.0001;//载波周期

if(t>=n*Ts)

{

    a1=a0+b*n;//每过Ts角度增加b

    a2=a1-((int)a1/360)*360;//转的角度超过一圈时,减去圈数对应的角度,从而判读所在扇区

/******判断所在扇区******/

    if(a2<60)    

        flag=1;

else if(a2<120)

        flag=2;

else if(a2<180)

        flag=3;

else if(a2<240)

        flag=4;

else if(a2<300)

        flag=5;

    else

        flag=6;

/******根据所在扇区,计算时间******/

    switch(flag)

    {

        case 1:

        {

            t1=sqrt(3)*Ts*sin((60-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin(a2*2*pi/360)/200;

            t0=Ts-t1-t2;

            ta=Ts;         

            tb=t2+t0;

            tc=t0;

            break;

        }

        case 2:

        {

            t1=sqrt(3)*Ts*sin((60*2-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tb=Ts;          

            ta=t1+t0;

            tc=t0;

            break;

        }

        case 3:

        {

            t1=sqrt(3)*Ts*sin((60*3-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*2)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tb=Ts;          

            tc=t2+t0;

            ta=t0;

            break;

        }

        case 4:

        {

            t1=sqrt(3)*Ts*sin((60*4-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*3)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tc=Ts;         

            tb=t1+t0;

            ta=t0;

            break;

        }

        case 5:

        {

            t1=sqrt(3)*Ts*sin((60*5-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*4)*2*pi/360)/200;

            t0=Ts-t1-t2;

            tc=Ts;         

            ta=t2+t0;

            tb=t0;

            break;

        }

        case 6:

        {

            t1=sqrt(3)*Ts*sin((60*6-a2)*2*pi/360)/200;

            t2=sqrt(3)*Ts*sin((a2-60*5)*2*pi/360)/200;

            t0=Ts-t1-t2;

            ta=Ts;          

            tc=t1+t0;

            tb=t0;

            break;

        }

    }

/******根据各管导通的时间计算调制电压******/

    ura=2*ta/Ts-1;

    urb=2*tb/Ts-1;

    urc=2*tc/Ts-1;

    

    

    n++;    

};

/******输出调制电压,用于和三角载波比较******/

y1=ura;

y2=urb;

y3=urc;

仿真图如图8、9所示。

图8   k=1时(Va)的仿真图

由图可知,k=1调整零矢量的SVPW方法与叠加零序电压的SPWM调制方法相似,都能够减少开关次数,从而减小开关损耗。

文档

电力电子spwm和svpwm程序实现和psim仿真

三相桥式正弦波SPWM逆变器如图1所示。图1三相桥式正弦波SPWM逆变器解:(1)、当采用叠加三次谐波的方法时,调制信号变为式中为三次谐波,其相对基波的幅值为,。对求最大值,由得:又得:则则,将、带入得:,此时是的函数,由得:,此时。当A=1V时,调制比,叠加三次谐波后直流电压利用率为:此时对应的值即对应取得最大值时的值,即:叠加上述幅值的三次谐波后,要保持输出电压不含低次谐波,原调制信号(和)幅值A还能提高,当刚好达到满调制时,即:,得:,即A可提高到1.155。(2)、:当k=0.5时,有
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top