电力系统短路故障分析的MATLAB辅助程序设计-短路计算程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电力系统短路故障分析的MATLAB辅助程序设计
电力系统短路故障可分为三相对称短路故障(three-phase balanced faults)和不对称短路故障(unbalanced faults )。不对称短路故障又分为单相接地短路故障(single line-to-ground fault)、两相短路故障 (line-to-line fault)以及两相接地短路故障(double line-to-ground fault)。根据故障分析结果可以对继电保护装置、自动装置进行整定计算,我们可以建立算法来形成节点阻抗矩阵,利用节点阻抗矩阵来计算短路故障情况下的节点电压和线路电流。
一、三相对称短路故障
进行三相短路计算需要两个程序:zbuild / zbuildpi和symfault程序,zbuild、zbuildpi 用来在MATLAB中形成节点阻抗矩阵,symfault用来计算三相对称故障。
Zbus=zbuild(zdata)这里的参数zdata是一个(e×4)阶矩阵,e是拓扑图的总支路数目。第一列和第二列为元素两端的节点编号,第三列和第四列分别是线路的电阻、电抗的标幺值。连接在0节点和发电机节点之间的发电机阻抗可能是次暂态电抗、暂态电抗或同步电抗,而且这个矩阵中还包含并联电抗器和负荷阻抗。
Zbus=zbuildpi(linedata,gendata,yload)这个函数与潮流计算程序是相容的,第一个参数linedat a与潮流计算程序中的文件是一致的。第一列和第二列为节点编号;第三列到第五列分别是线路的电阻、电抗以及1/2线路电纳值,这三项都为在统一基准容量下的标幺值;最后一列是变压器分接头位置,对线路来说,必须输入1;线路无输入顺序。发电机参数不包含在Linedata参数中,而是包含在第二个参数gendata中,gendata是一个g×4阶矩阵,g是发电机总数。第一列和第二列为0节点、发电机节点编号,第三列和第四列为发电机的暂态电阻和暂态电抗。最后一个参数yload是可选择的,这个矩阵有两列,第一列为节点编号,第二列为复数导纳值,yload可以由潮流程序lfguss,lfnewton或者decouple自动生成。
Zbuild和zbuildpi两个函数可以通过建立算法求出节点阻抗矩阵。首先添加所有与参考节点相连的树支,然后添加其余的树支,最后添加共轭连支。
程序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));
for k=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上添加一个分支
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(n,n) + ZB(I));
end
ntree(I) = 2;
else,end
end
% 添加一个新总线分支到现有总线上
while tree < nbus
for n = 1:nbus
nadd = 1;
if abs(Zbus(n,n)) == 0
for I = 1:nbr
if nadd == 1;
if nl(I) == n | nr(I) == n
if nl(I) == n k = nr(I);
elseif nr(I) == n k = nl(I);
end
if abs(Zbus(k,k)) ~= 0
for m = 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
end
%增加两个原有总线间的支路阻抗
for n = 1:nbus
for I = 1:nbr
if ntree(I) == 1
if nl(I) == n | nr(I) == n
if nl(I) == n k = nr(I);
elseif nr(I) == n k = 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);
for kk = 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程序代码:
% This program forms the complex bus impedance matrix by the method
% of building algorithm. Bus zero is taken as reference.
% This program is compatible with power flow data.
function [Zbus, linedata] = zbuildpi(linedata, gendata, yload)
ng=length(gendata(:,1));
nlg=gendata(:,1);
nrg=gendata(:,2);