版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年6月23日华中科技大学电力系统分析课程设计报告基于matlab的短资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。-第二学期课程设计电力系统短路故障的计算机算法程序设计姓名学号班级指导教师张凤鸽目录一、课程设计说明……………3二、选择所用计算机语言的理由……………3三、程序主框图、子框图及主要数据变量说明……………5四、三道计算题及网络图…………………9五、设计体会…………………21六、参考文献…………………22七、附录(主程序及其注释)………………23
电分课设报告一、课程设计说明根据所给的电力系统,编制短路电流计算程序,经过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。经过自己设计电力系统短路计算的程序,加深对电力系统短路计算的理解,同时培养自己在计算机编程方面的能力,提示自我的综合素质。短路电流(short-circuitcurrent)电力系统在运行中,相与相之间或相与地(或中性线)之间发生非正常连接(即短路)时流过的电流。其值可远远大于额定电流,并取决于短路点距电源的电气距离。例如,在发电机端发生短路时,流过发电机的短路电流最大瞬时值可达额定电流的10~15倍。大容量电力系统中,短路电流可达数万安。这会对电力系统的正常运行造成严重影响和后果。三相系统中发生的短路有4种基本类型:三相短路,两相短路,单相对地短路和两相对地短路。其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。因此我们先研究最简单的三相短路电流的暂态变化规律。二、选择所用计算机语言的理由MATLAB是一套功能强大的工程计算软件,被广泛的应用于自动控制、机械设计、流体力学和数理统计等工程领域。工程技术人员经过使用MATLAB提供的工具箱,能够高效的求解复杂的工程问题,并能够对系统进行动态的仿真,用强大的图形功能对数值计算结果进行显示。MATLAB是必备的计算与分析软件之一,也是研究设计部门解决工程计算问题的重要工具。我这次选用的是MATLABR2009b计算软件。MATLAB实现的优势:MATLAB语言有不同于其它高级语言的特点,被称为第四代计算机语言。正如第三代计算机语言如FORTRAN与C等使人们摆脱了对计算机硬件的操作一样,MATLAB语言使人们从繁琐的程序代码中解放出来。它的丰富的函数是开发者无需重复编程,只要简单地调用和使用即可。MATLAB语言最大的特点是简单和直接。MATLAB语言的主要特点有:1.编程效率高MATLAB语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列公式与求解问题。因此,也可通俗地称MATLAB语言为演算纸式科学算法语言。由于它编程简单,因此编程效率高,易学易懂。2.高效方便的矩阵和数组运算MATLAB语言像BASIC、FORTRAN和C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分能够毫无改变的照搬到数组建的运算中。有些如算术运算符只要增加”.”就能够用于数组建间的运算。另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解数字图像处理问题时显得大为简洁、高效、方便,这是其它高级语言所不能相比的。3.用户使用方便MATLAB语言是一种解释执行的语言(在没有被专门的工具编译之前),它灵活、方便,起跳时程序手段丰富,调试速度快,需要学习时间少。人们用任何一种语言编程和调试一般都要经过四个步骤:编辑、编译、连接,以及执行和调试。各个步骤之间是顺序关系,编程的过程就是在她们之间作瀑布型的循环。MATLAB语言与其它语言相比,较好的解决了上述问题,把编辑、编译、连接和执行融为一体。它能在同一画面上进行灵活操作,快速排除输入程序的书写错误、语法错误甚至语义错误,从而加快了用户编写、修改和调试程序的速度,能够说在编程和调试过程中它是一种比VB还要简单的语言,更不用谈C和C++。4.扩充性强,交互性好MATLAB语言有丰富的库函数,在进行复杂的数学运算时能够直接调用,且这些库函数同用户文件在形式上一样,因此用户文件也能够作为MATLAB的库函数来调用。婴儿,用户能够根据自己的需要方便的建立和扩充新的库函数,提高MATLAB使用效率和扩充它的功能。另外,为了充分利用FORTRAN、C等语言的资源,包括用户自己编好的FORTRAN、C语言程序,经过建立M文件的形式,混合编程,方便地调用有关的FORTRAN、C语言子程序,还能够在C语言和FORTRAN语言中方便的使用MATLAB的数值计算功能。良好的交互性增加了代码的重用性。综上所述,MATLAB最适用的范围是科学计算,对于本文需要处理矩阵运算来实现图像处理算法来说,MATLAB再合适不过了。MATLAB实现的缺点:然而,较之于C语言MATLAB也有自己的劣势。1.循环运算效率低MATLAB中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其它语言难以相比的高效率,可是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当复杂.解决的办法之一是尽量发掘处理数据中的向量特征。另一种办法是利用MATLAB的扩展特性,将迭代过程和其它的循环过程放在”低级”语言中来实现。2.封装性不好一方面,所有的变量均保存在公共工作区中,任何语句都能够调用。另一方面作为一件完备的软件,而不是实现算法的程序,编程人员需要花相对多的时间考虑如何设计用户界面。虽然,MATLAB提供了一定量的交互界面制作途径如GUI等,可是作为一件真正的商品,最终的代码将不可避免的移植到较为”低级”的语言中,例如C、C++。综合MATLAB的优劣,选择MATLAB作为编程的平台,实际上是编程效率和程序运行效率两者之间的妥协。在现阶段,对图象处理后的运行结果有严格要求,而对运行时间没有特别的限定。因此选择MATLAB来编程便无可厚非了。而更重要的是,由于MATALAB编程简单易行,我们能够很方便的对现有的算法进行改进。作者在编程的过程中充分体会到了这一优势。三、程序主框图、子框图及主要数据变量说明算法说明:利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点f经过过渡阻抗发生短路。对于正常状态的网络而言,发生短路相当于在故障节点f增加了一个注入电流。因此,网络中任一节点i的电压可表示为: 由式可见,任一节点电压i的电压都由两项叠加而成。第一项是当时由网络内所有电源在节点i产生的电压,也就是短路前瞬间正常运行状态下的节点电压,记为。第二项是当网络中所有电流源都断开,电势源都短接时,仅仅由短路电流在节点i产生的电压。这两个分量的叠加,就等于发生短路后节点i的实际电压,即公式二公式二也适用于故障节点f,于是有是故障节点f的自阻抗,也称输入阻抗。方程式含有两个未知量,根据故障的边界条件:由以上两个方程式解出:而各节点初始电压求出后,节点i电压为了得到精确计算结果,本程序计算过程中,使用精确算法。任一支路的电流对于非变压器支路,令k=1即可。图一程序主框图
图二程序子流程图主要数据变量说明:程序中:n节点数f短路节点序号z任意节点间阻抗矩阵g_z发电厂阻抗矩阵g_v发电厂电压矩阵louy网络漏抗导纳矩阵Z网络节点阻抗矩阵Y网络节点导纳矩阵If短路点电流V网络节点电压矩阵I网络支路电流矩阵A文件导入时存入的矩阵名称p发电机阻抗矩阵存放在A中的行序号,因此p-1就是发电机台数Q漏抗导纳矩阵存放在A中的行序号,因此q-1就是漏抗数四、三道计算题及网络图①例题6-3图三题6—3电路图其中3号节点发生三相短路。输入数据及说明:节点总数n=5短路节点序号f=3输入节点间阻抗矩阵Inf0.1050InfInfInf0.1050Inf0.06500.0800InfInf0.0650Inf0.0500InfInf0.08000.0500Inf0.1840InfInfInf0.1840Infz=j*发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)10.1500150.22001g_z=输出数据及说明:短路点电流-5.3767各支路电流矩阵03.2321000-3.232102.70460.527500-2.70460-2.672000-0.52752.67200-2.14450002.14450I=j*各节点电压矩阵0.51520.175800.13360.5282V=-16.19059.52380009.5238-37.408415.384612.50000015.3846-35.3846200012.500020-37.93485.43480005.4348-9.9802节点导纳矩阵Y=j*0.11810.09580.09020.08580.04670.09580.16290.15330.14590.07940.09020.15330.18600.16110.08770.08580.14590.16110.17290.09410.04670.07940.08770.09410.1515节点阻抗矩阵Z=j*
图四题6—3软件界面显示图五题6—3输出结果显示②习题6-10图六题6—10电路图其中节点5发生三相短路输入数据及说明:节点总数n=5短路节点序号f=5InfInf0.1050InfInfInfInfInf0.2100Inf0.1050InfInf0.43550.2904Inf0.21000.4355Inf0.2541InfInf0.29040.2541Inf输入节点间阻阵z=j*发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)10.23001.050020.28001.0500g_z=漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)30.030940.023150.0293louy=输出数据及说明:短路点电流-3.1246各支路电流矩阵00-1.751600000-1.349101.751600-0.1705-1.595301.34910.17050-1.5310001.59531.53100I=j*各节点电压矩阵0.64710.67230.46320.38900V=-13.871609.5238000-8.333304.761909.52380-15.23302.29603.444004.76192.2960-10.96473.9361003.44403.9361-7.3569节点导纳矩阵Y=j*节点阻抗矩阵0.18190.06160.16000.10790.13260.06160.20780.08980.15360.12420.16000.08980.23300.15710.19320.10790.15360.15710.26890.21740.13260.12420.19320.21740.3427Z=j*图七题6—10软件界面显示图八题6—10输出结果显示③习题6-11图九题6—11电路图其中节点3发生三相短路。输入数据及说明:节点总数n=3短路节点序号f=3输入节点间阻抗矩阵Inf0.Inf0.Inf0.1000Inf0.1000Infz=j*发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)10.1.050030.15001.0500g_z=漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)20.50003-1louy=输出数据及说明:短路点电流-9.1875各支路电流矩阵0-2.078102.07810-2.187502.18750I=j*各节点电压矩阵0.63440.21870V=节点导纳矩阵-10505-14.500010010-17.6667Y=j*节点阻抗矩阵0.13940.07890.04460.07890.15770.08930.04460.08930.1071Z=j*图十题6—11软件界面显示图十一题6—11输出结果显示五、设计体会这次电分课设的主题是电力系统短路故障的计算机算法程序设计,我选择了对称短路计算来研究。经过不懈努力与完善,最终形成的可执行文件能够对各种简单电力网络的对称短路故障进行分析计算,取得了较为满意的效果。我编写了9个回流函数,分别执行不同的功能:1.读取函数select_file:读取.csv文件,读取成功有提示。确定参数矩阵后,在右上侧显示各种已知参数。各种读取结果申公共。2.计算函数calculate_start:精确算法,计算完毕将结果显示在右下侧。各种计算结果申公共。3.导入函数input1:可任意修改短路点序号、小z矩阵,手动导入过程人性化。4.导入函数input2:可任意修改发电厂阻抗矩阵。5.导入函数input3:能够任意修改发电厂电压矩阵。6.导入函数input3:能够任意修改漏抗导纳矩阵。经过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。7.存储函数save_result_txt:详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。电力系统分析课程设计是一项很有挑战性的工作。在选择这个课程设计之前,我就听学长说电力系统分析课程设计的难度,可是为了锻炼自己的能力,我还是迎难而上,选择了电力系统分析的课程设计。在期末考试结束后,我就开始着手准备课程设计。经过了再三比较候,我选择了MATLAB作为编程的语言,以前虽然接触过MATLAB,但接触的不深,只是用MATLAB画一些简单的图形之类的,这次用MATLAB语言开发软件,确实有相当大的难度。从最开始从图书馆借书,上网上查找MATLABGUI的相关资料,一步步的深入,也开始意识到课程设计的难度所在。一开始完全无从下手,纠结了好几天完全不知所云,后来在网上找到了MATLAB中文论坛和罗华飞老师编写的MATLABGUI设计学习手记,才开始对MATLABGUI有一些最初的了解,可能是灵光一闪,就突然对MATLABGUI设计有了一些感觉,从CSV文档的输入,到手动输入,从将文件读取的计算,在到保存文件为TXT格式,每一步都走得异常苦难,特别是后期的调试,将各个部分组成一个系统的程序,兼顾各个部分的兼容性,可是说是经历过一次次失败之后才走向成功的。过程是艰辛的,结果是令人满意的,大约花了两个星期的时间,我终于将软件成功的设计了出来,在调试成功的那一刻,我分外高兴,认为自己做了一件特别有意义的事情,回首这段时间,要感谢老师的悉心指导,一同做课程设计同学的悉心帮助,没有你们,我的课程设计就不可能完成,在此,像老师和同学们表示感谢。六、参考文献(1)、电力系统分析(上册)何仰赞温增银,华中科技大学出版社,(2)、MATLABGUI设计学习手记罗华飞,北京航空航天大学,(3)、MATLAB程序设计与应用张智星,清华大学出版社,(4)、MATLAB电力系统设计与分析吴天明,国防工业出版社,
七、附录(主程序及其注释)1.读取函数select_file:读取.csv文件,读取成功有提示。确定参数矩阵后,在右上侧显示各种已知参数。各种读取结果申公共。2.导入函数input1:可任意修改短路点序号、小z矩阵,手动导入过程人性化。3.导入函数input2:可任意修改发电厂阻抗矩阵。4.导入函数input3:能够任意修改发电厂电压矩阵。5.导入函数input3:能够任意修改漏抗导纳矩阵。经过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。6.计算函数calculate_start:精确算法,计算完毕将结果显示在右下侧。各种计算结果申公共。7.存储函数save_result_txt:详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。1、文件导入模块:[filename,pathname]=uigetfile({'*.csv','csv-files(*.csv)'},'选择文件');iffilename==0msgbox('您未成功选择.csv文件!','对话框','warn');returnelsemsgbox('成功载入!请继续操作!','对话框','help');endfilename=[pathname,filename];%带有路径的文件名A=csvread(filename);%从文件中读入各种网络参数ifA(9,1)~=0imagz=zeros(10,10);forw=2:10%以下步骤为确定节点间阻抗矩阵在A中的最大行数ifA(w,1)==0%如果某元素为0,则减一得到最终值w=w-1;break;endendimagz=A(1:w,:);set(handles.imagz,'Data',imagz);handles.imagz=imagz;g_z=zeros(10,10);g_z=A(7:8,1:2);set(handles.g_z,'Data',g_z);handles.g_z=g_z;g_v=zeros(10,10);g_v=A(7:8,3:3);set(handles.g_v,'Data',g_v);handles.g_v=g_v;loukang=handles.loukang;louy=handles.louy;loukang=zeros(10,10);ifA(11,1)~=0loukang=A(9:11,1:2);elseloukang=A(9:10,1:2);endset(handles.louy,'Data',loukang);handles.louy=louy;handles.loukang=loukang;elseimagz=zeros(10,10);forw=2:10%以下步骤为确定节点间阻抗矩阵在A中的最大行数ifA(w,1)==0%如果某元素为0,则减一得到最终值w=w-1;break;endendimagz=A(1:w,:);set(handles.imagz,'Data',imagz);handles.imagz=imagz;g_z=zeros(10,10);g_z=A(7:8,1:2);set(handles.g_z,'Data',g_z);handles.g_z=g_z;g_v=zeros(10,10);g_v=A(7:8,3:3);set(handles.g_v,'Data',g_v);handles.g_v=g_v;loukang=handles.loukang;louy=handles.louy;loukang=zeros(1,1);set(handles.louy,'Data',loukang);handles.louy=louy;handles.loukang=loukang;endguidata(hObject,handles);2、手动录入模块:又细分为四个模块:(1)、节点间阻抗录入:imagz=handles.imagz;A=ones(10,10);A=str2num(get(handles.edit2,'String'));set(handles.imagz,'Data',A);z=zeros(10,10);handles.imagz=imagz;%更新参数矩阵z=sqrt(-1)*imagz;handles.z=z;(2)、发电机阻抗录入g_z=handles.g_z;B=ones(10,10);B=str2num(get(handles.fadian,'String'));set(handles.g_z,'Data',B);handles.g_z=g_z;(3)、发电机电压录入g_v=handles.g_v;C=ones(10,10);C=str2num(get(handles.fadianv,'String'));set(handles.g_v,'Data',C);handles.g_v=g_v;(4)、节点漏抗导纳录入louy=handles.louy;loukang=handles.loukang;H=ones(10,10);H=str2num(get(handles.loukang,'String'));set(handles.louy,'Data',H);handles.louy=louy;handles.loukang=loukang;3、计算模块:j=str2num(get(handles.judge,'String'));ifj==1F=str2num(get(handles.edit2,'String'));z=zeros(10,10);z=sqrt(-1)*F;G=zeros(10,10);G=str2num(get(handles.fadian,'String'));g_z=G;H=zeros(10,10);H=str2num(get(handles.fadianv,'String'));g_v=H;S=zeros(10,10);S=str2num(get(handles.loukang,'String'));loukang=S;elseimagz=handles.imagz;%读取各类参数g_z=handles.g_z;g_v=handles.g_v;loukang=handles.loukang;z=sqrt(-1)*imagz;endn=str2num(get(handles.jiedian,'String'));%n与f直接从文本框中提取f=str2num(get(handles.duanludian,'String'));p=str2num(get(handles.p,'String'));q=str2num(get(handles.q,'String'));Y=zeros(n,n);%节点导纳矩阵V=zeros(1,n);%节点电压矩阵I=zeros(n,n);%支路电流矩阵IO=zeros(1,n);%发电机支路电流矩阵fori=1:n%以下生成节点导纳矩阵forj=1:nifz(i,j)~=0Y(i,i)=Y(i,i)+1/z(i,j);endendendifq>1%考虑漏抗导纳影响forqq=1:q-1i=loukang(qq,1);Y(i,i)=Y(i,i)+sqrt(-1)*loukang(qq,2);endendforpp=1:p-1%考虑发电机影响i=g_z(pp,1);Y(i,i)=Y(i,i)-sqrt(-1)/g_z(pp,2);IO(i)=-sqrt(-1)*g_v(pp)/g_z(pp,2);endfori=1:n%计算非对角线元素forj=i+1:nifz(i,j)==0Y(i,j)=0;elseY(i,j)=-1/z(i,j);endY(j,i)=Y(i,j);endendZ=inv(Y);%节点阻抗矩阵生成fori=1:n%计算各节点初始电压forpp=1:p-1j=g_z(pp,1);V(i)=V(i)+Z(i,j)*IO(j);endendIf=V(f)/Z(f,f);%计算短路点电流fori=1:n%计算各节点电压V(i)=V(i)-If*Z(i,f);ifabs(V(i))<1*10^-6%对于短路点能够认为其电压为0V(i)=0;endendfori=1:n%计算各支路电流forj=1:nI(i,j)=(V(i)-V(j))/z(i,j);endendY=imag(Y);%全部求模,便于显示Z=imag(Z);If=imag(If);I=imag(I);set(handles.If_disp,'String',num2str(If));%显示电流、电压等结果set(handles.current,'Data',I);set(handles.voltage,'Data',V');set(handles.y,'Data',Y);set(handles.z,'Data',Z);handles.If=If;%存储,为其它函数调用做准备handles.I=I;handles.V=V;handles.Y=Y;handles.Z=Z;guidata(hObject,handles);4、保存结果模块保存为txt,有文字注释:j=str2num(get(handles.judge,'String'));ifj==1F=str2num(get(handles.edit2,'String'));imagz=zeros(10,10);imagz=F;z=zeros(10,10);z=sqrt(-1)*F;G=zeros(10,10);G=str2num(get(handles.fadian,'String'));g_z=G;H=zeros(10,10);H=str2num(get(handles.fadianv,'String'));g_v=H;gg=[g_zg_v];n=str2num(get(handles.jiedian,'String'));%n与f直接从文本框中提取f=str2num(get(handles.duanludian,'String'));p=str2num(get(handles.p,'String'));q=str2num(get(handles.q,'String'));If=handles.If;I=handles.I;V=handles.V;Y=handles.Y;Z=handles.Z;L=ones(10,10);L=str2num(get(handles.loukang,'String'));loukang=L;elsen=str2num(get(handles.jiedian,'String'));%读取各种网络参数和计算结果f=str2num(get(handles.duanludian,'String'));p=str2num(get(handles.p,'String'));g_z=handles.g_z;g_v=handles.g_v;gg=[g_zg_v];loukang=handles.loukang;q=str2num(get(handles.q,'String'));imagz=handles.imag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州建筑设计院有限责任公司招聘5人笔试历年常考点试题专练附带答案详解
- 2025甘肃省物产集团有限责任公司引进年轻人才26人笔试历年难易错考点试卷带答案解析
- 2025浙江金华智尚人才开发有限公司招聘驾驶员路考笔试历年典型考点题库附带答案详解
- 2025浙江杭州桐庐县铁路建投公开招聘国有企业编制工作人员4人笔试历年难易错考点试卷带答案解析
- 2025江西九江德安六能新能源汽车服务有限公司招聘拟聘用人员笔试历年常考点试题专练附带答案详解
- 2025奇瑞汽车股份有限公司社会招聘928笔试历年常考点试题专练附带答案详解
- 2025四川广安交旅集团第二批次招聘4人笔试历年常考点试题专练附带答案详解
- 2025中国葛洲坝集团勘测设计有限公司招聘笔试历年备考题库附带答案详解
- 2026安徽六安市市直学校引进紧缺学科教师和体育教练员2人(六安一中东校区)模拟试卷附参考答案详解(综合卷)
- 2026新疆兵团兴新职业技术学院第一批次面向社会招聘事业编工作人员26人笔试题库带答案详解(轻巧夺冠)
- 山东省烟台市2025-2026学年高一下学期7月期末地理试题(文字版含答案)
- 医疗废弃物综合监管平台建设方案
- 人教版五年级语文上册阅读理解训练(15篇)
- 2025年甘肃省金昌市公务员招聘考试试题及答案详解
- 2026年70岁老年人三力测试能力考试题库附答案
- T∕CNLIC 0201-2025 油墨和粘合剂空桶综合利用技术规范
- 2026人教版三年级下册数学期末水平检测卷(一)
- 消防安全四懂四会知识培训
- 光伏电站运维交接实施方案
- 2026五年高考英语真题高频800核心词汇(完整版可直接打印背诵)
- 2026年郑州消防文员考试试题及答案
评论
0/150
提交评论