电力系统三相短路计算地MATLAB代码
电力系统三相短路计算的MATLAB代码

. . . .电力系统三相短路计算a main.mclear tim%打开文件[dfile,pathname]=uigetfile('*.m','Select Data File');if pathname == 0error(' you must select a valid data file')elselfile =length(dfile);eval(dfile(1:lfile-2));end%定义输出文件output_file=fopen('output.dat','w');%开始计时tic;%求解节点导纳矩阵,其中Ymatrix1是考虑了变比,且支路未近似的导纳矩阵;Ymatrix2是近似变比为1,但是支路未近似计算的节点导纳矩阵;Ymatrix3是近似变比为1,采取近似支路参数1的导纳矩阵;Ymatrix4是近似变比为1,采取近似支路参数2的导纳矩阵。
Y = Ymatrix2(bus,line);%对故障点进行导纳修正fixY = FixY(Y,bus,fault);%求注入电流Iinj = Inode(bus,calcSettings);U = fixY\Iinj;%得到故障支路与其他支路电流Bcurrent = Ibranch( line,U,fault,Y );%如果发生支路三相短路,那么对应该支路的电流修正为-999999-j999999Ib = ReviseBcurrent( fault,Bcurrent );%结束计时tim=toc;fprintf('\n程序运行结果');fprintf('\n计算完成,共用时%4.4fs,相关结果已保存在output.dat\n',tim);%输出结果fprintf_result(output_file, Ib);fprintf_result1(Ib);b FixY.mfunction fixY = FixY( Y,bus,fault )%对形成的导纳矩阵进行故障点的修正[nb,mb]=size(bus);[nf,mf]= size(fault);fixY = Y;%对发电机节点导纳修正for k=1:nbbusType=bus(k,7);if (busType==1)fixY(bus(k,1),bus(k,1)) = fixY(bus(k,1),bus(k,1)) + 1/1i/bus(k,8);endend%对节点短路和支路短路的导纳矩阵进行修正for k=1:nfnodeI=fault(k,1);nodeJ=fault(k,2);dis=fault(k,3);if (nodeI==0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue;endif (nodeJ==0)fixY(nodeI,nodeI) = 999999+1i*999999;continue;endif (dis==0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = 999999+1i*999999;continue;endif (dis==1)&&(nodeI*nodeJ~=0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue;endif (dis~=1)&&(dis~=0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = fixY(nodeI,nodeI) - fixY(nodeI,nodeJ)/dis;fixY(nodeJ,nodeJ) = fixY(nodeJ,nodeJ) - fixY(nodeI,nodeJ)/(1-dis);fixY(nodeI,nodeJ)=0;fixY(nodeJ,nodeI)=0;endendendc fprintf_result.mfunction [ output_args ] = fprintf_result( output_file, Ib )%将得到的短路电流输入到输出文件中[n,m]=size(Ib);fprintf( output_file, ' No. No. vector of I value of I\n');for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if(I02>=0)fprintf( output_file, '%3d %3d %10.6f+j%10.6f %10.6f',I,J,I01,I02,I1);endif(I02<0)I02=abs(I02);fprintf( output_file, '%3d %3d %10.6f-j%10.6f %10.6f',I,J,I01,I02,I1);endfprintf( output_file, '\n');endendd fprintf_result1.mfunction [ output_args ] = fprintf_result1( Ib )%UNTITLED ÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª[n,m]=size(Ib);fprintf(' No. No. vector of I value of I\n');for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if(I02>=0)fprintf('%3d %3d %10.6f+j%10.6f %10.6f',I,J,I01,I02,I1);endif(I02<0)I02=abs(I02);fprintf('%3d %3d %10.6f-j%10.6f %10.6f',I,J,I01,I02,I1);endfprintf('\n');endende Ibranch.mfunction Bcurrent = Ibranch( line,U,fault,Y )%计算短路电流%记录短路故障参数,如短路节点,如为支路短路,记录距离节点的距离%此段计算采用的支路参数未近似,如果计算近似的时候需要修改[nl,ml]=size(line);Bcurrent=zeros(nl+1,4);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);faultNode = 0;if(faultI==0)faultNode = faultJ;endif(faultJ==0)faultNode = faultI;endif(dis==1)&&(faultI*faultJ~=0)faultNode = faultJ;endif(dis==0)&&(faultI*faultJ~=0)faultNode = faultI;endif(faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Iij = 0;Iij1=0;end%计算非故障支路的短路电流for k=1:nli=line(k,1);j=line(k,2);Ui=U(i);if j~=0Uj=U(j);elseUj=0;endif line(k,2)==0Ym=line(k,5)+1i*line(k,6);Iij=Ui*Ym;Iij1=abs(Iij);endif line(k,2)~=0Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);Iij=(Ui-Uj)*Yt+Ui*Ym;Iij1=abs(Iij);endBcurrent(k,1)=i;Bcurrent(k,2)=j;Bcurrent(k,3)=Iij;Bcurrent(k,4)=Iij1;end%如果为节点短路,修正短路点的电流大小if(faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Ifault = 0;branchCurrent=0;for k=1:nlI=line(k,1);J=line(k,2);if(I*J==0)continue;endbranchCurrent = (U(I)-U(J))/(line(k,3)+1i*line(k,4));if (I==faultNode)Ifault = Ifault - branchCurrent ;elseif (J==faultNode)Ifault = Ifault + branchCurrent ;endendendBcurrent(nl+1,3) = Ifault;Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3));end%如果为支路短路,修正短路支路的短路电流大小if(dis~=0)&&(dis~=1)&&(faultI*faultJ~=0)Bcurrent(nl+1,1) = faultI;Bcurrent(nl+1,2) = faultJ;Bcurrent(nl+1,3) = U(faultI)*Y(faultI,faultJ)/dis + U(faultJ)*Y(faultI,faultJ)/(1-dis);Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3));endendf Inode.mfunction Iinj = Inode( bus,calcSettings )%计算节点注入电流[nb,mb]=size(bus);Iinj = zeros(nb,1);for k=1:nbbusType=bus(k,7);if(calcSettings(1)==1)v = 1;elsev = bus(k,2);end%对发电机节点电流进行修正if (busType==1)Iinj(bus(k,1),1) = Iinj(bus(k,1),1) + v/1i/bus(k,8);endendendg ReviseBcurrent.mfunction Ib = ReviseBcurrent( fault,Bcurrent )%如果发生支路短路,对原来的计算电流进行修正,使该支路短路电流输出为-999999-j999999 clear faultIfaultJdis[nt,mt]=size(Bcurrent);Ib=zeros(nt,mt);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);for k=1:nt-1i=Bcurrent(k,1);j=Bcurrent(k,2);Ib(k,:)=Bcurrent(k,:);if (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultI)&&(j==faultJ)Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endif (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultJ)&&(j==faultI)Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endIb(nt,:)=Bcurrent(nt,:);endh Ymatrix1.mfunction Y = Ymatrix1( bus,line )%考虑变压器,并且支路参数不近似的节点导纳矩阵[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);K=line(k,7);if (K==0)&&(J~=0)Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif (K==0)&&(J==0)Y(I,I)=Y(I,I)+Ym;endif K>0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt/(K*K);Y(I,J)=Y(I,J)-Yt/K;Y(J,I)=Y(I,J);endif K<0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+K*K*Yt;Y(I,J)=Y(I,J)+K*Yt;Y(J,I)=Y(I,J);endendendi Ymatrix2.mfunction Y = Ymatrix2( bus,line )%考虑变压器变比近似为1,支路参数不等效[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendendj Ymatrix3.mfunction Y = Ymatrix3( bus,line )%考虑变压器变比为1,采用支路参数近似1[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=imag(1/Zt);Ym=imag(line(k,5)+1i*line(k,6));if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendendk Ymatrix4.mfunction Y = Ymatrix4( bus,line )%变压器变比近似为1,采用支路等效参数2 [nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=1i*line(k,4);Yt=1/Zt;Ym=1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendend。
MATLAB实验:同步发电机三相短路响应过程仿真

MATLAB实验:同步发电机三相短路响
应过程仿真
简介
本实验通过使用MATLAB软件对同步发电机的三相短路响应过程进行仿真。
同步发电机是发电厂中常见的发电设备,了解其短路响应过程对于保证电网的稳定性很重要。
实验过程
1. 确定同步发电机的参数,包括额定功率、额定电压、额定频率、定子、转子等参数。
2. 通过在MATLAB中建立电力系统模型,将同步发电机和其他电网元件(例如传输线、发电机组)连接起来。
3. 设计相应的控制策略,实现短路故障的切除、保护与恢复。
4. 运行仿真程序,模拟同步发电机在发生三相短路故障时的响应过程。
5. 分析仿真结果,包括电流、电压、转速等参数的变化情况,以及系统的稳定性和安全性。
实验目标
通过进行该实验,我们可以了解同步发电机在发生三相短路故障时的响应过程,包括电流和电压的变化情况。
这有助于我们更好地了解电力系统的稳定性和安全性,并为实际电力系统中的故障分析和保护设计提供参考。
结论
通过对同步发电机三相短路响应过程的仿真实验,我们可以获得电流和电压的变化情况,并进一步分析电力系统的稳定性和安全性。
这对于电力系统的运行和维护至关重要,有助于提高电网的可靠性和安全性。
【注意】本文档中的内容仅供参考,详细的实验步骤和具体参数需根据实际情况进行确定和调整。
电力系统三相短路计算的MATLAB代码.doc

电力系统三相短路计算a main.mclear tim%打开文件[dfile,pathname]=uigetfile('*.m' , 'Select Data File');if pathname == 0error( ' you must select a valid data file')elselfile =length(dfile);eval(dfile(1:lfile-2));end%定义输出文件output_file=fopen('output.dat', 'w' );%开始计时tic;%求解节点导纳矩阵,其中Ymatrix1 是考虑了变比,且支路未近似的导纳矩阵;Ymatrix2 是近似变比为 1,但是支路未近似计算的节点导纳矩阵;Ymatrix3 是近似变比为 1,采取近似支路参数 1的导纳矩阵; Ymatrix4 是近似变比为 1,采取近似支路参数2的导纳矩阵。
Y = Ymatrix2(bus,line);%对故障点进行导纳修正fixY = FixY(Y,bus,fault);%求注入电流Iinj = Inode(bus,calcSettings);U = fixY\Iinj;%得到故障支路与其他支路电流Bcurrent = Ibranch( line,U,fault,Y );%如果发生支路三相短路,那么对应该支路的电流修正为-999999-j999999Ib = ReviseBcurrent( fault,Bcurrent );%结束计时tim=toc;fprintf( '\n 程序运行结果 ' );fprintf( '\n 计算完成,共用时 %4.4fs, 相关结果已保存在 output.dat\n',tim);%输出结果fprintf_result(output_file, Ib);fprintf_result1(Ib);b FixY.mfunction fixY = FixY( Y,bus,fault )%对形成的导纳矩阵进行故障点的修正[nb,mb]=size(bus);[nf,mf]= size(fault);fixY = Y;%对发电机节点导纳修正for k=1:nbbusType=bus(k,7);if (busType==1)fixY(bus(k,1),bus(k,1)) = fixY(bus(k,1),bus(k,1)) + 1/1i/bus(k,8);endend%对节点短路和支路短路的导纳矩阵进行修正for k=1:nfnodeI=fault(k,1);nodeJ=fault(k,2);dis=fault(k,3);if (nodeI==0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue ;endif(nodeJ==0)fixY(nodeI,nodeI) = 999999+1i*999999;continue ;if(dis==0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = 999999+1i*999999;continue ;endif(dis==1)&&(nodeI*nodeJ~=0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue ;endif(dis~=1)&&(dis~=0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = fixY(nodeI,nodeI) - fixY(nodeI,nodeJ)/dis;fixY(nodeJ,nodeJ) = fixY(nodeJ,nodeJ) - fixY(nodeI,nodeJ)/(1-dis); fixY(nodeI,nodeJ)=0;fixY(nodeJ,nodeI)=0;endendc fprintf_result.mfunction [ output_args ] = fprintf_result( output_file, Ib )%将得到的短路电流输入到输出文件中[n,m]=size(Ib);fprintf(output_file,' No. No. vector of I value of I\n' );for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if (I02>=0)fprintf( output_file,'%3d %3d %10.6f+j%10.6f %10.6f',I,J,I01,I02,I1);endif (I02<0)I02=abs(I02);fprintf( output_file,'%3d %3d %10.6f-j%10.6f %10.6f',I,J,I01,I02,I1);endfprintf( output_file,'\n' );endendd fprintf_result1.mfunction [ output_args ] = fprintf_result1( Ib )%UNTITLED? ? ? ú′? ′|ê? è? oˉêy ? ? òa[n,m]=size(Ib);fprintf( ' No. No. vector of I value of I\n' );for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if (I02>=0)fprintf( '%3d %3d %10.6f+j%10.6f %10.6f' ,I,J,I01,I02,I1);endif (I02<0)I02=abs(I02);fprintf( '%3d %3d %10.6f-j%10.6f %10.6f' ,I,J,I01,I02,I1);endfprintf('\n' );endende Ibranch.mfunction Bcurrent = Ibranch( line,U,fault,Y )%计算短路电流%记录短路故障参数,如短路节点,如为支路短路,记录距离节点的距离%此段计算采用的支路参数未近似,如果计算近似的时候需要修改[nl,ml]=size(line);Bcurrent=zeros(nl+1,4);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);faultNode = 0;if (faultI==0)faultNode = faultJ;endif (faultJ==0)faultNode = faultI;endif (dis==1)&&(faultI*faultJ~=0) faultNode = faultJ;endif (dis==0)&&(faultI*faultJ~=0) faultNode = faultI;endif (faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Iij = 0;Iij1=0;end%计算非故障支路的短路电流for k=1:nli=line(k,1);j=line(k,2);Ui=U(i);if j~=0Uj=U(j);elseUj=0;endif line(k,2)==0Ym=line(k,5)+1i*line(k,6);Iij=Ui*Ym;Iij1=abs(Iij);endif line(k,2)~=0Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);Iij=(Ui-Uj)*Yt+Ui*Ym;Iij1=abs(Iij);endBcurrent(k,1)=i;Bcurrent(k,2)=j;Bcurrent(k,3)=Iij;Bcurrent(k,4)=Iij1;end%如果为节点短路,修正短路点的电流大小if (faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Ifault = 0;branchCurrent=0;for k=1:nlI=line(k,1);J=line(k,2);if (I*J==0)continue ;endbranchCurrent = (U(I)-U(J))/(line(k,3)+1i*line(k,4));if(I==faultNode)Ifault = Ifault - branchCurrent ;else if (J==faultNode)Ifault = Ifault + branchCurrent ;endendendBcurrent(nl+1,3) = Ifault;Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3)); end%如果为支路短路,修正短路支路的短路电流大小if (dis~=0)&&(dis~=1)&&(faultI*faultJ~=0)Bcurrent(nl+1,1) = faultI;Bcurrent(nl+1,2) = faultJ;Bcurrent(nl+1,3) = U(faultI)*Y(faultI,faultJ)/dis + U(faultJ)*Y(faultI,faultJ)/(1-dis);Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3));endendf Inode.mfunction Iinj = Inode( bus,calcSettings )%计算节点注入电流[nb,mb]=size(bus);Iinj = zeros(nb,1);for k=1:nbbusType=bus(k,7);if (calcSettings(1)==1)v = 1;elsev = bus(k,2);end%对发电机节点电流进行修正if (busType==1)Iinj(bus(k,1),1) = Iinj(bus(k,1),1) + v/1i/bus(k,8);endendendg ReviseBcurrent.mfunction Ib = ReviseBcurrent( fault,Bcurrent )%如果发生支路短路,对原来的计算电流进行修正,使该支路短路电流输出为 -999999-j999999clear faultI faultJ dis[nt,mt]=size(Bcurrent);Ib=zeros(nt,mt);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);for k=1:nt-1i=Bcurrent(k,1);j=Bcurrent(k,2);Ib(k,:)=Bcurrent(k,:);if(faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultI)&&(j==faultJ) Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endif(faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultJ)&&(j==faultI) Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endIb(nt,:)=Bcurrent(nt,:);endh Ymatrix1.mfunction Y = Ymatrix1( bus,line )%考虑变压器,并且支路参数不近似的节点导纳矩阵[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);K=line(k,7);if (K==0)&&(J~=0) Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym; Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif (K==0)&&(J==0) Y(I,I)=Y(I,I)+Ym;endif K>0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt/(K*K); Y(I,J)=Y(I,J)-Yt/K;Y(J,I)=Y(I,J);endif K<0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+K*K*Yt;Y(I,J)=Y(I,J)+K*Yt;Y(J,I)=Y(I,J);endendendi Ymatrix2.mfunction Y = Ymatrix2( bus,line )%考虑变压器变比近似为1,支路参数不等效[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4); Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendendj Ymatrix3.mfunction Y = Ymatrix3( bus,line )%考虑变压器变比为 1,采用支路参数近似 1 [nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=imag(1/Zt);Ym=imag(line(k,5)+1i*line(k,6));if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendendk Ymatrix4.mfunction Y = Ymatrix4( bus,line )%变压器变比近似为 1,采用支路等效参数 2 [nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=1i*line(k,4);Yt=1/Zt;Ym=1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt+Ym; Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endend end。
电力系统三相短路的编程计算

电力系统分析课程专题报告学生姓名:班级:学号:指导教师:所在单位:提交日期:评分电力系统三相短路的编程计算某某某(学院, )摘要:在电力系统中,三相短路故障造成的危害是最大的,发生的几率也最高,故短路计算对电力系统的稳定运行具有十分重要的意义。
作为电力系统三大计算之一,计算三相短路故障发生时的短路电流、各节点电压、各支路电流是短路计算的基本内容。
在电力系统短路电流的工程计算中,由于快速继电保护的应用,最重要的是计算短路电流基频交流分量的初始值,即次暂态电流I ''。
在给定电源电势时,实际上就是稳态交流电路的求解。
本文基于教材例3-2应用MATLAB 编程计算三相短路故障的电流电压情况,并于例3-3进行进一步的验证和完善。
关键词:三相短路;MATLAB中图分类号:TM 713 文献标识码:A0 引言在电力系统的四种短路类型中,三相短路是其中最严重的,其短路电流可达数万安以至十几万安,随之产生的热效应和电动力效应将使电气设备遭受严重破坏。
因此,计算短路电流的主要应用目的是电力系统设计中的电气设备选择,短路计算已成为电力系统运行分析、设计计算的重要环节。
实际电力系统短路电流交流分量初始值的计算,小型系统可以手算,而对于结构复杂的大型系统,短路电流计算量较大,用计算机进行辅助计算成为大势所趋。
1 解析法求三相短路电流1.1 参数说明(1) 为了元件参数标幺值计算方便,取基准容量B S 为A MV ⋅60,可设任意值,但必须唯一值参与计算。
(2) 取基准电压B U 为平均额定电压AV U ,基于例3-2中系统的额定电压等级有kv 10、kv 110,平均额定电压分别为kv 115、kv 5.10,平均额定电压与线路额定电压相差5%,为简化计算,故取平均额定电压。
(3) I ''为次暂态短路电流有效值,短路电流周期分量的初值等于时间0=t 时的有效值。
满足产生最大短路电流的三个条件下的最大次暂态短路电流作为计算依据。
基于matlab的电力系统短路电流计算

湖北民族学院信息工程学院题目: 基于matlab的电力系统短路电流计算专业:电气工程及其自动化班级: 0308407学号: *********学生姓名:指导教师:2011年6 月1 日信息工程学院课程设计任务书年月日信息工程学院课程设计成绩评定表摘要随着电力工业的发展,电力系统的规模越来越大,在这种情况下,许多大型的电力科研实验很难进行,尤其是电力系统中对设备和人员等危害最大的事故故障,尤其是短路故障,而在分析解决事故故障时要不断的实验,在现实设备中很难实现,一是实际的条件难以满足;二是从系统的安全角度来讲也是不允许进行实验的。
考虑这两种情况,寻求一种最接近于电力系统实际运行状况的数字仿真工具十分重要,而MATLAB软件中的SIMULINK是用来对动态系统进行建模、仿真和分析的集成开发环境,是结合了框图界面和交互仿真能力的非线性动态系统仿真工具,为解决具体的工程问题提供了更为快速、准确和简洁的途径。
关键词:短路电流计算,MATLAB,仿真AbstractAlong with the development of the electric power industry, the scale of the power system is more and more big, in this case, many large power research is difficult to, especially in the power system, equipment and personnel to the harm such as the biggest accident, especially fault fault location, and on the analysis of the accident to solve the fault of the experiment, in the reality constantly in equipment, it is difficult to accomplish a is practical conditions to meet; The security of the system from the perspective is not allowed in the experiment. Consider the two kinds of circumstances, for one of the most close to power system actual the operation condition of digital simulation tool is very important, and MATLAB software SIMULINK is used for the dynamic system modeling, simulation and analysis of the integrated development environment, is combined with the block diagram interface and interactive simulation of nonlinear dynamic system ability of simulation tools, to solve the specific engineering problem, provides a more rapid, accurate and simple way.Keywords: short-circuit current calculation, MATLAB, the simulatio目录摘要 (4)1 概述 (6)1.1短路产生的原因 (6)1.2短路的危害 (6)1.3短路故障分析的内容和目的 (6)1.4防范短路电流的措施 (6)2短路计算 (8)2.1简单不对称故障的分析 (8)2.2短路电流的计算过程 (8)2.2.1选择基准值 (10)2.2.2计算系统各元件阻抗标幺值 (10)2.2.3求短路电流的周期分量及冲击电流 (10)3用MA TLAB计算短路电流 (12)3.1MA TLAB简介 (12)3.1.1MATLAB应用 (12)3.2Simulink简介 (12)3.2.1Simulink功能 (13)3.2.2Simulink特点 (13)3.3用MATLAB计算短路电流的实现 (14)3.3.1短路计算内容概述 (14)3.3.2电力系统短路电流计算仿真运行 (15)3.3.3仿真参数设置 (15)3.3.4仿真结果 (16)4 总结 (18)参考文献 (19)1 概述1.1短路产生的原因(1).元件损坏例如绝缘材料的自然老化,设计,安装维护不良所带来的设备缺陷发展成短路等,(2).气象条件恶化例如雷击造成的闪络放电或避雷器动作,架空线路由于大风或导线覆冰引起电杆倒塌(3).违规操作,例如运行人员带负荷拉刀闸,线路或设备检修后未拆除接地线就加上电压等;(4). 其他,例如挖沟损伤电缆,鸟兽跨接在裸露的载流部分等。
电力系统短路故障分析的MATLAB辅助程序设计短路计算程序

电力系统短路故障分析的MATLAB辅助程序设计短路计算程序电力系统短路故障分析是电力系统设计和运行过程中非常重要的一环。
短路故障会导致电力系统各个部分的电压、电流和功率的突然变化,对设备的保护和稳定运行产生不利影响甚至引起事故。
因此,进行短路计算和故障分析非常必要。
MATLAB是一种功能强大的数值计算和数据可视化工具,对于电力系统短路计算和故障分析也可以发挥重要的作用。
下面将介绍如何使用MATLAB设计一个简单的电力系统短路计算程序。
首先,我们需要建立一个电力系统的模型。
电力系统可以用图模型表示,其中节点表示发电机、变压器、负荷等设备,边表示导线、变压器等电力连接。
我们可以使用MATLAB中的图模型工具箱创建电力系统模型,并且设置各个节点和边的属性,例如电压、电流、阻抗等。
然后,我们需要编写短路计算程序。
短路计算可以分为对称故障和不对称故障两种情况。
对称故障是指短路故障发生在电力系统的正常运行条件下,例如三相短路。
不对称故障是指短路故障发生在电力系统的不正常运行条件下,例如单相接地短路。
对于对称故障,我们可以使用节点电流法进行计算。
首先,应用基尔霍夫电流定律,根据电压和阻抗计算电流。
然后,根据节点电流方程和电流方程计算电流分布。
最后,根据电流分布计算短路电流和故障点的电压。
对于不对称故障,我们可以使用仿真方法进行计算。
首先,需要设置故障位置和故障类型,例如A相到地短路。
然后,根据故障位置和类型修改节点和边的参数,例如将故障位置的阻抗设置为零。
最后,使用数值方法求解电力系统的动态响应,得到短路电流和故障点的电压。
在MATLAB中,可以使用矩阵运算和数值求解函数实现短路计算。
例如,可以使用矩阵乘法和矩阵求逆函数计算节点电流和电流分布。
可以使用ODE求解器求解动态响应方程。
可以使用MATLAB的绘图函数绘制电力系统的电流分布和故障点的电压。
总结起来,电力系统短路故障分析的MATLAB辅助程序设计涉及建立电力系统模型、编写短路计算程序并使用MATLAB的数值计算和数据可视化工具进行计算和分析。
matlab基于节点阻抗矩阵的三相短路计算

matlab基于节点阻抗矩阵的三相短路计算MATLAB基于节点阻抗矩阵的三相短路计算三相短路是电力系统中最常见的故障类型之一,也是最严重的一种故障,其产生的电流会对设备造成故障、损坏电力设备,甚至会导致火灾等事故。
因此,对电力系统进行三相短路计算及分析非常必要,MATLAB是一款通用的工具软件,可用于电力系统的短路计算中,本文就基于节点阻抗矩阵介绍MATLAB的三相短路计算。
一、节点阻抗矩阵节点阻抗矩阵是一种直观、简单、易于理解的方法,其基本思想是将电力系统中每个节点的短路电流计算单独列成一个向量,向量中每个元素都代表着该节点与其他节点之间的电流响应系数。
节点阻抗矩阵根据电力系统的拓扑结构所形成,元素值来自于两个节点之间的阻抗和电导之和。
二、节点阻抗矩阵的计算1、定义节点位置和电力设备参数在MATLAB中,首先需要定义电力系统中所有节点的位置参数(x,y)、所有支路的编号、阻抗参数值等,定义方法如下:node_position=[1 1; 1 1.5; 1.5 1; 1.5 1.5]; %四个节点的位置line=[1 2 0.02 0.04; 1 3 0.01 0.03; 2 4 0.03 0.06; 3 40.02 0.04];%四条线路的起始节点、结束节点、电阻、电抗2、构建节点阻抗矩阵根据节点位置和电力设备参数,可以通过以下语句构建节点阻抗矩阵:[~,Y_node]=Admittance_Matrix(line,4); %采用自定义函数计算导纳矩阵Z_node=inv(Y_node);%计算节点阻抗矩阵其中,Admittance_Matrix函数是一个自定义函数,用于求取系统的导纳矩阵,在导纳矩阵中,对称元素等于发电机到负载电工的导纳,非对称元素等于接线点的线路阻抗之和,函数的具体实现方法可以查阅MATLAB帮助文档。
三、三相短路计算有了节点阻抗矩阵,就可以进行三相短路计算,MATLAB中可以通过以下步骤进行计算:1、定义故障考虑的节点编号和负荷首先需要确定故障考虑的节点,即需要计算的节点,有多少个节点,就需要计算多少次,在节点矩阵中的位置,判定方法如下:fault_node=2;%节点2作为故障节点bus=[1 0; 2 10+4*j; 3 10+j; 4 15];%分别代表总发电机、故障节点、非故障节点1和非故障节点2的编号和电阻2、计算故障前的稳态电压在进行三相短路计算之前,需要先计算故障前的稳态电压值,详细计算方式可以参考MATLAB帮助文档或其他相关资料,计算发电机电动势和短路电流,具体计算方法如下:[num_bus,~]=size(bus);V_node=zeros(num_bus,num_bus);for i=1:num_busfor j=1:num_busV_node(i,j)=(bus(i,2)-bus(j,2))/Z_node(i,j);endend%计算电动势和短路电流Es=bus(1,2)-V_node(1,2)*Z_node(1,2);Fault_Pre_Curr=(Es-bus(fault_node,2))/Z_node(1,fault_node);3、计算短路电流和故障后电流得到故障前稳态电压后,可以根据一定的公式计算短路电流和故障后电流,具体计算方法如下:Z_fault=0.03+0.02*j;%故障阻抗I_fault=bus(fault_node,2)/(Z_node(fault_node,fault_node) +Z_fault);I_fault_phase=I_fault/(3^0.5);4、计算故障后电压最后,可以根据故障后电流计算出故障时间的电压,公式如下:V_fault_node=bus(fault_node,2)-I_fault*Z_node(fault_node,fault_node);总结本文简要介绍了MATLAB基于节点阻抗矩阵的三相短路计算方法,通过以上的步骤,可以较为准确地计算出电力系统中三相短路的电流和电压,为电力系统的安全稳定运行提供了重要保障。
三相短路和单相接地短路MATLAB

电力系统三相短路和单相接地短路
实验目的:
1.理解掌握短路的类型及在短路故障后的影响。
2.运用 MATLAB 的电力系统工具箱对三相短路和单相接地短路进行建模,
并分别观察分析其电压、电流的波形,并得出结论。
实验内容:
在二相电力系统中,大多数故障都是由于短路故障引起的,在发生短路故障的情况下,电力系统从一种状态剧烈变化到另一种状态,产生复杂的暂态现象。
在三相系统中,可能发生的短路有:三相短路、两相短路、一相短路接地和单相接地短路。
建立如图 3.1 理想情况下小型电力系统的模型。
图 3.1
参数设置:
电源模块图 3.2:
图 3.2三相电压电流测量模块图 3.3
图 3.3输电线路图 3.4:
图 3.4输电线路模块图 3.5:
图 3.5
万用表模块图 3.6:
(电压)
(电流)
图 3.6万用表 1 图 3.7
图 3.7三相序分量分析图 3.8:
图 3.8算法模块图 3.9:
图 3.9
单项接地:
故障模块 3.10:
图 3.10
对于测量模块和三相模块相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实用文档电力系统三相短路计算a main.mclear tim%打开文件[dfile,pathname]=uigetfile('*.m','Select Data File');if pathname == 0error(' you must select a valid data file')elselfile =length(dfile);eval(dfile(1:lfile-2));end%定义输出文件output_file=fopen('output.dat','w');%开始计时tic;%求解节点导纳矩阵,其中Ymatrix1是考虑了变比,且支路未近似的导纳矩阵;Ymatrix2是近似变比为1,但是支路未近似计算的节点导纳矩阵;Ymatrix3是近似变比为1,采取近似支路参数1的导纳矩阵;Ymatrix4是近似变比为1,采取近似支路参数2的导纳矩阵。
Y = Ymatrix2(bus,line);%对故障点进行导纳修正fixY = FixY(Y,bus,fault);%求注入电流Iinj = Inode(bus,calcSettings);U = fixY\Iinj;%得到故障支路与其他支路电流Bcurrent = Ibranch( line,U,fault,Y );%如果发生支路三相短路,那么对应该支路的电流修正为-999999-j999999Ib = ReviseBcurrent( fault,Bcurrent );%结束计时tim=toc;fprintf('\n程序运行结果');fprintf('\n计算完成,共用时%4.4fs,相关结果已保存在output.dat\n',tim);%输出结果fprintf_result(output_file, Ib);fprintf_result1(Ib);b FixY.mfunction fixY = FixY( Y,bus,fault )%对形成的导纳矩阵进行故障点的修正[nb,mb]=size(bus);[nf,mf]= size(fault);fixY = Y;%对发电机节点导纳修正for k=1:nbbusType=bus(k,7);if (busType==1)fixY(bus(k,1),bus(k,1)) = fixY(bus(k,1),bus(k,1)) + 1/1i/bus(k,8);endend%对节点短路和支路短路的导纳矩阵进行修正for k=1:nfnodeI=fault(k,1);nodeJ=fault(k,2);dis=fault(k,3);if (nodeI==0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue;endif (nodeJ==0)fixY(nodeI,nodeI) = 999999+1i*999999;continue;endif (dis==0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = 999999+1i*999999;continue;endif (dis==1)&&(nodeI*nodeJ~=0)fixY(nodeJ,nodeJ) = 999999+1i*999999;continue;endif (dis~=1)&&(dis~=0)&&(nodeI*nodeJ~=0)fixY(nodeI,nodeI) = fixY(nodeI,nodeI) - fixY(nodeI,nodeJ)/dis;fixY(nodeJ,nodeJ) = fixY(nodeJ,nodeJ) - fixY(nodeI,nodeJ)/(1-dis);fixY(nodeI,nodeJ)=0;fixY(nodeJ,nodeI)=0;endendendc fprintf_result.mfunction [ output_args ] = fprintf_result( output_file, Ib )%将得到的短路电流输入到输出文件中[n,m]=size(Ib);fprintf( output_file, ' No. No. vector of I value of I\n');for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if(I02>=0)fprintf( output_file, '%3d %3d %10.6f+j%10.6f %10.6f',I,J,I01,I02,I1);endif(I02<0)I02=abs(I02);fprintf( output_file, '%3d %3d %10.6f-j%10.6f %10.6f',I,J,I01,I02,I1);endfprintf( output_file, '\n');endendd fprintf_result1.mfunction [ output_args ] = fprintf_result1( Ib )%UNTITLED ÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª[n,m]=size(Ib);fprintf(' No. No. vector of I value of I\n');for k=1:nI=Ib(k,1);J=Ib(k,2);I01=real(Ib(k,3));I02=imag(Ib(k,3));I1=Ib(k,4);if(I02>=0)fprintf('%3d %3d %10.6f+j%10.6f %10.6f',I,J,I01,I02,I1);endif(I02<0)I02=abs(I02);fprintf('%3d %3d %10.6f-j%10.6f %10.6f',I,J,I01,I02,I1);endfprintf('\n');endende Ibranch.mfunction Bcurrent = Ibranch( line,U,fault,Y )%计算短路电流%记录短路故障参数,如短路节点,如为支路短路,记录距离节点的距离%此段计算采用的支路参数未近似,如果计算近似的时候需要修改[nl,ml]=size(line);Bcurrent=zeros(nl+1,4);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);faultNode = 0;if(faultI==0)faultNode = faultJ;endif(faultJ==0)faultNode = faultI;endif(dis==1)&&(faultI*faultJ~=0)faultNode = faultJ;endif(dis==0)&&(faultI*faultJ~=0)faultNode = faultI;endif(faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Iij = 0;Iij1=0;end%计算非故障支路的短路电流for k=1:nli=line(k,1);j=line(k,2);Ui=U(i);if j~=0Uj=U(j);elseUj=0;endif line(k,2)==0Ym=line(k,5)+1i*line(k,6);Iij=Ui*Ym;Iij1=abs(Iij);endif line(k,2)~=0Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);Iij=(Ui-Uj)*Yt+Ui*Ym;Iij1=abs(Iij);endBcurrent(k,1)=i;Bcurrent(k,2)=j;Bcurrent(k,3)=Iij;Bcurrent(k,4)=Iij1;end%如果为节点短路,修正短路点的电流大小if(faultNode~=0)Bcurrent(nl+1,1) = faultNode;Bcurrent(nl+1,2) = faultNode;Ifault = 0;branchCurrent=0;for k=1:nlI=line(k,1);J=line(k,2);if(I*J==0)continue;endbranchCurrent = (U(I)-U(J))/(line(k,3)+1i*line(k,4));if (I==faultNode)Ifault = Ifault - branchCurrent ;else if (J==faultNode)Ifault = Ifault + branchCurrent ;endendendBcurrent(nl+1,3) = Ifault;Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3));end%如果为支路短路,修正短路支路的短路电流大小if(dis~=0)&&(dis~=1)&&(faultI*faultJ~=0)Bcurrent(nl+1,1) = faultI;Bcurrent(nl+1,2) = faultJ;Bcurrent(nl+1,3) = U(faultI)*Y(faultI,faultJ)/dis + U(faultJ)*Y(faultI,faultJ)/(1-dis);Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3));endendf Inode.mfunction Iinj = Inode( bus,calcSettings )%计算节点注入电流[nb,mb]=size(bus);Iinj = zeros(nb,1);for k=1:nbbusType=bus(k,7);if(calcSettings(1)==1)v = 1;elsev = bus(k,2);end%对发电机节点电流进行修正if (busType==1)Iinj(bus(k,1),1) = Iinj(bus(k,1),1) + v/1i/bus(k,8);endendendg ReviseBcurrent.mfunction Ib = ReviseBcurrent( fault,Bcurrent )%如果发生支路短路,对原来的计算电流进行修正,使该支路短路电流输出为-999999-j999999 clear faultI faultJ dis[nt,mt]=size(Bcurrent);Ib=zeros(nt,mt);faultI=fault(1,1);faultJ=fault(1,2);dis=fault(1,3);for k=1:nt-1i=Bcurrent(k,1);j=Bcurrent(k,2);Ib(k,:)=Bcurrent(k,:);if (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultI)&&(j==faultJ) Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endif (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultJ)&&(j==faultI) Ib(k,1)=i;Ib(k,2)=j;Ib(k,3)=-999999-1i*999999;Ib(k,4)=-999999;endIb(nt,:)=Bcurrent(nt,:);endh Ymatrix1.mfunction Y = Ymatrix1( bus,line )%考虑变压器,并且支路参数不近似的节点导纳矩阵[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);K=line(k,7);if (K==0)&&(J~=0)Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif (K==0)&&(J==0)Y(I,I)=Y(I,I)+Ym;endif K>0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt/(K*K);Y(I,J)=Y(I,J)-Yt/K;Y(J,I)=Y(I,J);endif K<0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+K*K*Yt;Y(I,J)=Y(I,J)+K*Yt;Y(J,I)=Y(I,J);endendendi Ymatrix2.mfunction Y = Ymatrix2( bus,line )用matlab实现电力系统潮流计算晏鸣宇%考虑变压器变比近似为1,支路参数不等效[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=1/Zt;Ym=line(k,5)+1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendendj Ymatrix3.mfunction Y = Ymatrix3( bus,line )%考虑变压器变比为1,采用支路参数近似1[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+1i*line(k,4);Yt=imag(1/Zt);Ym=imag(line(k,5)+1i*line(k,6));if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endend用matlab实现电力系统潮流计算晏鸣宇endk Ymatrix4.mfunction Y = Ymatrix4( bus,line )%变压器变比近似为1,采用支路等效参数2[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb);for k=1:nlI=line(k,1);J=line(k,2);Zt=1i*line(k,4);Yt=1/Zt;Ym=1i*line(k,6);if J~=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif J==0Y(I,I)=Y(I,I)+Ym;endendend。