辐射形网络的简单潮流计算方法.docx
《辐射形网络的简单潮流计算方法.docx》由会员分享,可在线阅读,更多相关《辐射形网络的简单潮流计算方法.docx(12页珍藏版)》请在冰豆网上搜索。
辐射形网络的简单潮流计算方法
辐射形网络的简单潮流计算方法
(广州石化动力事业部黄绍毅)
关键词:
辐射形网络潮流计算方法
Keyword:
radialnetworkflowcalculationmethod
摘要:
电力系统潮流计算方法有不少,而且方法也比较有效,但也不足,比如烦琐、计算量大等。
本文利用简单的原理,采用最简单的方法,对辐射形供电网络的进行潮流计算,可以获得计算量小、收敛性好等优点,可以在辐射形分布的系统中推广应用。
Abstract:
Therearemanymethodsforflowcalculation,andtheyareveryeffectivebutloadeddownwithtrivialdetailslargecalculatingwork.Thispaperwillusethesimplestmethodwithsimpleprinciplestocalculatetheflowforradialpowersupplynetwork.Itcangainlesscalculatingworkandbetterastringency.Itcanbeextendedatradialdistributingsystems.
第一部分前言
所谓潮流计算,就是对给定的电力系统在给定条件下(如节点注入功率、节点电压量等)求解各节点的复电压和潮流分布。
以前常规的潮流计算方法有牛顿法、高斯消去法等。
通常的方法是形成导纳矩阵和雅可比矩阵,通过矩阵运算来进行求解。
对网络拓扑结构非常简单的辐射形分布系统,可以采用与常规的诸如牛顿法等计算方法不同的简单方法。
它具有如下特点:
1.利用最简单的欧姆定理和基尔霍夫电流定理(KCL)、基尔霍夫电压定理(KVL),而不需要引入雅可比矩阵。
简单方便,易于理解和使用。
2.需要内存量、计算量小。
3.收敛性好。
实际应用的电力系统网络有很多可以简化为辐射形网络。
由此可以大大简化计算。
由于本方法的特点,可以在很多场合使用,特别是在需要考虑运算时间的在线计算中。
第二部分辐射网潮流计算方法的原理
对于简单的辐射形网络,为简化,可以将各节点的对地支路(如电容、电抗、电阻等)作为恒定阻抗负荷处理。
经过简化处理后,对于N个节点的辐射网,其有N-1条支路。
2.1.辐射形网络的拓扑结构
辐射形网络看上去就象树的分支一样,在不同的支路由不同编号的两个节点组成。
辐射形网络的特点,用直观的语言来表述为:
1.支路数等于节点数减1;
2.任意的多个支路组合不构成环路。
2.2.辐射形网络的节点编号原则
2.2.1.平衡节点的编号为1。
2.2.2.从平衡节点作为出发点,选择一条线作为主线,按顺序往后编号,直至该线的末端。
2.2.3.到达一个末端后,把最先出现的新的分支节点处作为新的支线的起点,沿一条线按顺序给未编号的节点编号,直至末端。
2.2.4.重复第2、3步骤,直至全部节点均已经编号。
如图是一个12个接点的编号实例。
2.3.辐射形网络的支路编号原则
按照节点编号原则顺序,给每一条支路编号。
因此,对N个节点的网络,它具有N-1条支路。
对任意一条支路,它对应的两个节点(i,j)(j>i),它的支路编号为j-1。
2.4.计算方法
如图,假定:
1.节点注入功率的方向,当节点吸收功率时(如负荷节点)为正。
发出功率(如发电机节点)为负。
2.支路电流方向,假设参考方向是从小编号的节点指向大编号的节点。
根据欧姆定律,支路上的电压等于支路阻抗与支路电流的乘积。
假设支路j-1的阻抗ZL(j-1)=RL(j-1)+jXL(j-1),IL(j-1)=Ia+jIb则支路的电压降有
UL=UL+jVL=IL(j-1)*ZL(j-1)——————————————(式2-1)
将其复数计算结果按实部和虚部分开,得到如下:
UL=Ia*RL(j-1)-Ib*XL(j-1)
VL=Ib*RL(j-1)+Ia*XL(j-1)───────────————(式2-2)
从而,依KVL,有U(j)=U(i)-UL,V(j)=V(i)-VL,—————(式2-3)
而其中支路电流的计算,对所有节点,可以依据KCL定律求得。
1.对线路末端,节点编号为i、j,则支路编号为(j-1),其电流IL(j-1)等于节点(j-1)处的注入功率的电流Ig,再加上对地阻抗的电流Ie。
IL(j-1)=Ig+Ie
节点注入功率电流由I=,
假设S=P(j)+jQ(j),U=U(j)+jV(j),Ig=IgA+jIgB得到
IgA=(P(j)*U(j)+Q(j)*V(j))/(U(j)2+V(j)2)/
IgB=(Q(j)*U(j)-P(j)*V(j))/(U(j)2+V(j)2)/————————(式2-4)
而节点j的对地电阻的电流Ie(j)=Uj/Zj
假设Uj=Uj+jVj,Zj=Rj+jXj,Ie(j)=IeA(j)+jIeB(j)则有
IeA=(Uj*Rj+Vj*Xj)/(Rj2+Xj2)
IeB=(Vj*Rj-Uj*Xj)/(Rj2+Xj2)———————————(式2-5)
2.对线路中间的节点j,依据KCL,其对应的前支路j-1的电流数值上等于节点j的所有后支路的电流之和。
为了表示辐射网的拓扑结构,引入前节点关系CI(j)。
如图1中,CI(8)=2,CI(7)=6。
在进行迭代计算时,首先进行支路电流的计算。
计算步骤是从最末端起。
节点电流包括节点功率对应的电流和节点对地支路的电流。
因此有支路电流计算的公式:
IL(CI(i)-1)=IL(CI(i)-1)+IL(i-1)
当节点对地导纳相对于节点功率的电流来说很小时,可以忽略不计。
除了网络的拓扑结构需要用参数表示出来,还需要表示出节点的特性,如PQ节点、PV节点。
本文引入参数Cv(i):
Cv(k)=1,表示k是PV节点。
Cv(k)=0,表示k是PQ节点。
对PQ节点(负荷节点),节点的注入功率是恒定的。
对PV节点(发电机节点),节点的有功功率和电压量值是恒定的。
设节点k,有功功率和电压量分别为P0(k)、Vs(k)。
设定初始值Q(k)=λP0(k)(本文取λ=0),U(k)=Vs(k)。
当进行电压迭代计算时,若迭代后节点电压的幅值为Vk,则
△V=Vk-Vs(k),
若△V<0,即节点电压的幅值比要求值小,需将调整Q(k)减少(如负数时绝对值要调大些);若△V>0,即节点电压的幅值比要求值大,需将调整Q(k)增加(如负数时绝对值要调小些)。
调整的式子为
△Q=μ√3*△V|△V|/√(RL2+XL2),一般地,取μ=1。
而第m次迭代的公式为Q(k)m=Q(k)m-1+△Q——————(式2-5)
当Q的调整值超过上限电压仍偏低,或超过下限电压仍偏高时,可将PV节点转化为PQ节点。
本文的程序没考虑这种情况。
实际上,节点电压对负荷的实际功率是有影响的。
根据统计,有功功率P、无功功率Q与电压水平V的关系与负荷的特性有关,大致有下列关系:
P=(1~5)Pe(V/Ve)p,p一般取2
Q=(1~3)Qe(V/Ve)q,q一般取1。
本文为简化起见,电压幅值对节点功率的影响未予以考虑。
a)流程图
计算平衡节点功率
输出结果
结束
b)程序
本文用Visualc++4.1编写了潮流计算程序,程序如下:
/*这是一个辐射形网络的潮流计算的程序*/
#include
#include
main()
{
inti,j,k,l,n,ci[100],cv[100],ok;
doublerl[100],xl[100],ux[100],uy[100],ix[100],iy[100],p[100],q[100],vs[100],ia,ib,ua,ub,vj,dv,dq,ev,miu;
/*原始数据输入*/
FILE*fp;
if(!
(fp=fopen("潮流计算原始数据.txt","r")))printf("cannotopeninputfile!
");
fscanf(fp,"%d%lf%lf",&n,&ev,&miu);
for(i=2;i<=n;i++)fscanf(fp,"%d",&ci[i]);
for(i=2;i<=n;i++)fscanf(fp,"%d",&cv[i]);
for(i=2;i<=n;i++)
{
fscanf(fp,"%lf",&p[i]);
if(cv[i]==1)fscanf(fp,"%lf",&vs[i]);
elsefscanf(fp,"%lf",&q[i]);
}
for(l=1;l<=n-1;l++)fscanf(fp,"%lf%lf",&rl[l],&xl[l]);
fscanf(fp,"%lf",&ux[1]);
/*赋初始值*/
uy[1]=0.0;
for(i=2;i<=n;i++)
{
if(cv[i]==1){ux[i]=vs[i];uy[i]=0.0;q[i]=0;}
else{ux[i]=1.0;uy[i]=0.0;}
}
k=0;
fp=fopen("test.txt","w");
/*回路电流、节点电压的迭代计算*/
do
{
ok=1;
for(l=0;l<=n;l++){ix[l]=0.0;iy[l]=0.0;}
for(l=n-1;l>=1;l--)
{
j=l+1;i=ci[j];
ia=(p[j]*ux[j]+q[j]*uy[j])/(ux[j]*ux[j]+uy[j]*uy[j])/1.732;
ib=(q[j]*ux[j]-p[j]*uy[j])/(ux[j]*ux[j]+uy[j]*uy[j])/1.732;
ix[l]+=ia;
iy[l]+=ib;
ix[i-1]+=ix[l];
iy[i-1]+=iy[l];fprintf(fp,"l=%d,I=%lf+j%lf\n",l,ix[l],iy[l]);
}
for(j=2;j<=n;j++)
{
i=ci[j];l=j-1;
ua=ux[i]-ix[l]*rl[l]+iy[l]*xl[l];
ub=uy[i]-ix[l]*xl[l]-iy[l]*rl[l];
if(cv[j]==1)
{
vj=sqrt(ua*ua+ub*ub);dv=vj-vs[j];dq=1.732*dv*fabs(dv)/sqrt(rl[l]*rl[l]+xl[l]*xl[l]);
q[j]=q[j]+miu*dq;
if(fabs(dv)>ev)ok=0;
}
if(fabs(ua-ux[j])>ev||fabs(ub-uy[j])>ev)ok=0;
ux[j]=ua;uy[j]=ub;
}
k=k+1;fprintf(fp,"k=%d,dv=%lf,dq=%lf,v=%lf+j%lf,q=