简介:面向电气工程专业学生、继电保护初学者及教学科研人员的Simulink仿真学习资料,围绕三段式电流保护与零序电流保护的建模与验证展开,可帮助读者把过电流保护、接地故障判别等抽象原理落到可运行的仿真模型中。压缩包共1个PDF文件,大小约984KB,以图文说明形式整理模型构成、整定与仿真分析思路,便于对照学习。内容覆盖瞬时电流速断、定时限过电流、反时限过电流三段配合,以及零序电流滤波与整定比较,并涉及电力系统简化模型搭建、电流互感器接入、比较单元设计、延时与逻辑控制、故障注入及保护动作验证等环节。已有1561人学习,适合希望理解保护配合逻辑、掌握Simulink建模流程,并用于课程设计、继保实验或课题验证的读者参考。
1. 三段式电流保护:为什么“电流超了就该跳”这个直觉是错的
第一次看定值单的人几乎都会卡在同一个地方:同一条线路装了三个电流门槛,门槛越低的那个,动作时限反而越长。直觉上电流越大越危险,应该越快切除,可定值单上稳稳写着 I 段瞬时动作、III 段要等将近一秒。这不是保守,而是 Simulink 继电保护仿真模型里最先要搞懂的一件事——保护装置判的从来不是“电流大不大”,而是“这个故障该不该由我来切”。
这个判断标准一旦错位,后面所有建模工作都会跑偏:CT 变比接反、整定值量纲不统一、故障注入点选错,模型照样能跑出漂亮波形,但保护逻辑是废的。所以先把三段式电流保护的选择性讲透,再看零序电流保护、Simulink 信号链和整定配合,最后落到这个仿真模型能证明什么、不能证明什么。
2. 整定逻辑:三个门槛值究竟在防什么
整定计算不是算一个数,是在“该动的必须动、不该动的绝不能动”这两个约束之间解一个区间。可靠系数、返回系数、灵敏系数这三个系数,本质上就是把这个区间的两端各留一段余量。
2.1 瞬时速断的取舍:为什么主动放弃线路末端那一截
I 段(瞬时电流速断)的整定值按躲过被保护线路末端最大运行方式下的三相短路电流来算:
I_set^I = K_rel × I_k.max(末端)K_rel 一般取 1.2~1.3。这里的逻辑是反的:不是保证末端故障能跳,而是保证末端故障绝对不跳。因为末端之后的故障属于下一级线路的 I 段,本线路要是抢着跳,整条馈线就一起黑了。代价是本线路末端约 15%~30% 的范围成了 I 段的死区,只能靠 II 段兜底。
拿一条 10 kV 配电线路做个算例:相电压 6.06 kV,系统最小阻抗 1.5 Ω(最大运行方式),线路全长正序阻抗 4 Ω,单位阻抗 0.4 Ω/km。末端三相短路电流为 6060/(1.5+4) ≈ 1101 A,I 段整定 1.25×1101 ≈ 1376 A。反解保护范围:6060/(1.5+0.4L) = 1376,得 L ≈ 7.3 km,也就是全长的 73%。剩下 27% 是设计上主动让出去的,不是算错了。
提示:保护范围对系统运行方式极其敏感。最大方式下 73%,切到最小方式(系统阻抗变大,短路电流变小)时会缩到 50% 以下。仿真里跑单点没意义,至少要做“最大/最小”两组方式对比。
2.2 II 段与 III 段:时间级差是从哪来的
II 段(限时电流速断)靠和下一级线路的 I 段配合来定值:
I_set^II = K_rel × I_set,next^I K_rel = 1.1~1.15 t^II = t_next^I + Δt Δt = 0.3~0.5 sΔt 这个时间级差不是拍脑袋。它要覆盖三件事:下级断路器的全分断时间(含燃弧)、本上级保护的时间元件误差、以及一定的裕度。机电式继电器年代 Δt 取 0.5 s,微机保护普遍能压到 0.3 s,仿真模型里取 0.3~0.5 都算合理,但取 0.05 就属于把物理约束当儿戏了。
定完值必须校验灵敏系数,这是很多人直接跳过的一步:
K_sen = I_k.min(本线路末端) / I_set^II ≥ 1.3~1.5分子用最小运行方式下的两相短路电流,不能再用三相短路。两相短路电流约为三相的 √3/2 ≈ 0.866 倍,这一项能让灵敏系数掉 13%,刚好卡在合格线边缘。
III 段(定时限过电流)按躲过最大负荷电流整定:
I_set^III = (K_rel × K_ss / K_re) × I_L.maxK_rel 取 1.15~1.25,K_ss 是负荷自启动系数(电动机负荷多的场合取 1.5~3),K_re 是返回系数(0.85 左右,反映继电器电流回落后可靠释放的能力)。时限按阶梯原则往上累:t^III = t_next^III + Δt。以 300 A 最大负荷、K_ss=2 算,I_set^III ≈ 847 A,配合 1.0 s 的时限,正好承担本线路的近后备和下级线路的远后备。
III 段还有一个隐性约束:它必须比下级线路的 III 段晚动,同时又必须在负荷电流下可靠返回。这两个条件共同限定了它的整定窗口,窗口窄的时候只能靠增加段数或者改用距离保护。
2.3 反时限特性:一条曲线怎么变成一块查表
工程上 III 段也常用反时限实现:电流越大,动作时间越短。常见的三条标准曲线(标准反时限、非常反时限、极端反时限)形式统一为:
t = TMS × K / ((I/Is)^α − 1)α 和 K 是曲线常数,标准反时限取 α=0.02、K=0.14,非常反时限取 α=1、K=13.5,极端反时限取 α=2、K=80;TMS 是时间倍率整定。这条曲线的物理含义是:严重故障快速切除,轻微过负荷给足散热时间,避免因为短时过载就跳闸。
在 Simulink 里落地有两种写法。一是直接用 MATLAB Function 块按公式实时算,代价是每次采样都要做幂运算,仿真步长小的时候会拖慢速度;二是离线按电流分档算一张“电流—时间”查找表,模型里用一个 1-D Lookup Table 块插值。前者的好处是参数一改立刻生效,适合调参阶段;后者适合定版后跑长时仿真。两相短路、三相短路、单相接地这三种故障下的反时限动作时间差异很大,验证用例必须分开设计。
3. 零序电流保护:三相矢量和为什么平时是零
负序和零序不是数学技巧,是对“不对称”这件事的分解方式。三相对称时,任何一相的量都能由另外两相推出来,零序分量恒等于零;一旦发生接地故障,这个约束被打破,零序电流才冒出来。零序保护检测的就是这个“约束被打破”的信号。
3.1 零序量的物理来源:接地故障改变了什么
把三相电流直接相加取三分之一即得零序分量:
3I0 = Ia + Ib + Ic正常运行时三相电流对称,矢量和为零(严格说是接近于零,存在不平衡)。发生单相接地后,故障相电流通过接地点回流,三相不再对称,3I0 不为零。用对称分量法看,单相接地时的零序电流为:
3I0 = 3E / (Z1 + Z2 + Z0)Z0 是零序阻抗,它和 Z1、Z2 最大的区别在于:零序电流必须有通路才能流。变压器中性点不接地,那条支路的零序阻抗就是无穷大,零序网络在这个方向上直接断开。所以零序保护的保护区天然被变压器接地方式切分——一个中性点不接地的绕组,就是零序保护的天然边界。
仿真中这一点经常被忽略。搭模型时如果所有变压器都默认按 Yg-Yg 接,零序网络处处连通,零序电流会“漏”到本不该去的支路里,保护范围看起来比实际大得多,实际上是个假象。
3.2 三相合成还是零序 CT:两种取法的误差差别
模型里取零序量有两条路。
第一条是三相合成:三个电流互感器二次侧按星形接线后相加。优点是复用已有 CT,不用额外加元件;缺点是三路 CT 的幅值误差、角差、饱和特性不一致,误差直接叠加到 3I0 上。负荷电流 300 A 时,0.5 级 CT 的合成不平衡电流可能到几安(二次值),这是零序保护整定的主要约束。
第二条是零序电流互感器:三相导体同时穿过同一个磁环,二次绕组感应的是三相磁通之和。导体对称时磁通互相抵消,输出接近于零;只有出现零序磁通才有输出。误差主要来自导体在磁环窗口内的位置不对称,比三相合成小一个量级。
在 Simulink 里,前者就是三路 Three-Phase V-I Measurement 的电流信号相加,后者没有现成模块,一般用三路电流相加再乘一个系数来等效,并在文档里注明“未模拟零序 CT 的磁路不对称”。做教学模型够用,做保护定值校核就要打折扣。
3.3 零序整定:躲不平衡电流比躲故障电流更难
零序 I 段的整定原则是躲过正常运行时的最大不平衡电流:
I_set0^I = K_rel × 3I0.unb.max K_rel = 1.2~1.3这里的难点在于 3I0.unb.max 没有解析公式,只能靠实测或经验。仿真里有个很实用的做法:先把模型跑一遍纯负荷工况(不加故障),用 Max 模块记录稳态 3I0 的峰值,再乘可靠系数得到定值。这一步比任何经验值都可靠,因为不平衡电流和线路参数、负荷不对称度、CT 建模精度全都相关。
注意:零序 I 段通常不带时限,一动作就直接跳闸。仿真里如果直接把 trip 信号接到断路器控制端,容易在故障注入的瞬间产生一个采样点上的抖动误动。实际装置靠滤波和短延时去抖,模型里加一个 1~2 个采样周期的确认逻辑更接近真实行为。
4. Simulink 模型的分层结构:一次系统、测量、保护逻辑怎么解耦
一个能长期维护的仿真模型,结构上一定是分层的:一次系统负责产生电流,测量层负责把电流变成保护能用的量,保护层只做逻辑判断,执行层只负责跳闸。三层混在一起,改一个定值就得翻遍全网。
4.1 一次模型的最小可用集
最小可用的一次系统包含四个元件:三相电源、双绕组变压器、线路、三相负荷。线路用分布参数模型还是 PI 段模型,取决于关心什么——分布参数模型能反映行波和暂态,PI 段模型在工频稳态下就够,仿真速度还快一个数量级。做保护定值验证,PI 段完全够用;做暂态特性分析才需要上分布参数。
故障注入用 Three-Phase Fault 模块,关键是故障电阻和故障时刻两个参数。金属性接地取 0.01 Ω 量级,经电阻接地按实际值给。故障时刻不要设在整数周期上,设在 0.1 s 附近的非整周期点,能看到暂态直流分量对保护算法的影响——这个细节决定了模型是“能跑”还是“可信”。
信号测量统一用 Three-Phase V-I Measurement 模块,输出保持 abc 三相格式,不要在这一层就转成幅值。转幅值的动作放到保护层做,这样一次系统的电压电流波形始终可回溯,出了问题能查。
4.2 从二次值到跳闸命令:比较、延时、闭锁的信号链
保护层的核心是一个 MATLAB Function 块,输入是三相电流的有效值,输出是跳闸命令和动作段别。下面的实现用三个独立计时器分别管三段,避免共用计时器导致“低门槛段先启动、高门槛段被拖慢”的错乱:
function [trip, seg] = relay3ph(Iabc_rms, t, P) %#codegen % Iabc_rms : 三相电流基波有效值 [Ia Ib Ic],单位 A(一次值) % t : 仿真时间,s(来自 Clock 块,不用 tic/toc) % P : 定值结构体,含 I1/I2/I3/t2/t3/TMS/Is/I0set % trip : 跳闸命令,1 = 跳闸 % seg : 动作段别,1/2/3,0 = 未动作 persistent t1 t2 t3 if isempty(t1) t1 = -1; t2 = -1; t3 = -1; % -1 表示该段计时器未启动 end Imax = max(Iabc_rms); % ---- I 段:瞬时速断,无延时 ---- if Imax > P.I1 if t1 < 0, t1 = t; end else t1 = -1; % 电流回落,计时器复位 end % ---- II 段:限时电流速断 ---- if Imax > P.I2 if t2 < 0, t2 = t; end else t2 = -1; end % ---- III 段:定时限过电流 ---- if Imax > P.I3 if t3 < 0, t3 = t; end else t3 = -1; end % ---- 动作判定,按优先级从高到低 ---- trip = 0; seg = 0; if (t1 >= 0) && (t - t1 >= 0) trip = 1; seg = 1; return; elseif (t2 >= 0) && (t - t2 >= P.t2) trip = 1; seg = 2; return; elseif (t3 >= 0) && (t - t3 >= P.t3) trip = 1; seg = 3; return; end end这段代码有三个设计点值得说清楚。persistent 变量在 isempty 分支里初始化,保证仿真开始前状态干净,不会继承上一次运行残留的值——这是仿真结果不可复现的头号原因。计时基准用传入的仿真时间 t 而不是墙钟时间,模型跑多快都不影响动作时刻。三段各自独立复位,电流回落到定值以下就清零,等价于返回系数为 1 的理想继电器;如果要模拟真实的返回系数,把复位条件改成 Imax > 0.85*P.Ix 即可。
反时限那一段单独写更清楚:
% 反时限动作时间:仅在电流超过启动值 Is 时有效 if Imax > P.Is M = Imax / P.Is; t_op = P.TMS * 0.14 / (M^0.02 - 1); % 标准反时限曲线 else t_op = inf; % 未达启动值,永不动作 endM 是电流倍数,物理意义是“超过启动值多少倍”。M 越接近 1,分母越接近 0,动作时间趋于无穷——这个数学上的发散,对应的正是“轻微过负荷不该跳闸”的工程要求。仿真时要注意 M 略大于 1 的情况,t_op 可能大到几十秒,超过仿真时长,看起来像“保护没动”,其实是在正常等待。
4.3 故障注入与验证用例:怎么证明该动的时候动
一个保护模型至少有五组用例才谈得上验证过:
| 用例 | 故障位置 | 期望行为 |
|---|---|---|
| 1 | 本线路 I 段范围内三相短路 | I 段瞬时动作,t < 1 个周期 |
| 2 | 本线路末端三相短路 | I 段不动,II 段在 t2 动作 |
| 3 | 下级线路首端三相短路 | 本线路 II 段不动,仅下级动作 |
| 4 | 本线路末端单相接地 | 零序 I 段动作,相电流 I 段不动 |
| 5 | 空载/满载正常运行 | 三段全部不动作,3I0 低于定值 |
用例 3 是最容易被忽略的一条。它检验的是选择性——模型能不能“忍住不跳”。很多人只测“该跳的跳了”,不测“不该跳的没跳”,结果保护范围算出来永远比实际大,因为误动被当成了灵敏。
提示:每条用例跑完,除了看 trip 信号,一定要把启动时刻、动作时刻、故障电流幅值三个量记录下来。只看 trip 的 0/1 跳变,看不出是 I 段动的还是 II 段动的,调参时等于失明。
5. 避坑与排查:模型跑通了,保护却不动作的五种情况
仿真模型最典型的失败不是报错,是静悄悄地给出一份看着合理的错误结果。下面五条是实际搭建过程中出现频率最高的。
5.1 量纲与状态类问题
现象一:故障注入了,示波器上电流明显超过定值,trip 从头到尾是 0。 原因:定值按一次值整定(比如 1376 A),送进比较器的却是 CT 二次值(600/5 变比下只有 11.5 A),量纲差了 120 倍。 解决:在保护入口处统一口径。要么全部换算到一次值(每路 CT 后加一个 Gain = 1/CT_ratio 的模块),要么全部标幺化。建议在模型顶层放一个常量块 CT_ratio,所有换算引用它,改一次全局生效。
现象二:III 段的动作时间每次仿真都不一样,同样的参数能跑出 0.8 s 也能跑出 1.2 s。 原因:计时器用了 persistent 但没在 isempty 里初始化,或者被 MATLAB Function 块的多个实例共享了同一份状态。 解决:persistent 初始化和复位条件必须显式写;一个 Function 块只管一相或一个间隔,不要在同一个块里复用状态。
现象三:仿真步长从 50 μs 改成 10 μs 之后,保护动作时间整体提前了。 原因:powergui 设成了连续或变步长求解器,保护逻辑每个求解步都被调用一次,比较器实际上按 20 kHz 在判断,而真实装置的采样率只有 1.2~4.8 kHz。 解决:powergui 选 Discrete,保护算法前面串一个零阶保持器,按固定采样周期(比如 20 点/周期 = 1 ms)降采样,让仿真里的保护逻辑和真实装置的采样节奏对齐。
5.2 算法与配合类问题
现象四:零序保护在纯负荷工况下就动作,3I0 有几百毫安的稳态输出。 原因:三相负荷不完全对称,或者线路参数的三相分量有细微差异,合成的 3I0 不为零;而整定值按理论上的 0 给了一个很小的数。 解决:先跑一遍纯负荷工况,用 Max 模块记录 3I0 稳态峰值,定值取该值乘 1.2~1.3。这个步骤不能省,它同时暴露了模型里三相参数不一致的隐藏问题。
现象五:断路器跳了,但故障电流在波形上一直存在,看起来像“跳了个寂寞”。 原因:Three-Phase Breaker 的切换时间还停在内部定时模式,没有切到外部控制;或者跳闸信号是单相逻辑,而断路器需要三相同时分断。 解决:Breaker 的 Switching 参数改成 external,把 trip 信号接到控制端,并在模块帮助里确认控制端的逻辑约定——不同版本里 1 表示“合”还是“分”并不统一,这个坑踩过一次就忘不掉,建议在模型里加一条注释写死。
6. 设计取舍:这个模型能证明什么,又不能证明什么
把三段式电流保护和零序保护在 Simulink 里搭出来,最有价值的部分不是那几条波形,而是被迫把每一个“经验上差不多”的环节变成一个明确的数字:可靠系数为什么是 1.25 不是 1.5,时间级差为什么是 0.3 s 不是 0.1 s,零序定值到底是躲故障电流还是躲不平衡电流。这些在教科书里一句话带过的东西,到了模型里必须给出具体值,否则仿真跑不起来。
它同样有明确的边界。理想化模型和真实装置之间隔着这几层:
| 环节 | 仿真模型的典型做法 | 真实装置的实际情况 |
|---|---|---|
| CT 传变 | 理想变比,线性 | 暂态饱和、剩磁,短路电流含直流分量时误差可达 10% 以上 |
| 滤波算法 | 全波傅里叶或理想 RMS | 全波/半波/最小二乘,各有 0.5~1 个周期的响应延时 |
| 继电器返回 | 返回系数按 1 处理 | 0.85~0.95,影响 III 段在负荷波动下的稳定性 |
| 断路器 | 理想开关,瞬时动作 | 分闸时间 30~60 ms,三相不同期 |
| 时间元件 | 仿真时间精确计时 | 晶振误差、继电器离散误差 |
这张表说明一件事:这个模型适合验证保护配置和整定配合的逻辑正确性,不适合验证动作时间的绝对精度。用仿真结果去校核“II 段比 I 段晚 0.3 s”是合理的,用它去论证“装置会在 320 ms 动作”就超出了模型的表达能力。
想再往前推一步,有两个方向值得试。一是把 CT 换成带饱和特性的模型,观察暂态直流分量导致的保护延时甚至拒动;二是给保护逻辑加入傅里叶算法的数据窗延时,看看整组动作时间会增加多少。这两项改动都不大,但会让模型的“真实度”上一个台阶。
我自己的习惯是,每改一次定值,五组验证用例全部重跑一遍,一条都不跳。有次图省事只跑了本线路故障的两组,结果改零序定值的时候把相电流 II 段的门槛带偏了,下级线路故障时本线路跟着跳,波形上完全看不出来,直到把用例 3 补跑才暴露。从那以后我每次动定值都强制走一遍全部用例,包括那条“必须不动作”的。希望帮到你。
本文还有配套的精品资源,点击获取