华北电力大学潮流上机课程设计报告.doc

上传人:laozhun 文档编号:4190864 上传时间:2023-04-09 格式:DOC 页数:20 大小:236KB
返回 下载 相关 举报
华北电力大学潮流上机课程设计报告.doc_第1页
第1页 / 共20页
华北电力大学潮流上机课程设计报告.doc_第2页
第2页 / 共20页
华北电力大学潮流上机课程设计报告.doc_第3页
第3页 / 共20页
华北电力大学潮流上机课程设计报告.doc_第4页
第4页 / 共20页
华北电力大学潮流上机课程设计报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《华北电力大学潮流上机课程设计报告.doc》由会员分享,可在线阅读,更多相关《华北电力大学潮流上机课程设计报告.doc(20页珍藏版)》请在三一办公上搜索。

1、 课程设计报告( 2011- 2012年度第一学期)名 称:电力系统潮流上机 院 系:电气与电子工程学院 班 级: 电管0902 学 号: 1091140202 学生姓名: 指导教师: 麻秀范 设计周数: 两周 成 绩: 日期: 2011年1月6日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1、手算在此我们同样采取计算机计算这种方便快捷的方法。具体的方法及结果见附录。2、计算机计算通过计算机编程,我们可以很方便的求解出相关量,其具体计算方法及计算结果见附录。3、思考题答案见附录。三、课程设计总结或结论潮流计算是研究电力

2、系统稳态运行的一种基本运算方法,通过对于潮流的计算,实现对潮流的控制,维护电力系统稳定,防止出现超过约束条件的情况,从而使电力系统免遭崩溃的危险。最初求解电力系统潮流时大多是用手算,这种计算方法不但耗费时间长,精度差,而且对于大容量的电力系统无法做到很好的控制。随着电力系统结构日趋复杂,计算量也越来越大,仅靠手算难以求解一些复杂网络的潮流。计算机作为一种处理数据的工具,其计算速度快,准确率高,存储量大,因此它广泛的应用于大规模复杂化的电力系统网络中。为了能使计算机能进行潮流计算,就必须编制相应的程序,使其能按照人们在程序中设定的计算流程一步一步的执行,直到计算结果达到要求的精度,得到最终想要的

3、结果。C语言是一种简单实用的语言,利用它进行程序设计可以大大提高电力系统潮流控制的自动化程度。本次的潮流上机,就是要求我们利用C语言编程,进行计算机潮流计算。这既是对我们电力系统潮流计算知识的考验,也是对我们C语言编程能力的考验。是一次各种知识的交汇综合的运用。通过这次潮流上机,我对电力系统潮流计算有了更深刻的认识,同时,我的C语言编程能力也得到了提高。我明白了学习不能仅限于课本,还要做到“学以致用”的道理。在这次潮流设计中,我遇到了由于多问题,其中既包括由于对潮流知识掌握不牢而导致的问题,也包括由于C语言编程能力有限而导致的问题。幸而在麻老师、学姐和同学们的帮助下,这些问题都得到一一解决。在

4、这里,我要衷心的感谢老师们的辛苦付出!参考文献1. 电力系统计算:电子数字计算机的应用,西安交通大学等合编。北京:水利电力出版社;2. 现代电力系统分析,王锡凡主编,科学出版社;3. 电力系统稳态分析,陈珩,中国电力出版社,2007年,第三版;附录(包括:1.手算过程及结果;2.计算机计算流程图;3、表格、数据;4、思考题答案;5、程序)1、结果题1:题2:2、流程图如下:3、原始数据及表格3.1各节点原始数据:节点编号ID各节点电压幅值U(标幺值)各节点电压相角Phase外界提供的有功功率GP(标幺值)外界提供的无功功率GQ(标幺值)负荷有功功率LP(标幺值)负荷无功功率LQ(标幺值)节点类

5、型Type11.0400.0000.0000.0000.0000.000321.0250.0001.6300.0000.0000.000231.0250.0000.8500.0000.0000.000241.0000.0000.0000.0000.0000.000151.0000.0000.0000.0001.2500.5001 61.0000.0000.0000.0000.9000.300171.0000.0000.0000.0000.0000.000181.0000.0000.0000.0001.0000.350191.0000.0000.0000.0000.0000.0001注:上表中,

6、1为PQ节点,2为PV节点,3为平衡节点。3.2各线路原始数据节点编号ID首端节点末端节点支路串联电阻R支路串联电抗X支路电纳B变比K1140.0000.0580.0001.0002270.0000.0630.0001.0003390.0000.0590.0001.0004780.0190.0720.0750.0005890.0120.1010.1050.0006570.0320.1610.1530.0007690.0390.1700.1790.0008450.0100.0850.0880.0009460.0170.0920.0790.000注:上表中,变压器变比为0表示该线路上没有变压器。4

7、、思考题答案:3.1潮流计算的方法有哪些?各有何特点?答:潮流计算目前主要的计算方法有:高斯-赛德尔迭代法、牛顿拉夫逊法和P-Q分解法。它们各自的特点如下:1、高斯-赛德尔法分为以节点导纳矩阵为基础的迭代法和以节点阻抗矩阵为基础的迭代法。前者原理较为简单,占用的计算机内存也较少,但收敛性较差,随着计算量的增加,迭代次数不断上升,往往出现迭代不收敛的情况;而节点阻抗矩阵改善了电力系统潮流计算的收敛性问题,在当时得到了广泛的应用,但是它的缺点是占用计算机内存比较大,每次迭代的计算量也很大。当系统逐渐增大时这个问题会变得更加突出。2、牛顿拉夫逊法它是数学上典型的收敛性求法,具有较好的收敛性,只要能保

8、证方程式系数矩阵的稀疏性,就能大大提高这种方法的计算效率,牛顿拉夫逊法在占用内存和计算次数与速度上都优于高斯赛德尔法,现在仍在广泛应用。3、P-Q分解法这种方法派生于以极坐标表示的牛顿拉夫逊法。与牛顿拉夫逊法相比,P-Q分解法的修正方程式的系数矩阵B和B分别以(n-1)和(m-1)的方阵,代替了(n+m-2)阶的系数矩阵;并且B和B在迭代过程中保持不变,并且自身对称,提高了计算速度,降低了对存储容量的要求,在计算速度上得到了显著的提高,得到了广泛的应用。3.2如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)答:第

9、一步首先要了解北京城市电网的所有节点类型,统计不同节点类型的数据。在处理PQ类节点时要得到注入有功功率和注入无功功率的数据;PV类节点要得到节点电压的大小、注入的有功功率以及节点能提供的最大和最小无功功率;对于平衡节点要得到节点电压大小及相位,以及节点所能提供的最大和最小无功、有功功率。第二步应得到支路的电阻电抗大小、变压器的变比以及线路最大的传输容量。第三步应考虑分析PQ节点的电压大小是否满足约束条件;分析PV节点的电压大小以及无功功率是否满足约束条件,注意PV节点向PQ节点转化的问题;分析平衡节点所提供的有功无功功率是否满足约束条件,在规定的范围内;分析线路上的传输功率是否符合要求;分析全

10、网的网络损耗是否在标准范围内。3.3设计中遇到的问题和解决的办法潮流上机编程是一次对我们电力系统分析知识掌握程度和C语言编程能力的综合考验。在这次潮流上机的过程中,我遇到了许多问题。幸而在老师和学姐的帮助下,许多问题才得以迎刃而解。潮流设计中遇到的主要问题总结如下:1、对电力系统分析知识掌握不够熟练,导致许多时候编程出现了许多问题。对于因对电力系统知识掌握不熟而导致的错误,只有仔细看书,把概念理解熟透,再西斯对照课本,确保编程无误。通过解决编程中出现的问题,加深我对电力系统知识的理解。亡羊补牢,为时未晚。2、C语言编程能力还有待提高。C语言系大一时所学,时至今日,能记得的知识所剩无几。许多编程

11、方法只能根据老师提供的模板,依样画瓢,缺乏深刻的理解。在C语言编程的过程中,最困难的部分不是编程,而是调试。调试的过程是对我们逻辑思维能力的极大的考验,我们必须详尽的考虑到种种逻辑结构问题,才能确保函数的逻辑意义明确,表达清晰。通过对程序的调试,提高了我的C语言编程能力,而且让我对C语言的各种调试工具有了更进一步的理解,可谓受益匪浅。5、9节点程序/ flow.cpp : Defines the entry point for the console application./#include StdAfx.h#include #include #include NEquation.h#inc

12、lude math.h#include config.hvoid test()NEquation ob1;ob1.SetSize(2);ob1.Data(0,0)=1;ob1.Data(0,1)=2;ob1.Data(1,0)=2;ob1.Data(1,1)=1;ob1.Value(0)=5;ob1.Value(1)=4;ob1.Run();printf(x1=%fn,ob1.Value(0);printf(x2=%fn,ob1.Value(1);void GetData()/Read the dataFILE *fp;int i;if(fp=fopen(C:Documents and Set

13、tingsAdministrator桌面1091140202 孙小磊9节点程序模板datadata.txt,r)=NULL) printf(Can not open the file named data.txt n);return;for(i=0;i=Bus_Num-1;i+)fscanf(fp,%d,%f,%f,%f,%f,%f,%f,%d,&gBusi.No,&gBusi.Voltage,&gBusi.Phase,&gBusi.GenP,&gBusi.GenQ,&gBusi.LoadP,&gBusi.LoadQ,&gBusi.Type);for(i=0;i=Line_Num-1;i+)f

14、scanf(fp,%d,%d,%d,%f,%f,%f,%f,&gLinei.No,&gLinei.No_I,&gLinei.No_J,&gLinei.R,&gLinei.X,&gLinei.B,&gLinei.k);fclose(fp);void GetYMatrix()int i,j;FILE *fp;/ calculate the Y matrixint bus1,bus2;float r,x,d,g,b,g1,b1,g2,b2,g3,b3;for(i=0;i=Bus_Num-1;i+)for(j=0;j=Bus_Num-1;j+)gY_Gij=0;gY_Bij=0;for(i=0; i=

15、Line_Num-1; i+)if(gLinei.k=0)bus1=gLinei.No_I-1;bus2=gLinei.No_J-1;r=gLinei.R;x=gLinei.X;d=r*r+x*x;g=r/d;b=-x/d;gY_Gbus1bus1=gY_Gbus1bus1+g;gY_Gbus2bus2=gY_Gbus2bus2+g;gY_Gbus1bus2=gY_Gbus1bus2-g;gY_Gbus2bus1=gY_Gbus2bus1-g;gY_Bbus1bus1=gY_Bbus1bus1+b+gLinei.B;gY_Bbus2bus2=gY_Bbus2bus2+b+gLinei.B;gY

16、_Bbus1bus2=gY_Bbus1bus2-b;gY_Bbus2bus1=gY_Bbus2bus1-b;elsebus1=gLinei.No_I-1;bus2=gLinei.No_J-1;r=gLinei.R;x=gLinei.X;d=r*r+x*x;g=r/d;b=-x/d;g1=g/gLinei.k;b1=b/gLinei.k;g2=g*(1-gLinei.k)/(gLinei.k*gLinei.k);b2=b*(1-gLinei.k)/(gLinei.k*gLinei.k);g3=g*(gLinei.k-1)/gLinei.k;b3=b*(gLinei.k-1)/gLinei.k;g

17、Y_Gbus1bus1=gY_Gbus1bus1+g1+g2;gY_Gbus2bus2=gY_Gbus2bus2+g1+g3;gY_Gbus1bus2=gY_Gbus1bus2-g1;gY_Gbus2bus1=gY_Gbus2bus1-g1;gY_Bbus1bus1=gY_Bbus1bus1+b1+b2;gY_Bbus2bus2=gY_Bbus2bus2+b1+b3;gY_Bbus1bus2=gY_Bbus1bus2-b1;gY_Bbus2bus1=gY_Bbus2bus1-b1;/ output the Y matrix if(fp=fopen(C:Documents and Setting

18、sAdministrator桌面1091140202 孙小磊9节点程序模板dataymatrix.txt,w)=NULL)printf(Can not open the file named ymatrix.txt n);return ;fprintf(fp,-Y Matrix-n);for(i=0;i=Bus_Num-1;i+)for(j=0;j=Bus_Num-1;j+)fprintf(fp,Y(%d,%d)=(%10.5f,%10.5f)n,i+1,j+1,gY_Gij,gY_Bij);fclose(fp);void SetInitial()int i;for(i=0;i=Bus_Num

19、-1;i+)gfi=gBusi.Voltage*sin(gBusi.Phase);gei=gBusi.Voltage*cos(gBusi.Phase);void GetUnbalance()int i,j; float Sum_P=0,Sum_Q=0;FILE *fp;for(i=1;i=Bus_Num-1;i+)Sum_P=0,Sum_Q=0;/循环前清空SumP和SumQfor(j=0;j=Bus_Num-1;j+)Sum_P+=(gei*(gY_Gij*gej-gY_Bij*gfj)+gfi*(gY_Gij*gfj+gY_Bij*gej); /求和Sum_Q+=(gfi*(gY_Gij*

20、gej-gY_Bij*gfj)-gei*(gY_Gij*gfj+gY_Bij*gej); /求和if(gBusi.Type=1)/PQ节点 gDelta_Pi-1=(gBusi.GenP-gBusi.LoadP)-Sum_P;gDelta_Qi-1=(gBusi.GenQ-gBusi.LoadQ)-Sum_Q;if(gBusi.Type=2)/PV节点 gDelta_Pi-1=(gBusi.GenP-gBusi.LoadP)-Sum_P;gDelta_Qi-1=gBusi.Voltage*gBusi.Voltage-(gei*gei+gfi*gfi); /合并gDelta_P,gDelta_Q

21、至gDelta_PQfor(i=0;i=Bus_Num-2;i+) gDelta_PQ2*i=gDelta_Pi;gDelta_PQ2*i+1=gDelta_Qi;if(fp=fopen(C:Documents and SettingsAdministrator桌面1091140202 孙小磊9节点程序模板dataunbalance.txt,w)=NULL)printf(Can not open the file named unbalance.txt n);return ;fprintf(fp,-Unbalance-n);for(i=0;i=2*Bus_Num-3;i+)fprintf(fp

22、,Unbalance%d=%10.5fn,i+1,gDelta_PQi);fclose(fp);void GetJaccobi()int i,j;float HBus_Num-1Bus_Num-1,NBus_Num-1Bus_Num-1;float JBus_Num-1Bus_Num-1,LBus_Num-1Bus_Num-1;float ABus_Num-1,BBus_Num-1;FILE *fp;/赋初值for(i=0;i=Bus_Num-2;i+)for(j=0;j=Bus_Num-2;j+)Hij=0;Nij=0;Lij=0;Jij=0;Ai=0;Bi=0;/计算注入电流for(i=0

23、;i=Bus_Num-2;i+) for(j=0;j=Bus_Num-1;j+)Ai+=gY_Gi+1j*gej-gY_Bi+1j*gfj;Bi+=gY_Gi+1j*gfj+gY_Bi+1j*gej;for(i=0;i=Bus_Num-2;i+)for(j=0;j=Bus_Num-2;j+)if(i!=j)/i!=j时if(gBusi+1.Type=1)/若是PQ节点Hij=-gY_Bi+1j+1*gei+1+gY_Gi+1j+1*gfi+1;Nij=gY_Bi+1j+1*gfi+1+gY_Gi+1j+1*gei+1;Jij=-Nij;Lij=Hij;if(gBusi+1.Type=2)/若是

24、PV节点Hij=-gY_Bi+1j+1*gei+1+gY_Gi+1j+1*gfi+1;Nij=gY_Bi+1j+1*gfi+1+gY_Gi+1j+1*gei+1;Jij=0;Lij=0;if(i=j)/i=j时if(gBusi+1.Type=1)/若是PQ节点Hij=-gY_Bi+1j+1*gei+1+gY_Gi+1j+1*gfi+1+Bi;Nij=gY_Gi+1j+1*gei+1+gY_Bi+1j+1*gfi+1+Ai;Jij=-gY_Gi+1j+1*gei+1-gY_Bi+1j+1*gfi+1+Ai;Lij=-gY_Bi+1j+1*gei+1+gY_Gi+1j+1*gfi+1-Bi;if(

25、gBusi+1.Type=2)/若是PV节点Hij=-gY_Bi+1j+1*gei+1+gY_Gi+1j+1*gfi+1+Bi;Nij=gY_Gi+1j+1*gei+1+gY_Bi+1j+1*gfi+1+Ai;Jij=2*gfi+1;Lij=2*gei+1;/合并for(i=0;i=Bus_Num-2;i+) for(j=0;j=Bus_Num-2;j+)gJaccobi2*i2*j=Hij;gJaccobi2*i2*j+1=Nij;gJaccobi2*i+12*j=Jij;gJaccobi2*i+12*j+1=Lij;/将数据写入文件if(fp=fopen(C:Documents and S

26、ettingsAdministrator桌面1091140202 孙小磊9节点程序模板datajaccobi.txt,w)=NULL)printf(Can not open the file named jaccobi.txt n);return ;fprintf(fp,-Jaccobi Matrix-n);for(i=0;i=2*Bus_Num-3;i+)for(j=0;j=2*Bus_Num-3;j+)fprintf(fp,jaccobi(%d,%d)=%10.5fn,i+1,j+1,gJaccobiij);fclose(fp);void GetRevised()int i,j;FILE

27、*fp;NEquation ob1;ob1.SetSize(2*(Bus_Num-1);for(i=0;i=2*Bus_Num-3;i+)for(j=0;j=2*Bus_Num-3;j+)ob1.Data(i,j)=gJaccobiij;ob1.Value(i)=gDelta_PQi;ob1.Run();for(i=0;i=2*Bus_Num-3;i+)gDelta_fei=ob1.Value(i);/写入数据if(fp=fopen(C:Documents and SettingsAdministrator桌面1091140202 孙小磊9节点程序模板datarevised.txt,w)=NU

28、LL)printf(Can not open the file named revised.txt n);return ;fprintf(fp,-Revised-n);for(i=0;i=2*Bus_Num-3;i+)fprintf(fp,revised%d=%10.5fn,i+1,gDelta_fei);fclose(fp);void GetNewValue()int i,j=0;FILE *fp;for(i=0;i=Bus_Num-1;i+)if(gBusi.Type!=3)gDelta_fj=gDelta_fe2*j;gfi+=gDelta_fj;gDelta_ej=gDelta_fe2

29、*j+1;gei+=gDelta_ej;j+;/写入数据if(fp=fopen(C:Documents and SettingsAdministrator桌面1091140202 孙小磊9节点程序模板datanewvalue.txt,w)=NULL)printf(Can not open the file named newvalue.txt n);return ;fprintf(fp,-New Value-n);for(i=0;i=Bus_Num-2;i+) fprintf(fp,f(%d)=%10.5f,e(%d)=%10.5fn,i+1,gfi+1,i+1,gei+1);fclose(f

30、p);void GetS()/各个节点的注入功率情况int i,j;float Ps,Qs;/平衡节点的有功无功float Qv=0;/PV节点的无功float Sum1=0,Sum2=0;printf(nn*各个节点的注入功率情况*nn);for(i=0;i=Bus_Num-1;i+)if(gBusi.Type=3)for(j=0;j=Bus_Num-1;j+)Sum1+=gY_Gij*gej-gY_Bij*gfj;Sum2+=gY_Gij*gfj+gY_Bij*gej;Ps=gei*Sum1+gfi*Sum2;Qs=gfi*Sum1-gei*Sum2;printf(节点%d是平衡节点,其注

31、入有功为%10.5f,注入无功为%10.5fn,i+1,Ps,Qs);if(gBusi.Type=2)for(j=0;j=Bus_Num-1;j+)Qv+=gfi*(gY_Gij*gej-gY_Bij*gfj)-gei*(gY_Gij*gfj+gY_Bij*gej);printf(节点%d是PV节点,其注入有功为%10.5f,注入无功为%10.5fn,i+1, gBusi.GenQ-gBusi.LoadQ,Qv );if(gBusi.Type=1)printf(节点%d是PQ节点,其注入有功为%10.5f,注入无功为%10.5fn,i+1, gBusi.GenP-gBusi.LoadP,gBu

32、si.GenQ-gBusi.LoadQ );void Get_Loss_of_Net()/全网络的网损int i,j;int m,n;/线路首末端编号赋值给m,nfloat Delta_PLine_Num,Delta_QLine_Num;/网损float Sum_Delta_P=0,Sum_Delta_Q=0;/总网损float G0Line_Num,B0Line_Num,GLine_NumLine_Num,BLine_NumLine_Num;float k,r,x,d;printf(nn*全网络的网损*nn);/赋值for(i=0;i=Line_Num-1;i+)Delta_Pi=0;Del

33、ta_Qi=0;for(i=0;i=Line_Num-1;i+)m=gLinei.No_I-1;n=gLinei.No_J-1;if(gLinei.k=0)G0m=0;G0n=0;B0m=gLinei.B;B0n=gLinei.B;Gmn=-gY_Gmn;Bmn=-gY_Bmn;Delta_Pi=(gem*gem+gfm*gfm)*G0m+(gen*gen+gfn*gfn)*G0n+(gem-gen)*(gem-gen)+(gfm-gfn)*(gfm-gfn);Delta_Qi=-(gem*gem+gfm*gfm)*B0m+(gen*gen+gfn*gfn)*B0n+(gem-gen)*(ge

34、m-gen)+(gfm-gfn)*(gfm-gfn)*Bmn);if(gLinei.k!=0)k=gLinei.k;r=gLinei.R;x=gLinei.X;d=r*r+x*x;G0m=(1-k)/(k*k)*r)/d;G0n=(k-1)/(k)*r)/d;B0m=(1-k)/(k*k)*(-x)/d;B0n=(k-1)/(k)*(-x)/d;Gmn=(1/k)*r/d;Bmn=(1/k)*(-x)/d;Delta_Pi=(gem*gem+gfm*gfm)*G0m+(gen*gen+gfn*gfn)*G0n+(gem-gen)*(gem-gen)+(gfm-gfn)*(gfm-gfn);De

35、lta_Qi=-(gem*gem+gfm*gfm)*B0m+(gen*gen+gfn*gfn)*B0n+(gem-gen)*(gem-gen)+(gfm-gfn)*(gfm-gfn)*Bmn);for(i=0;i=Line_Num-1;i+)Sum_Delta_P+=Delta_Pi;Sum_Delta_Q+=Delta_Qi;for(i=0;i=Line_Num-1;i+)printf(线路%d的消耗功率,有功为:%10.5f,无功为:%10.5fn,gLinei.No,Delta_Pi,Delta_Qi);printf(n全网总网损,有功为:%10.5f,无功为:%10.5fnn,Sum_Delta_P,Sum_Delta_Q);int main(int argc, char* argv)int i,Count_Num;float maxValue;test();GetData();GetYMatrix();SetInitial();for(Count_Num=0;Count_Num=2;Count_Num+)GetUnbalan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号