电力系统快速解耦法潮流分析及短路计算 1 : (1) 由于电力系统潮流分析中要利用到矩阵运算,复数运算,故采用 matlab 编程。采用文件输入,将系统的各个参数以文件的形式输入,便于程序的通用化。(2) 本程序共有两个输入文件,分别为线路参数的文件,和已知的节点状态文件( PQ) (3) 为了使程序不仅仅局限于计算 9 节点网络, 在形成节点导纳的函数 Yn()中, 利用循环, 找出线路首节点中的最大编号数, 自动确定节点导纳矩阵的维数。故对于任意 n 节点网络, 均可以计算出节点导纳矩阵(4) 在( 3 )的前提下,为了使程序支持系统增加节点,增加负荷等造成的 PQ 参数改变,或者 PQ 表的加长。对程序做了如下优化。首先,程序执行的基础是 PQ 表中平衡节点在第一行,接下来是 PV 节点,最后是 PQ 节点,如果系统添加节点,或者删除节点,均在 PQ 表的末端操作,会造成 PQ 表的顺序不是平衡节点、 PV 节点、 PQ 节点的顺序。故引入了 seqencing ()函数,其作用就是不论输入的 PQ 表是什么顺序,在程序读入后均按平衡-PV-PQ 的顺序排列。其次,顺序打乱的 PQ 表必须与支路参数表对应,故在 Yn ()函数中加入了两段循环体,使之对应(见相应函数体注释) (5) 在满足了上述 4 个条件后, 程序便可以通用化了。当然, 由于水平有限, 且程序未能由大量数据测试,故缺陷在所难免,这里仅是做了通用化的尝试。在本文最末附加了该程序通用化的实例。 2 二、 Yn() function Y=Yn(x,y) % 定义一名为 Yn 的函数,其功能是自动识别输入表中节点的个数,形成相应的节点导纳矩阵[fid,message]=fopen(x,'r') ;%从x 文件中读入支路参数 if fid==-1; % 判断文件是否正确打开输入系统的支路参数和 PQ 参数计算节点导纳矩阵设置初始电压值 U0 设置收敛条件及最大迭代次数 Kmax 判断是否收敛求解修正方程得到ΔU 和Δθ对 U0 进行修正, U0=U0+ ΔU K>Kmax ? N Y 输出结果结束输出潮流不收敛信 YN 开始 3 error(message); end; [HeadPoint,HeadNumber, EndPoint,EndNumber,R,X,B,k]=textread(x,'%s %d %s %d %f %f %f %f'); % 将读入的参数处理为以列为向量的数组 fclose(fid);% 关闭文件 L=length(HeadNumber); % 确定输入表的行数[Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=seqencing(y); % 调用 seqencing 函数,引入 y 文件中的 PQ 参数 A=PointNumber; for i=1:L; % 通过以下两循环体,实现 PQ 参数与支路参数的编号对应 for j=1:L; if HeadNumber(i)==j; HeadNumber(i)=A(j); break; end; end; end; for i=1:L; for j=1:L; if EndNumber(i)==j; EndNumber(i)=A(j); break; end; end; end; Y=zeros(L,L); % 根据 txt 文件中数据表的长度建立空的节点导纳矩阵 for i=1:L m=HeadNumber(i);n=EndNumber(i); if k(i)==0; % 判断是否何种元件,为输电线元件 if n~=0; Y(m,m)=Y(m,m)+1j*B(i)+1/(R(i)+1j*X(i)); Y(n,n)=Y(n,n)+1j*B(i)+1/(R(i)+1j*X(i)); Y(m,n)=Y(m,n)-1/(R(i)+1j*X(i)); Y(n,m)=Y(n,m)-1/(R(i)+1j*X(i)); else Y(m,m)=Y(m,m)+R(i)+1j*X(i); end; 4 else % 为变压器元件 if n~=0; Y(m,m)=Y(m,m)+1/(R(i)+1j*X(i)); Y(m,n)=Y(m,n)-1/(k(i)*(R(i)+1j*X(i))); Y(n,n)=Y(n,n)+1/(k(i)*k(i)*(R(i)+1j*X(i))); Y(n,m)=Y(n,m)-1/(k(i)*(R(i)+1j*X(i))); else Y(m,m)=Y(m,m)+R(i)+1j*X(i); end; end; end; maxm=HeadNumber(1); % 通过下面两个循环体,确定
matlab电力系统快速解耦法潮流计算及短路计算程序 来自淘豆网m.daumloan.com转载请标明出处.