课程设计报告——电力系统短路故障的计算机算法程序设计专业:电气工程及其自动化班级:设计者:学号:华中科技大学电气与电子工程学院2目录一.课程设计说明-------------------------------------(3)二.选用所用语言的理由-------------------------------(3)三.程序主框图子框图及主要数据变量的说明-------------(3)四.程序说明(计算公式及出处)-----------------------(4)五.设计实际应用-------------------------------------(4)六.设计体会-----------------------------------------(10)七.参考资料----------------------------------------(10)八.附录(程序源代码)-------------------------------(10)3一.课程设计说明1.课程设计题目为:电力系统短路故障的计算机算法程序设计。2.实际任务为:编写计算机程序完成三相对称短路电流的实际计算。要求形成可执行文件,程序合格,输入输出数据以文件形式。其中,输入数据为:节点数,支路数,故障节点,支路首段号,支路末端号,支路电抗值。输出数据为:节点导纳矩阵,阻抗矩阵,故障点,故障点电流,支路电流,各节点电压。并以《电力系统分析》课本例题6-1,习题6-10,6-11为例进行计算和验算。二.选用所用语言的理由这次课程设计我选用的语言是C语言,原因是在大学阶段只接触过C语言,C语言有一定的基础,而且C语言完全能胜任这次编程任务。三.程序主框图子框图及主要数据变量的说明主要变量说明如下:init();(数据输入函数,形成节点导纳矩阵)brinv(doublea[],intn);(矩阵求逆函数)out_Y();(形成节点阻抗矩阵)short_Select();(输入短路点)Count_If();(计算出短路时各节点电压和各支路电流)floatyy[M][M](导纳矩阵),zz[M][M](阻抗矩阵);从duanlu.txt输入数据根据输入形成导纳矩阵对导纳矩阵求逆,得到阻抗矩阵通过课本上的公式,通过阻抗矩阵求故障时各点电压,各支路电流用户输入短路点和短路前电压(设负荷电流无影响)输出结果到result.txt文件4floatIf[M](短路节点电流);floatVol[M](各节点电压);floatIII[M](各支路电流);structpowernet{BYTEnode;BYTEline;BYTEhanghao;inthead_node;intend_node;floatreact;}net[N];(电力网络结构体,用来表示电力网络各参数)四.程序说明(计算公式及出处)短路计算过程如下:输入数据--形成节点导纳矩阵并求逆--节点阻抗矩阵--选择短路点f,输入短路前电压--通过公式(6-10)计算短路电流If――通过公式(6-11)计算节点电压--用公式(6-9)计算短路后支路电流。If=Vf(0)/Zff(6-10)Vi=Vi(0)-Zif*If(6-11)Ipq=(Vp-Vq)*(-Ypq)(6-9)各公式引自《电力系统分析》上册第六章。五.设计实际应用例6-3题输入数据如下:5571,1,0.151,2,0.1052,3,0.0652,4,0.083,4,0.054,5,0.18455,5,0.22.txt文件输出数据:节点导纳矩阵为:-16.19047546*j9.52380943*j0.00000000*j0.00000000*j0.00000000*j9.52380943*j-37.40842819*j15.38461590*j12.50000000*j0.00000000*j0.00000000*j15.38461590*j-35.38461685*j20.00000000*j0.00000000*j0.00000000*j12.50000000*j20.00000000*j-37.93478394*j5.43478251*j0.00000000*j0.00000000*j0.00000000*j5.43478251*j-9.98023701*j节点阻抗矩阵为:0.11813837*j0.09583523*j0.09017095*j0.08581381*j0.04673029*j0.09583523*j0.16291989*j0.15329060*j0.14588347*j0.07944150*j0.09017095*j0.15329060*j0.18598767*j0.16113926*j0.08774910*j0.08581381*j0.14588347*j0.16113926*j0.17287450*j0.09413958*j0.04673029*j0.07944150*j0.08774910*j0.09413958*j0.15146215*j短路节点为:3短路前电压为(忽略负荷电流的影响):1.000000短路点的电流为:If[3]=-5.376700*j短路节点电压为:Vol[1]=0.515178Vol[2]=0.175802Vol[3]=0.000000Vol[4]=0.1336026Vol[5]=0.528199各支路电流为:III[1][1]=-3.232147*jIII[1][2]=-3.232147*jIII[2][3]=-2.704651*jIII[2][4]=-0.527499*jIII[3][4]=2.672048*jIII[4][5]=2.144548*jIII[5][5]=-2.144548*j习题6—10输入数据:5571,1,0.231,3,0.1052,2,0.282,4,0.213,4,0.435543,5,0.29044,5,0.2541输出数据:节点导纳矩阵为:-13.87163544*j0.0000000*j9.52380943*j0.00000000*j0.0000000*j70.00000000*j-8.33333302*j0.00000000*j4.76190472*j0.00000000*j9.52380943*j0.000000*j-15.26333618*j2.29600048*j3.44352627*j0.00000000*j4.76190472*j2.29600048*j-10.99336338*j3.93545866*j0.00000000*j0.00000000*j3.44352627*j3.93545866*j-7.37898493*j节点阻抗矩阵为:0.18042089*j0.06035720*j0.15778695*j0.10562509*j0.12996729*j0.06035720*j0.20652170*j0.08791157*j0.15141298*j0.12177899*j0.15778695*j0.08791157*j0.22982012*j0.15384525*j0.18930019*j0.10562509*j0.15141298*j0.15384525*j0.26497272*j0.21311322*j0.12996729*j0.12177899*j0.18930019*j0.21311322*j0.33752048*j短路节点为:5短路前电压为(忽略负荷电流的影响):1.000000短路点的电流为:If[5]=-2.962783*j短路节点电压为:Vol[1]=0.614935Vol[2]=0.639195Vol[3]=0.4391458Vol[4]=0.368592Vol[5]=0.000000各支路电流为:III[1][1]=-1.674195*jIII[1][3]=-1.674195*jIII[2][2]=-1.288588*jIII[2][4]=-1.288588*jIII[3][4]=-0.161989*jIII[3][5]=-1.512206*jIII[4][5]=-1.450577*j习题6—11输入数据:3341,1,0.21,2,0.22,3,0.13,3,0.15输出数据:节点导纳矩阵为:3129-10.00000000*j5.00000000*j0.00000000*j5.00000000*j-15.00000000*j10.00000000*j0.00000000*j10.00000000*j-16.66666603*j节点阻抗矩阵为:0.13846155*j0.07692308*j0.04615385*j0.07692308*j0.15384616*j0.09230770*j0.04615385*j0.09230770*j0.11538462*j短路节点为:3短路前电压为(忽略负荷电流的影响):1.050000短路点的电流为:If[3]=-9.099999*j短路节点电压为:Vol[1]=0.630000Vol[2]=0.210000Vol[3]=-0.000000各支路电流为:III[1][1]=-2.100000*jIII[1][2]=-2.100000*jIII[2][3]=-2.100000*jIII[3][3]=-7.000000*j六.设计体会这次设计体会良多,首先是通过短路电流的计算,熟悉了以前电力系统分析的课程,巩固了专业知识,同时通过C语言的使用也使几乎已经忘干净的C语言技能得以回复和巩固。七.参考资料《电力系统分析》上册,第三版,何仰赞温增银华中科技大学出版社《程序设计基础》(C语言)王载新曾大亮杨有安崔珂梅清华大学出版社八.附录(程序源代码)#includestdio.h10#includemath.h#includeconio.h#includestring.h#includestdlib.h#includemalloc.h#defineN100#defineM100#defineBYTEunsignedcharinit();intbrinv(doublea[],intn);out_Y();intshort_Select();Count_If();structpowernet{BYTEnode;BYTEline;BYTEhanghao;inthead_node;intend_node;floatreact;}net[N];floatyy[M][M],zz[M][M];floatIf[M];floatVol[M];floatIII[M];voidmain(){init();//输入原始数据out_Y();//形成节点导纳、节点阻抗Count_If();//计算短路电流,节点电压,支路电流}init(){11inti,j;floattemp=0;FILE*fp;if((fp=fopen(duanlu.txt,r))==NULL){printf(程序使用方法:\n\n在与程序的同一文件夹下建立duanlu.txt文本文件\nduanlu.txt文本文件第一行输入的是:节点数支路数输入数据的行数。\n(例如:335)。表示3个节点,3个支路,txt文件里输入有5行数据(不包括本行)。\n回车另起一行为:首节点,末节电,支路电抗。(例如:1,2,0.15)\n\n);B:gotoB;}fscanf(fp,%d%d%d,&net[0].node,&net[0].line,&net[0].hanghao);printf(本系统节点数:%d,支路数:%d\n\n,net[0].node,net[0].line);printf(以下为线路阻抗:\n\n);printf(始节点末节电电抗\n);for(i=0;inet[0].hanghao;i++){fscanf(fp,%d,%d,%f,&net[i].head_node,&net[i].end_node,&net[i].r