第5章 P—Q程序框图及程序说明
5.1 主程序流程图
初始化节点和支路各参数值
通过统计各节点静态出线数进行节点重新排序
将PV节点加以标志并保存在一数组里
计算B/和B//,相应地形成因子表1和2
初始化电压幅值和相角
num=0
While(num<ITM)
num=num+1;KG[0]=1; KG[1]=1;
计算各节点有功和无功
KQO=0;
进行有功功率误差计算,并标出最大功率误差
fabs(DSM)<EPS?
false true
解方程
KG[0]=0
相位调整
重新计算各节点有功和无功
KQO=1
进行有功功率误差计算,并标出最大功率误差
(fabs(DSM)<EPS)?
false true
解方程
KG[1]=0
幅值调整
(KG[0]==0&&KG[1]==0)?
False true
num>=ITM?
false true
对节点编号进行还原
计算节点和支路数据
输出提示信息
输出节点和支路数据
break
break;
5.2 子程序流程图
1. chushihua()函数
打开文件,
输入节点信息
关闭文件
打开文件,
输入支路信息
关闭文件
2. jiedianyh()函数
根据支路信息统计各节点出线数
根据出线数设置将要排序顺序号(平衡节点排最后,)形成出线表
支路左、右节点号根据出线数表对应的进行转化
支路数据左右节点号调整(左小于右)
节点数据根据出线数表对应进行交换排序
数据输出
3. daona1()函数
只用于不接地支路构成导纳矩阵,不考虑接地支路(包括变压器非标准变比)的影响,主要用来形成P—Q分解法所要求的第一个因子表。
从i=1步长1到N作
gii(i)=0; bii(i)=0; yds(i)=0;
从k=1步长1到ZLS作
i=| zl[k].zli |; j=| zl[k].zlj |;
r=| zl[k].zlr |; x=| zl[k].zlx |;
zf=r*r+x*x;
gij=r/zf; bij= -x/zf;
y[k].yg= -gij; y[k].yb= -bij; y[k].cow=j;
gii[i]= gii[i]+gij; bii[i]= bii[i]+bij;
gii[j]= gii[j]+gij; bii[j]= bii[j]+bij;
yds[k]=yds[i]+1
ydz[i]=1
从i=1步长1到N作
ydz[i+1]=ydz[i]+yds[i]
4. daona2()函数
追加接地支路的程序框图
从k=1步长1到zls作
i= zl[k].zli ; j= zl[k].zlj ;
yk= zl[k].zlyk ;
i<0 V j<0
true false
i<0?
true false
gij=0
bij=yk/2
i=abs(i)
i=abs(j)
sy(i)
sy(j)
gij=y[k].yg; bij= y[k].yb
gii[i]=gii[i]+(1-1/yk/yk)*gij
bii[i]= bii[i]+(1-1/yk/yk)*bij;
y[k].yg=gij/yk
y[k].yb=bij/yk
sy(i),sy(j)完成统计各节点自导计算
5. yinzibiao()函数
(计算部分,不含前面判断及传送)
根据t值来确定对导纳阵付初值
对其他变量fd[I],di[I],u[I],m付初值
for(k=1;k<=m;k++)
对临时工作数组B[I] 付初值
x=2; im=1;
while(im<=k-1)
jsq=1
jsq>fd[im]?
true false
im=im+1
while(jsq<=fd[im])
u[x+1]!=k?
false true
ai=u[x]/di[im]
jsq=jsq+1; x=x+2;
while(jsq<=fd[im])
j=u[x+1]
b[j]=b[j]-ai*u[x]
x=x+2
jsq=jsq+1
im=im+1;
im>k-1?
true false
di[k]=1/b[k]; ai=di[k]; jsq=0;
for(j=k+1;j<=m;j++)
b[j]!=0
true false
u[x]=b[j]*ai;
u[x+1]=j
jsq=jsq+1
x=x+2
fd[k]=jsq
结果保存
5.2.6 其它函数其流程图不再列出;
5.3 各函数功能介绍
函数名
函数完成功能
PQjs()
函数主体,其它函数均为其子函数,完成计算
chushihua()
原始数据的输入
jiedianyh()
通过静态最少出线数优先完成节点优化排序
PVbz()
形成PV节点数组
daona1()
形成计算因子表1所需要的导纳矩阵
Daona2()
形成计算因子表1所需要的导纳矩阵
yinzibiao()
根据T值形成因子表1或2
InputV()
初始化V值
gljs()
完成节点有功和无功的计算
glwc()
计算节点功率最大误差
solution()
解方程
dyxz()
调整节点电压幅值和相角
jiedianhy()
把通过节点优化后的数据还原为以前的编号
nod()
计算节点结果数据
branch()
计算支路结果数据
shuchu()
输出节点、支路结果数据
5.4 程序变量说明
1. N:系统节点的总数;WGS:系统中发电机节点的总数;
WLS:系统中负载节点的总数;EPS:迭代所要求的精度;
ITM:最大能迭代次数;
2. struct WFL
{
double P; (PQ节点:有功功率)
double Q; (PQ节点:无功功率,PV节点:无功功率的上限)
int node; (节点编号)
double V; (负号是PV节点的标志)
}WG[WGS],WL[WLS];
3. struct ZL
{
int node1; (一端的节点号)
int node2; (另一端的节点号)
double R; (电阻)
double X; (电抗)
double K; (输电线支路:容纳;变压器支路:非标准变比)
}pZL[ZLS];
4. (*pPV)[2]; (PV节点数组)
5. jdyh[N][2] ; (节点优化结果数组)
6. GII[NMAX],BII[NMAX];YDS[NMAX],YDZ[NMAX];(导纳对角元素数祖实部、虚部,各行非零非对角元个数数组,每行第一非零非对角远在Y中序号数组)
7. DI[N],B[N];(因子表对角元素数组,计数展开用数组)
8. Y[ZLSMAX][3] (非对角元数组;)
9. *FD; (因子表上三角阵各行非零元素个数)
10. R,X,GIJ,BIJ,YK,ZF; (电阻、抗、非对角原实部、虚部、变比容抗暂存单元)
11. LD,PVD,GD,L,S,G;(负荷节点、PV节点、发电机节点、负荷计数、PV点计数、发电机,计数寄存单元)
12. T (特征计数单元: 0对应B1; 1对应B2;)
13. KQO; (特征计数单元,kqo=0控制P迭代,kqo=1控制Q迭代)
14. KG[2]; (收敛检验标识)
15. DSD; (迭代最大功率误差节点号)
16. DSM; (迭代最大功率误差)
17. OI[NMAX]; (方程输入输出单元)
18. W[N][2],V[N][2]; (功率、电压数组)
19. VI,VJ,AI,BI,CI,WI; (临时计数单元)
结论
致谢
参考文献
1 何仰赞 温增银 旺馥瑛 周勤慧.电力系统分析(上、下册).华中理工大学出版社,1995.4
2 西安交通大学等六院校合编.电力系统计算.水利电力出版社 1995.5
3 刘浩.保留非线形的快速P—Q分解状态估计程序设计.电力系统及自动化学报.1997.12
4 电力工业部电力规划设计总院编.电力系统设计手册.中国电力出版社.1998
5 王锡凡主编.电力系统优化规划.水利电力出版社.1990
6 A·R伯根 原著.刘康立译.电力系统分析.晓圆出版社.世界图书出版社.1994
7 H·E·
Brown.Solution of large networks by matrix methods.John Wiley&Sons.Inc.1975
8 J·Arrillaga.C·P·Arnold.B·J·Harker.Computer Modelling of Electrical Power Systems.John Wiley&Sons.Inc.1983
9
附录1(源码略)