潮流计算上机报告 华电

更新时间:2024-05-10 08:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《电力系统潮流上机》课程设计报告

院系:电气与电子工程学院 班级: 学号: 学生姓名: 指导教师:刘宝柱 设计周数:两周 成绩:

日期:2012年1月5日

课程课程设计报告

一、课程设计的目的与要求

培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识

二、设计正文(详细内容见附录)

1. 手算: 要求应用牛顿-拉夫逊法或P-Q分解法手算求解,要求精度为0.001MW。

~??1.0?0?US节点1为平衡节点,电压1,节点2为PQ节点,负荷功率2?0.8?j0.6,节点3是

PV节点,路

P3?0.4,U3?1.1,两条支路分别为Z13?0.01?j0.04,Z12?0.05?j0.2,对地支

y30?j0.33。

2. 计算机计算

1.导纳阵

Y( 1,1 )=( 1.01534, -8.19201) Y( 1,2 )=( -0.56148, 2.30208) Y( 1,3 )=( 0.00000, 3.66667) Y( 1,4 )=( -0.45386, 1.89107) Y( 2,1 )=( -0.56148, 2.30208) Y( 2,2 )=( 1.04225, -4.67651) Y( 2,4 )=( -0.48077, 2.40385) Y( 3,1 )=( 0.00000, 3.66667) Y( 3,3 )=( 0.00000, -3.33333) Y( 4,1 )=( -0.45386, 1.89107) Y( 4,2 )=( -0.48077, 2.40385) Y( 4,4 )=( 0.93463, -4.26159)

2.设定电压初值

(0)e1?jf1(0)?1?j0;0)(0)e(?1?j0;2?jf20)(0)e(?1.1?j0 3?jf33.计算功率和电压偏移;

?P(0)1?P1s?P(0)1?P1s?[e(0)1(G?j?14(0)1jje?Bf)?f(0)1j1(0)1j1(0)1(Gjfj?j1?14(0)(0)?B1je1)]??0.27731?Q(0)1?Q1s?Q(0)1?Q1s?[f(0)1j?1?(Ge4(0)1jj?Bf)?e(0)1j?1(0)(0)(Gf?Be]??0.05097 ?1jj1j1)4同理可算出

(0)(0)?P2(0)?P2s?P2(0)??0.52596,?Q2?Q2s?Q2?0.0196 (0)(0)?U32s?U3?0.0 ?P3(0)?P3s?P3(0)?0.5,?U3224.根据求的第一次迭代时雅可比矩阵各元素的公式计算雅可比矩阵各个元素的具体值:

1

课程课程设计报告

?8.32104???1.03803??2.30208??0.56148??4.03334??0?0.992658.06298?0.56148?2.3020800?2.302080.561484.82612?1.0662900?0.56148?2.302081.018214.5269100?3.666670003.666670???3.66667??0?

0??0?2.20000??05.求高斯计算后的修正量:

??P(0)???f1(0)??-0.007919??1??(0)?(0)????Q1???e1?-0.006511???(0)???f(0)??P?1-0.108546??2??J(0)?2??? (0)(0)????-0.023566??e2??Q2??????f(0)?(0)0.127652????P3??3???(0)2?0)??0.000000????e(?3??U???3?6.计算各节点电压的一次近似值:

(1)(0)(0)e1?e1??e1?0.993491)0)0)e(?e(??e(?0.976432221)0)0)e(?e(??e(?1.10000333f(1)1?f(0)1??f(0)1??0.00792

f2(1)?f2(0)??f2(0)??0.10855f3(1)?f3(0)??f3(0)?0.12765返回第三步重新迭代,并校验收敛与否,令??10?4。经过四次迭代后,收敛条件满足,停止迭代,求出的电压终值:

U1?0.98459?j0.00764U2?0.95859?j0.10910 U3?1.09229?j0.13002U4?1.05000?j0.000007.计算出平衡节点4的注入功率。

~4?0.36787?j0.26513 S8.各节点间功率

~12??0.24437?j0.00094S~14?0.04437?j0.11804S~21?0.23821?j0.02432S~24?0.31179?j0.12694S~41??0.04634?j0.12624S~42??0.32153?j0.17564S

2

课程课程设计报告

~?0.01787?9.网损为:Sj0.04487

10.网损效率为:2.05896%

3. 思考题

3.1潮流计算的方法有哪些?各有何特点? 答:潮流计算方法主要包括:高斯-赛德尔迭代法、牛顿-拉夫逊迭代法、P-Q分解法等算法。 各方法特点如下所示: 方法 初值要求 迭代次数 收敛速度 精度 应用 高斯-赛德尔法 不高 多 慢 一样 早期应用多,现在较少 牛顿-拉夫逊迭代法 高 少 较快 一样 广泛应用 P-Q分解法 高 多 最快 一样 应用较多

3.2如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪

些工作?(收集哪些数据,如何整理,计算结果如何分析) 答:1.所需要收集的数据:

A.电网中所有节点的数据:

a.各节点的类型,包括平衡节点、PV 节点、PQ 节点

b. 对于平衡节点要了解节点的电压大小相位、及节点所能提供的最大最小有功无功功率

c. PV节点要知道节点电压大小注入有功功率及节点所能提供的最大和最小无功功.率

d. PQ节点要知道节点的注入有功和无功功率 B.电网中所有支路的数据:

a.各支路类型,即是否含有变压器 b.各支路的电阻、电感、电纳 c.各变压器的变比。

2.数据整理:将上述数据资料进行分类整理,并为每个节点及支路编上编号。将整

理的结果写成本 实验中所要求的格式(原始数据的 txt 文档) ,再用本实验所编制的程序进行求解,得到各节 点电压、相位,各线路传输功率、损耗,平衡节点注入功率等数值。

3.计算结果分析:可以大致了解整个电网的运行状况并按照电力系统知识依次进行所

需的调整。如调节各节点电压的大小以防止超出规定限度,调整各线路的有功无功分布状况分析整个系统的网损是否达到标准等。

3.3设计中遇到的问题和解决的办法。

1.在设计最开始遇到的问题就是由于以前C语言所学习的知识遗忘较多,对于程序的使用

不太熟练,通过老师讲解、看书、询问同学逐渐扫除了这个障碍。

2.设计的时候对于电力系统整体的知识脉络不是很清晰,编写程序时所定义的变量容易弄

混淆,编写的程序产生了较多的错误,经过仔细学习和对每一排程序的排查,找出了产生错误的地方。同时也对潮流计算的过程有了更清楚的认识。

3

课程课程设计报告

三、课程设计总结或结论

该门课程的主要目的是培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识。 潮流计算是电力系统非常重要的分析计算,是电力系统最基本的计算,主要用以研究系统规划和运行中提出的各种问题。现代电力系统潮流就算过程比较复杂,手算有很大的困难,而计算机作为一种处理数据的工具,具有计算速度快,准确率高的优点,因此现在电力系统的潮流大多也都采用计算机的算法求解。对于写程序而言,C 语言是一种简单但很实用的语言,利用 C 语言编程实现潮流计算不仅简单易行,而且还能加深对电力系统潮流这一物理感念的理解。

通过这次潮流对c++的面向对象编程及其过程有了更深入的了解。对于潮流计算,我更深刻的掌握了牛拉法解潮流方程的方法以及对数学高次多元方程线性化在迭代求解的方法有了更深入的认识。通过这次课程设计,自己动手编写潮流计算的程序,仔细分析了潮流计算各个步骤,理论与实践相结合,对潮流计算的思想和方法以及过程有了更深入的理解。在这两周的学习里,我不仅对C语言的学习有了更深层次的理解,还对自己在《电力系统分析》这门课程里所学到的知识进行了查缺补漏,对电力系统的运行分析等有了更加深入的了解,受益匪浅。

四、参考文献

1. 《电力系统计算:电子数字计算机的应用》,西安交通大学等合编。北京:水利电力出版社; 2. 《现代电力系统分析》,王锡凡主编,科学出版社; 3. 《电力系统稳态分析》,陈珩,中国电力出版社,1995年,第二版;

4

课程课程设计报告

附录(设计流程图、程序、表格、数据等) 1.设计流程图:

求出启动 输入原始数据 形成节点导纳矩阵 设非平衡节点电压初值ei(0)fi(0); 令迭代次数k=0 对PQ节点计算?Pi(k).?Qi(k)对PV节点计算?Pi(k),?Ui2(k) 令节点号i=1 雅客比矩阵是否形成,i>n? 计算雅客比矩阵各元素(k)(k)(k)(k)(k) Hij,Nij,Jij,L(ijk),Rij,Sij增加迭代次数k=k+1 增加节点号i=i+1 解修正方程,由?Pi(k).?Qi(k)?Ui2(k)及雅客比矩阵用高斯法求各节点的电压增量?e(k)i计算节点的新电压 ,?fi(k) ei(k?1)?ei(k)??ei(k) fi(k?1)?fi(k)??fi(k)?e(k)max,?f(k)max 迭代是否收敛 ?e(k),?f(k)maxmax??计算平衡节点的功率及线路功率 停止 5

课程课程设计报告

2.程序设计: #include\#include\#include\#include\

#define NBUS 5 #define NLINE 7

/* Global variables */ intnL,nSH,nBUS,nVA; double d,t; int L;

struct Line {

intNum,NumI,NumJ; double R; double X; double B; double K; };

struct Bus {

intNum ;

doubleVolt,Phase,GenP,GenQ,LoadP,LoadQ; int Type; };

struct Shunt {

intNum,NumI; double G,B; };

void main() {

FILE *fp; FILE *fpout; inti,j,k,l,h,c;

int i1,i2,i3,kp,kq,LH[100];

double d,d1,d2,d3,d4,d5,d6,t,r,x,g,b,tt,LL,e,ps,qs,shsh,sum,w;

6

课程课程设计报告

struct Line sL[NLINE]; struct Bus sBus[NBUS]; struct Shunt sSH[NBUS];

double YG[NBUS][NBUS],YB[NBUS][NBUS]; double

V[100][2],U[100],dPQ[100],PQ[100][2],JJ[100][100]={0},H[100][100],J[100][100],N[100][100],L[100][100],sP[NBUS][NBUS]={0},sQ[NBUS][NBUS]={0},dsp,dsq,sumgen,dp;

i1=i2=i3=0;

d1=d2=d3=d4=d5=d6=ps=qs=0.0;

e=0.00001;

for(i=0;i

if((fp=fopen(\

{ printf(\exit(0); }

fscanf(fp,\

for(i=0;i

sBus[i].Num=sBus[i].Type=0;sBus[i].Volt=1.0;

sBus[i].Phase=sBus[i].GenP=sBus[i].GenQ=sBus[i].LoadP=sBus[i].LoadQ=0.0;

fscanf(fp,\

sBus[i].Num=i1;sBus[i].Volt=d1;sBus[i].Phase=d2;sBus[i].GenP=d3;sBus[i].GenQ=d4;sBus[i].LoadP=d5,sBus[i].LoadQ=d6;sBus[i].Type=i2; };

for(i=0;i

sL[i].Num=sL[i].NumI=sL[i].NumJ=0; sL[i].R=sL[i].X=sL[i].B=0.0;sL[i].K=1.0;

fscanf(fp,\

sL[i].Num=i1;sL[i].NumI=i2;sL[i].NumJ=i3;sL[i].R=d1;sL[i].X=d2;sL[i].B=d3;sL[i].K=d4; }

for(i=0;i

sSH[i].Num=sSH[i].NumI=0;sSH[i].G=sSH[i].B=0.0; fscanf(fp,\

sSH[i].Num=i1;sSH[i].NumI=i2;sSH[i].B=d1; }

if(fp!=NULL) fclose(fp);

/*Make Y Matrix*/

for(i=1;i

7

课程课程设计报告

YG[i][j]=0.0; YB[i][j]=0.0; };

for(l=0; l

i=sL[l].NumI; j=sL[l].NumJ; r=sL[l].R; x=sL[l].X; d1=r*r+x*x; g=r/d1; b=-x/d1;

if(fabs(sL[l].K-1.0)<0.000001)

{/*Normal lines or transformers*/ YG[i][i]=YG[i][i]+g; YG[j][j]=YG[j][j]+g;

YB[i][i]=YB[i][i]+b+sL[l].B; YB[j][j]=YB[j][j]+b+sL[l].B; YG[i][j]=YG[i][j]-g; YG[j][i]=YG[j][i]-g; YB[i][j]=YB[i][j]-b; YB[j][i]=YB[j][i]-b; } else

{/*abnormal transformer ratio*/ if(fabs(sL[l].B)>0.000001) { YG[i][i]=YG[i][i]+g/sL[l].B/sL[l].B; YB[i][i]=YB[i][i]+b/sL[l].B/sL[l].B; YG[j][j]=YG[j][j]+g; 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; } else printf(\节点-,%-2d之间变压器变比为0 \\n\ } }

//Check the Y matrix

8

课程课程设计报告

if((fp=fopen(\

printf(\fprintf(fp,\

for(i=1;i0.000001) fprintf(fp,\if(fp!=NULL) fclose(fp);

/* 设定电压初值 */

for(i=1;i

for(i=1;i

for(i=1;i

/* 输出电压初值

if((fp=fopen(\电压初值.txt\{

printf(\电压初值.txt' \\n\exit(0); }

fprintf(fp,\电压初值---\\n\for(i=1;i

fprintf(fp,\if(fp!=NULL) fclose(fp);*/

for(c=1;;c++)

9

课程课程设计报告

{

/* 计算偏移量 */ for(i=1;i

h=1;

for(i=1;i

/* 输出偏移量

if((fp=fopen(\偏移量 .txt\{

printf(\偏移量.txt' \\n\exit(0); }

fprintf(fp,\偏移量 ---\\n\

10

课程课程设计报告

for(i=1;i

fprintf(fp,\if(fp!=NULL) fclose(fp);*/

/* 计算雅克比矩阵 */ for(i=1;i

if(i==j) { H[i][j]=PQ[i][1]-V[i][1]*V[i][1]*YB[i][j]; J[i][j]=-PQ[i][0]-V[i][1]*V[i][1]*YG[i][j]; N[i][j]=-PQ[i][0]+V[i][1]*V[i][1]*YG[i][j]; L[i][j]=-PQ[i][1]-V[i][1]*V[i][1]*YB[i][j]; } else { H[i][j]=V[i][1]*V[j][1]*(YG[i][j]*sin(V[i][0]-V[j][0])-YB[i][j]*cos(V[i][0]-V[j][0])); J[i][j]=-V[i][1]*V[j][1]*(YG[i][j]*cos(V[i][0]-V[j][0])+YB[i][j]*sin(V[i][0]-V[j][0])); N[i][j]=V[i][1]*V[j][1]*(YG[i][j]*cos(V[i][0]-V[j][0])+YB[i][j]*sin(V[i][0]-V[j][0])); L[i][j]=V[i][1]*V[j][1]*(YG[i][j]*sin(V[i][0]-V[j][0])-YB[i][j]*cos(V[i][0]-V[j][0])); } } } h=1;

for(i=1;i

11

课程课程设计报告

}

} } h++; l=1; for(j=1;j

if(sBus[i-1].Type==1) { for(j=1;j

/* 输出雅克比矩阵

if((fp=fopen(\雅克比矩阵 .txt\{

printf(\雅克比矩阵.txt' \\n\

12

课程课程设计报告

exit(0); } fprintf(fp,\雅克比矩阵 ---\\n\ fprintf(fp,\ \ for(i=1;id) { d=fabs(JJ[k][j]); /*在一行中找到一个最大值赋值d,并用JS[K]记住这个最大值所在的列号*/ LH[k]=j; } } if(fabs(d)<0.000001) /*如果d的数值太小,做为被除数将带来很大的误差 */ { l=0; } else if(LH[k]!=k) { for(i=1;i

13

课程课程设计报告

{ t=JJ[i][k]; JJ[i][k]=JJ[i][LH[k]]; /*进行列交换,让最大值始终在对角元上*/ JJ[i][LH[k]]=t; } } if(l==0) { break; } for(j=k+1;j

if(fabs(JJ[h-1][h-1])>0.00001)

{ /*用追赶法,解方程组,求未知数x*/ U[h-1]=dPQ[h-1]; for(i=h-2;i>=0;i--) { t=0.0; for(j=i+1;j

/*输出高斯结果

if((fp=fopen(\高斯.txt\ { printf(\}

for(i=1;i

14

课程课程设计报告

fprintf(fp,\ fprintf(fp,\}

fclose(fp);*/

/*得到电压值*/ h=1;

for(i=1;i

/* 输出电压值

if((fp=fopen(\电压值.txt\{

printf(\电压值.txt' \\n\exit(0); }

fprintf(fp,\电压初值---\\n\for(i=1;i

fprintf(fp,\if(fp!=NULL) fclose(fp);*/ /*求最大变化值*/ w=0;

for(i=1;iw) { w=U[i]; } }

if(w<0.00001) {

15

课程课程设计报告

break; } }

/* 输出电压终值

if((fp=fopen(\电压终值.txt\{

printf(\电压终值.txt' \\n\exit(0); }

fprintf(fp,\电压终值---\\n\ fprintf(fp,\循环%d次\\n\for(i=1;i

fprintf(fp,\if(fp!=NULL) fclose(fp);*/

ps=0; qs=0;

for(i=1;i

for(i=1;i

for(l=0; l

16

课程课程设计报告

j=sL[l].NumJ; r=sL[l].R; x=sL[l].X; d1=r*r+x*x; g=r/d1; b=-x/d1; if(fabs(sL[l].K-1.0)<0.000001) {/*Normal lines or transformers*/ sP[i][j]=V[i][1]*V[i][1]*g-V[i][1]*V[j][1]*(g*cos(V[i][0]-V[j][0])+b*sin(V[i][0]-V[j][0])); sQ[i][j]=-(V[i][1]*V[i][1]*sL[l].B+V[i][1]*V[i][1]*b+V[i][1]*V[j][1]*(g*sin(V[i][0]-V[j][0])-b*cos(V[i][0]-V[j][0]))); sP[j][i]=V[j][1]*V[j][1]*g-V[i][1]*V[j][1]*(g*cos(V[j][0]-V[i][0])+b*sin(V[j][0]-V[i][0])); sQ[j][i]=-(V[j][1]*V[j][1]*sL[l].B+V[j][1]*V[j][1]*b+V[i][1]*V[j][1]*(g*sin(V[j][0]-V[i][0])-b*cos(V[j][0]-V[i][0]))); } else {/*abnormal transformer ratio*/ sP[i][j]=V[i][1]*V[i][1]*g/sL[l].B/sL[l].B-V[i][1]*V[j][1]*(g*cos(V[i][0]-V[j][0])/sL[l].B+b*sin(V[i][0]-V[j][0])/sL[l].B); sQ[i][j]=-(V[i][1]*V[i][1]*b/sL[l].B/sL[l].B+V[i][1]*V[j][1]*(g*sin(V[i][0]-V[j][0])/sL[l].B-b*cos(V[i][0]-V[j][0])/sL[l].B)); sP[j][i]=V[j][1]*V[j][1]*g-V[i][1]*V[j][1]*(g*cos(V[j][0]-V[i][0])/sL[l].B+b*sin(V[j][0]-V[i][0])/sL[l].B); sQ[j][i]=-(V[i][1]*V[i][1]*b+V[i][1]*V[j][1]*(g*sin(V[j][0]-V[i][0])/sL[l].B-b*cos(V[j][0]-V[i][0])/sL[l].B)); } }

dsp=ps; dsq=qs; sumgen=ps;

for(i=0;i

dp=dsp/sumgen*100;

/* 输出功率情况 */

if((fp=fopen(\功率情况.txt\

17

课程课程设计报告

{

printf(\功率情况.txt' \\n\exit(0); }

fprintf(fp,\功率情况---\\n\

fprintf(fp,\平衡节点功率S=.5f+ j.5f\\n\for(i=1;i0.000001) fprintf(fp,\fprintf(fp,\网损为.5f+j.3f,输电效率为.3f\\n\if(fp!=NULL) fclose(fp);

/* 输出最终结果 */

if((fp=fopen(\最终结果.txt\{

printf(\最终结果.txt' \\n\exit(0); }

fprintf(fp,\最终结果---\\n\fprintf(fp,\

fprintf(fp,\一共循环迭代计算%d次\\n\fprintf(fp,\

fprintf(fp,\电压终值---\\n\ for(i=1;i

fprintf(fp,\ fprintf(fp,\

fprintf(fp,\平衡节点功率S=%8.5f+j%7.5f\\n\fprintf(fp,\

fprintf(fp,\各节点间功率---\\n\ for(i=1;i0.000001) fprintf(fp,\fprintf(fp,\

fprintf(fp,\网损为:%7.5f+j%7.5f。\\n\\n网损率为:百分之%7.5f\\n\if(fp!=NULL) fclose(fp); }

18

本文来源:https://www.bwwdw.com/article/u2rg.html

Top