1. 为什么用Simulink研究三段式电流保护:模型化思维的价值
上学那会儿背三段式电流保护的定义,觉得自己什么都懂了:Ⅰ段电流速断、Ⅱ段限时电流速断、Ⅲ段定时限过电流,各管一段,配合起来保护线路。可真到了动手做仿真那天,我发现事情没这么简单——书本里那一句“保护范围”“时限配合”,落到具体模型里全是细节:短路电流算多少、躲最大负荷电流怎么考虑返回系数、相邻线路的Ⅰ段范围末端在哪、断路器跳闸之后的电流波形是啥样的,每一步都得自己搞清楚。
我用Simulink把这个课题完整做下来之后,最大的感触是:仿真不是“把图画出来就完事”,而是逼着你去回答“保护装置到底怎么根据电气量作出动作决策”。这篇博文就把我整个建模、整定、仿真验证的过程拆开来讲,里面有成套的模型思路、初始化脚本、故障场景设置和踩坑记录,适合三类人看:一是电力系统专业正在做课程设计或毕业设计的学生,二是刚接触继电保护但不太熟悉Simulink/Simscape Electrical的工程师,三是想从“理论公式”走向“动作逻辑可视化”的从业者。
先说清楚项目目标是什么。三段式电流保护是最经典、最常用的线路保护方案,它靠电流大小和一个时间阶梯实现本线路主保护、近后备和远后备。我的做法是在Simulink里搭建一个带双端电源的输电线路模型,把保护装置的核心算法——电流采集、比较判断、延时出口、跳闸逻辑——用小步长仿真展示出来,然后设置不同的故障位置和故障类型,观察三段保护各自怎么动作、怎么配合。
这里插一句:有同行问我,不就是个保护逻辑吗,用C语言几十行就写完了,为什么要绕一圈用Simulink?我的回答是,Simulink的价值不在于“逻辑表达”,而在于把一次系统(电网)和二次系统(保护)放在同一个时间轴上。你能看到故障发生后电流波形变化、保护启动、延时计时、断路器分闸的完整过程,还能把整定值、系统阻抗、负荷水平这些参数做成脚本变量反复批量仿真。这种“一次系统和二次系统联动”的视角,是光写代码得不到的。
实际建模时我选了Matlab/Simulink里的Simscape Electrical工具箱,用Three-Phase Source搭系统电源,用Three-Phase Fault做短路故障发生器,用Three-Phase V-I Measurement采集线路电流,再用RMS模块或者直接取瞬时值来判断是否越限。整个模型不算复杂,但参数整定和逻辑配合做扎实了,才能得到有说服力的结果。
2. 三段式电流保护的整定配合逻辑:仿真的理论基础
在打开Simulink之前,先把整定配合的逻辑算清楚,这一步省不掉。我见过不少同学直接拖模块接线,模型画得挺漂亮,一问整定值怎么来的就卡壳,那仿真出来的动作结果根本没有意义。
2.1 电流速断Ⅰ段:按躲过本线路末端最大短路电流整定
Ⅰ段电流速断的核心思想是“瞬时动作,但只保护线路的一部分”。为了保证选择性,它的启动电流必须躲过本线路末端(即最远处)发生短路时的最大短路电流,否则末端故障时本线路的Ⅰ段动作了,下一条线路的保护还没来得及动,就失去了选择性。
整定公式很简单:
Iop.I = Krel.I × Ik.max(末端)
其中Krel.I是可靠系数,一般取1.2~1.3;Ik.max是系统在最大运行方式下,本线路末端发生三相金属性短路时的短路电流。之所以用“最大运行方式”,是因为此时系统等效阻抗最小,短路电流最大,躲过这个最大值之后,其他运行方式下的末端短路电流都在动作值以下。
我在Simulink调试时发现一个初学者最容易忽略的点:Ⅰ段动作电流算出来之后,还要反向验算保护范围。理论上保护范围不能小于线路全长的15%~20%,如果太短——比如只有5%——说明该保护基本没起作用,应该考虑改用其他保护方式。仿真里怎么观察呢?把故障点从线路首端往末端挪,每挪一次看断路器动作不动作,动作与不动作的临界位置就是保护范围的边界。这个动作边界测试在Simulink里很好做,用批量仿真或者直接拖动故障点模块的位置参数就行。
2.2 限时电流速断Ⅱ段:如何接住“越区故障”
Ⅰ段保护不了线路全长,剩下那部分只能靠Ⅱ段来补。但Ⅱ段如果也按本线路末端最大短路电流整定,又会和下一级线路的Ⅰ段保护范围重叠,可能有配合问题。所以Ⅱ段的整定思路是:与相邻线路的Ⅰ段配合。
公式表达为:
Iop.II = Krel.II × Ik(相邻线路Ⅰ段保护范围末端的最大短路电流)
Krel.II一般取1.1~1.2。这样整定的结果是:本线路Ⅱ段保护范围一定伸入相邻线路,但伸入的部分落在相邻线路Ⅰ段的保护范围内,配合起来就是“当相邻线路近端故障时,两边都有可能启动,但相邻线路Ⅰ段瞬时动作,本线路Ⅱ段需要延时等待,如果相邻线路Ⅰ段跳闸成功,本线路Ⅱ段就返回”。
这个延时就是阶梯时间Δt。仿真里我设的是0.5秒,这是定时限保护比较常用的配合时间间隔,实际工程需要根据断路器跳闸时间、保护装置返回时间、时间继电器误差等来整定。在Simulink里体现为给Ⅱ段出口逻辑加一个Transport Delay或Timer模块。
Ⅱ段必须做灵敏度校验,灵敏系数Ksen.II = 本线路末端最小短路电流 / Iop.II,要求大于1.3~1.5。这里必须用最小运行方式下的两相短路电流来算,因为两相短路电流比三相小,是保护最难动作的工况。仿真里要在电源参数那里把系统阻抗调大,模拟最小运行方式,再验证保护能不能可靠动作。这个“最不利工况验证”的思路,值得每个做仿真的人记在脑子里。
2.3 定时限过电流Ⅲ段:躲开负荷电流和自启动电流
Ⅲ段是近后备也是远后备,它的动作电流按躲过最大负荷电流来整定:
Iop.III = Krel.III × Kst × Imax.load / Kre
这里面有两个系数我得特别解释一下。Kst是自启动系数,针对电动机负荷:外部故障切除后电压恢复,电动机群会同时自启动,启动电流远大于正常运行电流,如果定值没考虑这一条,保护就会误动。Kre是返回系数,因为电流继电器动作后要返回,但返回电流比动作电流小,返回系数小于1(对电磁型继电器一般取0.85~0.95,微机保护接近0.9~0.95)。整定公式分母上有Kre,说明定值要更“高”一点,防止正常负荷波动加继电器返回不了导致保护误动。
Ⅲ段时限的整定原则是从负荷侧向电源侧逐级递增一个Δt,这就是“阶梯时限配合”。仿真里要做多级线路配合的话,每个保护装置的Ⅲ段延时不一样,从末端最小延时开始往上加。我做的双端电源线路模型只有一级,所以Ⅲ段延时设置了0.5秒的出口延时,既模拟了时间配合的机制,又不至于让仿真时间拖太长。
这里有个工程现实的细节:现代微机保护里Ⅲ段的延时逻辑都做得很灵活,有反时限特性可选,但仿真作为教学和验证用途,定时限是最直观的。
2.4 三段衔接与整定配合的“三角关系”
为了清楚展示整定值和保护范围的关系,我把一个典型10kV系统的三段定值整理成表格,这也是我仿真时用的初始参数:
| 保护段 | 整定依据 | 动作电流/A | 动作时间/s | 保护范围 |
|---|---|---|---|---|
| Ⅰ段电流速断 | 躲本线路末端最大短路电流 | 约3120 | 0~0.02(瞬时) | 线路首端约40%~50% |
| Ⅱ段限时电流速断 | 与相邻线路Ⅰ段配合 | 约1550 | 0.5 | 本线路全长+相邻线路首端部分 |
| Ⅲ段定时限过电流 | 躲最大负荷电流并考虑自启动 | 约420 | 1.0~1.5 | 本线路全长+相邻线路全长(远后备) |
最后还要验算Ⅲ段的远后备灵敏系数,要求本线路末端短路时Ksen.III≥1.5,相邻线路末端短路时Ksen.III≥1.2。仿真里最典型的场景就是:本线路末端发生两相短路,Ⅲ段必须可靠动作;如果Ⅲ段连这个都达不到定值校验的灵敏度要求,说明整定有问题。整套逻辑理顺之后,模型里的逻辑模块怎么搭都不怕乱了。
3. Simulink模型搭建:从单电源辐射网到双侧电源案例
理论基础铺垫完,进入实操环节。我这次搭建了两个案例模型:第一个是单电源辐射网,主要用于跑通三段式逻辑,理解保护动作时序;第二个是双侧电源系统,用来观察双端供电场景下的配合问题——这也是很多课程设计喜欢选的拓扑。
3.1 系统参数与主电路拓扑
我选用的基准系统为10kV配电网,电源侧等效系统阻抗按最大、最小两种方式设置,线路长度设为10km,单位正序阻抗取典型架空线参数:R1=0.27Ω/km,X1=0.35Ω/km。为了简化分析,负荷用恒定阻抗表示,设置在线路末端母线位置。双端电源版本在另一端加了一个等值电源,两端的短路容量和相位差可以自己设。
Simulink里的搭建路径如下:在Simscape Electrical库中拖出Three-Phase Source,设置相电压、频率和内部阻抗;用Three-Phase Series RLC Branch模拟线路阻抗,或者用PI Section Line做分布参数模型。故障设置用Three-Phase Fault模块,可以灵活配置三相短路、两相短路、单相接地等故障类型,还能设置在某个仿真时间点发生故障和切除故障。这里需要仔细设置Transition Time,我通常的做法是让系统先运行0.2秒,待潮流稳定后再在0.3秒投入故障。
3.2 初始化脚本:一次把整定值算明白
在Simulink模型里直接敲定值容易乱,我的习惯是用一个脚本统一计算并把结果输出到工作区,模型里的模块参数全部引用这些变量。下面是我用的初始化脚本核心部分:
%% 系统参数 Vn = 10e3; % 额定线电压,V f = 50; % 频率,Hz Z_sys_max = 0.5 + 1.2j; % 最大运行方式系统等效阻抗,欧姆 Z_sys_min = 1.5 + 3.0j; % 最小运行方式系统等效阻抗,欧姆 L = 10; % 线路长度,km z1 = 0.27 + 0.35j; % 单位正序阻抗,欧姆/km Z_line = z1 * L; % 线路总阻抗,欧姆 %% 计算三相短路电流(最大运行方式,线路末端) Ik3_max_abs = abs(Vn/sqrt(3) / (Z_sys_max + Z_line)); %% 计算两相短路电流(最小运行方式,线路末端) Ik2_min_abs = abs(Vn / (sqrt(3) * (Z_sys_min + Z_line)) / 2 * sqrt(3));实际算的时候得把复数矩阵加起来求模,上面只是示意。整定部分的计算继续往下:
%% 三段整定 Krel1 = 1.25; % I段可靠系数 Iop1 = Krel1 * Ik3_max_abs; Krel2 = 1.1; % II段可靠系数 Iop2 = Krel2 * Ik2_min_abs; % 简化处理,实际应取相邻线路I段范围末端短路电流 Kss = 1.5; % 自启动系数 Kre = 0.9; % 返回系数 Imax_load = 320; % 最大负荷电流 Iop3 = Kss * Imax_load / Kre; %% 输出 disp(['I段整定值:', num2str(Iop1), ' A']); disp(['II段整定值:', num2str(Iop2), ' A']); disp(['III段整定值:', num2str(Iop3), ' A']);跑完脚本,工作区里就有了K1、K2、K3和对应的时间延时变量。这样做的最大好处是:改一个系统阻抗参数,整定值自动跟着变,不需要再去翻模型里硬编码的常数。
3.3 保护逻辑建模:电流比较器、延时计时与跳闸出口
三段保护逻辑的Simulink实现方式有几种,可以用基础模块搭,也可以用Stateflow状态机,或者用MATLAB Function写保护算法。我强烈建议初学者先用基础模块搭一遍,因为能直观看到每个信号怎么流动,排查问题也方便。
核心链路是:电压电流测量 → 瞬时值转有效值(RMS) → 与整定值比较输出逻辑1/0 → 经过延时环节 → 合并出口触发断路器跳闸。
具体模块层面:
- Three-Phase V-I Measurement输出线电流瞬时值,用RMS模块计算出有效值。注意RMS模块的输出初始值要设为0,否则启动瞬间会有毛刺误触发。
- 比较器用Relational Operator,阈值直接引用工作区变量K1等。
- Ⅰ段出口逻辑最简单,比较器输出后直接宽带断路器的跳闸输入,或者加一个极小的延时(0.01秒)模拟保护装置固有动作时间。
- Ⅱ段和Ⅲ段需要在比较器输出后串一个On-Delay或者Timer模块,延时时间分别用t2、t3变量。最容易被忽略的是延时期间故障消失,保护应该返回,所以要用“延时导通但输入归零立刻复位”的模块行为,Simulink里Timer或On Delay延时模块天然是这种逻辑,直接用就行。
- 断路器我用Three-Phase Breaker,把保护输出的跳闸信号接到控制端口。跳闸后故障电流消失,保护出口信号经返回逻辑自动复位。
搭完这段逻辑,你再回头看三段式电流保护的原理,感受完全不一样。书本上的“Ⅰ段瞬时动作、Ⅱ段延时0.5秒、Ⅲ段延时1秒”,在模型里就是几条带延时的信号路径,但这种空间化的理解,比背一百遍定义都牢。
3.4 仿真求解器选择与步长设置
Simulink里做电力系统仿真,求解器设置是第一道坎。我的经验是:如果主要看故障暂态过程和保护动作行为,选用离散求解器(离散固定步长),步长一般取1e-5~1e-4秒(对应50Hz工频,每个周期采20~50个点),仿真时间设2~3秒足够跑完故障发生和断路器跳闸全过程。如果选用连续变步长求解器,模型里的快速开关切换会导致误差控制特别严格,仿真可能慢到让你怀疑人生。
另一个加速仿真的选项是Powergui里的Phasor Simulation(相量仿真)模式。这个模式把工频分量做相量处理,正弦波形被简化,只保留幅值和相位,仿真速度提升一个数量级。但它看不到真实的电流波形细节,只适合分析保护的配合逻辑和定值选择性,不适合观察故障暂态波形。我做最终展示时保留了一版电磁暂态模式和一版相量模式,前者给波形截图,后者做大批量配合测试,各取所长。
4. 故障场景仿真与结果分析:三段保护的动作行为验证
模型搭完、整定值算完,最核心的工作来了:通过场景化仿真验证三段式保护全面动作行为。这是我个人认为整个项目里最有学习价值的一步。
4.1 故障点设置:近端、中点、远端、相邻线路
我在10kV线路模型上设计了几个标准故障位置:
- F1:本线路首端(距离母线5%处,模拟近端故障)
- F2:本线路中点(距离母线50%处)
- F3:本线路末端(距离母线95%处,模拟远端故障)
- F4:相邻线路首端(如果有二级线路的话)
每种故障位置都分别做三相短路和两相短路两种工况。故障开始时间设置在0.3秒,持续0.5秒后故障被清除(模拟保护跳闸隔离故障)。通过Scope观察母线电压、线路电流和断路器跳闸信号三条曲线。
4.2 单电源辐射网的典型动作时序
先说单电源辐射网下的仿真结果,以F1三相短路为例:故障发生瞬间线路电流从负荷水平(几十安培)骤增到几千安培,远远超过Ⅰ段整定值,Ⅰ段比较器输出立刻变1,断路器在几个毫秒内分闸,电流归零。这个场景下Ⅱ段和Ⅲ段也同时启动了,但Ⅰ段先动作出口跳闸,Ⅱ段Ⅲ段在0.5秒和1秒的延时还没走完之前就收到“电流消失、保护返回”的复归信号,所以不会多余出口。这正好印证了教科书里“三段式保护中各段都可能启动,但只有最先满足出口条件且延时到期的段最终跳闸”的说法。
再看F3远端三相短路:I段因为启动电流不够,比较器输出一直是0,不会动作。Ⅱ段和Ⅲ段都启动,经过0.5秒延时后断路器跳闸。这说明什么?远端故障只有远端故障由Ⅱ段或Ⅲ段切除,Ⅰ段在这个位置根本“看不见”。很多人在仿真里发现Ⅰ段不动作就以为模型错了,其实就是没把保护范围这个概念转成“电流阈值”来理解。
F2中点故障更有意思:Ⅰ段大概率可以动作,但因为整定值是按末端最大三相短路电流算的,中点的短路电流更大,理论上一动作就成立。可是如果你把系统运行方式切到最小方式再仿真一次,中点的短路电流可能掉到I段定值以下,Ⅰ段就拒动了,这时Ⅱ段成了切除故障的主力。这种“运行方式变化导致保护范围伸缩”的现象,在仿真里用两个不同电源阻抗参数跑一遍,体会特别直观。
4.3 双端电源供电的方向性问题和误动风险
把模型升级成双端电源之后,三段式电流保护的局限性就暴露了。因为线路两端都有电源注入,当F1(本线路靠近左侧母线)发生短路时,右侧电源会通过线路向故障点输送短路电流——这本线路右侧端(或者叫送端)的过流保护如果按单端电源逻辑整定,有可能会把右侧母线方向指向本线路的故障误判为“自己保护范围内的正向故障”,导致没有方向判别能力的三段式保护误动。
我在双侧电源模型里做了一次大胆的验证:把两个电源的相位差和阻抗都设置成典型双端系统参数,然后在左侧线路近端故障,右侧保护的Ⅲ段果然启动了,延时结束直接跳闸。这就引出了三相式电流保护在实际应用中的重要限制:当系统存在多电源或环网时,需要加方向元件(功率方向继电器)来限制保护动作方向,否则保护的选择性被完全破坏。
我给模型加了一个简易方向判别逻辑:通过采集故障时的电压和电流相位关系判断功率方向,只有“正向”故障才允许保护出口。这一步在Simulink里的实现并不复杂,用电压电流复数计算有功方向即可,但带来的体验提升很大——你会从此建立“方向元件是复杂电网保护的必需品”这个概念。
4.4 故障类型与过渡电阻对保护性能的影响
最后验证的变量是故障类型和过渡电阻。三相短路的短路电流最大,保护最容易动作;两相短路的电流相对小,灵敏度校验就偏低;单相接地短路电流具体数值跟中性点接地方式有关,我在模型里主要关注前两者。过渡电阻的影响也很直接:我在Three-Phase Fault模块里给故障相串了一个5欧姆的电阻,同样的远端故障,短路电流明显下降,Ⅱ段灵敏度接近临界。这说明实际电网里的非金属性短路可能让保护灵敏度不足,运行中需要靠零序保护或其他原理的保护区补充。
这些仿真结果汇总成一张表,方便对比:
| 故障位置 | 故障类型 | Ⅰ段动作 | Ⅱ段动作 | Ⅲ段动作 | 最终切除保护 |
|---|---|---|---|---|---|
| F1近端 | 三相短路 | 是(瞬时) | 启动后返回 | 启动后返回 | Ⅰ段 |
| F2中点 | 三相短路 | 是(瞬时) | 启动后返回 | 启动后返回 | Ⅰ段 |
| F3远端 | 三相短路 | 否 | 是(0.5s) | 启动后返回 | Ⅱ段 |
| F3远端 | 两相短路 | 否 | 是(0.5s) | 启动后返回 | Ⅱ段 |
| 相邻线路首端 | 三相短路 | 否 | 否 | 是(远后备) | 相邻线路保护或Ⅲ段 |
这张表基本把三段式保护的配合逻辑呈现在一个平面上。做完这个环节,我建议每调整一次整定值就把表刷新一遍,你会看到保护范围、动作时间、后备能力之间如何互相制衡。
5. 工程化扩展与常见坑:让模型真正贴近实用
模型能跑通,不等于好用的模型。这节分享我在实际调试中遇到的高频问题和工程化扩展思路,这些细节在常规教程里几乎没人写。
5.1 断路器跳开后信号不归零的“假动作”
第一次搭模型时,我发现断路器明明已经分闸了,但Scope里电流还在持续流动,保护出口信号迟迟不复归。排查之后确认问题出在Three-Phase Breaker的建模方式上——我把跳闸信号接在了断路器控制端,却忘了设置断路器内部开关状态的初始参数和分闸后的断态阻抗。断路器分闸后应该呈高阻态,把回路切开,但如果建模时阻抗参数设成0,它就是一个理想的导线,跳没跳一个样。解决办法是把Breaker模块的断态电阻(Open resistance)设置成一个很大的值(比如1e6Ω),确保分闸后故障电流真正被切断。
5.2 测量模块初始值和仿真启动瞬间的毛刺
RMS模块在仿真初始时刻会出现一个从0爬升到稳态值的过渡过程,如果你把整定值设置不当,这个过渡过程本身就可能触发比较器,造成启动瞬间保护误动。解决方法是把RMS模块的初始幅值设为故障前稳态电流的正确值,或是在保护逻辑前面加一个0.02秒的闭锁延时——我用的是后者,简单粗暴且符合实际保护装置的“上电自检”逻辑。
5.3 Phasor模式不能乱用:它看不到谐波与衰减直流分量
前面提到Phasor仿真模式能极大加快仿真速度,但我必须提醒:在这个模式下你看到的是稳态相量,根本看不到故障瞬间的衰减直流分量和高频分量。三段式电流保护用的是工频电流有效值,衰减直流分量对它的影响有限,所以用Phasor模式验证配合逻辑是可行的;但如果你想在模型上进一步研究电流互感器饱和、故障暂态波形对保护算法的影响,就必须回到离散电磁暂态模式。我的项目分阶段做了两类仿真,逻辑验证用Phasor模式提速,最终的波形展示用离散模式出图。
5.4 从仿真模型到嵌入式保护装置的鸿沟
最后聊一个工程化的方向:Simulink模型能不能直接变成保护装置里的代码?答案是能,但要搞清楚边界。用Simulink Embedded Coder可以从模型生成C代码,部署到DSP或ARM平台上。我做过的尝试是:把三段逻辑部分单独抽出来,去掉电源、断路器等一次系统模块,留下“电流输入→比较→延时→出口”这段,配一个信号采集的接口,生成的代码基本可以直接跑。这也是Simulink做保护研究相比其他通用仿真软件的优势——模型复用率高,从验证到原型实现的距离短。
不过,真实微机保护装置里远比三段电流逻辑复杂:有交流采样算法(傅里叶算法)、有CT饱和判别、有重合闸逻辑、有通信闭锁。这些后续如果有机会,我打算在Simulink里继续把“采样算法+保护逻辑+断路器控制”完整打通,做成一个真正贴近装置的仿真平台。网上聊simulink bms、simulink汽车电子的比较多,电力系统保护方向的内容反而少,我觉得这是特别值得深耕的一块。
做这个项目我最深的体会是:三段式电流保护看着简单,但它把“定值计算、灵敏度校验、时间配合、运行方式变化、可靠性原则”这些继电保护的基本功全串起来了。在Simulink里亲手调一遍,比背十遍课本都有用。如果你正在做课程设计或者刚接触电力系统仿真,建议从单电源辐射网模型入手,先把Ⅰ段动作范围边界找到,再加双端电源验证方向问题,最后试着生成代码跑一跑,每一步都有收获。