SVPWM

2011年08月06日 22:30    发布者:zhangzhen51
time1=u(2);           % 矢量1作用时间
    time2=u(4);           % 矢量2作用时间
    time0=u(6);           % 矢量3作用时间   
    sector_U=u(7);    % 输出电压区间

    Ts=0.0001;              % 系统采样周期200us,频率5k Hz

%-----------------------脉冲分配开始--------------------------------
   
if mod(t,Ts)==0             % 周期发生器,每隔200us将t赋给time_pass
    time_pass=t;
else
end

if t-time_pass>=0 && t-time_pass< time0/4
    step=1;
    pwm_output=0;
elseif t-time_pass>=time0/4 && t-time_pass<(time0/2+time1)/2
    step=2;
    pwm_output=vector1;
elseif t-time_pass>=(time0/2+time1)/2 && t-time_pass<(time0/2+time1+time2)/2
    step=3;
    pwm_output=vector2;
elseif t-time_pass>=(time0/2+time1+time2)/2 && t-time_pass<(time1+time2)/2+time0*3/4
    step=4;
    pwm_output=111;
elseif t-time_pass>=(time1+time2)/2+time0*3/4 && t-time_pass     step=5;
    pwm_output=vector2;
elseif t-time_pass>=time1/2+time2+time0*3/4 && t-time_pass     step=6;
    pwm_output=vector1;
elseif t-time_pass>time1+time2+time0*3/4 && t-time_pass<0.0001
    step=7;
    pwm_output=0;   
end

%----------------提出输出各相状态-----------------------------------
    A=floor(pwm_output/100);                     %提取百位
    B=floor((pwm_output-A*100)/10);       %提取十位
    C=pwm_output-A*100-B*10;       %提取个位
sys(1)=A;
sys(2)=1-A;
sys(3)=B;
sys(4)=1-B;
sys(5)=C;
sys(6)=1-C;
sys(7)=step;