|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function output=district0(in)
%
ua=in(1);ub=in(2);uc=in(3);ts=in(4);vcd=in(5);t=in(6);
%输入参考电压ua,ub,uc,%采样时间ts,直流侧电压vcd,导通时间参量t
ur=3*(ua+ub*exp(j*2*pi/3)+uc*exp(j*4*pi/3))/vcd; %转换为电压空间矢量
theta0=angle(ur); %电压空间矢量的相角
%扇区及其角度
if theta0<0 %0<=theta0<2pi
theta0=theta0+2*pi;
end
si=fix(theta0*3/pi)+1; %求取参考矢量在三电平矢量图中的扇区
theta=rem(theta0,pi/3); %转换到第一扇区后0<=theta<pi/3
%区域判断及对应两电平参考电压
ual=abs(ur)*cos(theta) ;%空间矢量在alpha和beta轴上的投影
ube=abs(ur)*sin(theta);
h=sqrt(3)/2; %定义一个常量h
k1=fix(ual+ube*sqrt(3));
k2=fix(ube/h);
uali=ual-k1+0.5*k2;
ubei=ube-k2*h;
if (ubei/uali)<sqrt(3)
ual0=uali; %参考矢量转换为两电平时在alpha轴上的投影
ube0=ubei; %参考矢量转换为两电平时在beta轴上的投影
di=k1^2+2*k2; %参考空间矢量在三电平矢量图中的小区域
else
ual0=0.5-uali;
ube0=h-ubei;
di=k1^2+2*k2+1;
end
%三电平的空间矢量
v00=[0 0 0];v01=[1 1 1];v02=[-1 -1 -1];
v1n=[0 -1 -1];v1p=[1 0 0];
v2n=[0 -1 0];v2p=[1 0 1];
v3n=[-1 -1 0];v3p=[0 0 1];
v4n=[-1 0 0];v4p=[0 1 1];
v5n=[-1 0 -1];v5p=[0 1 0];
v6n=[0 0 -1];v6p=[1 1 0];
v7=[1 -1 -1];
v8=[1 -1 0];
v9=[1 -1 1];
v10=[0 -1 1];
v11=[-1 -1 1];
v12=[-1 0 1];
v13=[-1 1 1];
v14=[-1 1 0];
v15=[-1 1 -1];
v16=[0 1 -1];
v17=[1 1 -1];
v18=[1 0 -1];
%把三电平的各个扇区转换到第一扇区
switch si
case 1
v20=v00;
v21n=v1n;v21p=v1p;v22n=v2n;v22p=v2p;
v23=v7;v24=v8;v25=v9;
case 2
v20=v00;
v21n=v2n;v21p=v2p;v22n=v3n;v22p=v3p;
v23=v9;v24=v10;v25=v11;
case 3
v20=v00;
v21n=v3n;v21p=v3p;v22n=v4n;v22p=v4p;
v23=v11;v24=v12;v25=v13;
case 4
v20=v00;
v21n=v4n;v21p=v4p;v22n=v5n;v22p=v5p;
v23=v13;v24=v14;v25=v15;
case 5
v20=v00;
v21n=v5n;v21p=v5p;v22n=v6n;v22p=v6p;
v23=v15;v24=v16;v25=v17;
case 6
v20=v00;
v21n=v6n;v21p=v6p;v22n=v1n;v22p=v1p;
v23=v17;v24=v18;v25=v7;
end
%三电平变换为两电平
switch di
case 0
v0=v20;va=v21n;vb=v22p;
case 1
v0=v21n;va=v23;vb=v24;
case 2
v0=v24;va=v22n;vb=v21p;
case 3
v0=v22p;va=v24;vb=v25;
end
%两电平三个矢量的导通时间导通时间
ta=ts*(ual0-ube0/(2*h));
tb=ts*ube0/h;
t0=ts-ta-tb;
%任意时段输出的电压空间矢量为v
if 0<=t<t0
v=v0;
output=pulse(v);
elseif t0<=t<t0+ta
v=va;
output=pulse(v);
else
v=vb;
output=pulse(v);
end
%三电平脉冲
function p=pulse(in)
v=in;
a=v(1);
b=v(2);
c=v(3);
switch a
case -1
pa=[0 0 1 1];
case 0
pa=[0 1 1 0];
case 1
pa=[1 1 0 0];
end
switch b
case -1
pb=[0 0 1 1];
case 0
pb=[0 1 1 0];
case 1
pb=[1 1 0 0];
end
switch c
case -1
pc=[0 0 1 1];
case 0
pc=[0 1 1 0];
case 1
pc=[1 1 0 0];
end
p=[pa pb pc]; |
|