1、2015-2016 学年第二学期课程设计电力系统短路故障的计算机算法程序设计姓 名 学 号 班 级 指导教师 2目录一、课程设计说明3二、选择所用计算机语言的理由3三、程序主框图、子框图及主要数据变量说明4四、关键程序及程序注释7五、算例的接线图和输入参数以及输出计算结果与分析9六、设计体会12七、参考资料12八、附录(主程序及其注释)133电分课设报告一、课程设计说明根据所给的电力系统,设计并开发一个电力系统短路电流计算程序,并用算例验证其正确性。通过本课程设计,深刻理解电力系统短路计算的基本原理和方法巩固店里系统分析课程知识,培养综合应用应用专业知识和计算机的能力。所谓短路,是指电力系统正
2、常运行情况以外的相与相之间或相与地之间的“短接” 。在电力系统正常运行时,除中性点外,相与相或相与地之间是绝缘的。如果由于某种原因使其绝缘破坏而构成了通路,我们就称电力系统是发生了短路故障。在三相系统中,短路故障可分为两大类:即对称短路(三相短路)和不对称短路(两相短路、两相接地短路、单相接地短路) 。其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。所以我们先研究最简单的三相短路电流的暂态变化规律。二、选择所用计算机语言的理由我使用的是第四代计算机语言的 MATLAB,利用其丰富的函数资源,它的优点如下: 1)语言简洁紧凑,语法限制不严,程序设计自由度大,可移植性好。Mat
3、lab 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。Matlab 以矩阵为基础,不需要预先定义变量和矩阵(包括数组)的维数,可以方便地进行矩阵的算术运算、关系运算和逻辑运算等。而且 Matlab有特殊矩阵专门的库函数,可以高效地求解诸如信号处理、图像处理、控制等问题。2)运算符、库函数丰富 Matlab 的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序,每一个工具箱都是为某一类学科专业和应用而定制的。3)MATLAB 既具有结构化的控制语句(如 for 循环,while 循环,break 语句和if 语句) ,又有面向对象编程
4、的特性。4)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。5)图形功能强大 Matlab 具有非常强大的以图形化显示矩阵和数组的能力,同时4它能给这些图形增加注释并且可以对图形进行标注和打印。6)界面友好、编程效率高 Matlab 程序书写形式自由,被称为“草稿式”语言,这是因为其函数名和表达更接近我们书写计算公式的思维表达方式,编写 Matlab 程序犹如在草稿纸上排列公式与求解问题,因此可以快速地验证工程技术人员的算法。7)源程序的开放性。开放性也许是 MATLAB 最受人们欢迎的特点。除内部函数以外,所有 MATLAB 的核心文件和工具箱文件都是可读可改的源
5、文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。三、程序主框图、子框图及主要数据变量说明算法说明:利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点 f 经过过渡阻抗发生短路。对于正常状态的网络而言,发生短路相当于在故障节点 f 增加了一个注入电流 。因此,网络中任一节点 i 的电压可表示为: 由式可见,任一节点电压 i 的电压都由两项叠加而成。第一项是当 时由网络内所有电源在节点 i 产生的电压,也就是短路前瞬间正常运行状态下的节点电压,记为 。第二项是当网络中所有电流源都断开,电势源都短接时,仅仅由短路电流 在节点 i 产生的电压。这两个分量的叠加,就等于发生短路后节点
6、 i 的实际电压,即公式二公式二也适用于故障节点 f,于是有是故障节点 f 的自阻抗,也称输入阻抗。方程式含有两个未知量 ,根据故障的边界条件:由以上两个方程式解出:fz f fI fz f 有 源 网 络 ZN I fV (0)fV fZ Gj fifjii IZIV)0(ifI fifii )0( f)0(fZfI,fff Izffff zZVI)0(fI5而各节点初始电压 Gjjijiji zEZIV)0(求出 后,节点 i 电压fI )0()0()0( fffififiii VzZVIZV为了得到精确计算结果,本程序计算过程中,使用精确算法。任一支路的电流pqpqzVkI对于非变压器支
7、路,令 k=1 即可。程序主框图:6其中计算模块包含一个子流程图:7主要数据变量说明:程序中:n 节点数f 短路节点序号z 任意节点间阻抗矩阵g_z 发电机电抗矩阵g s 发电厂额定容量矩阵byqy 双绕组变压器参数矩阵byqy3 三绕组变压器参数矩阵sz 系统参数矩阵Z 网络节点阻抗矩阵Y 网络节点导纳矩阵If 短路点电流V 网络节点电压矩阵I 网络支路电流矩阵四、关键程序及程序注释8for i=1:n %以下生成节点导纳矩阵for j=1:nif z(i,j)=0Y(i,i)=Y(i,i)+1/z(i,j);endendend%考虑发电机参数影响for pp=1:p i=gz(pp,1);
8、Y(i,i)=Y(i,i)+1/sqrt(-1)/gz(pp,2);end%考虑系统参数影响for ss=1:s i=sz(ss,1);Y(i,i)=Y(i,i)+1/sqrt(-1)/sz(ss,2);endfor i=1:n %计算非对角线元素for j=i+1:nif z(i,j)=0Y(i,j)=0;else Y(i,j)=-1/z(i,j);endY(j,i)=Y(i,j);endend%考虑双绕组变压器参数影响for qq=1:q2 i=byqy(qq,1);j=byqy(qq,2);Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy(qq,4);Y(j,j)=Y(j,j)
9、+1/sqrt(-1)/byqy(qq,4);9Y(i,j)=Y(i,j)-1/sqrt(-1)/byqy(qq,4);Y(j,i)=Y(i,j);end%考虑三绕组变压器参数影响for qq3=1:q3 i=byqy3(qq3,1);j=byqy3(qq3,2);p=byqy3(qq3,3);q=byqy3(qq3,4);Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy3(qq3,8);Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy3(qq3,9);Y(p,p)=Y(p,p)+1/sqrt(-1)/byqy3(qq3,10);Y(q,q)=Y(q,q)+(1/byqy3
10、(qq3,8)+1/byqy3(qq3,9)+1/byqy3(qq3,10)/1i;Y(i,q)=Y(i,q)-1/sqrt(-1)/byqy3(qq3,8);Y(j,q)=Y(j,q)-1/sqrt(-1)/byqy3(qq3,9);Y(p,q)=Y(p,q)-1/sqrt(-1)/byqy3(qq3,10);Y(q,i)=Y(i,q);Y(q,j)=Y(j,q);Y(q,p)=Y(p,q);endZ=inv(Y);%计算短路点电流If=1/Z(f,f); %计算各节点电压for i=1:n V(i)=1-If*Z(i,f);end10for i=1:n %计算各支路电流for j=1:nI
11、(i,j)=(V(i)-V(j)/z(i,j);endend五、输入参数,以及输出计算结果与分析算例接线图1输入节点总数 n=10短路点序号 f=4发电机台数 p=4双绕组变压器数 q2=2系统数 s=1三绕组变压器数 q3=1线路数 x=511具体参数输入2输出数据及分析短路电流大小:If= -6.412600Y 矩阵如下32.619048 -33.333333 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -33.333333 28.797508 2.666667 1.869159 0.000
12、000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.666667 -2.666667 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.869159 0.000000 -8.790706 6.921547 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.921547 -20.112996 6.736451 6.454998 0.00
13、0000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.736451 -98.981476 82.245025 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.454998 82.245025 -95.298337 6.598314 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.598314 -10.234677 1.818182 1.818182
14、 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.818182 -2.651515 120.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.818182 0.000000 -2.651515Zif 如下0.516426 0.535359 0.535359 0.197708 0.106525 0.057251 0.060176 0.051292 0.035171 0.035171各节点电压为:U 1 = 0.316899
15、U 2 = 0.331537U 3 = 0.331537U 4 = 0.070494U 5 = 0.000000U 6 = 0.462564U 7 = 0.435105U 8 = 0.518503U 9 = 0.669831U 10 = 0.669831各支路电流 I 为0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.
16、000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.487930 0.000000 0.000000 0.000000 0.000000 0.000000 130.000000 0.000000 0.000000 0.487930 0.000000 3.116039 2.808605 0.000000 0.000000 0.000000 0.000000 0.
17、000000 0.000000 0.000000 -3.116039 0.000000 -2.258322 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.808605 2.258322 0.000000 0.550282 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.550282 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0
18、.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000实验的结果比较理想,与实际所算出的结果只有微小的误差,已经足以忽略不计了。六、设计体会通过对这次电力系统分析课程设计,我对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。刚开始进行的时候,感觉到根本无从下手,难度有点偏大,但是经过老师和同学的指导,我从图书馆借来相关的参考书来进行学习。Matlab 虽然
19、之前做电机课设的时候接触过,但是那次我用的是仿真功能,而这次用的是编程功能,在经过看书和实践操作后,我从人机界面的设计,到手动输入,到 Y 阵的生成,在到保存文件为 TXT 格式,每一步都要新的学习,每一步都是新的尝试。在后期的调试,将各个部分组成一个系统的程序,兼顾各个部分的兼容性,可以说实在一次次的尝试与失败中走过来的。在最后终于成功的那一刻,感觉之前的付出都是值得的。能够完成这次课程设计离不开老师和同学的帮助,我也会在以后的学习生活中更加努力。七、参考文献 【1】电力系统分析(上册) 何仰赞 温增银 ,华中科技大学出版社,2002【2】MATLAB GUI 设计学习手册 罗华飞 ,北京航
20、空航天大学, 2011【3】MATLAB 7.6 从入门到精通 张琨 毕靖 丛滨 ,电子工业出版社, 2009【4】精通 MATLAB 葛哲学 ,电子工业出版社, 2008八、附录(主程序及其注释)14Sb=100;Vb=115;n=str2num(get(handles.jiedian,String);f=str2num(get(handles.duanludian,String);p=str2num(get(handles.fdj,String);q2=str2num(get(handles.byq2,String);s=str2num(get(handles.xt,String);q3=
21、str2num(get(handles.byq3,String);x=str2num(get(handles.xl,String);%手动输入F=zeros(10,10);F=str2num(get(handles.jdz,String);G=zeros(10,10);G=str2num(get(handles.fdjz,String);H=zeros(10,10);H=str2num(get(handles.fdjs,String);% I=zeros(10,10);% I=str2num(get(handles.fdjv,String);J=zeros(10,10);J=str2num(g
22、et(handles.byq2z,String);K=zeros(10,10);K=str2num(get(handles.byqz3,String);L=ones(10,10);L=str2num(get(handles.xtz,String);global imagz;global z;global gz;global gs;global byqy;global byqy3;global sz;imagz=zeros(n,n);z=zeros(n,n);gz=zeros(p,2);gs=zeros(p,1);byqy=zeros(q2,4);byqy3=zeros(q3,10);sz=ze
23、ros(s,2);%标幺化线路阻抗for nn=1:x i=F(nn,1);j=F(nn,2);15imagz(i,j)=F(nn,3)*F(nn,4)*Sb/Vb2;imagz(j,i)=imagz(i,j);endz=sqrt(-1)*imagz;%标幺化发电机参数for pp=1:p gz(pp,1)=G(pp,1);gz(pp,2)=G(pp,2)/H(pp,1)*Sb;end%标幺化变压器参数for qq=1:q2 byqy(qq,1)=J(qq,1);byqy(qq,2)=J(qq,2);byqy(qq,4)=J(qq,4)/100*Sb/J(qq,3);end%标幺化三绕组变压器
24、参数for qq3=1:q3 byqy3(qq3,1)=K(qq3,1);byqy3(qq3,2)=K(qq3,2);byqy3(qq3,3)=K(qq3,3);byqy3(qq3,4)=K(qq3,4);byqy3(qq3,8)=1/2*(K(qq3,8)+K(qq3,9)-K(qq3,10)/100*Sb/K(qq3,5); byqy3(qq3,9)=1/2*(K(qq3,8)+K(qq3,10)-K(qq3,9)/100*Sb/K(qq3,6);byqy3(qq3,10)=1/2*(K(qq3,10)+K(qq3,9)-K(qq3,8)/100*Sb/K(qq3,7);end%标幺化系统
25、阻抗for ss=1:s sz(ss,1)=L(ss,1);sz(ss,2)=Sb/L(ss,2);end Y=zeros(n,n); %节点导纳矩阵V=zeros(n,1); %节点电压矩阵16I=zeros(n,n); %支路电流矩阵for i=1:n %以下生成节点导纳矩阵for j=1:nif z(i,j)=0Y(i,i)=Y(i,i)+1/z(i,j);endendend%考虑发电机参数影响for pp=1:p i=gz(pp,1);Y(i,i)=Y(i,i)+1/sqrt(-1)/gz(pp,2);end%考虑系统参数影响for ss=1:s i=sz(ss,1);Y(i,i)=Y
26、(i,i)+1/sqrt(-1)/sz(ss,2);endfor i=1:n %计算非对角线元素for j=i+1:nif z(i,j)=0Y(i,j)=0;else Y(i,j)=-1/z(i,j);endY(j,i)=Y(i,j);endend%考虑双绕组变压器参数影响for qq=1:q2 i=byqy(qq,1);j=byqy(qq,2);Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy(qq,4);Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy(qq,4);Y(i,j)=Y(i,j)-1/sqrt(-1)/byqy(qq,4);Y(j,i)=Y(i,j);end
27、17%考虑三绕组变压器参数影响for qq3=1:q3 i=byqy3(qq3,1);j=byqy3(qq3,2);p=byqy3(qq3,3);q=byqy3(qq3,4);Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy3(qq3,8);Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy3(qq3,9);Y(p,p)=Y(p,p)+1/sqrt(-1)/byqy3(qq3,10);Y(q,q)=Y(q,q)+(1/byqy3(qq3,8)+1/byqy3(qq3,9)+1/byqy3(qq3,10)/1i;Y(i,q)=Y(i,q)-1/sqrt(-1)/byqy3(qq
28、3,8);Y(j,q)=Y(j,q)-1/sqrt(-1)/byqy3(qq3,9);Y(p,q)=Y(p,q)-1/sqrt(-1)/byqy3(qq3,10);Y(q,i)=Y(i,q);Y(q,j)=Y(j,q);Y(q,p)=Y(p,q);endZ=inv(Y);%计算短路点电流If=1/Z(f,f); %计算各节点电压for i=1:n V(i)=1-If*Z(i,f);endfor i=1:n %计算各支路电流for j=1:nI(i,j)=(V(i)-V(j)/z(i,j);endend%全部求模,便于显示Y=imag(Y); Z=imag(Z);If=imag(If);I=im
29、ag(I);18%显示电流、电压等结果set(handles.If,String,num2str(If); set(handles.dianliu,Data,I);set(handles.dianya,Data,V);set(handles.y,Data,Y);set(handles.z,Data,Z);n=str2num(get(handles.jiedian,String);f=str2num(get(handles.duanludian,String);p=str2num(get(handles.fdj,String);q=str2num(get(handles.byq2,String)
30、;s=str2num(get(handles.xt,String);q3=str2num(get(handles.byq3,String);global imagz;global z;global gz;global gs;global gv;global byqy;global byqy3;global sz;ge=gz gs gv;If=str2num(get(handles.If,String); I=get(handles.dianliu,Data);V=get(handles.dianya,Data);Y=get(handles.y,Data);Z=get(handles.z,Dat
31、a);filename, pathname = uiputfile(*.txt,txt-files(*.txt),保存txt,Result.txt);if filename=0msgbox(您未选择保存!,对话框,warn); returnelse msgbox(保存成功!,对话框,help);endfilename=pathname,filename;fid=fopen(filename,wt); %获得打开文件的返回值,功能类似于指针fprintf(fid,n%sn,短路计算结果为:);fprintf(fid,n%sn,Y 矩阵如下);for i=1:nfor j=1:nfprintf(f
32、id,%f ,Y(i,j);end19fprintf(fid,n);endfprintf(fid,n%sn,Zif 如下);for i=1:nfprintf(fid,%f ,Z(i,1);fprintf(fid,n);endfprintf(fid,n%s %fn,短路电流大小:If=,If);fprintf(fid,n%sn,各节点电压为:);for i=1:nfprintf(fid,%s %d %s %ft,U,i,=,V(i);endfprintf(fid,n);fprintf(fid,n%sn,各支路电流 I 为)for i=1:nfor j=1:nfprintf(fid,%f ,I(i,j);endfprintf(fid,n);endfclose(fid);20评分一览表:答辩成绩45%输入输出数据10%人机界面15%课设报告25%按时完成5% 总分指导老师签字: 年 月 日