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');