电力系统潮流计算完整程序及详细理论说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电力系统潮流计算完整程序
及详细理论说明
——秦羽风在我刚开始学习潮流程序时,总是找不到一个正确的程序开始模仿学习。后来经过多方努力,终于自己写出了一个结构清晰、完整的潮流程序。此程序是一个通用的程序,只需要修改输入数据的子函数(PowerFlowsData_K)里面的母线、支路、发电机、负荷,就能算任意一个网络结构的交流系统潮流。很适合初学者学习。
为了帮助电力系统的同学一起学习,我将我编写的潮流计算程序分享下来给大家;此程序是在基于牛顿拉夫逊算法的基础上,编写的快速解耦算法。每一个子程序我都有备注说明。如果有不对的地方,希望大家指正!
下文中呈现的顺序为:网络结构、子程序、主程序、运算结果、程序设计理论说明。
一、网络结构:5节点网络如下图。
二、子程序(共有9个子程序)
子程序1:(其他系统,只需要修改Bus、Branch、Generator、Load,这四个矩阵就行了)function [Bus,Branch,Generator,Load]=PowerFlowsData_K
%% 节点数据
% 类型:1-平衡节点;2-发电机PV节点;3-负荷PQ节点;4-发电机PQ节点;
Bus=[
% 类型电压相角
1 1.06 0;
2 1 0;
3 1 0;
3 1 0;
3 1 0
];
%% 线路数据
Branch=[
% 发送接收电阻电感(电导电容)并联
1 2 0.02 0.06 0 0.06;
1 3 0.08 0.24 0 0.05;
2 3 0.06 0.18 0 0.04;
2 4 0.06 0.18 0 0.04;
2 5 0.04 0.12 0 0.03;
3 4 0.01 0.03 0 0.02;
4 5 0.08 0.24 0 0.05
];
%% 发电机数据
Generator=[
% 节点定有功定无功(上限下限)无功
1 0 0 5 -5;
2 0.4 0
3 -3
];
%% 负载数据
Load=[
% 节点定有功定无功
2 0.2 0.1;
3 0.45 0.15;
4 0.4 0.05;
5 0.
6 0.1
];
子程序2:
% 求解网络的导纳矩阵;
function
[YR,YI]=YBus_K(nbb,ntl,tlsend,tlrec,tlresis,tlreac,tlcond,tlsuscep)
YR=zeros(nbb,nbb);
YI=zeros(nbb,nbb);
for kk=1:ntl
ii=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;
YI(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,load bus)
PNET=zeros(1,nbb);
QNET=zeros(1,nbb);
for kk=1:ngn
ii=genbus(kk);
PNET(ii)=PNET(ii)+PGEN(kk);
QNET(ii)=QNET(ii)+QGEN(kk);
end
for kk=1:nld
ii=loadbus(kk);
PNET(ii)=PNET(ii)-PLOAD(kk);
QNET(ii)=QNET(ii)-QLOAD(kk);
end
子程序4:
%求网络节点的注入功率
function [PCAL,QCAL]=NetPowers_in_K(nbb,VM,VA,YR,YI)
PCAL=zeros(1,nbb);
QCAL=zeros(1,nbb);
for ii=1:nbb
for jj=1:nbb
PCAL(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))-