ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

基于MATLAB/Simulink的配电网故障电流分析与仿真实践

基于MATLAB/Simulink的配电网故障电流分析与仿真实践 各位做电力系统仿真、配电网故障分析或者刚接触 MATLAB/Simulink 的朋友们大家好。之前在实际项目中想快速验证一个简单的配电网短路故障场景发现网上很多资料要么只给一个孤立的 Simulink 模型文件要么只讲理论推导缺少从“电路原理 → 模型搭建 → 参数设置 → 波形解读”的完整闭环。本文就围绕“简单配电网故障电流分析”这个主题整理一套基于 MATLAB/Simulink 的可复现操作流程。新手可以照着逐步建模有一定基础的朋友可以直接跳转到“参数设置”和“故障波形”部分对照排查。文章会覆盖配电网故障电流分析的基本概念、Simulink 建模环境准备、三相短路与单相接地故障的仿真案例、结果波形解读以及常见报错排查和工程建议。所有模块路径、参数、脚本都会尽量给全方便你边读边实践。1. 配电网故障电流分析是什么为什么要做仿真1.1 从“故障电流”说起配电网是电力系统末端直接面向用户的部分电压等级常见的有 10kV、20kV、35kV。当配电网中的线路、变压器或用电设备发生绝缘损坏、雷击闪络、外力破坏等情况时故障相与地或者相与相之间会形成短路回路这时流过的电流会远远超过正常运行时的负荷电流这个电流就是故障电流也叫短路电流。故障电流分析要做的事情就是计算或仿真出不同故障类型下系统中各支路电流的大小、相位、衰减特性以及关键节点电压的跌落程度。它的意义在于校验断路器、熔断器等保护设备的开断能力是否足够整定继电保护装置的动作电流和动作时间评估故障对电网设备的热稳定和动稳定影响为接地方式选择、设备选型提供依据。1.2 配电网常见故障类型配电网故障主要分为短路故障和断线故障短路故障又可以分为故障类型表示方式故障特点三相短路ABC 三相短接故障电流最大对称故障三相对称两相短路AB / BC / CA 两相短接不对称故障电流比三相短路小两相接地短路AB 两相短接并接地不对称故障可能产生较大零序电流单相接地某一相经电弧或金属性接地在配电网中最常见故障电流取决于中性点接地方式其中单相接地在 10kV 配电网中占比最高有时高达 60%~80%。中性点不接地系统发生单相接地时故障电流很小线电压依然对称系统可以暂时运行但如果长期带故障运行容易发展为两点接地短路。中性点经小电阻接地时单相接地故障电流可以达到数百安培便于保护快速切除。1.3 为什么用 MATLAB/Simulink 做配电网故障仿真配电网故障暂态过程涉及三相电路、电磁暂态、保护动作时序等内容手算只能做稳态短路电流的近似估算无法直观看到暂态冲击电流和非周期分量。Simulink 提供 Simscape Electrical原 SimPowerSystems/Simscape Power Systems工具箱用模块化方式搭建三相电源、线路、变压器、负荷和故障模块可以直接仿真故障发生瞬间的电流、电压波形。相比其他仿真软件Simulink 的优势在于图形化建模模块拖拽即可完成三相电路搭建内置 Three-Phase Fault 故障模块可灵活设置故障类型、故障时刻和过渡电阻与 MATLAB 脚本无缝配合能批量修改参数、自动运行仿真、把数据导出到工作区波形分析方便可直接用 Scope 或用 MATLAB 绘图函数处理结果。2. 环境准备与版本说明2.1 软件环境本文示例使用的环境如下操作系统Windows 10/11 或 Ubuntu 20.04/22.04 均可MATLAB 版本R2021a 及以上Simscape Electrical 的模块路径在 R2021a 前后略有差异但核心模块名称一致必需工具箱Simulink、Simscape Electrical或 SimPowerSystems / Simscape Power Systems辅助工具箱MATLAB 基础环境即可不需要额外安装第三方库。如果你使用的是 R2019b、R2020a 这类相对较早的版本本文中的模块基本都能找到只是部分模块在库浏览器中的分类名称有所变化例如早期的 SimPowerSystems 在 R2021a 之后并入 Simscape Electrical查找时用搜索框定位模块名即可。2.2 模型整体思路为了便于理解我们先确定一个最简单的配电网仿真结构10kV 三相电源 → 输电线路RL 阻抗→ 故障点 → 负荷仿真核心流程建立三相电压源模拟系统电源用三相串联 RL 支路模拟线路阻抗插入 Three-Phase Fault 模块设置故障类型和故障时间加入 Three-Phase V-I Measurement 测量故障点前后的电压电流用 Scope 或 To Workspace 输出数据设置仿真时长和求解器运行仿真并分析故障电流。2.3 新建模型工程在 MATLAB 主界面点击“Simulink”按钮或命令行输入simulink打开 Simulink 库浏览器后在工具栏“新建”→ 选择“Simulink Model”新建一个空模型。也可以直接使用命令行创建mdl distribution_fault_demo; new_system(mdl); open_system(mdl);这样会生成一个名为distribution_fault_demo的新模型并打开画布。后面搭建模块时我建议你在画布中把模块按“电源区 → 线路区 → 故障区 → 负荷区”排列方便后期查看和修改。3. Simulink 配电网故障模型核心模块解析配电网故障仿真模型不算复杂但每个模块的参数设置直接决定仿真结果是否可信。下面把核心模块逐个拆开讲。3.1 Three-Phase Source三相电源三相电源是系统的能量来源在 Simscape Electrical Electrical Sources 中可以找到Three-Phase Source模块。双击模块进入参数界面主要设置项如下Phase-to-phase voltage (Vrms)线电压有效值。10kV 配电网就填 10e3Frequency (Hz)工频 50HzInternal connectionYg中性点接地、Y中性点不接地或 Delta三角形接法。研究单相接地电流时电源中性点接地方式很重要Specify impedance using short-circuit level可以用短路容量自动计算电源内阻抗也可以手动指定 R、L 值。简单模型直接用手动阻抗设一个较小的阻抗来模拟系统等值内阻。这里有一个新手容易忽略的点如果是仿真“中性点不接地系统单相接地”电源中性点必须选择 Y不接地而不是 Yg。如果选成 Yg单相接地故障电流会非常大接近三相短路电流这就不符合实际的中性点不接地系统特性。3.2 Three-Phase Series RLC Branch线路阻抗配电网线路通常用集中参数模型表示比较简单的方式就是用Three-Phase Series RLC Branch模块三个相共用一组 R、L、C 参数。在模型中我们需要把线路参数设置为“串联 RL”模式即Resistance R (Ohms)线路电阻Inductance L (H)线路电感Capacitance C (F)设为 0 或 inf等效为开路。举例来说一条 10kV 架空线路如果单位长度阻抗是 0.3Ω/km电感是 1.2mH/km线路长度 5km那么R 0.3 × 5 1.5ΩL 1.2 × 5 6mH 0.006H。实际工程中线路参数需要查设计手册或线路型号参数表本文重点是仿真方法所以参数选取以符合量级为主。3.3 Three-Phase Fault故障模块Three-Phase Fault是故障仿真的核心模块位于 Simscape Electrical Electrical Sources 或 Protection 相关分类中。双击进入设置界面常见选项如下Fault type故障类型可选 Phase A、Phase B、Phase C、Phase A-B、Phase B-C、Phase A-B-C、A-B-C-Ground 等A-B-C三相短路A-GroundA 相单相接地A-BA、B 两相短路A-B-Ground两相接地短路。Fault timing故障发生时刻和结束时刻用 “Switch on” 和 “Switch off” 表示Transitional resistance过渡电阻 R_on。金属性短路时设为 0.001Ω不要直接设 0避免数值奇异弧光接地时可以设为几欧到几十欧Ground resistance接地电阻 R_g只在接地故障中使用。需要特别注意的是故障时间必须与仿真求解器配合。比如你设置故障在 0.1s 发生0.3s 切除那么仿真时长必须大于 0.3s至少设到 0.4s 才能看到完整的故障后系统恢复波形。3.4 Three-Phase V-I Measurement电压电流测量Three-Phase V-I Measurement用来测量指定位置的线电压、相电压、相电流等信号。它相当于一个虚拟互感器不改变系统电气结构。在模块参数中你可以勾选需要输出的信号Voltage输出线电压和相电压Current输出三相电流。测量模块的输出信号可以连接 Scope 查看波形也可以通过 Goto 标签传到其他位置或者用 To Workspace 导出到 MATLAB 工作区。3.5 Three-Phase Series RLC Load负荷负荷用Three-Phase Series RLC Load表示需要设置额定线电压、频率、有功功率和无功功率。简单模型可以设定为恒阻抗负荷比如 3MW 0.5Mvar。3.6 求解器与仿真时间Simulink 默认的求解器通常是可变步长的 ode45。但是电气系统仿真中由于存在很小的电感和电容时间常数ode45 可能会很慢甚至出现“仿真卡住不动”的情况。推荐设置Solver 选择ode23tb适合刚性系统Max step size 设置为1e-4或1e-5仿真停止时间根据故障时序设定本文示例可以设为0.4s如果需要精确观察故障瞬间的暂态峰值可以把 Max step size 调到1e-5或更小。4. 简单配电网故障电流仿真实战下面我们以一个最简单的 10kV 配电网馈线模型为例完整演示从模型搭建到波形分析的流程。4.1 模型结构与参数清单模型拓扑如下三相电源10kV50HzYg → 线路13km → 测量点1 → 故障模块Fault → 线路22km → 负荷3MWj0.5Mvar模型最终效果是在 0.1s 时刻发生故障0.3s 故障切除分别仿真三相短路和单相接地两种工况观察故障点电流波形。参数清单见下表模块参数数值Three-Phase SourcePhase-to-phase voltage10e3Three-Phase SourceFrequency50Three-Phase SourceInternal connectionYg线路1R0.9 Ω线路1L0.0036 H故障模块Fault type按工况设置故障模块Switch on0.1故障模块Switch off0.3故障模块R_on0.001 Ω线路2R0.6 Ω线路2L0.0024 H负荷ConfigurationY 型负荷Active power3e6 W负荷Reactive power0.5e6 var4.2 Simulink 模型搭建步骤打开 Simulink 库浏览器按以下步骤拖拽模块并连线从Simscape Electrical Electrical Sources拖入Three-Phase Source从Simscape Electrical Passive Elements拖入两个Three-Phase Series RLC Branch从Simscape Electrical Electrical Sensors拖入Three-Phase V-I Measurement从Simscape Electrical Protection或Electrical Sources中搜索Three-Phase Fault拖入从Simscape Electrical Passive Elements拖入Three-Phase Series RLC Load从Simulink Sinks拖入Scope。连线顺序Source → Branch1 → Measurement1 → Fault → Branch2 → Load其中 Measurement1 用于测量故障点上游的电流电压。连接时需要注意模块端口是三相复合端口Simscape 电气端口不需要像普通 Simulink 信号那样一根一根连端口会自动以粗线显示三相连接。4.3 用 MATLAB 脚本批量修改故障类型并运行为了对比三相短路和单相接地两种情况可以不用每次手改对话框直接用 MATLAB 脚本设置模块参数并仿真。在模型文件保存为distribution_fault_demo.slx后新建一个run_fault_analysis.m脚本内容如下%% 简单配电网故障电流分析脚本 % 通过脚本修改 Three-Phase Fault 模块参数执行仿真并输出电流数据 % 适用版本MATLAB R2021a 及以上 clear; clc; close all; % 打开模型 mdl distribution_fault_demo; open_system(mdl); % 定义仿真时长 t_stop 0.4; % 载入模型到内存 load_system(mdl); % 故障模块路径 fault_block [mdl /Three-Phase Fault]; % 工况1三相短路A-B-C 故障 set_param(fault_block, FaultType, Phase A-B-C); tic; simOut1 sim(mdl, StopTime, num2str(t_stop)); fprintf(三相短路仿真耗时%.2f 秒\n, toc); % 工况2A相单相接地A-Ground 故障 set_param(fault_block, FaultType, Phase A-Ground); tic; simOut2 sim(mdl, StopTime, num2str(t_stop)); fprintf(单相接地仿真耗时%.2f 秒\n, toc); % 从仿真输出中提取电流信号 % 假设 Scope 输出使用变量名 fault_current_scope为了便于处理推荐使用 To Workspace 模块 % 这里以 To Workspace 方式读取为例变量名见各 To Workspace 设置 iabc_fault1 simOut1.iabc_fault; % 三相短路下故障点电流 iabc_fault2 simOut2.iabc_fault; % 单相接地故障下故障点电流 t1 simOut1.tout; t2 simOut2.tout; % 绘制三相短路电流 figure(Name, 三相短路故障电流); plot(t1, iabc_fault1, LineWidth, 1.2); xlabel(时间 (s)); ylabel(电流 (A)); title(10kV配电网三相短路故障电流波形); legend(A相, B相, C相); grid on; xlim([0 t_stop]); % 绘制单相接地故障电流 figure(Name, 单相接地故障电流); plot(t2, iabc_fault2, LineWidth, 1.2); xlabel(时间 (s)); ylabel(电流 (A)); title(10kV配电网A相单相接地故障电流波形); legend(A相, B相, C相); grid on; xlim([0 t_stop]); % 输出故障电流峰值 [peak1, idx1] max(abs(iabc_fault1), [], 1); [peak2, idx2] max(abs(iabc_fault2), [], 1); fprintf(三相短路故障峰值电流为 A%.2f AB%.2f AC%.2f A\n, peak1(1), peak1(2), peak1(3)); fprintf(单相接地故障峰值电流为 A%.2f AB%.2f AC%.2f A\n, peak2(1), peak2(2), peak2(3));关于 To Workspace 模块的使用建议在模型中添加 3 个 To Workspace 模块第 1 个连接故障点电流信号变量名iabc_fault第 2 个连接母线电压信号变量名vabc_bus第 3 个连接负荷电流信号变量名iabc_load。输出格式都选择Array这样在 MATLAB 工作区中直接得到矩阵形式的数据方便后续用plot、max、rms等函数分析。4.4 运行结果示例以三相短路为例预期波形特征如下0~0.1s系统正常运行负荷电流很小按 3MW/10kV 计算额定电流约为 173A 左右0.1s故障发生电流瞬间跃升并出现明显的非周期分量电流波形不再对称于零轴0.1~0.3s持续短路状态电流幅值由系统阻抗和故障位置决定0.3s故障切除电流回落到负荷水平。单相接地故障时由于模型中电源中性点使用 Yg 接地A 相接地故障会形成故障相经过大地返回的回路故障电流主要出现在 A 相B、C 相电流变化相对较小。如果电源中性点改为 Y 不接地则 A 相接地后故障电流非常小另外两相对地电压升高到线电压水平这是中性点不接地系统最典型的故障特征。4.5 结果提取与 MATLAB 后处理如果不想打开巨大的 Scope 图形可以直接用脚本计算故障电流的周期分量有效值和峰值。下面给一个简单的数据处理片段% 提取 0.13s~0.25s 区间的稳态短路电流故障后避开暂态冲击 mask t1 0.13 t1 0.25; i_fault_steady iabc_fault1(mask, :); % 计算每相 RMS rms_a sqrt(mean(i_fault_steady(:, 1).^2)); rms_b sqrt(mean(i_fault_steady(:, 2).^2)); rms_c sqrt(mean(i_fault_steady(:, 3).^2)); fprintf(三相短路稳态电流 RMSA%.2f AB%.2f AC%.2f A\n, rms_a, rms_b, rms_c); % 计算全故障区间的峰值冲击电流 peak_abs max(abs(iabc_fault1), [], 1); impact_a peak_abs(1); fprintf(A 相冲击电流峰值%.2f A\n, impact_a);5. 不同故障类型仿真对比与波形解读故障电流的波形特征和幅值是后续保护定值整定的基础。下面把三种典型短路故障放在一起对比。5.1 三相短路三相短路是对称故障三相电流波形大小相等、相位相差 120°。因为三相对称中性线上没有电流正序分量是唯一的电气量。三相短路的故障电流幅值在各类短路中最大常用于校验断路器的开断容量。在波形上三相短路电流在故障瞬间可能会包含一个较大的非周期分量。非周期分量使故障电流波形整体上移或下移具体方向取决于故障合闸角。仿真中通过设置 Fault 模块内部开关的合闸相位可以模拟不同的合闸初相角从而观察到不同的冲击电流大小。5.2 两相短路两相短路时故障相与非故障相的电流相位关系会发生明显变化。以 A、B 两相短路为例A 相和 B 相电流数值相等、方向相反C 相电流基本为 0。故障电流幅值约为三相短路的 0.866 倍理想情况下忽略负荷电流前。这个结论在仿真中可以通过测量模块直接验证。如果故障点过渡电阻较大两相短路电流还会进一步减小。5.3 单相接地单相接地故障电流的幅值和形态和系统中性点接地方式强相关中性点不接地系统单相接地时故障相与地之间通过线路对地电容形成容性回路故障电流很小通常只有几安到几十安。线电压仍然对称因此系统可以带故障运行 1~2 小时但要尽快查找并隔离故障线路中性点经消弧线圈接地谐振接地通过消弧线圈补偿电容电流故障点电流进一步减小主要成分变为有功分量和高次谐波主要用于减少故障点电弧重燃风险中性点经小电阻接地故障电流可达数百安培甚至更高保护可以靠零序电流快速动作切除故障。在 Simulink 中模拟“中性点不接地”时只需要把 Three-Phase Source 的 Internal connection 从 Yg 改为 Y再把故障模块的接地电阻 R_g 设置为一个较大的值比如 1e6Ω或者直接把故障类型设为无接地相的相间短路即可。仿真后你会发现单相接地电流不再是金属性短路的大电流而是呈现容性特征。6. 常见问题与排查思路配电网 Simulink 仿真虽然模型简单但实际搭建时仍然有不少容易踩坑的地方。下面整理一些高频问题。问题现象常见原因解决思路仿真报错“Invalid setting for input port”或端口连接失败Simscape 电气端口和普通 Simulink 信号端口混连检查连线是否跨了物理域电气模块之间用粗线连接信号模块之间用细线连接必要时使用 Simulink-PS Converter 或 PS-Simulink Converter故障电流巨大10^6 级别电源内阻抗或线路阻抗设置太小或过渡电阻设置为 0把 R_on 设置为 0.001~0.01Ω检查线路阻抗是否按实际长度计算故障后电流波形不振荡直接跳变求解器步长太大Max step size 默认自动在 Configuration Parameters 中把 Max step size 设置为 1e-4 或更小仿真速度非常慢模型中存在小时间常数导致刚性系统默认 ode45 效率低改用 ode23tb 或 ode15s并适当放宽误差限制单相接地电流过大不符合预期电源中性点设置成了 Yg改为 Y不接地或加接地阻抗模型Scope 中信号名显示为“untitled”没有给信号线命名在信号线上双击输入信号名或使用 Goto/From 标签报错“Cannot import model”模型名称与 MATLAB 内置函数重名修改模型名避免命名为power、sim、plot等关键词想导出数据时Scope 数据不好处理Scope 数据需要通过日志或可配置输出导出使用 To Workspace 模块直接导出或使用 Scope 属性中的“Log data to workspace”举个例子很多人第一次做单相接地仿真时发现 A 相接地电流只有几十安远远小于想象第一反应是自己模型建错了。这时候不用急着改故障模块先检查电源中性点接地方式。如果系统是中性点不接地那么这个结果反而是正确的如果是小电阻接地系统需要在电源中性点与地之间串联一个 10Ω 或 20Ω 的接地电阻才能真正模拟现场的小电阻接地方式。模型里 Yg 表示直接接地经电阻接地需要把中性点引出后接电阻再接大地。此处建议搭建模型时把“故障前电流”和“故障后电流”分开观察用两个测量模块分别布置在故障点两侧这样能看到故障电流从电源流向故障点的完整路径。7. 最佳实践与工程建议7.1 模型分层不要把所有模块都堆在一个画布里。简单模型可以平铺但稍微复杂的配电网模型建议使用 Subsystem 分层System_Supply电源模块Line_XXX线路模块Fault_Block故障模块Load_XXX负荷模块。这样后期修改故障位置时只需要复制一个Fault_Block放在不同线路段旁边不必重画整个电路。7.2 保存和归档每次修改参数前先用save_system(mdl)保存模型快照。建议在脚本中设置开关变量自动切换故障类型或故障位置批量运行后把结果保存为.mat文件方便写报告时统一分析。% 批量仿真示例 fault_types {Phase A-B-C, Phase A-Ground, Phase A-B}; results struct(); for i 1:length(fault_types) set_param(fault_block, FaultType, fault_types{i}); simOut sim(mdl, StopTime, 0.4); results(i).faultType fault_types{i}; results(i).iabc simOut.iabc_fault; results(i).tout simOut.tout; fprintf(完成工况 %d: %s\n, i, fault_types{i}); end save(fault_results.mat, results);7.3 不要忽视参数的单位Simscape Electrical 模块默认使用国际单位制电压用 V功率用 W阻抗用 Ω电感用 H。我们在参数设置中常见到 10kV、3MW需要写成10e3、3e6这一点新手经常出错导致结果数值与理论计算对不上。7.4 理论值与仿真值交叉验证仿真建模不是“建出来就行”最终要对仿真结果做合理性校验。最简单的验证方式是用短路电流理论公式估算一下稳态短路电流三相短路电流周期分量有效值[ I_k \frac{E}{\sqrt{3} \times Z_{\Sigma}} ]式中(E) 为电源线电压(Z_{\Sigma}) 为从故障点看进去的总阻抗。10kV 系统如果总阻抗约 2Ω那么三相短路电流约为[ I_k \frac{10000}{\sqrt{3} \times 2} \approx 2887A ]这个结果可以用来快速判断仿真量级是否正确。如果仿真输出电流远大于或远小于这个值就要检查阻抗参数是否设错。7.5 保护时序的配合在配电网故障电流分析中除了关注电流大小也要关注故障持续时间。继电保护会设置定时限或反时限特性故障电流越大切除时间越短。在 Simulink 中可以通过断路器模块Three-Phase Breaker模拟保护跳闸并在 Breaker 模块中设置跳闸时间观察不同动作时间下故障电流对设备的影响。这个扩展方向也适合作为下一步学习内容。7.6 与 Simulink 其他功能结合如果你想做更深入的配电网仿真可以尝试使用 MATLAB App Designer 搭建参数输入界面通过脚本控制 Simulink 模型运行并把故障电流波形显示在 GUI 坐标区使用 Simscape Electrical 中的Three-Phase Transformer模块把 35kV 系统降压到 10kV研究变压器接线方式对故障电流的影响使用 Simulink Coder 把模型生成 C 代码用于硬件在环HIL测试这里提醒一下生成代码前需要确认模型配置满足代码生成要求且相关操作应在合法授权、测试环境验证后进行。8. 总结与下一步学习路线本文通过一个最简单的 10kV 配电网故障电流分析案例梳理了 Simulink 中搭建三相电源、线路阻抗、故障模块、测量模块和负荷模块的完整流程。你在实际操作中需要重点掌握的是根据故障类型选择 Three-Phase Fault 中的 Fault Type 设置根据配电网中性点接地方式设置电源内部连接Yg、Y 或经电阻接地通过求解器设置和最大步长控制故障暂态波形的观察精度用 To Workspace MATLAB 脚本批量完成多工况仿真和数据后处理将仿真结果与短路电流理论估算值交叉验证确保模型参数合理。接下来你可以继续研究的方向包括在中性点不接地系统中加入消弧线圈模型分析补偿度对故障电流的影响把单台电源模型扩展为双电源或多电源系统观察故障电流分布加入保护继电器模型验证三段式电流保护的动作逻辑使用 Simscape Electrical 的分布式发电模块研究光伏、风电接入配电网后对故障电流水平的影响。配电网故障电流分析既是继电保护整定的基础也是设备选型的重要依据。仿真建模只是第一步更重要的是理解不同接地方式和故障类型下电流特征的物理本质。希望这篇文章能帮你绕开初期建模的常见问题快速得到可信的仿真结果。如果你在搭建模型时遇到其他问题欢迎对照文中 FAQ 表格逐步排查。
返回列表