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 pwm_output=vector2; elseif t-time_pass>=time1/2+time2+time0*3/4 && t-time_pass 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; |