1、电力系统分析课程设计电力系统短路故障的计算机算法程序设计姓 名_刘佳琪_学 号_2014409436_班 级_20144094_指导教师_鲁明芳_目录1 目的与原理 11.2 关于电力系统短路故障的计算机算法程序设计目的 11.2 设计原理 11.2.1 计算机计算原理 11.2.2 电力系统短路计算计算机算法 22 计算机编程环境及编程语言的选择 22.1 优势特点 22.1.1 编程环境 32.1.2 简单易用 32.1.3 强处理能力 32.1.4 图形处理 32.1.5 模块集和工具箱 42.1.6 程序接口 42.1.7 应用软件开发 43 对称故障的计算机算法 53.1 用阻抗矩阵
2、计算三相短路电流 73.2 用节点导纳矩阵计算三相短路电流 94 附录 程序清单 144.1 形成节点导纳矩阵 144.2 形成节点阻抗矩阵 154.2 对称故障的计算 171 目的与原理1.1 关于电力系统短路故障的计算机算法程序设计目的电力系统正常运行的破坏多半是由于短路故障引起的,发生短路时,系统从一种状态剧变成另一种状态,并伴随复杂的暂态现象。所谓短路故障,是指一切不正常的相与相之间或相与地发生通路的情况。本文根据电力系统三相对称短路的特点,建立了合理的三相短路的数学模型,在此基础上, 形成电力系统短路电流实用计算方法;节点阻抗矩阵的支路追加法。编制了对任意一个电力系统在任意点发生短路
3、故障时三相短路电流及其分布的通用计算程序,该办法适用于各种复杂结构的电力系统。从一个侧面展示了计算机应用于电力系统的广阔前景。根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。通过自己设计电力系统计算程序使同学对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。电力系统的短路故障是严重的,而又是发生几率最多的故障,一般说来,最严重的短路是三相短路。当发生短路时, 其短路电流可达数万安以至十几万安,它们所产生的热效应和电动力效应将使电气设备遭受严重破环。为此,当发生短路时,继电保护装置必须迅速切除故障线路,以避免故障部分继续遭受危
4、害,并使非故障部分从不正常运行情况下解脱出来,这要求电气设备必须有足够的 机械强度和热稳定度,开关电气设备必须具备足够的开断能力,即必须经得起可能最大短路的侵扰而不致损坏。因此,电力系统短路电流计算是电力系统运行分析,设计计算的重要环节,许多电业设计单位和个人倾注极大精力从事这一工作的研究。由于电力系统结构复杂,随着生产发展,技术进步系统日趋扩大和复杂化,短路电流计算工作量也随之增大,采用计算机辅助计算势在并行。1.2 设计原理1.2.1 计算机计算原理应用计算机进行电力系统计算,首先要掌握电力系统相应计算的数学模型;其次是运用合理的计算方法;第三则是选择合适的计算机语言编制计算程序。建立电力
5、系统计算的相关数学模型,就是建立用于描述电力系统相应计算的有关参数间的相互关系的数学方程式。该数学模型的建立往往要突出问题的主要方,即考虑影响问题的主要因素,而忽略一些次要因素,使数学模型既能正确地反映实际问题,又使计算不过于复杂。运用合理的计算方法,就是要求所选用的计算方法能快速准确地得出正确结果,同时还应要求在解算过程中占用内存少,以利于提高计算机的解题规模。选择合适的语言编写程序,就是首先确定用什么计算机语言来编制程序;其次是做出计算的流程图;第三根据流程图用选择的语言编写计算程序。然后上机调试,直到语法上无错误。所编制的程序难免存在逻辑错误。因此先用一个已知结果的系统作为例题进行计算。
6、用程序计算的结果和已知结果相比较,如果结果相差甚远就要逐步分析程序的计算步骤,查出问题的出处;如果结果比较接近,则逐步分析误差来源;直到结果正确为止。最后将所编制出的正确计算程序,用于电力系统的实际计算。1.2.2 电力系统短路计算计算机算法一般在电力系统短路计算中,多数情况下只要计算短路电流、电压的周期分量起始值。因此,电力系统短路电流计算的数学模型,可归结为求解短路故障初始状态下的等值电路稳态解的问题。对于三相对称短路,可建立一相等值电路的计算模型,对于不对称短路,则可应用对称分量法建立系统的正、负、零序网络,从而建立故障计算的序网络模型。2 计算机编程环境及编程语言的选择本课程设计采用数
7、学建模软件 MATLAB2015a 为主要设计工具。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完成相同的事情简捷得多,并且 MATLAB 也吸收了像 Maple 等软件的优点,使 MATLAB 成为一个强大的数学软件。在新的版本中也加入了对 C,FORTRAN,C+,JAVA 的支持。2.1 优势特点1
8、) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。2.1.1 编程环境MATLAB 由一系列工具组成。这些工具方便用户使用 MATLAB 的函数和文件,其中许多工具采用的是图形用户界面。包括 MATLAB 桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着 MATLAB 的商业化以及软件本身的
9、不断升级,MATLAB 的用户界面也越来越精致,更加接近Windows 的标准界面,人机交互性更强,操作更简单。而且新版本的 MATLAB 提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。2.1.2 简单易用MATLAB 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M 文件)后再一起运行。新版本的 MATLAB 语言是基于最为流行的 C+
10、语言基础上的,因此语法特征与 C+语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是 MATLAB 能够深入到科学研究及工程计算各个领域的重要原因。2.1.3 强处理能力MATLAB 是一个包含大量计算算法的集合。其拥有 600 多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如 C 和 C+ 。在计算要求相同的情况下,使用 MATLAB 的编程工作
11、量会大大减少。MATLAB 的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。2.1.4 图形处理MATLAB 自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的 MATLAB 对整个
12、图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等) ,MATLAB 同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB 也有相应的功能函数,保证了用户不同层次的要求。另外新版本的 MATLAB 还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。2.1.5 模块集和工具箱MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域
13、的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI 控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP 与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。2.1.6 程序接口新版本的 MATLAB 可以利用 MATLAB 编译器和 C/C+数学库和图形库,将自己的MATLAB 程序自动转换为独立于 MATLA
14、B 运行的 C 和 C+代码。允许用户编写可以和MATLAB 进行交互的 C 或 C+语言程序。另外,MATLAB 网页服务程序还容许在 Web 应用中使用自己的 MATLAB 数学和图形程序。MATLAB 的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是 MATLAB 函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。2.1.7 应用软件开发在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注
15、和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向 Excel 和 HDF5 进行连接。3 对称故障的计算机算法对称故障是指三相短路故障。这里首先通过一个简单的例子进行说明。右图(a)所示的电力系统有三条母线,标为,其等值电路如图(b)所示,图中 xc1、xc2、x c3 代表和该母线连接的输电线的容抗总和,Z L 代表母线的负荷阻抗,Z f 代表故障阻抗,故障发生在母线。图(b)也可简化为图(c)所示,是一个有三个节点的有源网络,1、 2、 3 是节点电压, 1、 2、 3 是节点注入电 流,故障阻抗 Zf 是外加到节点的三相对称阻抗,当 Zf = 0 时,代表三相直接短路。右图
16、(c)也可以看成是有三个端口的有源网络,每个节点与零电位点构成一个端口,按叠加定理可以通过阻抗型参数方程或导纳型参数方程来表示其电压和电流的关系。以下分别进行叙述。图 3.1 电力系统接线网络及简化网络3.1 用阻抗矩阵计算三相短路电流图 16.2(c)网络的阻抗型参数方程如下:(3.1)式中, 1(0)、 2(0)、 3(0)为各节点的开路电压(也即注入电流 1 = 2 = 3 = 0 时各节点 的电压) ,开路电压可由正常运行的潮流计算求得。近似计算中,则设各节点开路电压标幺值为 1.0。阻抗矩阵中的各元素 Z11、Z 12、Z 13、等,为各节点的自阻抗和各节点之间的互阻抗,据自、互阻抗
17、的物理意义可以确定其数值如下: 23 1311200 ,I IUUZ 其余类推。当在节点发生三相故障时,相当于在节点接上故障阻抗 Zf,流过 Zf 的故障电流 f,其参考方向如图 16.2(c)所示,其他节点没有外接电路,所以其注入电流为零,因此节点故障时的边界条件是(3.2)将公式(3.1)与(3.2)联立求解,得 3(0) 3(0)313233f fUZIIZIUZIUZI(3.3)公式(3.3)就是计算故障电流的数学模型。当 Zf 给定时,只要知道故障点的开路电压 3(0)和1(0)12131 2()2 230)3 3312 UZUII (3123, , f fIII()3f fI自阻抗
18、 Z33 就可以算出 f。求出 f 后代入公式(3.1)可求得各节点的电压为 1(0)13 2()2 3(0)3fffUZII将上述关系推广到有 n 个节点的电力系统,则其阻抗型参数方程为(3.4)设在节点 k 发生三相故障,故障阻抗为 Zf 时,其边界条件(3.5)联立求解式(3.4)和(3.5),得(3.6)故障电流求出后,代入式(3.4)求出各节点电压(3.7)各节点电压求得后,可按下式求各支路电流(3.8)式中, 为连接节点 i 与节点 j 的支路阻抗。在略去输电线电容电流的条件下,支路电流也就是输电线电流。1 1(0)1121 2()2 22 (0)12 0)12 knkkkkknn
19、nnknn IUZZUZZIUUI ( , , 0, 1,2()kfkfjZIIjnjk(0)kf fUIZ (0) , 1,23,iiikfUIinijijijUIZ公式(3.6)、(3.7)、(3.8)就是计算三相故障的基本数学模型,从式中看到当 给定后,只需知道节点的开路电压 k(0)和阻抗矩阵中的元素 ,就可以求出需要的结果。 节点的开路电压可以由正常的潮流计算得出,阻抗矩阵中的所有元素可以用支路追加法求得。当这些量都已求出并储存于计算机中,计算短路电流的工作就很简单。要计算任一节点的短路电流和电压、电流分布时,只要按上述公式编好程序,取出有关的开路电压,有关的自阻抗、互阻抗进行计算便
20、可。通常利用支路追加法可直接形成节点阻抗矩阵。3.2 用节点导纳矩阵计算三相短路电流导纳矩阵易于形成,而且是稀疏矩阵,所以占用计算机的内存容量少,因此常利用导纳矩阵来计算短路电流。直接利用导纳矩阵的元素来计算并不方便,实际的做法是利用已知的导纳矩阵来求出阻抗矩阵中的有关元素,然后仍然利用前述公式(3.6)、(3.7)、(3.8)来进行计算。一个网络的导纳矩阵与其阻抗矩阵存在互为逆矩阵的关系,所以一种方法是将导纳矩阵直接求逆,得出阻抗矩阵。但当矩阵的阶数大时这样做计算量大,所以常用下面的方法。当计算 k 点的短路电流时,从公式(3.6)、(3.7)、(3.8)看到所需的阻抗矩阵元素是 , , ,
21、 , ,而按定义1 2 0 1,2, , iikjIinUZ jkj当 k = 1 时, = ,也就是在 k 点注入单位电流,而其他节点注人电流都为零时,则 i节点 k 的电压值就等于其自阻抗 ,其他各节点的电压值就等于各节点与节点 k 之间的互阻抗 。因此只要在计算机上进行下面的一次线性方程组的求解,就可以算出各i节点的电压值(3.9)111111 0 =10knkkkknknnknnUYYIYYU 解出的各点电压值就等于所需的阻抗值(3.10)图 3.2 给出了三相短路计算的原理框图。例 3.1 如图 3.3 所示网络,母线发生三相直接短路,试作下列计算:(1)母线的故障电流。(2)故障后
22、母线 1、2 的电压。各元件参数如下:发电机 G1,100MVA;G2,200MVA。额定电压均为 10.5 kV,次暂态电抗 *均为 0.2。变压器 T1,100MVA;T2,200MVA。变比均为 10.5kV/115kV,短路电压百分数均为 10。电力线路 三条电力线路(L1、L2、L3) 参数均为 115kV,60km,电抗 =0.44/km, 图 3.2 三相短路计算的原理框图1电容 。1=0.008106 /负荷 LD1,50MW, ;LD2,100MW, 。cos=0.985 cos=1解:元件参数的标幺值注于简化等值电路网络图 3.4 中(元件参数的计算、网络的简化略),首先据
23、图 16.4 电路所示,形成节点导纳矩阵。11 =kkknnkZUUZ图 3.3 例 3.1 图 图 3.4 例 3.1 简化等值电路1*23*123*2126.70.5.0.371200.1.0.YjjjjjYjj网络节点导纳矩阵为 *6.71 10 3.0 2BjjjYjjj 然后,对 求逆或解线性方程组,得节点阻抗矩阵为 *0.73 .08 6.5 8472.5 . .10 BjjjZjjj 点短路电流为 *319.860. 4fI jZj节点、的电压为 1*13*0 22.5 89.60.450.47 23ffUIjjZ例 3.2 图 3.5 所示电力系统,负荷全部略去,简化后的各电抗
24、标幺值注于等值网络中。试计算 f 点三相短路时的短路电流及网络中的电流分布。(0)ffUIZ 0iifiZI pqqI解题步骤:(1)请输入短路点的数目 NF(2)请输入节点数 n(3)请输入支路数 nl(4)输入各支路参数矩阵 B矩阵 B 的每行是由下列参数构成的:某支路的首端号 p;末端号 q,且 pm %追加接地树枝Z(q,q)=B(k1,3);m=m+1;else %追加接地连支for k=1:m,Z(k,m+1)=-Z(k,q);Z(m+1,k)=-Z(q,k);endZ(m+1,m+1)=Z(q,q)+B(k1,3);for l1=1:mfor k=1:mZ(l1,k)=Z(l1,
25、k)-Z(l1,m+1)*Z(m+1,k)./Z(m+1,m+1);endZ(l1,m+1)=0;endfor k=1:m+1Z(m+1,k)=0endendelse if qm %追加不接地树枝for k=1:mZ(k,q)=Z(k,p)*l;Z(q,k)=Z(p,k)*l;endZ(q,q)=l2*Z(p,p)+l2*B(k1,3);m=m+1;elsefor k=1:m %追加不接地连支Z(k,m+1)=l*Z(k,p)-Z(k,q);Z(m+1,k)=l*Z(p,k)-Z(q,k);endZ(m+1,m+1)=l2*Z(p,p)+Z(q,q)-2*l*Z(p,q)+l2*B(k1,3)
26、;for l1=1:mfor k=1:mZ(l1,k)=Z(l1,k)-Z(l1,m+1)*Z(m+1,k)./Z(m+1,m+1);endZ(l1,m+1)=0;endfor k=1:m+1Z(m+1,k)=0;endendendenddisp(阻抗矩阵 Z=);disp(Z)4.3 对称故障的计算%本程序是计算三相短路的短路电流、各节点电压、各支路的电流NF=input(请输入短路点的数目: NF=);n=input(请输入独立节点数:n=);nl=input(请输入支路数: nl=);B=input(请输入由线路参数形成的矩阵: B=);V0=input(请输入由各节点的初电压标幺值形成
27、的列矩阵:V0=);D=input(请输入由短路号、短路点阻抗组成的矩阵:D=);m=0;Z=zeros(n);V=zeros(n);I=zeros(nl);for k1=1:nlp=B(k1,1);q=B(k1,2);if B(k1,6)=0k=1./B(k1,5);else k=B(k1,5);endif p=0if qm %追加接地树枝Z(q,q)=B(k1,3);m=m+1;else %追加接地连支for i=1:m,Z(i,m+1)=-Z(i,q);Z(m+1,i)=-Z(q,i);endZ(m+1,m+1)=Z(q,q)+B(k1,3);for i=1:mfor j=1:mZ(i,
28、j)=Z(i,j)-Z(i,m+1)*Z(m+1,j)./Z(m+1,m+1);endZ(i,m+1)=0;endfor i=1:m+1Z(m+1,i)=0;endendelse if qm %追加不接地树支for i=1:mZ(i,q)=Z(i,p)*k;Z(q,i)=Z(p,i)*k;endZ(q,q)=k2*Z(p,p)+k2*B(k1,3);m=m+1;elsefor i=1:m %追加不接地连支Z(i,m+1)=k*Z(i,p)-Z(i,q);Z(m+1,i)=k*Z(p,i)-Z(q,i);endZ(m+1,m+1)=k2*Z(p,p)+Z(q,q)-2*k*Z(p,q)+k2*B
29、(k1,3);for i=1:mfor j=1:mZ(i,j)=Z(i,j)-Z(i,m+1)*Z(m+1,j)./Z(m+1,m+1);endZ(i,m+1)=0;endfor i=1:m+1Z(m+1,i)=0;endendendendfor k=1:NF %求各短路点的电流标幺值I(D(k,1),D(k,1)=V0(D(k,1),1)./(Z(D(k,1),D(k,1)+D(k,2);ft=num2str(D(k,1);ts1=(点短路时);ts2=(电流的标幺值 If=);dn=strcat(ft,ts1,ts2);disp(dn);disp(I(D(k,1),D(k,1);for i=1:nV(i,i)=V0(i,1)-I(D(k,1),D(k,1)*Z(i,D(k,1); %求各节点的电压标endend