SVPWM算法实现

mac2024-06-06  56

clc;clear;close;

%%SVPWM算法 %%%判断扇区的 %%%r模拟假设(2/3)Udc r=20; Udc=30;

Ts=62.5%%单位微妙 r=r*cos(pi/6);%%%电压矢量圆环半径 k=720; for i=0:k     angle=(i*pi)/180;     Uta=r*cos(angle);     Utb=r*sin(angle);

    U0=Uta;     U1=Utb;     U2=(sqrt(3)*Uta-Utb)/2;     U3=-((sqrt(3)*Uta+Utb)/2);     %%%I区的判断     if (U1>=0 && U2>=0 && U3<0)        A=1;        B=1;        C=0;     end         %%%二区的判断N=1     if U1>0&&U2<0&&U3<=0        C=0;         B=0;        A=1;      end     

    %%%三区的判断N=5     if U1>=0&&U2<0&&U3>0        C=1;        B=0;        A=1;     end

    %%%四区的判断N=4     if U1<0&&U2<=0&&U3>0         C=1;         B=0;         A=0;     end

    %%%五区的判断N=6     if U1<0&&U2>0&&U3>=0         C=1;         B=1;         A=0;     end          

    %%%六区的判断N=2     if U1<=0&&U2>0&&U3<0        C=0;        B=1;        A=0;     end

    N=4*C+2*B+A;

    if N==3         Section=1;     elseif N==5        Section=3;     elseif N==6          Section=5;     elseif N==2         Section=6;     elseif N==1         Section=2;     elseif N==4         Section=4;     end

    U1=Utb;     U2=(sqrt(3)*Uta-Utb)/2;     U3=-(sqrt(3)*Uta+Utb)/2;     K=(sqrt(3)*Ts)/Udc;

    if Section==1     %%%1区的     T4=K*U2;     T6=K*U1;     T0=((1/2)*(Ts-T4-T6));     T7=T0;     elseif Section==2     %%%2区的     T2=-K*U2;     T6=-K*U3;     T0=((1/2)*(Ts-T2-T6));     T7=T0;     elseif Section==3     %%%3区的     T2=K*U1;     T3=K*U3;     T0=((1/2)*(Ts-T2-T3));     T7=T0;     elseif Section==4     %%%4区的     T1=-K*U1;     T3=-K*U2;     T0=((1/2)*(Ts-T1-T3));     T7=T0;     elseif Section==5     %%%5区     T1=K*U3;     T5=K*U2;     T0=((1/2)*(Ts-T1-T5));     T7=T0;     elseif Section==6     %%%6区     T5=-K*U1;     T4=-K*U3;     T0=((1/2)*(Ts-T4-T5));     T7=T0;     end

    if Section==1        Tx=T4;        Ty=T6;     elseif Section==2        Tx=T2;        Ty=T6;     elseif Section==3        Tx=T2;        Ty=T3;     elseif Section==4        Tx=T1;        Ty=T3;     elseif Section==5        Tx=T1;        Ty=T5;     elseif Section==6        Tx=T4;        Ty=T5;     end

    Ta=(Ts-Tx-Ty)/4;     Tb=Ta+Tx/2;     Tc=Tb+Ty/2;

    if Section==1        Pwm1(i+1)=Ta;        Pwm2(i+1)=Tb;        Pwm3(i+1)=Tc;     elseif Section==2        Pwm1(i+1)=Tb;        Pwm2(i+1)=Ta;        Pwm3(i+1)=Tc;     elseif Section==3        Pwm1(i+1)=Tc;        Pwm2(i+1)=Ta;        Pwm3(i+1)=Tb;     elseif Section==4        Pwm1(i+1)=Tc;        Pwm2(i+1)=Tb;        Pwm3(i+1)=Ta;     elseif Section==5        Pwm1(i+1)=Tb;        Pwm2(i+1)=Tc;        Pwm3(i+1)=Ta;     elseif Section==6        Pwm1(i+1)=Ta;        Pwm2(i+1)=Tc;        Pwm3(i+1)=Tb;     end end hold on plot(0:k,Pwm1,'r'); plot(0:k,Pwm2,'b'); plot(0:k,Pwm3,'y');

 

最新回复(0)