收藏 分享(赏)

潮流上机课程设计报告.doc

上传人:精品资料 文档编号:8865243 上传时间:2019-07-14 格式:DOC 页数:26 大小:236.68KB
下载 相关 举报
潮流上机课程设计报告.doc_第1页
第1页 / 共26页
潮流上机课程设计报告.doc_第2页
第2页 / 共26页
潮流上机课程设计报告.doc_第3页
第3页 / 共26页
潮流上机课程设计报告.doc_第4页
第4页 / 共26页
潮流上机课程设计报告.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、如果恰巧看到这篇的话,给你们几个忠告。首先要说的是:课设老师是 sb,课设老师是sb,课设老师是 sb,重说三;其次,要给他看程序的话,一定要早一点,不然你自己写的也成抄袭的了,亲身经历你们懂的;顺带,这 sb 看变量名认程序的,自己尽量把变量名都改了。恩,基本就是这些了。课程设计报告( 20152016 年度第二学期)名 称:电力系统潮流上机 院 系:电气与电子工程学院 班 级: 学 号: 学生姓名: 指导教师: 毛安家 设计周数: 两周 成 绩: 日期: 年 月 日课程设计报告1一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容

2、见附录)1 手算节点 1 为平衡节点,电压 ,节点 2 为 PQ 节点,负荷功率 ,节点 31.05U 20.85Sj是 PV 节点, ,两条支路分别为 , ,对330.4,P 4.01.3jZ2.1Z地支路 。 (要求应用牛顿-拉夫逊法或 P-Q 分解法手算求解,要求迭代两次。 )0yj(手算具体过程见附录)2 计算机计算编写潮流计算程序,要求如下:2.1 据给定的潮流计算任务书整理潮流计算的基础数据:节点的分类,线路模型,等值变压器模型,电压等级的归算,标幺值的计算;2.2 基础数据的计算机存储:节点数据,支路数据(包括变压器) ;2.3 用牛顿-拉夫逊法计算;2.4 根据所选潮流计算方法

3、画流程图,划分出功能模块,有数据输入模块,导纳阵形成模块,解线性方程组模块,计算不平衡功率模块,形成雅可比矩阵模块,解修正方程模块,计算线路潮流。(1)、每次迭代的各节点电压幅值、相位或者实部、虚部(2)、收敛的迭代次数(3)、收敛后各节点电压幅值、相位,各支路的 ,ijijS(4)、收敛后 PV 节点的注入 Q(5)、收敛后平衡节点的注入功率 S2.5 据上述模块编制程序并上机调试程序,得出潮流计算结果;2.6 源程序及其程序中的符号说明集、程序流图简单系统如下图所示,支路数据如下:支路 14,27,39 为变压器支路,参数为,10.,58.014KX05.1,63.227KX9339其余支

4、路为线路支路,参数为,075.2/,07.1.878 BjZ299 3./,6.3.5757j课程设计报告2179.02/,17.039.6969 BjZ885445 ./,66j节点数据如下: oU04.1,25.,632P025.1,8.33UP, ,.5jS 906jS 3.8jS(计算机计算过程及程序代码等见附录)3 思考题3.1 潮流计算的方法有哪些?各有何特点?3.2 如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)3.3 设计中遇到的问题和解决的办法。(思考题回答见附录)三、课程设计总结或结论这次课

5、程设计不仅涉及了当年就不懂的潮流计算的知识,还用到了荒废已久的 C 语言,我一开始是迷茫紧张的。但是随着设计的进行,复习回想起了当年课程的内容,发现其实算法也就是把大问题分解成一个个步骤,只要把每个步骤认真做好,一点点像搭积木一样,最终就能做出一栋牢固的房屋。编程过程中发现模板还是有一些小问题的,比如导纳矩阵的数组在模板中其实已经越界使用了,还有高斯算法的程序存在一些参数声明和类型转换的问题,不过问题都不大,很容易就改好了。改动比较大的部分,就是我发现文件中的节点和线路数其实只在读数据的时候起作用,而且更改节点和线路数的时候还得改动程序,很不方便。于是使用了 calloc 函数动态申请内存空间

6、,开头读取一次文件中的节点和线路数后,全程都可以使用这两个参数,大大提升了程序的灵活性,只需要修改文件内容就可以计算各种情况。动态的二维数组的构建方法是在百度中学习的,让人不得不佩服前人巧妙的思路。还有编程中遇到GGG2 87 9 31465课程设计报告3的最大的问题就是数组空间申请的不足导致下标越界,从而在运行过程中出现了各种奇奇怪怪的报错,让我头疼了好一阵,最终发现还是自己粗心的问题,只要改正一个数组长度参数就好,真是让人哭笑不得。这次课程设计帮我巩固了潮流计算的知识,让我对潮流计算的思路理解更加深刻了,也锻炼了我的编程能力,过程中大部分问题都是自己独立解决的(不得不说百度是个好帮手,不过

7、涉及到比较专业性的问题百度就非常无力) ,当然与同学的交流帮我找出了不少程序的错漏。在自己程序基本完成之后也帮助了其他同学解决了不少问题(个人感想是:学会用 debug 大部分问题都能自己解决) 。虽然我一向比较倾向于独立解决问题,但实际情况告诉了我多与其他人交流会给自己很大的帮助,我以后会努力和他人交流,以更高的效率解决问题!四、参考文献1. 电力系统分析基础 ,李庚银,机械工业出版社,2011 年,第一版;2. 电力系统稳态分析 ,陈珩,中国电力出版社,2007 年,第三版附录(包括:1.手算过程及结果;2.计算机计算流程图、表格、数据;3.思考题答案)手算过程:第一次迭代:1.计算导纳矩

8、阵Y11=y13+y12 = 1/(0.01+j0.04)+1/(0.05+j0.02)= 7.0588-j28.2353 Y12= -y12= -1/(0.05+j0.02)= -1.1765+j 4.7059Y13= -y13= -1/(0.01+j0.04)= -5.8824+j23.5294Y21= -y12 = -1/(0.05+j0.02)= -1.1765+j 4.7059Y22= y22= 1/(0.05+j0.02)= 1.1765-j 4.7059Y31= -y13= -1/(0.01+j0.04)= -5.8824+j23.5294Y33= y13+y30 =1/(0.0

9、1+j0.04)+j0.3=5.8824-j23.2294则 Y= 7.0588j28.2353 1.1765+j 4.70595.8824+j23.52941.1765+j 4.70591.1765-j 4.7059 0 5.8824+j23.5294 0 5.8824j23.2294课程设计报告22.计算不平衡量取 1=1.05+j0, 2(0)=1.00+j0, 3(0) =1.00+j0,2 号为 PQ 节点:P2(0)=12(22)+2(2+2)=1.00*(-1.1765*1.05)+1.00*(1.1765*1.00)=-0.0588P 2(0)=-0.8-(-0.0588)=

10、-0.7412Q2(0)=12(22)2(2+2)=-1.00*(4.7059*1.05)+-1.00*(-4.7059*1.00)= -0.2353Q 2(0)=-0.5-(-0.2353)= -0.26473 号为 PV 节点:P3(0)=13(33)+3(3+3)=1.00*(-5.8824*1.05)+1.00*(5.8824*1.00)=-0.2941P 3(0)=-0.4-(-0.2941)= -0.1059U3(0)2=e32+f32= 1U 3(0)2=1.052-1= 0.1025课程设计报告33.计算雅可比矩阵= G22f2+B22e2=-4.9412(0)22=1(2+2

11、)=-1.1176(0)22=1.2353(0)22=-4.4706(0)22= = = = = = = =0(0)23(0)23(0)23(0)23(0)32(0)32(0)32(0)32=-24.7059(0)33=-5.5882(0)33=0(0)32=-2.0000(0)32则 J(0)=4.94121.11760 01.23534.47060 00 0 24.70595.58820 0 0 2.00004.解修正方程计算略,解得修正量为:=0.0947; =0.1286e(0)2 (0)2=-0.0513; =0.0159e(0)3 (0)3则修正后的电压量为:=0.9053; =-

12、0.1286e(1)2 (1)2=1.0513; =-0.0159e(1)3 (1)3第二次迭代:1.计算不平衡量1=1.05+j0, 2(1)= 0.9053-j0.1286, 3(1) =1.0513-j0.0159,2 号为 PQ 节点:课程设计报告4P2(1)=12(22)+2(2+2)=0.9053*(-1.1765*1.05) -0.1286*(4.7059*1.05)+0.9053*(1.1765*0.9053-4.7059*0.1286) -0.1286*(-1.1765*0.1286-4.7059*0.9053)=-0.7700P 2(1)=-0.8-(-0.7700)= -

13、0.0300Q2(1)=12(22)2(2+2)= -0.3800Q 2(1)=-0.5-(-0.3800)= -0.12003 号为 PV 节点:P3(1)=13(33)+3(3+3)=-0.3831P 3(1)=-0.4-(-0.3831)= -0.0169U3(1)2=e32+f32= 1.05132+0.01592=1.1055U 3(1)2=1.052-1.1055= -0.00302. 计算雅可比矩阵课程设计报告5计算得 J(0)=4.63870.89470 02.44543.57890 00 0 24.51916.19120 0 0.03182.10253.解修正方程计算略,解得

14、修正量为: =0.0335; =0e(1)2 (1)2 =0.0014; =0.0003e(1)3 (1)3则修正后的电压量为:=0.8717; =-0.1286e(2)2 (2)2=1.0499; =-0.0162e(2)3 (2)3最终计算结果:1 号平衡节点功率为:S=1.2571+j0.6249;2 号 PQ 节点:电压幅值为 0.8812,相角为 -0.1464;3 号 PV 节点:电压相角为 -0.0154,无功为 -0.2274。13 节点间线路功率 S13=0.4015-j0.0971,S31=-0.4000-j0.2274,线路损耗为:0.0015-j0.3246;12 节点

15、间线路功率 S12= 0.8555+j0.7221,S21= -0.7987-j0.4947,线路损耗为:0.0568+j0.2274;3 号节点接地支路功率 S30= -j0.6615,S03=0 ,线路损耗为:-j0.6615;全网网损为 0.0571-j0.1025。课程设计报告1计算机程序潮流计算:节点数据:节点序号 电压幅值 相角 发出有功 发出无功 吸收有功 吸收无功 节点类型1 1.04 0 0 0 0 0 22 1.025 0 1.63 0 0 0 13 1.025 0 0.85 0 0 0 14 1 0 0 0 0 0 05 1 0 0 0 1.25 0.5 06 1 0 0

16、 0 0.9 0.3 07 1 0 0 0 0 0 08 1 0 0 0 1 0.35 09 1 0 0 0 0 0 0线路数据:线路序号 左节点 右节点 线路电阻 R 线路电抗 X 线路等效电纳 B/2 线路变比1 1 4 0 0.058 0 1.12 2 7 0 0.063 0 1.053 3 9 0 0.059 0 1.14 7 8 0.019 0.072 0.075 15 8 9 0.012 0.101 0.105 16 5 7 0.032 0.161 0.153 17 6 9 0.039 0.17 0.179 18 4 5 0.01 0.085 0.088 19 4 6 0.017

17、0.092 0.079 1计算输出结果:导纳矩阵内容:课程设计报告2每次迭代输出:第 1 次:第 2 次:第 3 次:第 4 次:最终结果:课程设计报告3思考题:3.1 答:有高斯-塞德尔法,牛顿 -拉夫逊法,P-Q 分解法等。高斯-塞德尔法具有程序编制简单、占用内存少的优点,但算法收敛性差,计算时间长;牛顿-拉夫逊法不仅在多数情况下没有发散的危险,而且收敛性强,可以大大节省计算时间,但对初始值的选择要求严格,必须选好恰当的初始值,否则不收敛;P-Q 分解法一般情况下迭代次数比牛顿-拉夫逊法多,但每次迭代时间比牛顿 -拉夫逊法少,以致总速度比牛顿-拉夫逊法快。3.2 答:在进行北京城市电网的潮

18、流计算之前需要了解北京城市电网中所有的节点支路的相关数据,并对节点和支路分类。处理 PQ 节点时要了解节点的注入有功和无功功率,PV 节点要了解节点电压大小,注入有功功率及节点所能提供的最大和最小无功功率,对于平衡节点要了解节点的电压大小、相位及节点所能提供的最大和最小有功无功功率,此外还需的节点数据有,支路的电阻电抗电纳支路变压器的变比及线路所能传输的最大容量等。计算结果分析,应考虑 PQ 节点的电压是否过高或过低,分析 PV 节点的电压幅值是否正常及无功功率是否超出范围,分析平衡节点有功无功功率是否在节点所能提供的范围之内,分析各支路的功率,看是否超出线路传输的最大容量,分析整个系统的网损

19、是否达到标准。3.3 答:算法构建的过程中,发现了自己对潮流计算了解的不足之处,各种公式掌握和理解的不够深刻,导致了算法设计的困难;程序方面,我发现了我和大家程序运行出错的最大原因,还是数组分配空间的不足,以及循环中数组下标的控制不当,导致数组访问越界,最终发生了数据混乱、数据空间重叠,甚至数据堆损坏、程序崩溃的情况,最终在我的仔细检查之下找到错误(感谢 debug 的断点和监视神器),在以后的编程过程中,我会吸取教训,避免再犯一样的错误。课程设计报告1程序流程图: 课程设计报告1程序代码如下:/ aaa.cpp : 定义控制台应用程序的入口点。/#include “stdafx.h“#inc

20、lude “6GAUS.C“struct Line /线路结构体int Num,NumI,NumJ; /线路号 左节点名 右节点名double R, X, B, K, P12, Q12, P21, Q21; /电阻 电抗 电纳 变比(K等于1为普通支路, 不等于1为变压器支路的变比) 线路左输入有功功率 左输入无功功率 右输入有功功率 右输入无功功率;struct Bus /节点结构体int Num ; double Volt,Phase,GenP,GenQ,LoadP,LoadQ; /节点的电压 相角 发出有功 发出无功 吸收有功 吸收无功int Type; /节点类型(约定2为平衡节点,1

21、为PV节点,0为PQ节点);struct ssh /节点结构体(不明意义,但既然模板有就暂时留着)int NumI,Num ; double G,B; ;#include“stdio.h“#include“string.h“#include“math.h“#include“stdlib.h“#include“conio.h“/#define NBUS 5/#define NLINE 7/* Global variables */int nL,nBus,nSH; /记录线路数,节点数,?int maxtime; /记录最大迭代次数double jd=0.0001; /默认精度设为0.0001in

22、t _tmain(int argc, _TCHAR* argv)FILE *fp;FILE *fpout;课程设计报告2int i, j, k, l, npv, npq, nbl, rtime = 0, maxtime = 50; /迭代次数置0,最大迭代次数默认设为50int i1, i2, i3, kp, kq;if (fp = fopen(“in.txt“, “r“) = NULL) /从文件读取节点数,线路数,?,最大迭代次数,精度值printf(“Can not open the file named in.txt n“); exit(0);fscanf(fp, “%d,%d,%d,

23、%d,%f,“, if (fp != NULL) fclose(fp);double d1, d2, d3, d4, d5, d6, r, x, g, b, g12, g10, g20, b12, b10, b20, m, maxdp, maxdq, maxdu;double *detp = (double *)calloc(nBus, sizeof(double),*detq = (double *)calloc(nBus, sizeof(double),*detu = (double *)calloc(nBus, sizeof(double), /不平衡量*e = (double *)ca

24、lloc(nBus, sizeof(double), /电压实部*f = (double *)calloc(nBus, sizeof(double), /电压虚部*bb = (double *)calloc(2 * nBus, sizeof(double), /不平衡量矩阵sump, sumq, sum_hl, sum_nj; /一些中间变量double *H = (double *)calloc(nBus, sizeof(double*),*N = (double *)calloc(nBus, sizeof(double*),*J = (double *)calloc(nBus, sizeo

25、f(double*),*L = (double *)calloc(nBus, sizeof(double*),*R = (double *)calloc(nBus, sizeof(double*),*S = (double *)calloc(nBus, sizeof(double*),/各雅可比子矩阵*jac = (double *)calloc(2 * (nBus), sizeof(double*),/储存雅可比矩阵雏形*jacc = (double *)calloc(4 * (nBus - 1)*(nBus - 1), sizeof(double);/一维平铺的雅克比矩阵(便于使用高斯算法

26、计算)struct Line *sLine = (Line*)calloc(nL, sizeof(Line); /线路结构体数组struct Bus *sBus = (Bus*)calloc(nBus, sizeof(Bus); /节点结构体数组struct ssh *sSH = (ssh*)calloc(nSH, sizeof(ssh);double *YG = (double *)calloc(nBus+1, sizeof(double*),/导纳矩阵实部*YB = (double *)calloc(nBus+1, sizeof(double*);/导纳矩阵虚部jac0 = (double

27、 *)calloc(4 * (nBus) *(nBus), sizeof(double); /分配第二维空间for (i = 0; i 0.000001)/d1= YGij* YGij+YBij*YBij;d1 = YGij;d2 = YBij;fprintf(fp, “Y(%3d,%-3d)=(%8.4lf,%8.4lf)n“, i, j, d1, d2);/fprintf(fp, “(%8.4lf,%8.4lf)“, d1, d2);/fprintf(fp, “n“);if (fp != NULL) fclose(fp);/-节点电压赋初值-npv = 0;for (i = 0; i ma

28、xdp) maxdp = fabs(detpi); /记录不平衡量的最大值(为比较精度做准备)if (fabs(detqi) maxdq) maxdq = fabs(detqi); /记录不平衡量的最大值(为比较精度做准备)else if (sBusi.Type = 1) /计算pv节点的不平衡量detpi = sBusi.GenP - sBusi.LoadP - sump;detui = (sBusi.Volt*sBusi.Volt) - (ei * ei + fi * fi);if (fabs(detpi) maxdp) maxdp = fabs(detpi); /记录不平衡量的最大值(为

29、比较精度做准备)if (fabs(detui) maxdu) maxdu = fabs(detui); /记录不平衡量的最大值(为比较精度做准备)if (maxdp = maxtime) printf(“达到最大迭代次数,方程可能不收敛n“);for (i = 0; i nBus; i+)sBusi.Volt = sqrt(ei * ei + fi * fi);课程设计报告10sBusi.Phase = atan(fi/ei);if (sBusi.Type = 2) /平衡节点的计算sump = 0;sumq = 0;for (j = 0; j nBus; j+) sump += ei * (

30、YGi+1j+1 * ej - YBi+1j+1 * fj) + fi * (YGi+1j+1 * fj + YBi+1j+1 * ej);sumq += fi * (YGi+1j+1 * ej - YBi+1j+1 * fj) - ei * (YGi+1j+1 * fj + YBi+1j+1 * ej);sBusi.GenP = sump;sBusi.GenQ = sumq;else if(sBusi.Type = 1) /PV节点的计算sumq = 0;for (j = 0; j nBus; j+)sumq += fi * (YGi+1j+1 * ej - YBi+1j+1 * fj) -

31、 ei * (YGi+1j+1 * fj + YBi+1j+1 * ej);sBusi.GenQ = sumq;/计算各节点参数sump = 0;sumq = 0;for (i = 0; i nL; i+)k = sLinei.NumI-1;l = sLinei.NumJ-1;if (k + 1 = 0 ) /对地支路的计算d2 = sBusl.Volt;sLinei.P12 = 0;sLinei.Q12 = 0;sLinei.P21 = -d2*d2*YGl + 1k + 1 - d2*d2*YGl + 10;sLinei.Q21 = d2*d2*(YBl + 1k + 1 + YBl +

32、10);else if (l + 1 = 0) /对地支路的计算d1 = sBusk.Volt;sLinei.P12 = -d1*d1*YGk + 1l + 1 - d1*d1*YGk + 10;sLinei.Q12 = d1*d1*(YBk + 1l + 1 + YBk + 10);sLinei.P21 = 0;sLinei.Q21 = 0;课程设计报告11else/普通支路的计算d1 = sBusk.Volt;d2 = sBusl.Volt;sLinei.P12 = -d1*d1*YGk + 1l + 1 + (ek * el + fk * fl)*YGk + 1l + 1 + (el *

33、 fk - ek * fl)*YBk + 1l + 1 - d1*d1*YGk + 10;sLinei.Q12 = d1*d1*(YBk + 1l + 1 + YBk + 10) + YGk + 1l + 1 * (el * fk - ek * fl) - YBk + 1l + 1 * (ek * el + fk * fl);sLinei.P21 = -d2*d2*YGl + 1k + 1 + (el * ek + fl * fk)*YGl + 1k + 1 + (ek * fl - el * fk)*YBl + 1k + 1 - d2*d2*YGl + 10;sLinei.Q21 = d2*

34、d2*(YBl + 1k + 1 + YBl + 10) + YGl + 1k + 1 * (ek * fl - el * fk) - YBl + 1k + 1 * (el * ek + fl * fk);sump += sLinei.P12 + sLinei.P21;sumq += sLinei.Q12 + sLinei.Q21;/计算线路功率d1 = 0;d2 = 0;for (i = 0; i nBus; i+)d1 += sBusi.GenP - sBusi.LoadP;d2 += sBusi.GenQ - sBusi.LoadQ;/计算全网网损/-输出迭代最终计算结果-if (fp

35、= fopen(“GGBB.txt“, “a“) = NULL) printf(“Can not open the file named GGBB.txt n“); return(0);fprintf(fp, “n*最终结果*n“);fprintf(fp,“总迭代次数:%-8dt精度:%lftPmax: %lftQmax:%lftU2max:%lfn“,rtime,jd,maxdp,maxdq,maxdu);fprintf(fp, “n-各节点迭代结果-n“);for (i = 0; i nBus; i+)if (sBusi.Type = 2)fprintf(fp, “%d号节点为平衡节点,U

36、=%9.4lf,=%9.4lf,P=%9.4lf,Q=%9.4lfn“, sBusi.Num, sBusi.Volt, sBusi.Phase, sBusi.GenP, sBusi.GenQ);if (sBusi.Type = 1) fprintf(fp, “%d号节点为pv节点,U=%9.4lf,=%9.4lf,Q=%9.4lfn“, sBusi.Num, sBusi.Volt, sBusi.Phase, sBusi.GenQ);if (sBusi.Type = 0) fprintf(fp, “%d号节点为pq节点,U=%9.4lf,=%9.4lfn“, sBusi.Num, sBusi.V

37、olt, sBusi.Phase);课程设计报告12fprintf(fp, “n-各线路迭代结果-n“);for (i = 0; i nL; i+)fprintf(fp, “%d号线路(%d,%d):Sij:(%9.4lf,%9.4lf);Sji:(%9.4lf,%9.4lf);S:(%9.4lf,%9.4lf)n“, sLinei.Num, sLinei.NumI, sLinei.NumJ, sLinei.P12, sLinei.Q12, sLinei.P21, sLinei.Q21, sLinei.P12+ sLinei.P21, sLinei.Q12+ sLinei.Q21);fprin

38、tf(fp, “n-全网网损-n“);fprintf(fp, “有功:%9.4lf,无功:%9.4lfn“,d1,d2);if (fp != NULL) fclose(fp);printf(“结果已输出至文件,请打开文件GGBB.txt查看n“);for (i = 0; inBus; i+)free(Hi );free(Ni );free(Ji );free(Li );free(Ri );free(Si );free(YGi);free(YBi);free(H);free(N);free(J);free(L);free(R);free(S);free(YG);free(YB);free(jac0);free(jac);free(jacc);free(detp);free(detq);free(detu);free(e);free(f);free(bb);free(sBus);free(sLine);free(sSH);return 0;课程设计报告13

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报