📄 vector_fix.m
字号:
function outs=vector_fix(u)
%global last_va;
%global last_vb;
%global last_vc;
global last_vab;
global last_vbc;
global last_vca;
global last_ia;
global last_ib;
global last_ic;
global last_iat;
global last_ibt;
global last_ict;
global last_out_I;
if isempty(last_iat)
last_iat=0;
end
if isempty(last_ibt)
last_ibt=0;
end
if isempty(last_ict)
last_ict=0;
end
if isempty(last_vab)
last_vab=0;
end
if isempty(last_vbc)
last_vbc=0;
end
if isempty(last_vca)
last_vca=0;
end
if isempty(last_ia)
last_ia=0;
end
if isempty(last_ib)
last_ib=0;
end
if isempty(last_ic)
last_ic=0;
end
if isempty(last_out_I)
last_out_I=[0 0 0 0 0 0];
end
if (u(1,1)==last_vab)&(u(2,1)==last_vbc)&(u(3,1)==last_vca)&(u(4,1)==last_ia)&(u(5,1)==last_ib)&(u(6,1)==last_ic)
outs=last_out_I;
return;
end
vab=u(1,1);
vbc=u(2,1);
vca=u(3,1);
ia=u(4,1);
ib=u(5,1);
ic=u(6,1);
iat=u(7,1);
ibt=u(8,1);
ict=u(9,1);
reset_a=u(10,1);
%Icap=12.662; %滤波器基波电流峰值
cap=4.481742;
if (reset_a==1)
% last_va=va;
% last_vb=vb;
% last_vc=vc;
last_vab=vab;
last_vbc=vbc;
last_vca=vca;
last_ia=ia;
last_ib=ib;
last_ic=ic;
outs=last_out_I;
return;
end
%向量识别
%[fva,sva,cva]=vi(last_va,va);
%last_va=va;
[fvab,svab,cvab]=vi(last_vab,vab);
last_vab=vab;
[fvbc,svbc,cvbc]=vi(last_vbc,vbc);
%last_vb=vb;
last_vbc=vbc;
[fvca,svca,cvca]=vi(last_vca,vca);
%last_vc=vc;
last_vca=vca;
[fia,sia,cia]=vi(last_ia,ia);
last_ia=ia;
[fib,sib,cib]=vi(last_ib,ib);
last_ib=ib;
[fic,sic,cic]=vi(last_ic,ic);
last_ic=ic;
%坐标变幻,以a相电压为参考。先以AB线电压为参考,然后补偿30度。
sa_ab=sia*cvab-cia*svab;
ca_ab=cia*cvab+sia*svab;
sa=sa_ab*((3^0.5)/2)+ca_ab*(1/2);
ca=ca_ab*((3^0.5)/2)-sa_ab*(1/2);
sb_ab=sib*cvab-cib*svab;
cb_ab=cib*cvab+sib*svab;
sb=sb_ab*((3^0.5)/2)+cb_ab*(1/2);
cb=cb_ab*((3^0.5)/2)-sb_ab*(1/2);
sc_ab=sic*cvab-cic*svab;
cc_ab=cic*cvab+sic*svab;
sc=sc_ab*((3^0.5)/2)+cc_ab*(1/2);
cc=cc_ab*((3^0.5)/2)-sc_ab*(1/2);
%分别求出电流向量的实部和虚部
re_a=fia*ca;
im_a=fia*sa;
re_b=fib*cb;
im_b=fib*sb;
re_c=fic*cc;
im_c=fic*sc;
%滤波器容性电流计入
Icap=fvab/((3^0.5)*cap);
im_a=im_a+Icap;
Icap=fvbc/((3^0.5)*cap);
re_b=re_b+(Icap*(3^0.5)/2);
im_b=im_b-(Icap/2);
Icap=fvca/((3^0.5)*cap);
re_c=re_c-(Icap*(3^0.5)/2);
im_c=im_c-(Icap/2);
%矩阵变幻,求出需补偿的电流
I(1,1)=re_a;
I(2,1)=im_a;
I(3,1)=re_b;
I(4,1)=im_b;
I(5,1)=re_c;
I(6,1)=im_c;
A=[0.3333 -0.3849 -0.16667 0.48113 -0.16667 -0.096225; 0 0.19245 -0.5 -0.096225 0.5 -0.096225;-0.3333 -0.3849 0.16667 -0.096225 0.16667 0.48113];
temp=A*I;
last_out_I(1,1)=temp(1,1);%Iab
last_out_I(1,2)=temp(2,1);%Ibc
last_out_I(1,3)=temp(3,1);%Ica
last_out_I(1,4)=fvab;
last_out_I(1,5)=fvbc;
last_out_I(1,6)=fvca;
outs=last_out_I;
function [f,s,c] = vi(lv,v)%lv=i1,v=i2
%向量识别函数
sin_1=sin(pi/10);%18度
cos_1=cos(pi/10);
tg_a=(v*sin_1)/(v*cos_1-lv);
f=((lv^2+v^2-2*lv*v*cos_1)^0.5)/sin_1;
cos_a=1/((tg_a^2+1)^0.5);
if (v>=0)
if (tg_a<0)
cos_a=-cos_a;
end
else
if (tg_a>0)
cos_a=-cos_a;
end
end
if ((cos_a==1)|(cos_a==-1))
if (lv<0)
cos_a=1;
elseif (lv>0)
cos_a=-1;
end
end
sin_a=cos_a*tg_a;
c=cos_a;
s=sin_a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -