matlab解耦率程序,matlab电力系统快速解耦法潮流计算及短路计算程序

41528d3028836879cd698677c3999917.gifmatlab电力系统快速解耦法潮流计算及短路计算程序

电力系统快速解耦法潮流分析及短路计算 一.程序设计的基本思想: (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个条件后,程序便可以通用化了。当然,由于水平有限,且程序未能由大量数据测试,故缺陷在所难免,这里仅是做了通用化的尝试。在本文最末附加了该程序通用化的实例。 二、潮流计算框图 输入系统的支路参数和PQ参数 计算节点导纳矩阵 设置初始电压值U0 设置收敛条件及最大迭代次数Kmax 判断是否收敛 求解修正方程得到ΔU和Δθ 对U0进行修正,U0=U0+ΔU K>Kmax ? N Y 输出结果 结束 输出潮流不收敛信息 Y N 开始 三.定义相应的函数 1.形成节点导纳矩阵的函数Yn() function Y=Yn(x,y) %定义一名为Yn的函数,其功能是自动识别输入表中节点的个数,形成相应的节点导纳矩阵 [fid,message]=(x, r ) ; %从x文件中读入支路参数 if fid==-1; %判断文件是否正确打开 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; 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); %通过下面两个循环体,确定输入表中节点编号的最大值,及为节点导纳矩阵的维数 for i=1:L; if maxm<=HeadNumber(i); maxm=HeadNumber(i); end; end; maxn=EndNumber(1); for i=1:L; if maxn<=EndNumber(i); maxn=EndNumber(i); end; end; Y=Y(1:max(maxm,maxn),1:max(maxm,maxn));%形成导纳矩阵 2.对不满足要求的PQ参数表进行排序的函数seqencing() function [Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=seqencing(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值