电力系统潮流计算完整程序及详细理论说明——秦羽风在我刚开始学习潮流程序时,总是找不到一个正确的程序开始模仿学习。后来经过多方努力,终于自己写出了一个结构清晰、完整的潮流程序。此程序是一个通用的程序,只需要修改输入数据的子函数(PowerFlowsData_K)里面的母线、支路、发电机、负荷,就能算任意一个网络结构的交流系统潮流。很适合初学者学习。为了帮助电力系统的同学一起学习,我将我编写的潮流计算程序分享下来给大家;此程序是在基于牛顿拉夫逊算法的基础上,编写的快速解耦算法。每一个子程序我都有备注说明。如果有不对的地方,希望大家指正!下文中呈现的顺序为:网络结构、子程序、主程序、运算结果、程序设计理论说明。一、网络结构:5节点网络如下图。竺JUI―r电容)并联00.06;二、子程序(共有9个子程序)子程序1:(其他系统,只需要修改Bus、Branch、Generator、Load,这四个矩阵就行了)function[Bus,Branch,Generator,Load]=PowerFlowsData_K%%节点数据%类型:1-平衡节点;2-发电机PV节点;3-负荷PQ节点;4-发电机PQ节点;Bus=[%类型电压相角11.060;210;310;310;310];%%线路数据Branch=[%发送接收电阻电感(电导120.020.06130.080.24IuI;0I心il4'6丑母蜿瀏试网络日圧梯施忡算越¥摘自C呼,创畑«ndA-H.ElAbild,Computer血血血讣恂钿和叭牡秤卿用J丄F仇ci旧.婕瓶纭-'HillIT-J址夫逊法要少得零.而且并界需■料】定无功(上限5-5;下限)无230.060.1800.04;240.060.1800.04;250.040.1200.03;340.010.0300.02;450.080.2400.05];%%发电机数据Generator=[%节点定有功10020.403-3];%%负载数据Load=[%节点定有功定无功20.20.1;30.450.15;40.40.05;50.60.1];子程序2:%求解网络的导纳矩阵;function[YR,YI]=YBus_K(nbb,ntl,tlsend,tlrec,tlresis,tlreac,tlcond,tlsuscep)YR=zeros(nbb,nbb);YI=zeros(nbb,nbb);forkk=1:ntlii=tlsend(kk);jj=tlrec(kk);demon=tlresis(kk)入2+tlreac(kk)入2;YR(ii,ii)=YR(ii,ii)+tlresis(kk)/demon+0.5*tlcond(kk);YI(ii,ii)=YI(ii,ii)-tlreac(kk)/demon+0.5*tlsuscep(kk);YR(ii,jj)=YR(ii,jj)-tlresis(kk)/demon;fokk=1:nlYI(ii,jj)=YI(ii,jj)+tlreac(kk)/demon;YR(jj,ii)=YR(jj,ii)-tlresis(kk)/demon;YI(jj,ii)=YI(jj,ii)+tlreac(kk)/demon;YR(jj,jj)=YR(jj,jj)+tlresis(kk)/demon+0.5*tlcond(kk);YI(jj,jj)=YI(jj,jj)-tlreac(kk)/demon+0.5*tlsuscep(kk);end子程序3:%求节点的功率净值function[PNET,QNET]=NetPowers_K(nbb,ngn,nld,genbus,PGEN,QGEN,PLOAD,QLOAD,loadbus)PNET=zeros(1,nbb);QNET=zeros(1,nbb);forkk=1:ngnii=genbus(kk);PNET(ii)=PNET(ii)+PGEN(kk);QNET(ii)=QNET(ii)+QGEN(kk);endii=loadbus(kk);PNET(ii)=PNET(ii)-PLOAD(kk);QNET(ii)=QNET(ii)-QLOAD(kk);end%求网络节点的注入功率function[PCAL,QCAL]=NetPowers_in_K(nbb,VM,VA,YR,YI)PCAL=zeros(1,nbb);QCAL=zeros(1,nbb);forii=1:nbbforjj=1:nbbPCAL(ii)=PCAL(ii)+VM(ii)*VM(jj)*(YR(ii,jj)*cos(VA(ii)-VA(jj))+YI(ii,jj)*sin(VA(ii)-VA(jj)));QCAL(ii)=QCAL(ii)+VM(ii)*VM(jj)*(YR(ii,jj)*sin(VA(ii)-VA(jj))-YI(ii,jj)*cos(VA(ii)-VA(jj)));endend子程序5:%检查发电机PV节点是否越限;Function[QNET,bustype]=GeneratorLimit_K(it,ngn,genbus,bustype,QCAL,QMAX,QMIN,nld,loadbus,QLOAD,QNET)flag1=0;ifit>2forkk=1:ngnii=genbus(kk);ifbustype(ii)==2ifQCAL(ii)>QMAX(kk)QNET(ii)=QMAX(kk);bustype(ii)=3;flag1=1;elseifQCAL(ii)