电力系统短路故障分析的MATLAB辅助程序设计-短路计算程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档