电力系统三相短路,是最适合拿 MATLAB Simulink 动手验证的暂态分析场景。很多人学完课本里的短路电流公式,自己搭模型时却会卡住:模型能跑但不知道波形对不对,波形出来了又不知道怎么对应理论。这篇文章就围绕三相短路 Simulink 仿真暂态过程,把环境准备、模型搭建、参数设置、波形判断和常见排错完整拆一遍。适合电气专业学生、刚接触电力系统仿真的工程师,以及所有想通过仿真理解短路电流冲击、非周期分量和电压跌落规律的读者。最值得关注的不是模型有多复杂,而是你能不能从一条波形里,把课本公式和仿真结果对应起来。
1. 三相短路仿真的核心价值:你要从波形里看见什么
1.1 三相短路为什么值得单独做仿真
三相短路是电力系统里最严重的故障类型。它发生在三根导线直接短接的时刻,短路电流远大于负荷电流,会在极短时间内对断路器、变压器、母线等设备形成巨大冲击。电力系统保护的速断、限时、延时配合,以及断路器开断能力的选择,都离不开对短路电流大小的判断。
手算可以解决部分问题,但电力系统三相短路的暂态过程不是简单的代数计算。短路瞬间会出现一个很大的冲击电流峰值,随后电流里的非周期分量按指数规律衰减,最后才进入稳定的短路电流状态。这个变化过程用公式推导可以描述,但想直观理解,最好的办法就是用 Simulink 把系统搭出来,跑一条完整的短路暂态波形。
这个仿真解决的实际问题有三个:
- 观察短路瞬间电流突变和冲击峰值。
- 观察短路电流中的非周期分量如何衰减。
- 观察故障切除后系统电压和电流如何恢复。
对初学者来说,这个模型是理解短路暂态过程的最小可行框架。对要写论文或做课题的人来说,这个模型也是后续加断路器、保护继电器、同步发电机的基础底盘。
1.2 仿真结果里必须能看到的几个关键现象
搭建模型之前,先明确“成功结果长什么样”。这能帮你避免跑完仿真却不知道是否正确的尴尬。
我把三相短路暂态过程分成三个阶段,每个阶段都有对应的画面:
| 时间段 | 物理过程 | 波形特征 |
|---|---|---|
| 故障前 | 系统正常运行 | 三相电流为正弦波,幅值稳定 |
| 故障期间 | 短路电流叠加非周期分量 | 电流突然增大,某一相明显偏向一侧,随后指数衰减 |
| 故障切除后 | 系统恢复 | 电流逐渐回落,电压可能有暂态过冲,最终恢复稳定 |
很多人搭完模型后只看到“波形在动”,但不会判断对不对。我的建议是:先跑通整个流程,然后重点看故障发生后的第一个周波,那里隐藏了最丰富的暂态信息。
1.3 一套可以实际落地的判断指标
仿真不是“跑出图”就结束。我通常会做四个判断:
- 短路前稳态电流:与手算 I = V / Z 对比,误差在 5% 以内说明系统参数基本正确。
- 短路电流稳态幅值:与手算 E / X 对比,误差在 10% 以内可接受。
- 冲击电流峰值:一般在短路后半个周波附近出现,大小约为周期分量幅值的 1.8 到 2 倍。
- 非周期分量的衰减趋势:衰减速度与系统的 X/R 比有关,X/R 越大衰减越慢。
如果这些指标都对不上,先不要怀疑仿真软件,回头检查参数和模型连接。下面开始搭建环境。
2. 环境准备与模型选型:Simscape Electrical 还是 SimPowerSystems
2.1 先确认你电脑里的模块库是哪一代
Simulink 的电力系统模块库经历过改名。老版本里叫 SimPowerSystems,新版本里归入 Simscape Electrical 的 Specialized Power Systems。很多初学者找不到模块,不是因为没装,而是因为路径变了。
我一般用两种方式确认:
- 在 Simulink 库浏览器里直接搜索“Three-Phase Fault”。
- 在 MATLAB 命令行窗口输入
powerlib,回车后会弹出传统电力系统模块库。
如果在搜索框里找不到“Three-Phase Fault”或“Three-Phase Source”,大概率是 Simscape Electrical 工具箱没装。安装 MATLAB 时可以勾选 Simscape Electrical 或者 Simscape 相关套件;已经装好的,可以打开“附加功能”检查工具箱状态。
| 老版本常见库路径 | 新版本常见库路径 |
|---|---|
| SimPowerSystems / Fundamental Blocks | Simscape Electrical / Specialized Power Systems / Fundamental Blocks |
| Electrical Sources | Electrical Sources |
| Elements | Elements |
| Measurements | Measurements |
这个差异不影响模型本身,但会影响你找模块的速度。
2.2 硬件和软件条件
这个仿真对硬件的要求不高。普通办公电脑就能跑,不需要 GPU,也不需要服务器。我自己常用的配置是 16GB 内存、四核 CPU,仿真一个 0.3 秒的模型,离散步长 1e-5 秒,大约几十秒到一两分钟就能跑完。
不过有一点要注意:Simulink 的很多电力电子和电气模块默认按单线程计算,所以 CPU 的单核性能比核心数量更重要。如果你在虚拟机里跑 MATLAB,仿真速度会明显下降,特别是离散步长很小的时候,建议直接在本地环境操作。
软件方面,MATLAB R2019a 之后的版本基本都能正常打开这套模型。更老或更新的版本可能库名略有差异,但核心模块和参数界面差别不大。
2.3 三分钟快速认识需要用到的模块
做三相短路仿真,你不需要把整个电力系统模块库都学会。先认识这几个就够:
- Three-Phase Source:三相电压源,用来模拟无穷大电源或电网。
- Three-Phase Series RLC Branch:串联阻抗模块,用来模拟线路阻抗。
- Three-Phase V-I Measurement:电压电流测量模块,把模拟信号转成 Simulink 信号。
- Three-Phase Fault:故障模块,用来控制短路时刻和故障类型。
- Powergui:电力系统仿真控制模块,用来设置仿真类型和采样步长。
- Scope:示波器,直接观察波形。
这些模块在“Fundamental Blocks”下都能找到。建议先拖到一个空白模型里,逐个双击看参数界面,不急着连线。
2.4 Powergui 仿真类型怎么选
Powergui 是整个电力系统仿真的“控制面板”。它的仿真类型有三个选项:Continuous、Discrete、Phasor。
三相短路暂态仿真建议选 Discrete,也就是离散化仿真。原因是故障模块在动作瞬间会产生开关状态的切换,连续仿真模式在某些版本里可能收敛慢,甚至出现数值振荡。离散化仿真可以明确指定步长,波形更容易稳定,也方便后续做批量参数扫描。
步长先设 1e-5 秒,对应 50Hz 系统一个周波 2000 个采样点。这个精度足够看清短路冲击和非周期分量衰减。等模型跑通后,再根据精度需求适当放宽。
3. 搭建一个最小可运行模型:单机-无穷大系统的暂态全过程
3.1 为什么选择单机-无穷大系统
最经典的电力系统暂态仿真模型,是“单机经双回线接入无穷大系统”。这是很多教材里的默认模型,也是理解短路暂态最简洁的结构。无穷大系统的电压和频率基本不随负荷变化,可以提供一个稳定的参考电源。
在 Simulink 里,无穷大系统不需要真的建一个容量无限大的发电机,只要用一个短路容量足够大的三相电源来近似即可。这样整个模型只需要电源、线路阻抗、故障模块和测量模块四类元件,非常适合第一次跑通。
3.2 搭模型的完整步骤
我建议按下面的顺序搭建,每一步都确认无误后再继续。
- 打开 MATLAB,在命令行输入
simulink,进入 Simulink 起始页。 - 新建一个空白模型,保存为
power_three_phase_fault.slx。 - 打开库浏览器,进入 Simscape Electrical / Specialized Power Systems / Fundamental Blocks。
- 拖入两个“Three-Phase Source”模块,一个作为系统电源,一个作为无穷大系统等效电源。
- 拖入两个“Three-Phase Series RLC Branch”模块,作为线路阻抗。
- 拖入一个“Three-Phase V-I Measurement”模块,放在电源出口处。
- 拖入一个“Three-Phase Fault”模块,放在两个线路阻抗之间。
- 拖入一个“Powergui”模块,放到模型空白处。
- 拖入两个“Scope”模块,分别连接电压测量和电流测量输出。
连线顺序是:电源 1 → 测量模块 → 线路 1 → 故障模块 → 线路 2 → 电源 2。
注意一个关键点:电气模块之间的连线是 Simulink 里的“电气物理连接线”,不是普通信号线。测量模块的输出端才是普通信号线,可以接 Scope。如果直接拿 Scope 去连电气线路端口,会报连接错误。
3.3 一组可以直接跑的初始参数
下面这组参数是我测试过可以稳定运行的示例系统,适用于 10kV / 50Hz 教学仿真。你可以根据自己的场景调整,但刚开始建议先照抄,跑通后再改。
| 模块 | 参数项 | 设置值 |
|---|---|---|
| Three-Phase Source 1 | Phase-to-phase RMS voltage | 10e3 V |
| Three-Phase Source 1 | Frequency | 50 Hz |
| Three-Phase Source 1 | Internal connection | Yg |
| Three-Phase Source 1 | Short-circuit level | 100e6 VA |
| Three-Phase Series RLC Branch 1 | Branch type | R + L |
| Three-Phase Series RLC Branch 1 | Resistance R | 0.01 Ω |
| Three-Phase Series RLC Branch 1 | Inductance L | 0.0001 H |
| Three-Phase Fault | Fault type | Phase A to B to C to Ground |
| Three-Phase Fault | Fault resistance | 0.001 Ω |
| Three-Phase Fault | Ground resistance | 0.001 Ω |
| Three-Phase Fault | Transition time | [0.05 0.15] |
| Powergui | Simulation type | Discrete |
| Powergui | Sample time | 1e-5 s |
| Simulink solver | Stop time | 0.3 s |
这里的 Transition time 写成两个值,含义是:0.05 秒时刻故障模块由断开切换为闭合,0.15 秒时刻由闭合切换为断开。这个设置非常关键,它可以模拟“短路发生”和“故障切除”两个过程,不需要额外加断路器。
3.4 运行前的最后检查
点击运行之前,花一分钟检查三件事:
- 所有电气模块之间是否通过粗线连接,而不是细信号线。
- Scope 是否连接到测量模块的正确信号输出端口。
- Powergui 是否已经放到模型中,并且设置为 Discrete。
我见过不少模型运行报错,最后发现是 Powergui 忘记放进去。这个问题解决起来很快,但排查时容易忽略。
3.5 运行后你应当看到的画面
点击运行,等待仿真完成。打开 Scope 后,你应当能看到这样一条电流波形:
0 到 0.05 秒之间,三相电流是平滑的正弦波。0.05 秒之后,电流突然增大,波形出现明显畸变,其中 A 相会比其他两相更明显地向某一侧偏移。这个偏移就是非周期分量叠加的效果。0.15 秒之后,电流逐渐回落,最终恢复为接近故障前的正弦波。
电压波形的特征是:0.05 秒之后,故障点附近电压急剧下降,接近零;故障切除后,电压回升并可能短暂超过故障前水平,随后进入新的稳态。
如果你看到的波形和这个描述差别很大,先不要急着调参数,直接看第 6 节的排查链路。
4. 关键参数与判断标准:故障时刻、过渡电阻、采样时间和仿真步长
4.1 故障起始时刻为什么会影响波形
三相短路暂态过程里,非周期分量的初始值不是固定的,它和短路发生的瞬间电压相位有关。通俗地说,同一套系统,在不同时刻按下短路开关,冲击电流大小和波形偏移方向都不一样。
在 Three-Phase Fault 模块里,Transition time 不只是“设置故障发生的时间”,它还决定了故障发生瞬间电源电压的相位。50Hz 系统里,0.02 秒是一个完整周期。0.05 秒对应 2.5 个周期,A 相电压相位接近零点附近;0.052 秒对应的相位又会往后移动几十度。
我做对比测试时,会把 Transition time 分别设为 0.05、0.0505、0.051、0.052,然后观察 A 相电流波形的偏移程度。通常在电压过零点附近短路时,非周期分量最大,冲击电流最明显;在电压峰值附近短路时,非周期分量相对较小。
如果你只想跑一次教学演示,0.05 秒足够。如果你想研究非周期分量的规律,就要把故障时间作为变量做多组对比。
4.2 过渡电阻不要用默认值硬跑
Three-Phase Fault 模块里有 Fault resistance 和 Ground resistance 两个参数。很多人忽略它们的默认值,结果跑出来的短路电流不够大,以为模型有问题。
一个常见的坑是:过渡电阻如果设置成 100Ω,短路电流会比正常负荷电流大不了多少,波形看起来就像没短路。要模拟金属性短路,故障电阻应该设置在 0.001Ω 这个量级。我这里给出的参数表也用了 0.001Ω。
从工程角度看,实际短路点往往存在电弧电阻或接触电阻,短路电流不会像理想金属短路那么大。但在教学仿真里,先用接近金属性短路的参数,更容易看清暂态过程的本质。
4.3 仿真步长和采样时间的取舍
离散仿真的步长决定了两个东西:波形精度和仿真耗时。步长越小,波形越细腻,但计算耗时明显增加。
50Hz 系统一个周期是 0.02 秒。如果步长设成 1e-3 秒,一个周波只有 20 个采样点,短路冲击峰值很可能被直接跳过。步长设成 1e-4 秒,一个周波 200 个点,基本能看清趋势。步长设成 1e-5 秒,一个周波 2000 个点,可以较准确地抓取冲击电流峰值。
我的习惯是:
- 第一次跑通:用 1e-5 秒,确认波形细节。
- 后续多组参数测试:如果只看趋势,可以放宽到 5e-5 或 1e-4。
- 批量扫描:仿真时间缩短到 0.2 秒以内,步长放宽到 1e-4,能大幅缩短总耗时。
注意,步长不是越大越快。步长太大时,故障切换瞬间可能产生数值振荡,波形会出现不合理的毛刺。如果发现波形异常跳动,第一步不是改参数,而是减小步长看能否消除。
4.4 结果正确性的四个判断维度
我把判断模型正确与否的维度整理成表格,方便对照:
| 判断项 | 判断标准 | 说明 |
|---|---|---|
| 短路前稳态电流 | 与 I = V / Z 手算值一致,误差小于 5% | 主要校验电源和线路参数 |
| 短路电流稳态幅值 | 与 E / X 手算值同一数量级,误差小于 10% | 主要校验故障点阻抗 |
| 冲击电流峰值 | 出现在短路后半个周波附近,约为周期分量幅值的 1.8 到 2 倍 | 辅助判断暂态分量是否合理 |
| 故障切除后的恢复波形 | 最终恢复到故障前稳态,不持续发散 | 校验故障模块切换逻辑 |
如果第一项就不满足,先别分析短路过程,回头检查线路阻抗和电源短路容量。
5. 从波形看暂态过程:短路电流冲击、非周期分量与电压恢复
5.1 只靠 Scope 不够,要学会导出数据
Scope 适合快速定性观察,但要想精确读出短路冲击电流大小、计算非周期分量的衰减时间常数,建议把数据导到 MATLAB 工作区。
方法是在模型里加一个“To Workspace”模块,输入连接测量模块的电流或电压信号,变量名设为Iabc,输出格式选“Array”。运行仿真后,命令行窗口里输入plot(Iabc.Time, Iabc.Data)就能重新绘制波形,还可以用max()函数找出电流峰值,用find()定位峰值对应的时间。
这一步很关键,因为手动从 Scope 里读数据会有误差,而且不利于批量记录。
5.2 三相电流波形怎么读
以 A 相电流为例。故障发生前,A 相电流围绕零轴线做正弦摆动。故障发生后,如果 A 相电流整体向正方向或负方向偏移,说明叠加了非周期分量。偏移方向取决于故障时刻的电压相位,这是理论里“非周期分量”的直接体现。
衰减过程一般延续几个周期到十几个周期,具体快慢主要由系统的 X/R 比决定。X/R 越大,衰减越慢。你可以修改线路电感 L 的大小,观察衰减速度的变化,这比单纯读理论公式直观得多。
三相短路时,三相电流都会增大,但三相互差 120 度,非周期分量的初始值不同,所以三相波形并不完全对称。如果某相电流始终比另外两相小很多,或者某相没有明显突变,要怀疑故障类型是否选错。
5.3 理论公式和仿真结果如何对应
短路电流最经典的分解是:周期分量加非周期分量。周期分量是稳定的交流分量,大小由电源电压和短路点阻抗决定;非周期分量是一个按指数衰减的直流偏移量,衰减时间常数约等于 L/R。
在仿真波形里,你可以这样对应:
- 故障后平稳段的交流幅值,就是周期分量。
- 故障初期的波形整体偏移量,就是非周期分量。
- 偏移量从最大值衰减到约 36.8% 的时间,就是时间常数 T = L/R。
这个对应关系是理解短路暂态的重点。如果仿真波形里看不到偏移,大概率是过渡电阻太大,或者故障类型选成了单相非接地短路。
5.4 一个可复现的验证流程
我建议每次搭完新模型,都按这个流程走一遍:
- 运行模型,取 0.05 秒之前的稳定段,读取电流幅值,与手算值对比。
- 触发故障,读取短路后第一个周波的电流峰值,记录冲击电流。
- 观察 A 相波形是否出现整体偏移,记录偏移方向和衰减速度。
- 修改故障起始时刻,重复步骤 2 和 3,对比不同合闸角下的差异。
- 修改过渡电阻,观察短路电流稳态幅值的变化趋势。
完成这五步,你对三相短路暂态过程的理解会比单纯看书深入很多。
6. 排查链路:启动失败、波形异常、电流突变不正常的常见原因
6.1 启动时报错,先查这几处
三相短路模型最常见的启动报错有两类。
一类是“Powergui block is required”。这表示模型里没有放 Powergui 模块,或者 Powergui 没有设置仿真类型。解决方案很简单:拖入 Powergui,设置成 Discrete,再运行。
另一类是连接错误,比如提示电气端口接错了普通信号线。这种问题通常出现在测量模块到 Scope 之间的连线。记住一个原则:电气模块之间用物理连接线,测量模块的输出端才有普通信号线。
如果你搜不到 Three-Phase Fault 模块,先确认工具箱有没有安装,而不是怀疑模块名称打错了。
6.2 波形异常,按顺序排查
我把波形异常的常见原因和排查顺序整理成表格:
| 现象 | 优先排查方向 | 处理方式 |
|---|---|---|
| Scope 里全平 | 测量模块连接、信号线是否接好 | 确认 Scope 接在 V-I Measurement 的输出端 |
| 短路前电流就不对 | 电源参数、线路阻抗、负荷设置 | 手算稳态电流并对比 |
| 短路后电流变化不明显 | 过渡电阻、故障类型、故障模块位置 | 检查 Fault resistance,确认故障发生在线路中间 |
| 波形毛刺多 | 步长太大、snubber 电阻不合理 | 减小步长,设置 snubber 电阻为 1e6Ω |
| 没有非周期分量偏移 | 过渡电阻大、故障时刻不合适 | 改用 0.001Ω,调整 Transition time |
| 故障切除后不恢复 | 故障清除时间设置、是否存在断路器 | 确认 Transition time 数组中包含恢复时刻 |
按这个顺序排查,大多数问题都能定位到原因。
6.3 仿真速度过慢,先缩时间再缩步长
仿真速度慢不要急着换电脑。多数情况下是仿真窗口太长或者步长过小。
我通常会这样优化:
- 仿真时间从 0.3 秒缩短到 0.2 秒,如果只观察故障发生后的前几个周波,0.15 秒也够。
- 步长从 1e-5 放宽到 5e-5,波形仍然能看出趋势,耗时可能降一半以上。
- 在 Scope 里少接几路信号,只保留真正需要观察的电流和电压。
- 不要同时打开多个大模型。
这些优化对单次仿真影响不大,但对批量参数扫描非常重要。
6.4 snubber 电阻是最常被忽略的细节
Three-Phase Fault 模块内部有 snubber 电路,也就是缓冲电路。它的作用是抑制开关切换瞬间的电压电流突变。但缓冲电阻如果设置不合理,会影响短路电流的测量结果。
比如 snubber 电阻设成 1Ω,故障模块闭合后,一部分电流会从 snubber 支路流过,导致你看不到真实的短路电流。我的经验是,在需要观察短路稳态电流和冲击电流的教学模型里,把 snubber 电阻设置成 1e6Ω,让它对仿真结果的影响降到可以忽略。
很多初学者遇到“短路电流比理论值小很多”的问题,最后发现就是 snubber 参数没调。
7. 从教学演示走向工程研究:保护配合、断路器动作与批量仿真的扩展思路
7.1 加入断路器,模拟真实切除过程
上面用 Three-Phase Fault 的两个 Transition time 模拟了故障发生和故障切除,但在实际电力系统里,故障切除是由断路器完成的。你可以在此基础上加一个“Three-Phase Breaker”模块。
典型的做法是:断路器闭合在 0 秒,0.05 秒故障发生,0.1 秒断路器跳闸。这样波形会显示:短路发生后短路电流持续 0.05 秒,随后断路器开断,电流直接变为零,系统进入电压恢复阶段。
这比单纯用 Fault 模块清除故障更接近实际,也为后续做保护配合打下基础。
7.2 用 Relay 模块做简单过流保护
想再进一步,可以在电流测量信号后加一个“Relay”模块,设置一个过流阈值。当短路电流超过阈值时,Relay 输出跳闸信号,控制断路器断开。
这个实验能直观展示“故障发生 → 保护检测到过流 → 发跳闸信号 → 断路器断开 → 系统恢复”的完整时序。虽然它离实际继电保护的距离还很远,但可以帮初学者理解保护逻辑的基本框架。
设置阈值时要注意:别把阈值设得太低,否则正常运行时就会误跳闸。我一般先跑一遍无故障模型,看正常电流峰值是多少,再把阈值设为它的 1.5 倍左右。
7.3 用脚本做批量参数扫描
当你想研究“不同短路时刻对非周期分量的影响”时,手动改参数会非常低效。这时可以写一个 MATLAB 脚本,循环修改 Three-Phase Fault 模块的 Transition time,每次运行模型并保存波形。
下面是一个示例脚本结构,变量名要换成你自己模型里的实际模块名:
% 批量扫描故障起始时间 fault_times = [0.05 0.0505 0.051 0.0515 0.052]; results = struct(); for i = 1:length(fault_times) % 修改故障时间 set_param('power_three_phase_fault/Three-Phase Fault', ... 'TransitionTime', num2str(fault_times(i))); % 运行仿真 simOut = sim('power_three_phase_fault'); % 获取电流数据并保存 Iabc = simOut.Iabc; results(i).time = fault_times(i); results(i).Iabc = Iabc; end % 后续可以用循环绘制所有波形对比批量仿真前,先用三个参数点验证脚本能正常运行,再整个跑完。因为批量仿真一旦出错,排错成本会比单次运行高不少。
7.4 扩展方向与边界提醒
这个模型可以继续扩展的方向很多:把 Three-Phase Source 换成同步发电机模型,加入励磁系统、调速器,添加变压器和负载,甚至做距离保护配合研究。但扩展时要控制复杂度。
如果你只是学习,单机-无穷大系统已经能回答“三相短路暂态过程是什么样”这个问题。不要一上来就堆满所有模块,那样只会增加排查难度。
批量仿真时还要注意资源占用。低配置电脑不建议同时跑多个 MATLAB 实例,更稳妥的做法是每次只跑一组参数,记录结果后继续下一组。批量任务能不能跑通是一回事,批量任务跑完后数据会不会因为命名冲突被覆盖,是另一回事。建议在脚本里为每组参数生成独立的数据文件名。
最后提醒一点:这个仿真模型展示的短路电流规律,和实际电网短路计算还有差距。原因包括实际系统存在发电机自动调节、负荷动态特性、线路分布电容等因素。但作为理解短路暂态过程的教学工具,它的价值已经很充分。把最小模型吃透,后面无论做保护配合还是做分布式电源短路分析,都能快速上手。