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

上传人(卖家):唯美 文档编号:4806530 上传时间:2023-01-13 格式:DOCX 页数:40 大小:337.20KB
下载 相关 举报
潮流上机课程设计报告.docx_第1页
第1页 / 共40页
潮流上机课程设计报告.docx_第2页
第2页 / 共40页
潮流上机课程设计报告.docx_第3页
第3页 / 共40页
潮流上机课程设计报告.docx_第4页
第4页 / 共40页
潮流上机课程设计报告.docx_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、潮流上机课程设计报告一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1 手算节点1为平衡节点,电压,节点2为PQ节点,负荷功率,节点3是PV节点,两条支路分别为,对地支路。(要求应用牛顿-拉夫逊法或P-Q分解法手算求解,要求迭代两次。)(手算具体过程见附录)2 计算机计算编写潮流计算程序,要求如下:2.1据给定的潮流计算任务书整理潮流计算的基础数据:节点的分类,线路模型,等值变压器模型,电压等级的归算,标幺值的计算;2.2基础数据的计算机存储:节点数据,支路数据(包括变压器);2.3用牛顿-拉夫逊法计算;2.4根据所选潮流

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

3、 思考题3.1潮流计算的方法有哪些?各有何特点?3.2如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)3.3设计中遇到的问题和解决的办法。(思考题回答见附录)三、课程设计总结或结论这次课程设计不仅涉及了当年就不懂的潮流计算的知识,还用到了荒废已久的C语言,我一开始是迷茫紧张的。但是随着设计的进行,复习回想起了当年课程的内容,发现其实算法也就是把大问题分解成一个个步骤,只要把每个步骤认真做好,一点点像搭积木一样,最终就能做出一栋牢固的房屋。编程过程中发现模板还是有一些小问题的,比如导纳矩阵的数组在模板中其实已经越界

4、使用了,还有高斯算法的程序存在一些参数声明和类型转换的问题,不过问题都不大,很容易就改好了。改动比较大的部分,就是我发现文件中的节点和线路数其实只在读数据的时候起作用,而且更改节点和线路数的时候还得改动程序,很不方便。于是使用了calloc函数动态申请内存空间,开头读取一次文件中的节点和线路数后,全程都可以使用这两个参数,大大提升了程序的灵活性,只需要修改文件内容就可以计算各种情况。动态的二维数组的构建方法是在百度中学习的,让人不得不佩服前人巧妙的思路。还有编程中遇到的最大的问题就是数组空间申请的不足导致下标越界,从而在运行过程中出现了各种奇奇怪怪的报错,让我头疼了好一阵,最终发现还是自己粗心

5、的问题,只要改正一个数组长度参数就好,真是让人哭笑不得。这次课程设计帮我巩固了潮流计算的知识,让我对潮流计算的思路理解更加深刻了,也锻炼了我的编程能力,过程中大部分问题都是自己独立解决的(不得不说百度是个好帮手,不过涉及到比较专业性的问题百度就非常无力),当然与同学的交流帮我找出了不少程序的错漏。在自己程序基本完成之后也帮助了其他同学解决了不少问题(个人感想是:学会用debug大部分问题都能自己解决)。虽然我一向比较倾向于独立解决问题,但实际情况告诉了我多与其他人交流会给自己很大的帮助,我以后会努力和他人交流,以更高的效率解决问题!四、参考文献1. 电力系统分析基础,李庚银,机械工业出版社,2

6、011年,第一版;2. 电力系统稳态分析,陈珩,中国电力出版社,2007年,第三版附录(包括:1.手算过程及结果;2.计算机计算流程图、表格、数据;3.思考题答案)手算过程:第一次迭代:1.计算导纳矩阵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= y

7、22= 1/(0.05+j0.02)= 1.1765-j 4.7059Y31= -y13= -1/(0.01+j0.04)= -5.8824+j23.5294Y33= y13+y30=1/(0.01+j0.04)+j0.3=5.8824-j23.2294则Y=2.计算不平衡量取1=1.05+j0,U()2(0)=1.00+j0,U()3(0) =1.00+j0,2号为PQ节点:P2(0)=1.00*(-1.1765*1.05)+1.00*(1.1765*1.00)=-0.0588P2(0)=-0.8-(-0.0588)= -0.7412Q2(0)= =-1.00*(4.7059*1.05)+-

8、1.00*(-4.7059*1.00) = -0.2353Q2(0)=-0.5-(-0.2353)= -0.26473号为PV节点:P3(0)= =1.00*(-5.8824*1.05)+1.00*(5.8824*1.00) =-0.2941P3(0)=-0.4-(-0.2941)= -0.1059U3(0)2=e32+f32=1U3(0)2=1.052-1= 0.10253.计算雅可比矩阵= G22f2+B22e2=-4.9412=-1.1176=1.2353=-4.4706=0=-24.7059=-5.5882=0=-2.0000则J(0)=4.解修正方程计算略,解得修正量为:=0.094

9、7;=0.1286=-0.0513;=0.0159则修正后的电压量为:=0.9053;=-0.1286=1.0513;=-0.0159第二次迭代:1.计算不平衡量1=1.05+j0,U()2(1)= 0.9053-j0.1286,U()3(1) =1.0513-j0.0159,2号为PQ节点:P2(1)=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.7700P2(1)=-0.8-(-0.7700)

10、= -0.0300Q2(1)= = -0.3800Q2(1)=-0.5-(-0.3800)= -0.12003号为PV节点:P3(1)= =-0.3831P3(1)=-0.4-(-0.3831)= -0.0169U3(1)2=e32+f32=1.05132+0.01592=1.1055U3(1)2=1.052-1.1055= -0.00302. 计算雅可比矩阵计算得J(0)=3.解修正方程计算略,解得修正量为:=0.0335;=0=0.0014;=0.0003则修正后的电压量为:=0.8717;=-0.1286=1.0499;=-0.0162最终计算结果:1号平衡节点功率为:S=1.2571+

11、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节点间线路功率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。计算机程序潮流计算:节点数据:节点序号电压幅值

12、相角发出有功发出无功吸收有功吸收无功节点类型11.0400000221.02501.63000131.02500.85000141000000510001.250.50610000.90.30710000008100010.35091000000线路数据:线路序号左节点右节点线路电阻R线路电抗X线路等效电纳B/2线路变比11400.05801.122700.06301.0533900.05901.14780.0190.0720.07515890.0120.1010.10516570.0320.1610.15317690.0390.170.17918450.010.0850.08819460.0

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

14、据,并对节点和支路分类。处理PQ节点时要了解节点的注入有功和无功功率,PV节点要了解节点电压大小,注入有功功率及节点所能提供的最大和最小无功功率,对于平衡节点要了解节点的电压大小、相位及节点所能提供的最大和最小有功无功功率,此外还需的节点数据有,支路的电阻电抗电纳支路变压器的变比及线路所能传输的最大容量等。计算结果分析,应考虑PQ节点的电压是否过高或过低,分析PV节点的电压幅值是否正常及无功功率是否超出范围,分析平衡节点有功无功功率是否在节点所能提供的范围之内,分析各支路的功率,看是否超出线路传输的最大容量,分析整个系统的网损是否达到标准。3.3 答:算法构建的过程中,发现了自己对潮流计算了解

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

16、路号 左节点名 右节点名 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为PV节点,0为PQ节点) ;struct ssh /节点结构体(不明意义,但既然模板有就暂时留着

17、) int NumI,Num ; double G,B; ; #includestdio.h#includestring.h#includemath.h#includestdlib.h#includeconio.h/#define NBUS 5/#define NLINE 7/* Global variables */int nL,nBus,nSH; /记录线路数,节点数,?int maxtime; /记录最大迭代次数double jd=0.0001; /默认精度设为0.0001int _tmain(int argc, _TCHAR* argv)FILE *fp;FILE *fpout;int

18、 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,%d,%f, &nBus, &nL, &nSH, &maxtime, &jd);if (fp != NULL) fclose(fp);dou

19、ble 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 *)calloc(nBus, sizeof(double), /电压实部*f = (d

20、ouble *)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, sizeof(double*),*L = (double *)calloc(nBus,

21、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);/一维平铺的雅克比矩阵(便于使用高斯算法计算)struct Line *sLine = (Line*)calloc(n

22、L, 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 *)calloc(4 * (nBus) *(nBus), sizeof(do

23、uble); /分配第二维空间for (i = 0; i nBus; i+)Hi = (double *)calloc(nBus, sizeof(double);Ni = (double *)calloc(nBus, sizeof(double);Ji = (double *)calloc(nBus, sizeof(double);Li = (double *)calloc(nBus, sizeof(double);Ri = (double *)calloc(nBus, sizeof(double);Si = (double *)calloc(nBus, sizeof(double);for

24、(i = 0; i nBus+1; i+)YGi = (double *)calloc(nBus + 1, sizeof(double);YBi = (double *)calloc(nBus + 1, sizeof(double);for (i = 1; i 2 * (nBus); i+)jaci = jaci - 1 + 2 * (nBus); /分配第二维指针地址i1 = i2 = i3 = 0;d1 = d2 = d3 = d4 = d5 = d6 = 0.0; /变量初始化if (fp = fopen(in.txt, r) = NULL)printf(Can not open the

25、 file named in.txt n);exit(0);fscanf(fp, %d,%d,%d,%d,%lf, &nBus, &nL, &nSH, &maxtime, &jd); /其实这里没有读数的必要了,只是为了换行读数据for (i = 0; i nBus; i+) /读取各节点数据sBusi.Num = sBusi.Type = 0; sBusi.Volt = 1.0;sBusi.Phase = sBusi.GenP = sBusi.GenQ = sBusi.LoadP = sBusi.LoadQ = 0.0;fscanf(fp, %d,%lf,%lf,%lf,%lf,%lf,%l

26、f,%d, &i1, &d1, &d2, &d3, &d4, &d5, &d6, &i2);sBusi.Num = i1; sBusi.Volt = d1; sBusi.Phase = d2; sBusi.GenP = d3; sBusi.GenQ = d4; sBusi.LoadP = d5, sBusi.LoadQ = d6; sBusi.Type = i2;for (i = 0; i nL; i+) /读取各线路数据sLinei.Num = sLinei.NumI = sLinei.NumJ = 0;sLinei.R = sLinei.X = sLinei.B = 0.0; sLinei

27、.K = 1.0;fscanf(fp, %2d %3d %3d %lf %lf %lf %lf, &i1, &i2, &i3, &d1, &d2, &d3, &d4);sLinei.Num = i1; sLinei.NumI = i2; sLinei.NumJ = i3; sLinei.R = d1; sLinei.X = d2; sLinei.B = d3; sLinei.K = d4;for (i = 0; i nSH; i+) sSHi.Num = sSHi.NumI = 0; sSHi.G = sSHi.B = 0.0;fscanf(fp, %2d %3d %lf, &i1, &i2,

28、 &d1);sSHi.Num = i1; sSHi.NumI = i2; sSHi.B = d1;if (fp != NULL) fclose(fp);/-生成导纳矩阵-for (i = 0; i nBus+1; i+)for (j = 0; j nBus+1; j+)YGij = 0;YBij = 0;for (l = 0; l nL; l+) i = sLinel.NumI ;j = sLinel.NumJ ;r = sLinel.R;x = sLinel.X;d1 = r*r + x*x;g = r / d1;b = -x / d1;m = sLinel.K;if (fabs(sLine

29、l.K - 1.0) 0.000001) /普通支路YGii = YGii + g;YGjj = YGjj + g;YBii = YBii + b + sLinel.B;YBjj = YBjj + b + sLinel.B;YGij = YGij - g;YGji = YGji - g;YBij = YBij - b;YBji = YBji - b;else /变压器支路g12 = g / m;g10 = (m - 1)*g / (m);g20 = (1 - m)*g / (m*m);b12 = b / m;b10 = (m - 1)*b / (m);b20 = (1 - m)*b / (m*

30、m);YGii = YGii + g10 + g12;YGjj = YGjj + g20 + g12;YBii = YBii + b12 + b10;YBjj = YBjj + b12 + b20;YGij = YGij - g12;YGji = YGji - g12;YBij = YBij - b12;YBji = YBji - b12;/-输出导纳矩阵-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

31、 (i = 1; i nBus+1; i+)for (j = 1; j 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 nBus; i+)if (sBusi.Type = 0 | sBusi.Type

32、 = 2)ei = sBusi.Volt*cos(sBusi.Phase);fi = sBusi.Volt*sin(sBusi.Phase);else if (sBusi.Type = 1)npv+; /统计pv节点个数ei = 1;fi = 0;npq = nBus - npv - 1;/pq节点个数/-计算不平衡量-(迭代入口)domaxdp = 0;maxdq = 0;maxdu = 0;k = 0;l = 0;for (i = 0; i nBus; i+)sump = 0;sumq = 0;for (j = 0; j maxdp) maxdp = fabs(detpi); /记录不平衡

33、量的最大值(为比较精度做准备)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); /记录不平衡量的最大值(为比较精度做准备)if (fabs(detui) maxdu) m

34、axdu = fabs(detui); /记录不平衡量的最大值(为比较精度做准备)if (maxdp jd & maxdq jd & maxdu jd)break;/精度满足结束迭代/-形成雅可比矩阵-for (i = 0; i nBus; i+)for (j = 0; j nBus; j+)if (sBusi.Type != 2)if (i != j) /非对角线的雅可比子矩阵计算Hij = YBi+1j+1 * ei - YGi+1j+1 * fi;Nij = -YGi+1j+1 * ei - YBi+1j+1 * fi;Jij = YBi+1j+1 * fi + YGi+1j+1 * e

35、i;Lij = -YGi+1j+1 * fi + YBi+1j+1 * ei;else/对角线的雅可比子矩阵计算sum_hl = sum_nj = 0;for (k = 0; k nBus; k+)sum_hl += YGi+1k+1 * fk + YBi+1k+1 * ek;sum_nj += YGi+1k+1 * ek - YBi+1k+1 * fk;Hij = -sum_hl - YGi+1j+1 * fi + YBi+1j+1 * ei;Nij = -sum_nj - YGi+1j+1 * ei - YBi+1j+1 * fi;Jij = -sum_nj + YBi+1j+1 * fi

36、 + YGi+1j+1 * ei;Lij = sum_hl - YGi+1j+1 * fi + YBi+1j+1 * ei;Rij = -2 * fi;Sij = -2 * ei;elsenbl = i;/记录平衡节点的序号/计算各子矩阵for (i = 0; i nBus; i+)if (sBusi.Type = 2)/平衡节点不参与计算else if (sBusi.Type = 1)/pv节点的雅可比矩阵填充for (j = 0; j nBus; j+)jaci * 2j * 2 = Hij; jaci * 2j * 2 + 1 = Nij;jaci * 2 + 1j * 2 = Rij;

37、 jaci * 2 + 1j * 2 + 1 = Sij;else/pq节点的雅可比矩阵填充for (j = 0; j nBus; j+)jaci * 2j * 2 = Hij; jaci * 2j * 2 + 1 = Nij;jaci * 2 + 1j * 2 = Jij; jaci * 2 + 1j * 2 + 1 = Lij;/形成雅可比矩阵雏形for (i = 2 * nbl; i 2 * (nBus - 1); i+)for (j = 0; j 2 * (nBus); j+)jacij = jaci + 2j;for (j = 2 * nbl; j 2 * (nBus - 1); j+)for (i = 0; i 2 * (nBus); i+)jacij = jacij + 2; /调整雅可比矩阵(去除平衡节点)k = 0;for (i = 0; i 2 * (nBus - 1); i+)for (j = 0; j 2 * (nBus - 1); j+)jacck = jacij;k+;/雅可比矩阵写入连续的

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(潮流上机课程设计报告.docx)为本站会员(唯美)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|