📄 svpwm_sim_v2.m
字号:
function [PWM]=SVPWM_sim_v2(Freq,sin,cos,wt,t)
T_pwm=1/2000;
t_cycle=mod(t,T_pwm);
Uout=sqrt(1/2);
Ud=Uout*cos;
Uq=Uout*sin;
U=[ 1 0 0;
1 1 0;
0 1 0;
0 1 1;
0 0 1;
1 0 1;
0 0 0;
1 1 1]';
Decm=[ 0 1.4142;
1.2247 -0.7071;
-1.2247 0.7071;
1.2247 0.7071;
-1.2247 -0.7071;
0 1.4142;
0 -1.4142;
-1.2247 0.7071;
1.2247 -0.7071;
-1.2247 -0.7071;
1.2247 0.7071;
0 -1.4142];
Sector=fix(3*wt/pi)+1;
T=T_pwm.*(inv(Decm(2*Sector-1:2*Sector,:)))*[Ud Uq]';
if ((mod(t,T_pwm))==0)
sin
cos
T
end
if (Sector==1)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,1);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,2);
else
PWM=U(:,8);
end
end
if (Sector==2)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,2);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,3);
else
PWM=U(:,7);
end
end
if (Sector==3)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,3);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,4);
else
PWM=U(:,8);
end
end
if (Sector==4)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,4);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,5);
else
PWM=U(:,7);
end
end
if (Sector==5)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,5);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,6);
else
PWM=U(:,8);
end
end
if (Sector==6)
if (((t_cycle>=0)&(t_cycle<=T(1)/2))|(t_cycle>=(T_pwm-T(1)/2)))
PWM=U(:,6);
elseif ((t_cycle<=(T(1)+T(2))/2)|(t_cycle>=(T_pwm-((T(1)+T(2))/2))))
PWM=U(:,1);
else
PWM=U(:,7);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -