故障分析上机计算.docx
《故障分析上机计算.docx》由会员分享,可在线阅读,更多相关《故障分析上机计算.docx(20页珍藏版)》请在冰豆网上搜索。
故障分析上机计算
附录一系统接线图和原始数据
1.系统接线图
2.原始数据
附录二程序流程图
附录三程序源代码(matlab)<”faulnal.m”>
%1清空
clc;
clearall;
%清空
%2----------------数据录入
%正序节点数zjds、支路数zzls,零序节点数ljds、支路数lzls,系统电源数dys
[zjds,zzls,ljds,lzls,dys]=textread('filein.txt','%d%d%d%d%d',1);
%系统电源的电流所流入的节点、等效电抗、等效电势-->电源dy(dys,3)即dy(4,3)
[dy1,dy2,dy3]=textread('filein.txt','%d%f%d',dys,'headerlines',1);%每一列都读四行,先跳一行
dy=[dy1,dy2,dy3];
%正序网络参数两个节点及阻抗-->正序zx(zzls,3)
[zx1,zx2,zx3]=textread('filein.txt','%d%d%f',zzls,'headerlines',1+dys);
zx=[zx1,zx2,zx3];
%零序网络参数两个节点及阻抗-->正序lx(lzls,3)
[lx1,lx2,lx3]=textread('filein.txt','%d%d%f',lzls,'headerlines',1+dys+zzls);
lx=[lx1,lx2,lx3];
%-----------------数据录入
%3----------------生成支路阻抗矩阵z1(5,5)和z0(5,5)
%正序
z1=zeros(zjds,zjds);
fori=1:
zzls%1:
9
if(zx(i,1)~=0)&(zx(i,2)~=0)%生成支路阻抗矩阵z1(5,5)
z1(zx(i,1),zx(i,2))=zx(i,3);
z1(zx(i,2),zx(i,1))=zx(i,3);
else
continue
end
end
%零序
z0=zeros(ljds,ljds);
fori=1:
lzls%1:
9
if(lx(i,1)~=0)&(lx(i,2)~=0)%生成支路阻抗矩阵z1(5,5)
z0(lx(i,1),lx(i,2))=lx(i,3);
z0(lx(i,2),lx(i,1))=lx(i,3);
else
continue;
end
end
%-----------------生成支路阻抗矩阵z1和z0
%4----------------生成支路导纳矩阵y1(5,5)和y0(5,5)
%正序
fori=1:
zjds%1:
5
forj=1:
zjds
ifz1(i,j)~=0%消除infinite
y1(i,j)=1/z1(i,j);
else
continue;
end
end
end
%零序
fori=1:
ljds%1:
5
forj=1:
ljds
ifz0(i,j)~=0
y0(i,j)=1/z0(i,j);
else
continue
end
end
end
%-----------------生成支路导纳矩阵y1(5,5)和y0(5,5)
%5----------------生成节点导纳矩阵Y1(5,5)和Y0(5,5)
%不利用4中现成的了,因为还需要判断和计算0的阻抗,
%另外,若在3中对else进行加工,还需要另辟空间,且要判断两个节点哪个为零,另一个为多少
%不如以下方法直接
%正序
Y1=zeros(zjds,zjds);
fori=1:
zjds%正序五个节点
%主对角线上
forj=1:
zzls%只要有i节点,就纳入
if(zx(j,1)==i)|(zx(j,2)==i)
Y1(i,i)=Y1(i,i)+1/zx(j,3);
else
continue;
end
end
%非对角线上
forj=1:
zjds
ifj~=i
Y1(i,j)=-y1(i,j);
else
continue;
end
end
end
%零序
Y0=zeros(ljds,ljds);
fori=1:
ljds%零序五个节点
%主对角线上
forj=1:
zzls
if(lx(j,1)==i)|(lx(j,2)==i)
Y0(i,i)=Y0(i,i)+1/lx(j,3);
else
continue
end
end
%非对角线上
forj=1:
ljds
ifj~=i
Y0(i,j)=-y0(i,j);
else
continue
end
end
end
%-----------------生成节点导纳矩阵Y1(5,5)和Y0(5,5)
%6----------------生成节点阻抗矩阵Z1(5,5)和Z0(5,5)
Z1=inv(Y1);
Z0=inv(Y0);
%-----------------生成节点阻抗矩阵Z1(5,5)和Z0(5,5)
%7----------------判定故障位置和故障类型
F_point=input('欢迎使用故障分析计算程序\n请输入故障的位置:
\n1->A\n2->C\n3->D\n4->E\n5->B\n');
F_type=input('请指明故障类型:
\n1->三相短路\n2->单相接地短路\n3->两相相间短路\n4->两相接地短路\n');
%-----------------判定故障位置和故障类型
%8----------------计算口电压的正常分量
Up=0;
fp=F_point;
fori=1:
dys
Up=Up+Z1(fp,dy(i,1))*dy(i,3)/dy(i,2);
end
%-----------------计算口电压的正常分量
%9----------------根据故障类型计算故障口各序电流
switch(F_type)
case1
curfau
(1)=-Up/Z1(fp,fp);
curfau
(2)=0;
curfau(3)=0;
case2
curfau
(1)=-Up/(2*Z1(fp,fp)+Z0(fp,fp));
curfau
(2)=curfau
(1);
curfau(3)=curfau
(1);
case3
curfau
(1)=-0.5*Up/Z1(fp,fp);
curfau
(2)=-curfau
(1);
curfau(3)=0;
case4
curfau
(1)=-Up/(Z1(fp,fp)+Z1(fp,fp)*Z0(fp,fp)/(Z1(fp,fp)+Z0(fp,fp)));
curfau
(2)=-curfau
(1)*Z0(fp,fp)/(Z1(fp,fp)+Z0(fp,fp));
curfau(3)=-curfau
(1)*Z1(fp,fp)/(Z1(fp,fp)+Z0(fp,fp));
end
%-----------------根据故障类型计算故障口各序电流
%10---------------计算故障口各相电流
S=[1+0i,1+0i,1+0i;
1+0i,-0.5-0.866i,-0.5+0.866i;
1+0i,-0.5+0.866i,-0.5-0.866i;];
I_F=curfau*S;
fori=1:
3
molI_F(i)=abs(I_F(i));
end
%-----------------计算故障口各相电流
%11---------------计算节点序电压
vol=zeros(zjds,3);
form=1:
zjds
fori=1:
dys
vol(m,1)=vol(m,1)+Z1(m,dy(i,1))*dy(i,3)/dy(i,2);
end
vol(m,1)=vol(m,1)+Z1(m,fp)*curfau
(1);
vol(m,2)=Z1(m,fp)*curfau
(2);
vol(m,3)=Z0(m,fp)*curfau(3);
end
%-----------------计算节点序电压
%12---------------计算节点相电压
U=vol*S;
fori=1:
zjds
forj=1:
3
molU(i,j)=abs(U(i,j));
end
end
%-----------------计算节点相电压
%13---------------计算任意支路的序电流
fors=1:
2%分开是因为正负、零序阻抗不同
fork=1:
9
ifzx(k,1)==0%零点电压为零!
cur(k,s)=(0-vol(zx(k,2),s))/zx(k,3);
elseifzx(k,2)==0%不可能两个节点都为零节点
cur(k,s)=(vol(zx(k,1),s)-0)/zx(k,3);
else
cur(k,s)=(vol(zx(k,1),s)-vol(zx(k,2),s))/zx(k,3);
end
end
end
fork=1:
9
iflx(k,1)==0
cur(k,3)=(0-vol(lx(k,2),3))/lx(k,3);
elseiflx(k,2)==0%不可能两个节点都为零节点
cur(k,3)=(vol(lx(k,1),3)-0)/lx(k,3);
else
cur(k,3)=(vol(lx(k,1),3)-vol(lx(k,2),3))/lx(k,3);
end
end
%-----------------计算任意支路的序电流
%14---------------计算任意支路的相电流
I=cur*S;
fori=1:
zzls
forj=1:
3
molI(i,j)=abs(I(i,j));
end
end
%-----------------计算任意支路的相电流
%15---------------查询节点支路情况
checkjd=input('\n节点查询:
\n1-->查询某一节点\n2-->显示所有节点\n0-->不查询\n');
if(checkjd==1)
chek_fp=input('请输入要查询的节点:
\n1->A\n2->C\n3->D\n4->E\n5->B\n');
else
end
checkzl=input('\n支路查询:
\n1-->查询某一支路\n2-->显示所有支路\n0-->不查询\n');
if(checkzl==1)
chek_zl=input('请输入要查询的支路:
\n1->地-B\n2->B-E\n3->E-D\n4->D-C\n5->D-A\n6->A-C\n7->地-D\n8->地-C\n9->地-A\n');
else
end
%-----------------查询节点支路情况
%16---------------生成数据输出文件
fid=fopen('fileout.txt','w');%以文本输出打开文件fileout,若无新建,若有则覆盖。
%输出内容为:
个人信息,Y1Y0Z1Z0,故障节点故障类型,故障口电流curfau+molI_F,支路vol+molU,节点cur+molI
fprintf(fid,'\t\t--------------------程序输出文件--------------------\r\n');
fprintf(fid,'\r\n\t++++++++++++++++++++++++++++++++个人信息++++++++++++++++++++++++++++++++\r\n');
fprintf(fid,'\r\n\t\t班级:
电气11k6\t\t姓名:
牛玺童\r\n\t\t学号:
111904010415\t\t指导老师:
高红艳\r\n');
fprintf(fid,'\r\n\t++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n');
fprintf(fid,'\r\n\t******************正序节点导纳矩阵Y1******************\r\n');
fori=1:
zjds
forj=1:
zjds
fprintf(fid,'%12.4f',Y1(i,j));
end
fprintf(fid,'\r\n');
end
fprintf(fid,'\r\n\t******************零序节点导纳矩阵Y0******************\r\n');
fori=1:
ljds
forj=1:
ljds
fprintf(fid,'%12.4f',Y0(i,j));
end
fprintf(fid,'\r\n');
end
fprintf(fid,'\r\n\t******************正序节点阻抗矩阵Z1******************\r\n');
fori=1:
zjds
forj=1:
zjds
fprintf(fid,'%12.4f',Z1(i,j));
end
fprintf(fid,'\r\n');
end
fprintf(fid,'\r\n\t******************零序节点阻抗矩阵Z0******************\r\n');
fori=1:
ljds
forj=1:
ljds
fprintf(fid,'%12.4f',Z0(i,j));
end
fprintf(fid,'\r\n');
end
fprintf(fid,'\r\n\t**********************故障情况**********************\r\n');
%故障位置ACDEB
fprintf(fid,'\r\n\t故障位置为:
');
switch(fp)
case1
fprintf(fid,'A厂');
case2
fprintf(fid,'C站');
case3
fprintf(fid,'D站');
case4
fprintf(fid,'E站');
case5
fprintf(fid,'B厂');
end
%故障类型:
\n1->三相短路\n2->单相接地短路\n3->两相相间短路\n4->两相接地短路\n')
fprintf(fid,'\t\t故障类型为:
');
switch(F_type)
case1
fprintf(fid,'三相短路');
case2
fprintf(fid,'单相接地短路');
case3
fprintf(fid,'两相相间短路');
case4
fprintf(fid,'两相接地短路');
end
fprintf(fid,'\r\n\r\n\t口电压的正常分量为%12.5f\r\n',Up);
fprintf(fid,'\r\n\t**************************故障口电流**************************\r\n');
fprintf(fid,'\t正序负序零序A相B相C相\r\n\t');
fori=1:
3
fprintf(fid,'%10.4f',curfau(i));
end
fori=1:
3
fprintf(fid,'%10.4f',molI_F(i));
end
fprintf(fid,'\r\n\r\n\t********************************节点电压********************************\r\n\t');
switch(checkjd)
case1%显示某一节点
fprintf(fid,'\t正序负序零序A相B相C相');
fprintf(fid,'\r\n\t节点%-3d',chek_fp);
switch(chek_fp)
case1
fprintf(fid,'A厂');
case2
fprintf(fid,'C站');
case3
fprintf(fid,'D站');
case4
fprintf(fid,'E站');
case5
fprintf(fid,'B厂');
end
forj=1:
3
fprintf(fid,'%10.4f',vol(chek_fp,j));%序电压
end
forj=1:
3
fprintf(fid,'%10.4f',molU(i,j));%相电压
end
case2%显示所有节点
fprintf(fid,'\t正序负序零序A相B相C相');
fori=1:
zjds
fprintf(fid,'\r\n\t节点%-3d',i);
switch(i)
case1
fprintf(fid,'A厂');
case2
fprintf(fid,'C站');
case3
fprintf(fid,'D站');
case4
fprintf(fid,'E站');
case5
fprintf(fid,'B厂');
end
forj=1:
3
fprintf(fid,'%10.4f',vol(i,j));%序电压
end
forj=1:
3
fprintf(fid,'%10.4f',molU(i,j));%相电压
end
end
case0%未查询
fprintf(fid,'\t\t未查询');
end
fprintf(fid,'\r\n\r\n\t********************************支路电流********************************\r\n\t');
switch(checkzl)
case1%显示某一支路
fprintf(fid,'\t正序负序零序A相B相C相');
fprintf(fid,'\r\n\t支路%-3d',chek_zl);
switch(chek_zl)
case1
fprintf(fid,'地-B');
case2
fprintf(fid,'B-E');
case3
fprintf(fid,'E-D');
case4
fprintf(fid,'D-C');
case5
fprintf(fid,'D-A');
case6
fprintf(fid,'A-C');
case7
fprintf(fid,'地-D');
case8
fprintf(fid,'地-C');
case9
fprintf(fid,'地-A');
end
forj=1:
3
fprintf(fid,'%10.4f',cur(chek_zl,j));%序电流
end
forj=1:
3
fprintf(fid,'%10.4f',molI(chek_zl,j));%相电流
end
case2
fprintf(fid,'\t正序负序零序A相B相C相');
fori=1:
zzls
fprintf(fid,'\r\n\t支路%-3d',i);
switch(i)
case1
fprintf(fid,'地-B');
case2
fprintf(fid,'B-E');
case3
fprintf(fid,'E-D');
case4
fprintf(fid,'D-C');
case5
fprintf(fid,'D-A');
case6
fprintf(fid,'A-C');
case7
fprintf(fid,'地-D');
case8
fprintf(fid,'地-C');
case9
fprintf(fid,'地-A');
end
forj=1:
3
fprintf(fid,'%10.4f',cur(i,j));%序电流
end
forj=1:
3
fprintf(fid,'%10.4f',molI(i,j));%相电流
end
end
case0
fprintf(fid,'\t\t未查询');
end
fprintf(fid,'\r\n\r\n\r\n');
%-----------------生成数据输出文件
附录四输入文件和输出文件
1.输入文件:
”filein.txt”
2.输出文件:
”fileout.txt”