-
电力系统潮流计算完整程序
及详细理论说明
——秦羽风
在我刚开始学习潮流程序
时,总是找不到一个正确的程序开始模
仿学习。后来经过多方努力,终于自己写出了一个
结构清晰、完整的
潮流程序。
此程序是一个通用的程序,
只需要修改输入数据的子函数
(
PowerF
lowsData_K
)里面的母线、支路、发电机、负荷,就能算任
< br>意一个网络结构的交流系统潮流。很适合初学者学习。
为了帮助电力系统的同学一起学习,我将我编写的潮流计算程序
分享下来给大家;
此程序是在基于牛顿拉夫逊算法的基础上,
编写的
快速解耦算法。每一个子程序我都有备注说明。如果有不对的地方,
希望大家指正!
下文中呈现的顺序为:网络结构、子程序、主程序、运算结果
、
程序设计理论说明。
一、网络结构
:
5
节点网络如下图。
二、子程序(共有
9
个子程序)
子程序
1
:
(其他系统,
只需要修改
< br>Bus
、
Branch
、
Generator
、
Load
,
这四个矩阵就行了)
function
[Bus,Branch,Generat
or,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,tl
reac,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)=Y
R(ii,ii)+tlresis(kk)/demon+0.5*tlcond(kk);
< br>
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)=Y
R(jj,jj)+tlresis(kk)/demon+0.5*tlcond(kk);
< br>
YI(jj,jj)=YI(jj,jj)-tlreac(kk)/
demon+0.5*tlsuscep(kk);
end
子程序
3
:
%
求节点的功率净值
function
[PNET,QN
ET]=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,Q
CAL]=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,j<
/p>
j)*sin(VA(ii)-VA(jj)));
QCAL(ii)=QCAL(ii)+VM
(ii)*VM(jj)*(YR(ii,jj)*sin(VA(ii)-VA(jj))-YI(ii,j<
/p>
j)*cos(VA(ii)-VA(jj)));
end
end
子程序
5
:
%
检查发电机
PV
节点是否越限;
Function
[QNET,bustype]=Gene
ratorLimit_K(it,ngn,genbus,bustype,QCAL,QMAX,QMIN,
nld,loadbus,QLOAD,QNET)
flag1=0;
if
it>2
for
kk=1:ngn
ii=genbus(kk);
if
bustype(ii)==2
if
QCAL(ii)>QMAX(kk)
QNET(ii)=QMAX(kk);
bustype(ii)=3;
flag1=1;
elseif
QCAL(ii)
QNET(ii)=QMIN(kk);
bustype(ii)=3;
flag1=1;
end
if
flag1==1
for
jj=1:nld
if
loadbus(jj)==ii
QNET(ii)=QNET(ii)-QLOAD(jj);
end
end
end
end
end
end
子程序
6
:
%
计算节点失配功率;
Function
[DP,DQ,flag]=MismatchPowers_K(nbb,PNET,QNET,P
CAL,QCAL,bustype,tol,fla
g)
DPQ=zeros(1,2*nbb);
DP=zeros(1,nbb);
DQ=zeros(1,nbb);
kk=1;
for
ii=1:nbb
DP(ii)=PNET(ii)-PCAL(ii);
DQ(ii)=QNET(ii)-QCAL(ii);
if
bustype(ii)==1
DP(ii)=0;
DQ(ii)=0;
elseif
bustype(ii)==2
DQ(ii)=0;
end
DPQ(kk)=DP(ii);
DPQ(kk+1)=DQ(ii);
kk=kk+2;
end
if
abs(DPQ)
flag=1;
end
子程序
7
:
%
求快速解耦算法中的
[B1,B2]
function
[B1,B2]=FastDecoupled_K(YI,nbb,bustype)
B1=-YI;
for
ii=1:nbb
if
bustype(ii)==1;
for
jj=1:nbb
if
ii==jj
B1(ii,ii)=1;
else
B1(ii,jj)=0;
B1(jj,ii)=0;
-
-
-
-
-
-
-
-
-
上一篇:如何进行小学语文作文教学
下一篇:小学生语文作文词汇大全