
简介面向电力系统与电气工程学习者的MATLAB短路电流计算与仿真讲解文档系统梳理了三相短路、两相短路、单相接地短路及两相接地短路四类常见故障的建模与分析思路。文档基于Simulink电力系统模块库分别构建无穷大功率电源供电系统和有限大功率电源供电系统对四类故障逐一仿真绘制故障前后电流电压曲线并对三相短路进行数学推导计算出周期电流幅值与冲击电流再将理论值与仿真波形对比验证模型可靠性。文档还专门区分了无限大与有限大电源两种工况使分析更贴近实际帮助读者掌握从模型搭建、参数设置到结果验证的完整方法。资源为1个doc文件压缩包大小约1.1MB内容详实、结构清晰适合需要完成课程设计、毕业设计或进行电力系统仿真实战的用户参考。目前已有1137人学习浏览是学习MATLAB电力系统短路故障分析的实用资料。 前阵子带一个刚入职的师弟做设备校验他指着一份短路电流计算结果问我“师兄这软件上的数到底怎么出来的”我没直接回答而是带他用MATLAB从零写了一个短路电流计算脚本又在Simulink里搭了仿真模型让两边的结果互相对照。这篇文章就把这套流程完整讲一遍从对称分量法、标幺值这些基础到脚本怎么组织再到仿真模型怎么搭最后说几个你大概率会遇到的“对不上”的瞬间。关于短路电流计算网上用MATLAB做过的人不少但多数只给一副公式截图或者一段跑不通的半成品能真正从头到尾推下来、对上仿真的并不多所以这篇会尽量把细节摊开。1. 为什么“短路电流计算”值得亲手用MATLAB实现一遍1.1 一次设备校验引发的灵魂拷问电力系统里短路电流计算结果至少管三件大事设备能不能扛得住故障冲击、保护定值怎么整定才不会误动拒动、母线选型和导体热稳定怎么校核。无论你是做设计、做调试还是在电厂变电站搞运维都绕不开它。我那位师弟用的是一款商业短路计算软件输入系统参数、选一个故障点、点运行结果几十秒就出来了看起来很省事。但我问他你知道软件里那句“三相短路电流约4.1kA”是基于什么基准值算出来的吗你知道为什么单相接地短路电流可能比三相还大吗他答不上来。商业软件的问题就在这里——速度太快了快到你根本没机会建立直觉。于是我们决定用MATLAB自己实现一版短路电流计算脚本再用Simulink仿真做交叉验证。目的不是跟商业软件比精度而是把整个推导过程走一遍让每个数字都有来路。1.2 亲手写脚本能解决什么问题这套流程做完之后收获比想象中大很多。首先是原理层面的东西彻底捋顺了正序、负序、零序网络怎么建立各种故障类型的边界条件怎么用标幺值在多个电压等级之间如何换算这些在纸上推导是一回事写成代码又是另一回事。代码会逼你把每一个符号都当成真实存在的量来对待。其次是可复用性。实际工程里经常要算最大运行方式下的短路电流也要算最小运行方式下的短路电流还会改故障点、改故障类型、改系统阻抗。用商业软件当然也能做但你手里有一套自己写的脚本时改一行参数、跑一遍心里会非常踏实。最后是仿真对照的价值。脚本计算基于稳态等值电路Simulink仿真包含完整的暂态过程。两边结果能对上说明你对系统建模的理解是对的对不上往往能逼出一些藏在角落里的细节错误。这种互为验证的方法是纯软件操作永远给不了你的。2. 先吃透原理四类短路与序网络标幺化2.1 四类短路故障工程上各自关注什么短路电流计算通常针对四类故障三相短路、两相短路、单相接地短路、两相接地短路。它们的共同特点是破坏了系统正常对称运行状态但三相对称的程度不同分析方法也不同。三相短路三相对称故障电流最大是设备动稳定、热稳定校验的主要工况。单相接地短路在110kV及以上中性点有效接地系统中占比最高是零序电流保护整定的核心对象。两相短路出现负序分量常用于校验负序保护的灵敏度。两相接地短路正序、负序、零序分量同时存在计算最复杂但工程中常用于零序保护配合。四类故障中只有三相短路可以直接用单相电路等值计算其余三类必须借助对称分量法。所谓对称分量就是把一组不对称的三相相量分解成正序、负序、零序三组对称分量。这样做的意义在于电力系统的发电机、变压器、线路在正序、负序、零序作用下分别呈现不同的阻抗特性而各组序量之间又保持独立可以分别用三个序网络来求解。2.2 正、负、零序网络怎么建建立序网络是整套计算的核心步骤。正序网络和正常运行时系统使用的网络基本一致但发电机用次暂态电抗、暂态电抗等参数代替同步电抗。负序网络结构与正序网络类似但发电机的负序电抗与正序不同。零序网络则完全不同它只包含那些能为零序电流提供通路的元件。举个例子变压器是Yd接线还是YNd接线直接决定了零序电流能不能从一侧流到另一侧。YN侧中性点接地时零序电流可以通过中性点进入变压器而三角形接线侧零序电流只能在绕组内部形成环流出不到外部线路上。这个问题在后面仿真验证环节还会再踩一次这里先记住结论。所有序网络的阻抗都需要统一到同一套基准值下这就是标幺值的核心价值。在多个电压等级的网络中有名值阻抗要经过变比的平方折算很容易出错而只要选定基准容量SB和基准电压UB各电压等级的阻抗标幺值可以直接比较和运算。基准阻抗公式是ZB UB² / SB多基准容量、多基准电压之间换算时公式是X_new X_old × (SB_new / SB_old) × (UB_old / UB_new)²这个公式几乎是一切“验算不对”的源头后面会专门讲坑。2.3 故障点等值阻抗与四类故障电流公式无论哪类故障第一步都是从故障点看进去求出系统的正序、负序、零序等值阻抗Z1、Z2、Z0。求法是把故障点两侧网络分别化简到戴维南等值阻抗再并联。有了这三个阻抗四类故障电流的公式就很清晰了。三相短路If(3) E / Z1两相短路If(2) √3 × E / |Z1 Z2|结果取模值单相接地短路If(1) 3 × E / (Z1 Z2 Z0)两相接地短路先求Ia1 E / (Z1 Z2×Z0/(Z2Z0))再按对称分量合成B、C相电流这里的E通常取故障前故障点电压的标幺值工程上按1.0∠0°处理。金属性短路时这个假设带来的误差完全可以接受。3. MATLAB脚本实现从参数输入到短路电流输出3.1 示例系统一台发电机、一台变压器、一条线路和一个系统为了让脚本和仿真都能落地我设计了一个不算复杂但能覆盖主要问题的示例系统。发电机G1经升压变压器T1接到110kV母线K母线K再经一条50km线路接到大系统S。故障点就设在母线K上这也是最常用的校验点。元件参数说明发电机G1100MVA10.5kVXd0.2X20.25次暂态电抗、负序电抗变压器T1100MVA10.5/110kVUk%10.5YNd11短路阻抗百分数110kV侧中性点接地线路L50kmR10.1Ω/kmX10.4Ω/km正序参数线路零序R00.3Ω/kmX01.2Ω/km零序参数通常大于正序系统S220kV侧短路容量2000MVA等值阻抗由短路容量反算选这个系统的原因是发电机和变压器的阻抗标幺在同一容量基值下可以直接相加线路阻抗需要从有名值折算到标幺值系统阻抗则需要由短路容量反推。覆盖了短路电流计算中几乎全部的参数处理手法。3.2 完整代码与关键行注释下面这段脚本可以直接复制运行。核心步骤是先算基准阻抗再把所有元件参数标幺化接着从故障点看进去求三个序的等值阻抗最后套用故障电流公式。clear; clc; %% 1. 基准值 SB 100e6; % 基准容量 100MVA UB_high 110e3; % 高压侧基准电压 110kV ZB_high UB_high^2 / SB; % 高压侧基准阻抗单位欧姆 %% 2. 元件参数标幺化 % 发电机自身容量与基准容量相等标幺值直接使用若不相等务必换算 X_G1 0.20; % 正序次暂态电抗 X_G2 0.25; % 负序电抗 % 变压器 X_T1 0.105; % Uk% 10.5%除以100得到标幺值 % 线路有名值 - 标幺值 R_line 50 * 0.1; X_line 50 * 0.4; Z_line (R_line 1i*X_line) / ZB_high; % 线路正序阻抗 Z0_line (50*0.3 1i*50*1.2) / ZB_high; % 线路零序阻抗 % 系统S等值阻抗由短路容量反推 X_S SB / 2000e6; % 基准容量/系统短路容量 %% 3. 故障点母线K看进去的各序等值阻抗 par_imp (Za, Zb) Za*Zb/(ZaZb); % 并联阻抗计算 % 左侧发电机变压器 Z1_left 1i*(X_G1 X_T1); Z2_left 1i*(X_G2 X_T1); Z0_left 1i*(X_T1); % YNd接线从高压侧看零序近似为变压器漏抗 % 右侧系统线路 Z1_right 1i*X_S Z_line; Z2_right 1i*X_S Z_line; Z0_right 1i*X_S Z0_line; % 故障点等值阻抗 Z1K par_imp(Z1_left, Z1_right); Z2K par_imp(Z2_left, Z2_right); Z0K par_imp(Z0_left, Z0_right); %% 4. 四类短路电流标幺值 E 1.0; a exp(1i*2*pi/3); If3 E / Z1K; % 三相短路 If2 abs(sqrt(3)*E / (Z1K Z2K)); % 两相短路 If1 abs(3*E / (Z1K Z2K Z0K)); % 单相接地短路 % 两相接地短路BC相接地对称分量合成 Z20 par_imp(Z2K, Z0K); Ia1_2g E / (Z1K Z20); Ia2_2g -Ia1_2g * Z0K / (Z2K Z0K); Ia0_2g -Ia1_2g * Z2K / (Z2K Z0K); Ib_2g Ia0_2g a^2*Ia1_2g a*Ia2_2g; % B相电流 If2g_phase abs(Ib_2g); %% 5. 折算为有名值故障点在110kV母线用高压侧基准电流 IB_high SB / (sqrt(3)*UB_high); fprintf(系统基准电流%.2f A\n, IB_high); fprintf(三相短路电流 %.2f kA\n, abs(If3)*IB_high/1e3); fprintf(两相短路电流 %.2f kA\n, If2*IB_high/1e3); fprintf(单相接地短路电流 %.2f kA\n, If1*IB_high/1e3); fprintf(两相接地短路电流(B相)%.2f kA\n, If2g_phase*IB_high/1e3);这段脚本里最关键的一个选择是所有阻抗都统一到100MVA基准容量下再在故障点所在电压等级用对应的基准电流折回有名值。如果你在自己的项目中改了故障点位置或者改了电压等级一定要记得同步修改基准电压UB和基准电流IB这是脚本最容易改错的地方。3.3 脚本输出结果怎么解读按照上文示例系统的参数脚本输出大致如下故障类型标幺值pu有名值kA三相短路约7.81约4.10两相短路B、C相电流幅值约6.56约3.44单相接地短路A相电流约8.50约4.46两相接地短路B相电流运行脚本查看运行脚本查看单相接地短路电流大于三相短路电流这个结果第一眼看上去可能有些反直觉。原因在于零序网络的对地通路很多整个等值阻抗比较小同时公式前面有一个3倍的放大系数。这就是我前面说的“软件给了一个数但你没建立直觉”的最好例子——亲手算一遍这种直觉自然就有了。4. Simulink仿真搭一个能验证脚本结论的故障模型4.1 用戴维南等值思路简化模型Simulink仿真模型不需要把发电机、变压器、线路的物理模型全搭出来。短路电流计算关注的本来就是故障点看进去的等值阻抗和等值电动势所以可以用一个电压源串联阻抗来等效每一侧电源支路。这就是前面脚本里已经用过的戴维南等值思路。我的模型结构是这样的左侧支路用三相机电压源代表发电机加变压器的等值内阻抗设置为j36.9Ω右侧支路用另一个三相机电压源代表系统内阻抗设置为j6.05Ω再串联一条5Ωj20Ω的线路阻抗两条支路在母线K汇合。故障支路从母线K引出经过电流测量模块后进入故障模块再接回地。这样搭建有几个好处首先两个电压源在故障前等幅、同相不会产生环流故障电流就纯粹是故障分量方便和脚本结果对比其次所有参数都来自标幺值反算和脚本是同一套系统验证逻辑非常干净。4.2 参数设置电源、故障模块和求解器在Simulink里搭建时有几个参数设置稍不注意就会翻车。第一个是三相机电压源参数选择“Phase-to-phase RMS voltage”输入110kV频率50Hz内部连接选择Yg也就是中性点接地这样零序电流才有通路。电感参数对应关系是j36.9Ω对应的电感约为0.1175Hj6.05Ω对应约0.0193H。第二个是Three-Phase Fault故障模块。故障类型选“Phase A to Ground”可以验证单相接地选“Phase A-B”可以验证两相短路选“Phase A-B-C”可以验证三相短路。故障电阻建议填0.001Ω不要填0否则某些求解器在故障时刻可能遇到数值奇异。故障开始时间设为0.05s清除时间设为0.15s。第三个重头戏是powergui模块。很多刚接触Specialized Power Systems库的人不知道必须拖一个powergui模块进模型否则仿真直接报错。求解器建议选用变步长的ode23tb最大步长设为1e-4s。这个设置对故障暂态过程的波形精度影响很大后面会细说。4.3 从波形图里正确读出故障电流仿真跑完Scope里会看到故障支路电流的完整波形。故障前电流几乎为零0.05s故障发生后电流瞬间冲高。这里有个非常重要的细节故障发生后前几个周期波形明显不对称电流峰值远高于稳态值这就是非周期分量在起作用。要跟脚本结果对比不能拿第一个峰值直接比。正确做法是等非周期分量衰减得差不多以后取一个完整周期的电流峰值除以√2得到有效值再与脚本计算结果对比。我搭出来的仿真结果三相短路稳定后的相电流峰值大约在5790A左右换算成有效值就是4090A上下跟脚本计算得到的4.10kA基本一致误差在1%以内。如果你仿真的波形稳定值和脚本相去甚远先不要怀疑公式大概率是参数设置或者网络结构出了问题。下面这节专门排查这类问题。5. 脚本和仿真对不上的常见原因5.1 故障瞬间的直流偏移这是最容易被误解的现象。短路瞬间由于电感中的电流不能突变故障电流中会出现一个按指数衰减的非周期分量衰减时间常数由故障回路阻感比决定约等于X/(ωR)。在110kV系统里X/R通常比较大衰减可能要持续好几个工频周期。所以仿真波形里第一个峰往往比后面高很多如果你拿它去跟脚本的稳态有效值比较当然对不上。正确做法是取稳态周期的峰值或者用RMS模块直接读有效值。这个坑我在带人时几乎每次都要强调一遍因为它实在太反直觉了。5.2 基准值没统一结果差N倍我见过最多的问题就是这里。发电机给的Xd0.2是100MVA自身容量下的标幺值把它用到2000MVA系统短路容量反推的等值阻抗旁边如果中间不做容量基准换算算出来的结果会莫名其妙差出一个数量级。再来一个更隐蔽的系统短路容量对应的是220kV侧电压等级而故障点在110kV母线。用短路容量反推系统阻抗时如果不考虑电压基准不同带来的基准阻抗差异直接拿短路容量相除就会把系统阻抗算错。很多人算到最后发现结果差了几倍往往不是公式问题而是某个标幺值在不知不觉中被当成了有名值。5.3 变压器接线方式对零序通路的影响单相接地短路仿真和脚本对不上时优先检查零序网络是否闭合。YNd接线的变压器高压侧中性点接地时零序电流可以从高压侧经接地中性点流入在三角绕组内形成环流。但如果你在Simulink里把电压源的内部连接选成了Y不接地零序电路就断了单相接地短路电流会严重偏小。另外两个电源都必须是Yg接线才能保证故障点两侧都提供零序通路。如果一侧接了地、另一侧没接地单相接地短路的等值网络就少了一个并联支路结果自然对不上。遇到这种情况不要急着怀疑故障模块先把接线方式检查一遍。5.4 求解器步长和相位设置求解器步长对波形瞬态过程的影响也很大。如果不设置最大步长Simulink自动选步长时可能为了节省计算时间跳过故障瞬间的快速变化导致波形出现过冲毛刺或者峰值被削掉。我习惯把最大步长设为1e-4也就是每个工频周期大概200个点画出来的波形足够光滑。还有一个很容易被忽略的点两个电压源的相位必须一致。如果A相初相角一个设为0度、一个设为30度故障前两条支路之间就会有环流Scope里看到的“短路电流”其实是环流加故障电流的叠加结果怎么算都对不上。6. 把这套流程推向实际工程的三个建议6.1 用短路容量反推系统等值阻抗工程中往往不知道上级电网的具体拓扑但调度会给一个母线短路容量比如“该母线三相短路容量为2000MVA”。这时候系统等值阻抗的标幺值可以直接反推X_S SB / Sk这个公式非常实用但它隐含了一个前提Sk必须是对应当前计算电压等级的短路容量。如果给定的是220kV侧短路容量而你算的是110kV侧故障需要先把短路容量折算到110kV侧或者反过来把等值阻抗折算到110kV电压等级。这类问题用标幺值能省掉很多麻烦这也是我一直坚持在脚本里用标幺值做中间计算的原因。6.2 从手动化简走向节点导纳矩阵示例系统只有两个电源支路用手动串并联化简就能求等值阻抗。但实际电网可能有几十个节点、几十条线路手动化简既不现实也容易错。扩展方向很清晰把系统拓扑写成节点导纳矩阵Y再用MATLAB的矩阵求逆得到节点阻抗矩阵Z故障点自阻抗就是该点的戴维南等值阻抗。这个扩展对脚本结构的影响很小因为故障电流公式部分完全不需要变变的只是Z1K、Z2K、Z0K的求法。我建议在手动化简版本跑通、仿真验证正确之后再着手实现节点导纳矩阵版本这样每一步都有参照。6.3 区分周期分量与非周期分量最后提醒一句工程设计里用短路电流时不同场景看的量不一样。设备动稳定校验要看故障后大约半个周波时的冲击电流这个量含有明显的非周期分量通常用冲击系数乘以周期分量有效值来估算热稳定校验看的是故障持续时间内电流平方对时间的积分保护定值整定则更关心周期分量有效值随时间的衰减曲线。脚本算出来的是电气距离和稳态假设下的周期分量有效值仿真里能看到完整的非周期分量和衰减过程。两者配合使用才能既算得准又理解背后的物理过程。动稳定、热稳定、保护定值整定这三件事做的时候这套脚本和仿真流程就能直接帮你顶上去。要是你也照着搭了一遍欢迎一起讨论那些对不上的波形。本文还有配套的精品资源点击获取