《电力系统短路故障分析的MATLAB辅助程序设计短路计算程序(共28页).docx》由会员分享,可在线阅读,更多相关《电力系统短路故障分析的MATLAB辅助程序设计短路计算程序(共28页).docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上电力系统短路故障分析的MATLAB辅助程序设计电力系统短路故障可分为三相对称短路故障(three-phase balanced faults)和不对称短路故障(unbalanced faults )。不对称短路故障又分为单相接地短路故障(single line-to-ground fault)、两相短路故障 (line-to-line fault)以及两相接地短路故障(double line-to-ground fault)。根据故障分析结果可以对继电保护装置、自动装置进行整定计算,我们可以建立算法来形成节点阻抗矩阵,利用节点阻抗矩阵来计算短路故障情况下的节点电压和线
2、路电流。一、三相对称短路故障进行三相短路计算需要两个程序:zbuild / zbuildpi和symfault程序 ,zbuild、zbuildpi用来在MATLAB中形成节点阻抗矩阵,symfault用来计算三相对称故障。Zbus=zbuild(zdata) 这里的参数zdata是一个(e4)阶矩阵,e是拓扑图的总支路数目。第一列和第二列为元素两端的节点编号,第三列和第四列分别是线路的电阻、电抗的标幺值。连接在0节点和发电机节点之间的发电机阻抗可能是次暂态电抗、暂态电抗或同步电抗,而且这个矩阵中还包含并联电抗器和负荷阻抗。Zbus=zbuildpi(linedata,gendata,yloa
3、d) 这个函数与潮流计算程序是相容的,第一个参数linedata与潮流计算程序中的文件是一致的。第一列和第二列为节点编号;第三列到第五列分别是线路的电阻、电抗以及1/2线路电纳值,这三项都为在统一基准容量下的标幺值;最后一列是变压器分接头位置,对线路来说,必须输入1;线路无输入顺序。发电机参数不包含在Linedata参数中,而是包含在第二个参数gendata中,gendata是一个g4阶矩阵,g是发电机总数。第一列和第二列为0节点、发电机节点编号,第三列和第四列为发电机的暂态电阻和暂态电抗。最后一个参数yload是可选择的,这个矩阵有两列,第一列为节点编号,第二列为复数导纳值,yload可以由
4、潮流程序lfguss,lfnewton或者decouple自动生成。Zbuild和 zbuildpi两个函数可以通过建立算法求出节点阻抗矩阵。首先添加所有与参考节点相连的树支,然后添加其余的树支,最后添加共轭连支。程序symfault(zdata,Zbus,V)用来计算三相对称故障,程序要求输入zdata和Zbus两个矩阵,第三个参数V是可选的。如果V不存在,程序将默认故障前所有的节点电压标幺值为1.0,如果变量V存在,那么V包括节点编号和复数电压值。电压向量V也可以由潮流计算程序自动生成。当symfault程序运行时,用户要输入故障节点编号和故障阻抗,运行可得到总的故障电流,节点电压幅值以及
5、故障情况下的线路电流。在三相短路计算中,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);for k=1:nbr if R(k) = inf | X(k) =inf R
6、(k) = ; X(k) = ;%无穷 else, endend ZB = R + j*X;Zbus = zeros(nbus, nbus);tree=0; %从参考总线0上添加一个分支 for I = 1:nbr ntree(I) = 1; if nl(I) = 0 | nr(I) = 0 if nl(I) = 0 n = nr(I); elseif nr(I) = 0 n = nl(I); end if abs(Zbus(n, n) = 0 Zbus(n,n) = ZB(I);tree=tree+1; %new else Zbus(n,n) = Zbus(n,n)*ZB(I)/(Zbus(
7、n,n) + ZB(I); end ntree(I) = 2; else,end end% 添加一个新总线分支到现有总线上while tree 4BC = linedata(:,5); for n = 1:nbus yc(n) = 0; nlc(n) = 0; nrc(n) = n; for k = 1:nbr if nl(k) = n | nr(k) = n yc(n) = yc(n) + j*BC(k); else, end end endelseif nc=4 yc= zeros(1, nbr); endnlc=nlc; nrc=nrc; yc=yc.;ZB = R + j*X;if e
8、xist(yload) = 1 yload = yload.; yc =yc + yload;else, endm = 0;for n = 1:nbus if abs(yc(n) =0 m=m+1; nlcc(m) = nlc(n); nrcc(m) = nrc(n); zc(m) = 1/yc(n); else, endendnlcc=nlcc; nrcc=nrcc; zc=zc.;nl=nlg; nlcc; nl; nr = nrg; nrcc; nr; ZB = zg; zc; ZB;linedata=nl nr real(ZB) imag(ZB);nbr= length(nl);Zbu
9、s = zeros(nbus, nbus);tree=0; %从参考总线0上添加一个分支 for I = 1:nbr ntree(I) = 1; if nl(I) = 0 | nr(I) = 0 if nl(I) = 0 n = nr(I); elseif nr(I) = 0 n = nl(I); end if abs(Zbus(n, n) = 0 Zbus(n,n) = ZB(I); tree=tree+1; else Zbus(n,n) = Zbus(n,n)*ZB(I)/(Zbus(n,n) + ZB(I); end ntree(I) = 2; else,end end % 添加一个新总
10、线分支到现有总线上while tree 4 BC = zdata(:,5); elseif nc =4, BC = zeros(length(zdata(:,1), 1); endZB = R + j*X;nbr=length(zdata(:,1); nbus = max(max(nl), max(nr);if exist(V) = 1 if length(V) = nbus V0 = V; else, endelse, V0 = ones(nbus, 1) + j*zeros(nbus, 1);endfprintf(Three-phase balanced fault analysis n)
11、ff = 999;while ff 0nf = input(Enter Faulted Bus No. - ); rtn=isempty(nf); if rtn=1; nf=-1; end while nf nbus fprintf(Faulted bus No. must be between 1 & %g n, nbus) nf = input(Enter Faulted Bus No. - ); rtn=isempty(nf); if rtn=1; nf=-1; end endrtz=1; while rtz=1 fprintf(nEnter Fault Impedance Zf = R
12、 + j*X in ) Zf = input(complex form (for bolted fault enter 0). Zf = ); rtz=isempty(Zf); endfprintf( n)fprintf(Balanced three-phase fault at bus No. %gn, nf) If = V0(nf)/(Zf + Zbus(nf, nf);Ifm = abs(If); Ifmang=angle(If)*180/pi;fprintf(Total fault current = %8.4f per unit nn, Ifm)%fprintf( p.u. nn,
13、Ifm)fprintf(Bus Voltages during fault in per unit nn)fprintf( Bus Voltage Anglen)fprintf( No. Magnitude degreesn) for n = 1:nbus if n=nf Vf(nf) = V0(nf)*Zf/(Zf + Zbus(nf,nf); Vfm = abs(Vf(nf); angv=angle(Vf(nf)*180/pi; else, Vf(n) = V0(n) - V0(n)*Zbus(n,nf)/(Zf + Zbus(nf,nf); Vfm = abs(Vf(n); angv=a
14、ngle(Vf(n)*180/pi; end fprintf( %4g, n), fprintf(%13.4f, Vfm),fprintf(%13.4fn, angv) end fprintf( n) fprintf(Line currents for fault at bus No. %gnn, nf)fprintf( From To Current Anglen)fprintf( Bus Bus Magnitude degreesn) for n= 1:nbus for I = 1:nbr if nl(I) = n | nr(I) = n if nl(I) =n k = nr(I); el
15、seif nr(I) = n k = nl(I); end if k=0 Ink = (V0(n) - Vf(n)/ZB(I); Inkm = abs(Ink); th=angle(Ink); if real(Ink) 0 fprintf( G ), fprintf(%7g,n), fprintf(%12.4f, Inkm) fprintf(%12.4fn, th*180/pi) elseif real(Ink) =0 & imag(Ink) 0 fprintf(%7g, n), fprintf(%10g, k), fprintf(%12.4f, Inkm), fprintf(%12.4fn,
16、 th*180/pi) elseif real(Ink) =0 & imag(Ink) ); if strcmp(resp, n)=1 & strcmp(resp, N)=1 & strcmp(resp, y)=1 & strcmp(resp, Y)=1 fprintf(n Incorrect reply, try again nn), end end if resp = y | resp = Y nf = 999; else ff = 0; endend 二、不对称短路故障不对称故障包括单相接地短路(single line-to-ground fault),两相短路(line-to-line
17、 fault ),和两相接地短路(double line-to-ground fault)。这里介绍三个程序来分析不对称短路故障:单相接地lgfault(zdata0,zbus0,zdata1,zbus1,zdata2,zbus2,V) 两相短路llfault(zdata1,zbus1,zdata2,zbus2,V) 两相接地短路dlgfault(zdata0,zbus0,zdata1,zbus1,zdata2,zbus2,V)对于lgfault和dlgfault需要输入正序、零序、负序节点阻抗矩阵Zbus1、Zbus0和Zbus2,而llfault只需输入正序和负序节点阻抗矩阵Zbus1、Z
18、bus2,最后参数V是可以选择的。如果用户未输入V,程序则默认所有故障前的电压为1.0pu。如果用户输入参数V,则需要输入节点编号以及节点电压的复数值。变量V可由潮流计算程序获得。零序网络和正序网络的节点阻抗矩阵分别通过函数Zbus0=zbuild(zdata0)和Zbus1=zbuild(zdata1)获得。参数zdata1包含正序网络阻抗,参数zdata0包含零序网络阻抗。参数zdata1、zdata2、zdata0均为e4阶矩阵,e为元件的个数。第一列和第二列是节点编号,第三列和第四列分别是线路电阻和电抗(均为标幺值)。节点0为参考节点,发电机节点到节点0的阻抗为发电机阻抗,可以是发电机
19、的次暂态电抗、暂态电抗或者同步电抗,而且矩阵还包括并联电容和负荷阻抗等。负序网络和正序网络有同样的拓扑结构。线路和变压器的负序阻抗等于正序阻抗,而发电机的负序阻抗不等于正序阻抗,但在大型电力系统故障分析中通常按相等来计算。零序网络的拓扑结构不同于正序网络,零序网络的构建取决于变压器的绕组连接方式,除了两侧中性点都接地的Y-Y连接的变压器,对于其他连接方式的变压器,一次侧和二次侧的零序网络都是隔离开的。在这样的连接方式的零序网络中,,用inf填写对应的电阻和电抗列。对于Y-(中性点接地)连接的变压器,Y侧的阻抗到节点0的数据需要填写。当中性点接地阻抗为Xn时,需要填写为3Xn。 在不对称故障计算
20、时,还需要一个函数用来求节点阻抗矩阵,Zbus=zbuildpi(linedata,gendata,yload),函数与潮流计算程序是相容的。第一个参数linedata与潮流程序所需要的数据相同。第一列和第二列是节点编号;第三列到第五列分别是线路的电阻、电抗、1/2线路电纳(均为标幺值,以指定的MVA为基准功率);最后一列为变压器分接头位置,对于线路,在这一列中必须填写1。在潮流计算程序中,发电机电抗不包含在参数linedata中,而是包含在参数gendata中。 参数gendata是一个(g4)阶矩阵,其四列分别为参考节点0、发电机节点编号、发电机电阻和电抗。最后一个参数yload是可选的,
21、这是一个两列的矩阵,包括节点编号和负荷复数导纳值。这些数据可以从潮流计算程序lfgauss,lfnewton,decouple执行过程中自动生成。程序运行时会提示用户输入故障节点编号和故障阻抗Zf,运行结果可得到故障电流,节点电压和线路电流。不对称短路故障计算使用的程序如下:(1)lgfault.m程序代码:% The program lgfault is designed for the single line-to-ground% fault analysis of a power system network. The program requires% the positive-, n
22、egative- and zero-sequence bus impedance matrices,% Zbus1 Zbus2,and Zbus0.The bus impedances matrices may be defined% by the user, obtained by the inversion of Ybus or it may be% determined either from the function Zbus = zbuild(zdata)% or the function Zbus = zbuildpi(linedata, gendata, yload).% The
23、 program prompts the user to enter the faulted bus number% and the fault impedance Zf. The prefault bus voltages are% defined by the reserved Vector V. The array V may be defined or% it is returned from the power flow programs lfgauss, lfnewton,% decouple or perturb. If V does not exist the prefault
24、 bus voltages% are automatically set to 1.0 per unit. The program obtains the% total fault current, bus voltages and line currents during the fault. function lgfault(zdata0, Zbus0, zdata1, Zbus1, zdata2, Zbus2, V)if exist(zdata2) = 1zdata2=zdata1;else, endif exist(Zbus2) = 1Zbus2=Zbus1;else, endnl =
25、 zdata1(:,1); nr = zdata1(:,2);nl0 = zdata0(:,1); nr0 = zdata0(:,2);nbr=length(zdata1(:,1); nbus = max(max(nl), max(nr);nbr0=length(zdata0(:,1);R0 = zdata0(:,3); X0 = zdata0(:,4);R1 = zdata1(:,3); X1 = zdata1(:,4);R2 = zdata1(:,3); X2 = zdata1(:,4); for k=1:nbr0 if R0(k)=inf | X0(k) =inf R0(k) = ; X
26、0(k) = ; else, endendZB1 = R1 + j*X1; ZB0 = R0 + j*X0;ZB2 = R2 + j*X2; if exist(V) = 1 if length(V) = nbus V0 = V; else, endelse, V0 = ones(nbus, 1) + j*zeros(nbus, 1);endfprintf(nLine-to-ground fault analysis n)ff = 999;while ff 0nf = input(Enter Faulted Bus No. - );rtn=isempty(nf); if rtn=1; nf=-1
27、; end while nf nbus fprintf(Faulted bus No. must be between 1 & %g n, nbus) nf = input(Enter Faulted Bus No. - ); rtn=isempty(nf); if rtn=1; nf=-1; end endrtz=1; while rtz=1 fprintf(nEnter Fault Impedance Zf = R + j*X in ) Zf = input(complex form (for bolted fault enter 0). Zf = ); rtz=isempty(Zf);
28、endfprintf( n)fprintf(Single line to-ground fault at bus No. %gn, nf)a =cos(2*pi/3)+j*sin(2*pi/3);sctm = 1 1 1; 1 a2 a; 1 a a2;Ia0 = V0(nf)/(Zbus1(nf,nf)+Zbus2(nf, nf)+ Zbus0(nf, nf)+3*Zf); Ia1=Ia0; Ia2=Ia0;I012=Ia0; Ia1; Ia2;Ifabc = sctm*I012;Ifabcm = abs(Ifabc);fprintf(Total fault current = %9.4f per unitnn, Ifabcm(1)fprintf(Bus Voltages during the f