本文主要是介绍SVPWM算法实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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');
这篇关于SVPWM算法实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!