《电力系统潮流上机》课程设计报告
院
班
学
系:电气与电子工程学院
级:
号:
学生姓名:
指导教师:
刘宝柱
设计周数:
成
绩:
日期:2012 年 1 月 5 日
一、课程设计的目的与要求
培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识
课程
课程设计报告
二、设计正文(详细内容见附录)
1. 手算
2. 计算机计算
3. 思考题
3.1 潮流计算的方法有哪些?各有何特点?
答: 潮流计算的方法主要有高斯-赛德尔迭代法、牛顿-拉夫逊迭代法和 P-Q 分解法。
它们各自的特点如下:
(1)高斯-赛德尔迭代法分为以节点导纳矩阵为基础的高斯-赛德尔迭代法和以以节点阻抗矩阵为基
础的高斯-赛德尔迭代法的原理比较简单,要求的数字计算机的内存量也比较小,但收敛性差,当系统规
模变大时,迭代次数急剧上升,往往出现迭代不收敛的情况;而阻抗法改善了电力系统潮流计算导纳法德
收敛性问题,在当时获得了广泛的应用,但是,阻抗法的主要缺点是占用计算机的内存很大,每次迭代的
计算量很大。当系统不断扩大时,这些缺点就更加突出。
(2)牛顿-拉夫逊法是数学中求解非线性方程式的典型方法,有较好的收敛性。只要在迭代过程中尽
可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流计算程序的计算效率,牛顿法在收敛性、 内
存要求、计算速度方面都超过了阻抗法,成为知道目前仍被广泛采用的方法。
(3)P-Q 分解法潮流计算派生于以极坐标表示时的牛顿-拉夫逊法,它根据电力系统的特点,抓住主
要矛盾,对纯数学的牛顿法进行了改造。与牛顿法相比,P-Q 分解法的修正方程的系数矩阵 B’和 B”分别
是(n-1)和(m-1)的方阵,替代了原有的(n+m-2)阶系数矩阵 J;B’、B”在迭代过程中可以保持不变
且为对称的系数矩阵,提高了计算速度,降低了对存储容量的要求。P-Q 分解法在计算速度方面有显著地
提高,迅速得到了推广。
3.2 如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?
(收集哪些数据,如何整理,计算结果如何分析)
答:(1)在进行北京城市电网的潮流计算之前需要了解北京城市电网中所有的节点支路的相关数据,
并对节点和支路分类。处理 PQ 节点时要了解节点的注入有功和无功功率;PV 节点要了解节点电压大小,
注入有功功率及节点所能提供的最大和最小无功功率;对于平衡节点要了解节点的电压大小、相位及节点
所能提供的最大和最小有功无功功率,此外还需的节点数据有:支路的电阻电抗电纳支路变压器的变比及
线路所能传输的最大容量等。
(3) 计算结果分析:应考虑 PQ 节点的电压是否过高或过低,分析 PV 节点的电压幅值是否正常及无功
1
功率是否超出范围,分析平衡节点有功无功功率是否在节点所能提供的范围之内,分析各支路的功率,看
是否超出线路传输的最大容量,分析整个系统的网损是否达到标准
课程
课程设计报告
3.3 设计中遇到的问题和解决的办法。
开始时我们进行原始数据的读入和读出,这一部分的程序比较简单,所以我们都很顺利都写出程
序。接下来就是节点导纳矩阵的形成。编写这一部分程序时我刚开始没有考虑到变压器支路,所以当原始
数据改为四节点四支路的数据时,节点导纳矩阵的结果就出错了。经过改正之后终于得出了正确的节点导
纳矩阵。然后就是计算不平衡功率和雅可比矩阵。计算不平衡功率时候,为了方便计算,我将各节点的不
平衡功率放到一个一维数组里面。雅可比矩阵的形成这一部分上我用了很长时间才将程序写出来。首先是
对角线上的 H,N,J,L 的计算公式写的很复杂,与同学讨论之后我发现可以先将每个节点的注入电流放到一
个数组里面,这样后面用来求 H ,N ,J,L 时就比较方便。在这一模块的过程中,我没有注意到雅克比矩阵
中 PQ 节点和 PV 节点的对应关系,而且我没有将节点号取出来,以致出现了错误的编程思路和错误的结
果,后来在同组同学的帮助下我又进行了第二次的编程,思路是正确的,但是运行出来的结果却是错误的,
我想应该是我哪个公式出了错,最终经过反复检查后终于得到了正确结果,在编写雅克比矩阵还需要注意
H、J、N、L 四个矩阵的形成以及循环的顺序,然后就是如何将雅可比矩阵的各个元素放到一个二维数组
里,这一部分看起来很简单,但是却很容易出错,经过和同组同学的认真思考和检查,终于得出来了正确
的雅可比矩阵。
三、课程设计总结或结论
两周的潮流上机计算已经结束了,虽然时间很短,可是我却学到了很多。潮流上机计算除了需要一定
的电力系统稳态知识以外,还要有良好的 C 语言基础。潮流上机的过程让我们巩固了潮流计算过程和方法,
以及稳态的基础知识。此外,从潮流数据的读入和写出,节点导纳矩阵的形成,功率不平衡量的计算,到
形成雅克比矩阵和功率损耗的计算,我不断地进行编程和学习,在两周的潮流上机过程中,我完成了程序
的编写,掌握了计算机潮流计算的基本方法与步骤,了解了计算机潮流计算的优点与重要性。
潮流计算最关键的是进行 C 语言的编程,没有良好的 C 语言基础很难快速地编出潮流计算程序,编写
时需要注意循环和嵌套的使用,我在编写的过程中由于循环没有用好以及粗心等原因,导致多次编出来的
程序出现错误,这在潮流计算中都是不应该出现的。
四、参考文献
1. 《电力系统稳态分析》,陈珩,中国电力出版社,2007 年,第三版;
2
2. 《C 语言程序设计》,郑玲,中国电力出版社,2009 年,第一版;
附录(设计流程图、程序、表格、数据等)
课程
课程设计报告
1、设计流程图
启动
输入原始数据
形成节点导纳矩阵
设非平衡节点电压初值ei
(0) ,fi
(0)
令迭代次数 k=0
对 PQ 节点计算
(
)
k
.
P
i
k
)
Q
(
i
对 PV 节点计算
(k
)
iP
令节点号 i=1
雅可比矩阵是否
已形成,i>n?
否
是
计算雅可比矩阵各元素 Hij(k)、Nij(k)、
Jij(k)、Lij(k)
增加节点号 i=i+1
解修正方程,由
)
(
k
.
P
i
k
)
Q
(
i
及雅可比矩阵用牛顿
-拉夫逊法求各节点的Δei,Δfi
求出 max(|dei|,|dfi|)
判断迭代是否收敛
|dei|,|dfi|<ε
计算平衡节点的功率及线路功率
3
增 加
迭 代
次 数
k=k+
1
计算节点的新电压
ei(k+1)=ei(k)+δei(k)
fi(k+1)=fi(k)+δfi(k)
课程
课程设计报告
停止
2、程序
数据输入模块
struct Line
{
int Num,NumI,NumJ;
float R,X,B,K;
};
struct Bus
{
int Num ;
float Volt,Phase,GenP,GenQ,LoadP,LoadQ;
int Type;
};
struct Shunt
{
int Num,NumI;
float G,B;
};
#include"stdio.h"
#include"string.h"
#include"math.h"
#include"stdlib.h"
#define NBUS 4
#define NLINE 4
/* Global variables */
int nL,nSH,nB,nVA;
float X[NBUS];
int L;
void main()
{
FILE *fp;
int i,j,k,l,h,c;
int i1,i2,i3;
float d1,d2,d3,d4,d5,d6,r,x,g,b,e;
4
课程
课程设计报告
struct Line sL[NLINE];
struct Bus sB[NBUS];
struct Shunt sSH[NBUS];
float YG[NBUS][NBUS],YB[NBUS][NBUS];
i1=i2=i3=0;
d1=d2=d3=d4=d5=d6=0.0;
e=0.00001;
for(i=0;i
课程
课程设计报告
};
for(l=0; l0.000001)
YG[i][i]=YG[i][i]+g/sL[l].B/sL[l].B;
YG[j][j]=YG[j][j]+g;
YB[i][i]=YB[i][i]+b/sL[l].B/sL[l].B;
YB[j][j]=YB[j][j]+b;
YG[i][j]=YG[i][j]-g/sL[l].B;
YG[j][i]=YG[j][i]-g/sL[l].B;
YB[i][j]=YB[i][j]-b/sL[l].B;
YB[j][i]=YB[j][i]-b/sL[l].B;
{
}
}
}
/* Check the Y matrix */
if((fp=fopen("GGBB.txt","w"))==NULL){
printf("Can not open the file named 'GGBB.txt' \n");exit(0);}
fprintf(fp,"---Y Matrix---\n");
for(i=1;i0.000001)
fprintf(fp,"Y(%3d,%-3d)=(%10.5f,%10.5f)\n",i,j,YG[i][j],YB[i][j]);
if(fp!=NULL) fclose(fp);
6
课程
课程设计报告
/* 设定电压初值*/
float V[NBUS][NBUS]={0};
for(i=1;i