电力系统短路故障分析的MATLAB辅助程序设计短路计算程序Word格式文档下载.docx
《电力系统短路故障分析的MATLAB辅助程序设计短路计算程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电力系统短路故障分析的MATLAB辅助程序设计短路计算程序Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
程序symfault(zdata,Zbus,V)用来计算三相对称故障,程序要求输入zdata和Zbus两个矩阵,第三个参数V是可选的。
如果V不存在,程序将默认故障前所有的节点电压标幺值为1.0,如果变量V存在,那么V包括节点编号和复数电压值。
电压向量V也可以由潮流计算程序自动生成。
当symfault程序运行时,用户要输入故障节点编号和故障阻抗,运行可得到总的故障电流,节点电压幅值以及故障情况下的线路电流。
在三相短路计算中,zbuild和symfault程序,zbuildpi和symfault程序都可以进行计算,下面是三相短路计算使用的程序代码:
(1)Zbuild.m程序代码:
function[Zbus] = zbuild(linedata)
nl= linedata(:
1);
nr= linedata(:
2);
R=linedata(:
,3);
X =linedata(:
4);
nbr=length(linedata(:
1));
nbus=max(max(nl),max(nr));
fork=1:
nbr
if R(k) ==inf| X(k)==inf
R(k) =999999999;
X(k) =999999999;
%无穷
else,end
end
ZB=R + j*X;
Zbus=zeros(nbus,nbus);
tree=0;
%从参考总线0上添加一个分支
forI=1:
ntree(I)=1;
ifnl(I)==0|nr(I)== 0
if nl(I)==0 n = nr(I);
elseifnr(I) ==0n =nl(I);
end
ifabs(Zbus(n, n))== 0 Zbus(n,n) =ZB(I);
tree=tree+1;
%%new
elseZbus(n,n) =Zbus(n,n)*ZB(I)/(Zbus(n,n) + ZB(I));
end
ntree(I)=2;
else,end
end
%添加一个新总线分支到现有总线上
while tree<
nbus
forn=1:
nbus
nadd= 1;
ifabs(Zbus(n,n))==0
for I=1:
ifnadd==1;
ifnl(I)==n|nr(I) ==n
ifnl(I)==n k =nr(I);
elseifnr(I)==n k= nl(I);
end
ifabs(Zbus(k,k)) ~= 0
form =1:
nbus
if m~=n
Zbus(m,n)=Zbus(m,k);
Zbus(n,m)=Zbus(m,k);
else,end
end
Zbus(n,n)= Zbus(k,k)+ZB(I);
tree=tree+1;
nadd= 2;
ntree(I)=2;
else, end
else,end
else,end
end
else,end
end
%增加两个原有总线间的支路阻抗
for n=1:
nbus
forI=1:
nbr
ifntree(I) ==1
ifnl(I)== n|nr(I)==n
ifnl(I) ==n k= nr(I);
elseifnr(I) == nk=nl(I);
end
DM=Zbus(n,n)+Zbus(k,k) + ZB(I)-2*Zbus(n,k);
for jj=1:
nbus
AP = Zbus(jj,n)-Zbus(jj,k);
forkk=1:
nbus
AT = Zbus(n,kk) -Zbus(k,kk);
DELZ(jj,kk)=AP*AT/DM;
end
end
Zbus=Zbus-DELZ;
ntree(I)=2;
else,end
else,end
end
end
(2)Zbuildpi.m程序代码:
%Thisprogramformsthecomplexbusimpedance matrixbythe method
%ofbuildingalgorithm. Buszero istaken asreference.
% Thisprogramiscompatible with powerflow data.
function[Zbus,linedata]= zbuildpi(linedata,gendata,yload)
ng=length(gendata(:
,1));
nlg=gendata(:
nrg=gendata(:
2);
zg=gendata(:
2)+ j*gendata(:
3);
nl=linedata(:
1);
nr=linedata(:
R=linedata(:
,3);
X= linedata(:
4);
nbr=length(linedata(:
nbus= max(max(nl),max(nr));
nc=length(linedata(1,:
));
for k=1:
nbr
ifR(k)== inf| X(k)==inf
R(k)=99999999;
X(k)= 99999999;
else, end
end
if nc>4
BC=linedata(:
5);
for n=1:
yc(n) =0;
nlc(n)= 0;
nrc(n)=n;
fork =1:
ifnl(k)==n|nr(k) == n
yc(n)=yc(n)+j*BC(k);
else,end
end
end
elseif nc==4 yc= zeros(1,nbr);
end
nlc=nlc';
nrc=nrc'
;
yc=yc.'
;
ZB=R+j*X;
if exist('
yload'
)== 1
yload=yload.';
yc =yc+ yload;
else,end
m =0;
forn= 1:
ifabs(yc(n)) ~=0
m=m+1;
nlcc(m)=nlc(n);
nrcc(m)= nrc(n);
zc(m)=1/yc(n);
else,end
nlcc=nlcc'
nrcc=nrcc';
zc=zc.';
nl=[nlg;
nlcc;
nl];
nr= [nrg;
nrcc;
nr];
ZB=[zg;
zc;
ZB];
linedata=[nlnr real(ZB)imag(ZB)];
nbr=length(nl);
Zbus=zeros(nbus,nbus);
tree=0;
%%从参考总线0上添加一个分支
for I=1:
nbr
ntree(I)= 1;
ifnl(I) ==0|nr(I) ==0
ifnl(I)==0 n=nr(I);
elseifnr(I) ==0n=nl(I);
end
ifabs(Zbus(n,n))==0Zbus(n,n)=ZB(I);
tree=tree+1;
elseZbus(n,n)= Zbus(n,n)*ZB(I)/(Zbus(n,n) +ZB(I));
end
ntree(I)=2;
else,end
end
%% 添加一个新总线分支到现有总线上
whiletree<
nbus
forn=1:
nadd= 1;