配电网故障电流分析是继电保护整定、设备选型和运行方式安排中绕不开的一步。只要线路发生过流、设备被短路冲击、保护拒动后需要对故障电流进行计算和复盘,都会用到这项分析。面对简单单电源辐射状配电网,手工短路计算还能接受;但当故障类型变多、需要观察故障发生瞬间的动态波形时,手工公式和稳态计算就显得不够直观。用 Matlab/Simulink 仿真,可以在同一个模型里改变电源参数、线路长度、负载大小、故障类型和故障时刻,直接观察三相电流、电压和功率的波形变化,再做定量提取。
这篇文章以“简单配电网故障电流分析”为主线,从为什么需要分析故障电流、如何搭建仿真模型,到如何设置不同类型故障、如何从波形中提取有效信息,最后给出常见报错和排查路径。全文按可复现的方式组织,只要电脑里装有带 Simscape Electrical 组件的 MATLAB,就可以跟着搭建一个最小闭环。
1. 先理解故障电流分析到底在分析什么
1.1 故障电流的定义和工程意义
设备绝缘损坏、导线外力碰触、雷击闪络、树障、异物跨接,都会让相与相或相与大地之间形成低阻抗回路。回路一旦出现,电源侧的电动势就会在很低的阻抗上产生很大的电流,这个非正常的电流就是故障电流。
故障电流分析的工程意义有三个层次:
- 保护定值整定需要知道极端情况下电流有多大,才能确定断路器、熔断器、保护装置的动作值。
- 流经短路路径的电动力和热效应会考验一次设备,需要校验设备能否耐受。
- 分析故障电流方向、大小和幅值变化趋势,可以帮助判断故障位置、故障类型和切除策略。
所以故障电流分析并不只是“算一个短路电流”,它同时服务于保护、容量、稳定性和运维排查。这也是为什么即使网络很简单,也要按一套规范流程做电流计算或仿真验证。
1.2 配电网常见故障类型与仿真关注点
配电网故障可以按相别和接地情况划分。最常用的是四类:
| 故障类型 | 简洁描述 | 故障电流特征 | 仿真中常用设置 |
|---|---|---|---|
| 三相短路 | ABC 三相同时短接 | 三相电流对称,短路电流最大 | 故障模块选择 ABC 三相 |
| 两相短路 | BC 两相直接连接 | 不对称,故障相电流较大,幅值约为三相对称短路的 0.866 倍左右 | 故障模块选择 BC 两相 |
| 两相接地短路 | BC 两相短接并接地 | 不对称,故障电流大小受中性点接地方式影响 | 故障模块选择 BCG |
| 单相接地短路 | A 相直接接地 | 不对称,故障相电流和电压变化受中性点接地方式影响 | 故障模块选择 AG 或 A-G |
单相接地在真实配电网中占比最高,但在仿真教学里,三相短路更容易用来理解基本原理,因为它对称、计算简单、波形清晰。两相短路和单相接地则用来理解不对称故障的电流分配。
1.3 为什么用 Matlab/Simulink,而不是只做手算
手工短路计算通常采用标幺值和对称分量法,能算出稳态故障电流幅值,适合初步校核。但真实运行中,故障过程包含非周期分量、衰减直流分量、电压跌落、恢复过程,这些动态特征在保护动作、断路器开断的研究中非常重要。Simulink 里的电力系统模型可以保存完整的电磁暂态波形,修改参数后重新运行一遍就能看到故障前、故障中和故障后的全过程,比反复抄写公式和计算矩阵要方便得多。
2. 环境准备:确认组件和求解器,避免建到一半才发现缺库
2.1 需要安装的核心组件
当前很多 Simulink 电力仿真教学都基于 Simscape Electrical,它里面包含了电源、线路、变压器、负载和故障模块。在 MATLAB 命令行输入powerlib,如果能打开电力系统库,说明组件可用。这个库在老版本中叫 SimPowerSystems,新版本已并入 Simscape Electrical。不同版本的库路径和模块名称会有差异,但只要能看到Three-Phase Source、Three-Phase Fault、Three-Phase Series RLC Branch这些模块,就能继续建模。
安装组件时注意版本匹配。R2020b 之后的版本一般直接安装Simscape Electrical即可,旧版本可能需要单独安装Simscape Power Systems。如果仿真时遇到unrecognized block或simscape electrical is not installed相关提示,优先回控制面板或 Add-On Explorer 检查组件状态。
2.2 新建模型的基本方式
推荐用命令行方式创建模型,方便复制和重复执行:
% 新建空白模型 new_system('fault_analysis'); open_system('fault_analysis'); % 打开电力系统模块库 powerlib也可以在 Simulink 起始页中选择Blank Model,然后从库浏览器拖拽模块。这里建议先建一个空白工程目录,把模型文件和数据脚本分开存放,避免多个临时脚本把 MATLAB 工作区弄乱。
2.3 powergui 的求解器模式要先确定
电力系统仿真模型必须包含powergui模块。它在 Simscape Electrical 的专门工具库里,通常拖动到模型任意位置即可。powergui 提供三种典型模式:
Continuous:连续时间仿真,适合观察完整电磁暂态过程,速度较慢。Discrete:离散仿真,需要设置采样时间,速度快,适合长时间观察。Phasor:相量模式,只适合工频稳态和简单暂态,不适合精确故障波形分析。
学习故障电流时推荐使用Continuous或Discrete。模型时钟步长可以先选择自动求解器,让 Simulink 自行决定,如果出现收敛问题再调整为固定步长。比如使用ode23tb和1e-4秒步长,通常能兼顾速度和稳定性。
注意:在正式仿真前,先确认 powergui 中的仿真类型与求解器设置一致。否则即使模块连接正确,也会出现波形不正常、报代数环错误或 Results 不更新的情况。
2.4 最小模型需要的模块清单
以下表格列出一个最简配电网故障电流模型会用到的核心模块:
| 模块 | 库位置 | 作用 |
|---|---|---|
| Three-Phase Source | Simscape Electrical / Specialized Power Systems | 模拟配电网电源 |
| Three-Phase Series RLC Branch | 同库 | 等效线路阻抗或负载阻抗 |
| Three-Phase Load | 同库 | 模拟负载 |
| Three-Phase Fault | 同库 | 模拟各种短路故障 |
| Three-Phase V-I Measurement | 同库 | 测量三相电压电流 |
| powergui | 同库 | 配置求解器与显示电气状态 |
| Scope | Simulink / Sinks | 观察波形 |
| To Workspace | Simulink / Sinks | 把波形数据传回 MATLAB 工作区 |
3. 搭建一个最简单的单电源-线路-负载-故障模型
3.1 模型整体连接关系
这一节搭建的目标模型一定要简单到能在十分钟内完成。结构如下:
三相电源 -> 线路阻抗(RL) -> 测量模块 -> 负载 -> 故障模块故障模块放在负载之前,也就是线路末端。这样做的好处是,故障时流经故障点的电流等于电源经过线路阻抗后的短路电流,便于手算对照。测量模块放在线路和负载之间,用来同时读取故障点上游电流和母线电压。
在实际画图时,建议把电源放在左侧,线路横排,负载放在右侧,故障模块用一条向下的并联支路接到地面。这样整个模型从左到右就是电源到负荷的功率流动方向,读波形时不会混乱。
3.2 主要模块参数设置
模型接线完成后,依次设置几个模块的参数。
三相电源参数示例:
Phase-to-phase voltage (V): 10000 Frequency (Hz): 50 Internal resistance (ohm): 0.1 Internal inductance (H): 0.001线路阻抗参数示例:
Resistance R (ohm/km): 0.25 Inductance L (H/km): 0.0002 Length (km): 5注意:Three-Phase Series RLC Branch模块在参数中直接填写总电阻和总电感,而不是单位长度值。因此 5 公里线路对应的总电阻是1.25 ohm,总电感是0.001 H。
负载参数示例:
Configuration: Y (grounded) Nominal phase-to-phase voltage (V): 10000 Active power P (W): 500e3 Inductive reactive power QL (var): 200e3负载模型可以先用恒阻抗负载,因为恒功率负载在故障时可能出现数值收敛问题。这里用Three-Phase Load并设置成恒阻抗或恒功率都行,但在初学者阶段更推荐使用简单负载或直接取消负载。取消负载时,保留一个很小的并联支路也可以,避免仿真代数环。
故障模块参数示例:
Fault type: 可以选 ABC、AG、BG、CG、AB、BC、CA、ABCG 等 Transition status: [1, 0] 或 [0, 1] Transition time(s): [0.2, 0.35] Fault resistance Rf (ohm): 0.01 Ground resistance Rg (ohm): 0.01其中Transition status [1,0]表示故障在第一个时刻从闭合到断开?实际理解是,在0.2s时刻故障切换为另一种状态,在0.35s时刻再切换回。通常设为[0, 1, 0],即在0.2s发生故障,在0.35s切除故障。具体写法要结合对话框中的说明,不同版本略有差异。
3.3 添加测量模块和显示波形
在 Simulink 中,从Simscape Electrical / Specialized Power Systems / Sensors and Measurements中拖入Three-Phase V-I Measurement,把内部信号接到电气线路上。然后在测量模块上,用Signal Selector或手动引出Current和Voltage信号,连接到 Scope。
Scope 中可以添加多个端口,分别显示三相电压、三相电流、故障电流。如果只想看故障电流,可以直接从Three-Phase Fault模块的信号输出端引出一路Fault currents信号。
常见做法是在故障模块的参数框里勾选Measurements区域的Fault currents,就会出现一个额外的输出端口。把该输出接到 Scope,方便直接观察短路路径上的三相电流。
3.4 运行前的自检清单
启动仿真前,按这个顺序检查模型:
- 所有电气节点是否用电气线路连接,而不是普通 Simulink 信号线。
powergui是否存在于模型中。- 电源、线路、负载参数是否合理,变压器或负载电压是否与电源一致。
- 故障时间是否在仿真时间范围内,比如仿真总时长设为
0.5s,故障发生在0.2s。 - 测量模块信号是否有终止端,避免悬浮信号导致警告。
如果检查完仍无法运行,也可以先关闭故障模块的Fault current输出,待模型空载运行成功后再打开。这样能先排除基础连接错误。
4. 设置不同故障类型,观察故障电流的变化规律
4.1 三相短路:最基础,也最容易校验
三相短路时,把Three-Phase Fault的模式设置为ABC,故障电阻可以设置得很小,比如0.01 ohm。在这种对称短路下,三相电流波形仍保持对称,但幅值明显增大。
仿真后,Scope 中的电流波形会表现为:故障前负载电流较小,故障瞬间电流快速上升,随后进入按系统时间常数衰减再稳定的过程。这个衰减过程来自线路电感和电源内阻,仿真目视可见。
三相短路的稳态电流可以用手算快速校验:
故障电流 = 电源线电压 / (√3 × (电源内阻 + 线路阻抗))例如 10kV 系统,电源内阻和线路总阻抗加起来约为1.25 + j0.25 ohm,则故障电流约为几千安培量级。通过这个对照可以看出模型参数是否设置正确。
4.2 单相接地故障:中性点接地方式影响巨大
单相接地是最常见的配电网故障,但它的电流特征比三相短路复杂。仿真中设置只让A相接地,也就是选择AG。如果电源中性点没有接地,故障电流很小;如果采用中性点经低阻接地,故障电流显著增大。
在 Simulink 里,能不能体现这种差异,取决于电源模块的接法。三相电源可以选择Y接法,并设置中性点是否接地。如果选Y g,表示中性点直接接地;如果选Y flat则中性点不接地,需要通过阻抗接地。
因此做单相接地仿真时,先问自己一个问题:这套配电网的中性点接地方式是什么。不要只把故障模块改成AG其他都不动,那样看到的结果可能完全不反映真实场景。
4.3 两相短路和两相接地
两相短路选择BC,两相接地选择BCG。故障后两个故障相电流不对称,波形上无法像三相短路那样直接判断大小。由于节点电压不平衡,非故障相电压会升高。在故障电流分析中,这类结果更多用于保护相间故障的定值校验。
两相短路电流的理论倍数大约是三相短路电流的√3/2,也就是接近0.866倍。仿真结果不一定精确等于这个倍数,因为存在非周期分量,但稳态段的平均值应该接近。如果偏离太大,可能是故障电阻设置过大或负载对稳态电流产生了明显影响。
4.4 故障电阻和故障时间如何影响结果
故障电阻对故障电流影响最直接。实际配电网中的短路可能是金属性短路,也可能是经电弧或物体接触形成的非金属性短路。Fault resistance Rf设置越大,短路电流越小,波形越平缓。模拟金属性短路时,Rf取0.001到0.05 ohm;模拟经过渡电阻短路时,可以用1到20 ohm。
故障发生时刻同样重要。故障发生时如果正好处于相电压过零点附近,非周期分量较小;如果处于电压峰值附近,短路电流中可能包含明显的偏移直流分量。在仿真中修改Transition time的数值,例如从0.2s改为0.205s,就能观察到波形起始点变化。这个细节在继电器测试中尤其重要,因为偏移直流分量会影响保护算法和断路器开断能力。
| 参数 | 调小的影响 | 调大的影响 | 推荐初始值 |
|---|---|---|---|
| 故障电阻 Rf | 故障电流变大,瞬态冲击更明显 | 故障电流变小,更接近过负荷电流 | 金属性短路取 0.01 ohm |
| 接地电阻 Rg | 接地故障电流更容易判断 | 单相接地电流不明显 | 0.01 ohm |
| 故障时间点 | 偏移直流分量变大或变小 | 同理 | 0.2s 附近 |
| 仿真步长 | 精度更高,速度慢 | 波形毛刺多,甚至不收敛 | 固定步长 1e-4 到 1e-5 秒 |
5. 把 Scope 里的波形变成可分析的故障电流数据
5.1 为什么不能只靠 Scope 观察
Scope 方便目视,但做定量分析时会遇到两个问题:第一,无法精确读取峰值和有效值;第二,需要手动把波形数据导出,再和其他工况结果对比。更好的方法是使用To Workspace模块,把故障电流数据保存到 MATLAB 工作区,然后用脚本计算峰值、有效值、谐波含量或动作时间裕度。
5.2 利用 To Workspace 模块保存波形
在模型中加入To Workspace模块,信号接在故障电流输出或测量模块的输出上。设置变量名,例如fault_current,保存格式选择Structure with time或Array。如果使用Structure with time,仿真完成后会在工作区生成一个结构体,其中包含time和signals字段。
也可以使用sim命令直接返回数据,避免每次都要手动点击运行:
% 设置仿真时间 set_param('fault_analysis', 'StopTime', '0.5'); % 运行仿真并等待结束 simOut = sim('fault_analysis');如果模型里已经有To Workspace模块,仿真结束后可以直接访问变量。例如:
t = fault_current.time; Ia = fault_current.signals.values(:, 1); Ib = fault_current.signals.values(:, 2); Ic = fault_current.signals.values(:, 3);5.3 计算故障电流峰值和有效值
得到采样点后,先定位故障发生后的数据段,再计算幅值。这里给出一个简化脚本,用于把三相电流中稳态段的有效值计算出来:
% 假设 t、Ia、Ib、Ic 已经存在于工作区 % 故障稳定段取 0.30s 到 0.34s 区间 idx = t >= 0.30 & t <= 0.34; % 计算各相 RMS Ia_rms = rms(Ia(idx)); Ib_rms = rms(Ib(idx)); Ic_rms = rms(Ic(idx)); fprintf('A 相 RMS 电流: %.2f A\n', Ia_rms); fprintf('B 相 RMS 电流: %.2f A\n', Ib_rms); fprintf('C 相 RMS 电流: %.2f A\n', Ic_rms); % 计算故障发生后的最大瞬时电流 max_Ia = max(abs(Ia(t >= 0.2))); fprintf('A 相故障后最大瞬时电流: %.2f A\n', max_Ia);这段脚本的关键是idx区间必须避开故障刚发生时的非周期分量。故障瞬间的冲击电流通常大于稳态电流,如果直接用全波形算 RMS,得到的结果会偏高。实际工程中,保护定值要用若干周波后的稳态有效值,而不是冲击峰值,因此分段计算更合理。
5.4 绘制多工况对比图
如果想比较不同故障电阻下的电流波形,可以在循环中修改模型参数并重新仿真:
Rf_list = [0.01, 0.5, 2, 5]; legend_str = {}; figure; for i = 1:length(Rf_list) % 修改故障模块中故障电阻参数 set_param([model '/Three-Phase Fault'], 'FaultResistance', num2str(Rf_list(i))); simOut = sim(model, 'StopTime', '0.5'); % 提取 A 相电流 [t, Ia] = getData(simOut, 'fault_current'); % 根据实际结构封装 plot(t, Ia); hold on; legend_str{end+1} = sprintf('Rf = %.2f ohm', Rf_list(i)); end legend(legend_str); xlabel('时间 / s'); ylabel('A 相电流 / A'); title('不同故障电阻下的故障电流波形');注意:不同版本中getData或simOut的属性访问方式不同。更稳妥的做法是使用logsout信号记录器或者已经落盘的To Workspace变量,避免反复读取simulink.simulationOutput导致脚本差异。
6. 常见故障模块报错和仿真异常排查路径
6.1 故障模块没有输出电流
现象:Scope 里完全没有波形,或者只有故障前的负载电流,故障模块产生的额外电流没有显示。
排查顺序:
- 检查
Three-Phase Fault是否勾选了Fault currents测量。没有勾选时,故障模块不会有电流输出端口。 - 检查故障时间是否在仿真时长内。如果 StopTime 设为
0.1s,而故障切换时间设为0.2s,整个仿真期间不会出现故障。 - 检查故障模块设置的切换状态。不要把
Transition status写成[1,0]后误以为故障发生了,应该确认状态数组的含义。通常[1,0]表示先是故障状态,然后变成正常状态,所以会在仿真一开始就有故障;[0,1,0]才表示 0 到 0.2 秒正常,0.2 秒故障,0.35 秒恢复。 - 检查 Scope 接线是否接到了信号线上,而不是电气线上。Simulink 的信号线和 Simscape 电磁线不能混用。
6.2 仿真报错:不收敛或代数环
现象:仿真中途停止,报Solver not converging,或者提示Algebraic loop detected。
常见原因:
- 电源内阻设置为 0,或线路阻抗太小,形成纯电感回路,导致数值微分困难。
- 故障电阻设为 0,同时接地电阻也为 0,故障路径阻抗过低。
- 离散仿真步长过大,采样时间大于电气时间常数。
处理方式:
- 给电源加一个很小的内阻,例如
0.01 ohm。 - 给故障电阻设置一个非零最小值,比如
1e-3 ohm。 - 将求解器改为变步长,选择
ode23tb或ode15s,或改用离散模式并减少步长。
6.3 故障电流波形有大量毛刺
现象:电流波形在故障瞬间出现高频振荡或尖刺,看起来不像正常短路电流。
原因:
- 模型连接中存在悬空线路或未连接的电感支路,会产生数值振荡。
- 故障时刻接近求解器步长,采样点没有对齐。
- 使用了
Continuous模式但求解器最大步长过大。
排查:
- 把最大步长从
auto改为1e-5或更小,观察毛刺是否消失。 - 在 powergui 中查看
Sample time,确认离散采样时间。 - 用测量模块的
Voltage和Current输出同时看,如果毛刺在瞬间出现后立即消失,一般是数值问题。
6.4 仿真结果与手工计算对不上
这是很多初学者最容易遇到的心理落差。通常不是模型错了,而是对比口径不同。
第一个口径:手算短路电流通常用稳态公式,忽略故障瞬间的非周期分量。仿真波形如果直接取最大值,必然比手算大。应该取故障后若干周波的 RMS 值。
第二个口径:手算把负载忽略不计,简化成空载短路;仿真模型中如果保留了较大负载,故障电流会受到负载分量的影响。建议在对照时,先把负载调小或者在故障时刻另建一个空载工况。
第三个口径:线路阻抗的单位。Simulink 模块里如果填的是总阻抗,手算时也从线路总线取,才不会差一位。
| 现象 | 可能原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 完全没有故障波形 | 故障时间设错或没勾选测量 | 查看 Transition time 和测量选项 | 改为 0.2s 内发生故障并勾选 Fault currents |
| 报不收敛 | 故障电阻或电源内阻过小 | 检查阻抗设置和求解器 | 增加小电阻或改 ode23tb |
| 波形毛刺多 | 步长过大或悬空节点 | 缩小步长、检查节点 | 固定步长 1e-5,移除悬空线 |
| 结果偏大或偏小 | 对比口径不一致 | 对比 RMS 和故障时间段 | 取故障后稳定段多次平均值 |
7. 从学习仿真到工程实践的注意事项
7.1 学习仿真做了哪些简化
上面搭建的模型属于教学最小闭环。它默认电源电压对称,线路阻抗恒定,忽略电弧电阻、导线对地电容、负荷动态特性和保护装置动作时间。这些简化能很快展示故障电流基本特征,但不等于实际配电网的全部行为。真实系统里,变压器接线组别、中性点接地方式、线路分布电容、故障电弧非线性、负荷冲击特性都会影响故障电流波形,尤其是单相接地故障。
因此学习仿真的结论用来理解原理已经足够,但在实际保护整定时,不能直接拿这个模型的结果下结论,需要基于真实系统短路电流计算或标准测试。
7.2 仿真参数和工程数据如何对齐
工程上做仿真前,至少要准备好以下信息:
- 系统额定电压、频率、电源短路容量或系统阻抗。
- 变压器的容量、短路阻抗、连接组别。
- 线路型号、长度、单位电阻电抗。
- 负荷分布和故障点位置。
- 中性点接地方式。
- 保护装置动作时间和断路器开断时间。
将以上数据换算成 Simulink 中的 R、L、电压源内阻等参数后,才能得到接近实际的模型。临时估计的参数只适合讲解方法,不适合支撑报告结论。
7.3 一个可以复用的最佳实践清单
每次做配电网故障电流仿真时,可以按下面的清单检查:
- 先确认模型结构和参数来源,不能用一组没说明出处的参数直接出结果。
- 故障前先运行一次空载或负载正常工况,确认电压电流符合预期。
- 故障时刻预留足够的仿真实时长,至少覆盖故障前 0.1 秒和故障后 0.2 秒。
- 分别记录三相电流峰值和故障后稳态 RMS 值。
- 对不对称故障,同时记录零序电流,单相接地时零序电流是重点观察对象。
- 每改动一个参数,保存一份模型副本或在 README 中记录版本,便于回溯。
- 结果与手算或标准短路电流值对比,如有较大偏差先检查参数单位和取值区间。
- 生产环境中增加保护动作逻辑后再验证一次,避免只分析故障电流却不关心切除过程。
7.4 扩展方向:更贴近实际配电网的仿真
如果要把这个简单模型继续深化,可以考虑以下方向:
- 在多分支线路中设置多个故障点,观察同一电源下不同位置故障电流的差异。
- 加入配电变压器,在变压器二次侧故障,分析连接组别对短路电流大小的影响。
- 接入逆变器型分布式电源,观察分布式电源对短路电流水平的贡献及其动态特性。
- 加入简单的电流保护逻辑,模拟断路器跳闸和后加速,形成故障电流分析与保护联动的闭环。
- 使用 FFT 工具分析故障电流中的谐波成分,尤其是在电弧接地故障场景下,谐波谱可能与正常运行差异明显。
这些扩展方向都建立在最基础的故障电流模型之上,先把简单模型跑通,再逐步增加复杂度,比直接从完整配电网模型开始更容易排错。
简单配电网故障电流分析的输出结果不只是几个波形图。它帮助你理解故障电流在不同故障类型、不同故障时刻、不同故障电阻下的变化规律,也是后续保护定值计算、不平衡分析、小电流接地选线等技术的起点。建议先花时间把模型搭到能手算对照的程度,再往里加故障类型和工程参数。演示数据只能用于学习逻辑,真正拿到现场前,需要用真实系统数据和标准计算反复校验。仿真模型的价值在于可以快速重复和验证,但它始终只是分析工具,不能替代对真实物理系统的理解。