如果你做过继电保护课程设计或者保护定值校核,大概都会遇到一个共同的问题:课本上把过电流三段保护的公式列得明明白白,可是真到动手做仿真、看动作时序的时候就会发现,算出来的定值塞进模型,保护经常该动时不动、不该动时抢先跳,符波调出来一片,却说不清是哪个环节出了问题。基于MATLAB的过电流三段保护虚拟仿真设计,目标就是把这条“计算→建模→验证→调参”的链路彻底打通:在Simulink里搭一个带有明确参数的辐射形线路,让故障点可以任意摆放,让三段保护的测量、比较、延时、出口逻辑都可见、可测、可调。你要做的,就是通过改变故障位置和运行方式,亲眼看着哪一段先启动、哪一段延时出口、哪一段在故障切除后返回,把“选择性”和“灵敏性”这对矛盾真正搞懂。这个题目在电气专业的课程设计和毕业设计里非常常见,对刚入门的同学和对保护仿真感兴趣的电气工程师都有参考价值。下面我会从原理、整定、建模、调试这条完整路径,把这套方法完整讲一遍。
1. 这个仿真到底仿什么:先吃透三段保护的逻辑
1.1 三段保护的分工与动作配合
过电流保护的核心逻辑很简单:电流超过定值就启动。但“只按一个定值”在实际电网里根本没法用,因为越靠近电源的线路,短路电流越大,如果所有保护都按同一个定值动作,靠近电源一侧的保护会先跳,导致全站失电。三段式保护就是用一个“定值由高到低、延时由短到长”的组合,把选择性做出来。
第一段,电流速断保护,通常叫I段。它的定值很高,按“躲过本线路末端最大三相短路电流”来整定,也就是说,本线路末端故障时它不能动,只有在本线路前半段发生短路时才会瞬时动作。I段的特点是快,但没有保护范围,线路末端附近存在一个死区。
第二段,限时电流速断保护,也就是II段。它的定值比I段低,按“与相邻线路的I段配合”来整定,动作时间一般取0.3到0.6秒。II段要保证保护范围覆盖本线路全长,并且能延伸进相邻线路的前段,从而把I段的死区补上。
第三段,定时限过电流保护,也就是III段。定值最低,按“躲过本线路最大负荷电流”来整定,时间要比相邻线路的III段长一个时间阶梯Δt,常见取0.5秒。III段不只是保护本线路,还要作为相邻线路甚至更远线路的后备保护。
用生活里的例子来说:I段像是小区门口执勤的保安,只管门前那十几米,有情况立即出手;II段像是巡逻岗,覆盖整个院子还能伸到隔壁院子门口,但反应稍慢;III段像是总值班室,对整个片区都兜底,平时一直盯着,谁都出问题它都会响应,但也是最晚到场的一个。整个三段保护就是靠“定值分区、延时排队”来完成配合的。
1.2 为什么用MATLAB而不是传统实验台
我最开始接触这门课的时候,学校还有物理模拟实验台,一个柜子那么多,能做的工况非常有限。想换个线路长度,得手动调电位器;想看故障前后的电流波形,只能靠示波器拍几张照片。最难受的是,保护装置动作完之后到底经历了什么过程,中间哪个继电器吸合、哪个延时开始计时,都是一团黑盒,很难看清。
换成MATLAB/Simulink之后,事情就完全不同了。一次设备的参数全部可以用工作区变量驱动,线路长度、系统阻抗、故障位置、故障类型都可以在几十秒内改完并重新仿真。更重要的是,二次逻辑是可以拆开的:测量模块的输出、定值比较的结果、延时计时器的状态、出口跳闸信号,都能同时拉进Scope里对比,任何一环出错都看得见。这套“可视化”能力,对理解保护配合和整定校验帮助特别大。
从工程角度说,MATLAB仿真也非常适合做保护方案的预验证。以前改一套定值,要等动模实验排期;现在先用Simulink把最大运行方式、最小运行方式、不同故障点全部扫一遍,验证合格之后再上动模,效率高很多,也避免了很多低级错误。
1.3 仿真系统的整体构成
从信号流的角度,这个系统可以分成两个部分。
一次部分包括:系统电源(等效阻抗可变)、线路L1、线路L2、负荷,以及可以在不同位置投入的短路故障模块。两个断路器的位置分别安装在L1首端和L2首端,保护1负责L1,保护2负责L2。
二次部分就是保护逻辑:电流互感器(仿真里用测量模块代替)采到电流后,先转成有效值,然后分别与I、II、III段的定值进行比较。I段出口直接驱动断路器;II段出口经过0.5秒延时;III段出口经过1.0秒延时。三个出口信号通过逻辑或合并,去控制对应的断路器。
故障设置也很关键。仿真时可以指定故障发生在L1中段、L1末端母线、L2中段或者L2末端,再观察各段保护的动作时序。整套模型搭建完成之后,就像在一个微型变电站里做实验,只不过所有设备都在屏幕里。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 建模之前必须算清楚:整定计算与算例
2.1 系统等值电路与短路电流计算
保护定值不是拍脑袋定的,全部来自短路电流计算。我在做这个仿真时,第一步就是建立系统等值电路,把线路、电源都化成电抗,再用最经典的公式算短路电流。
设系统相电势为:
三相短路电流:
两相短路电流:
实际计算中,电阻对短路电流的影响不大,所以先忽略,只用电抗计算。这里要特别注意“运行方式”这个概念。最大运行方式对应系统等值阻抗最小,此时短路电流最大;最小运行方式对应系统等值阻抗最大,此时短路电流最小。保护定值要在最大运行方式下躲开,灵敏度要在最小运行方式下校验。
我用的仿真算例参数如下:
- 系统电压等级:35kV,50Hz
- 系统等值电抗(归算到35kV侧):最大运行方式取2Ω,最小运行方式取3Ω
- 线路单位电抗:0.4Ω/km
- L1长度:20km,L2长度:40km
- 最大负荷电流:200A,功率因数0.9
所以最大运行方式下,L1末端也就是母线B的三相短路电流就是:
同样可以算出母线A、B、C各点的短路电流,最关心的两组是最大运行方式三相短路和最小运行方式两相短路,结果整理成表格:
| 位置 | 最大方式三相短路电流(kA) | 最小方式两相短路电流(kA) |
|---|---|---|
| 母线A(保护1安装处) | 10.10 | 5.83 |
| 母线B(L1末端) | 2.02 | 1.59 |
| 母线C(L2末端) | 0.78 | 0.65 |
这几个数就是后面所有整定的基础。我在做项目时习惯把这些计算写成脚本或者Excel,改一个参数立刻刷新全部结果,比手动按计算器靠谱得多。
2.2 三段整定完整算例
有了短路电流表,就可以开始整定。先看保护1的I段。I段要躲过本线路末端母线B的最大三相短路电流,可靠系数Krel取1.2:
所以保护1的I段定值为2.425kA,动作时间0秒。
再看保护2的I段,它要躲过L2末端母线C的最大三相短路电流:
保护2的I段定值为0.932kA,动作时间0秒。
保护1的II段要与保护2的I段配合,可靠系数取1.1:
保护1的II段定值为1.025kA,动作时间取0.5秒。
保护1的III段要躲过最大负荷电流。按最大负荷电流200A,可靠系数1.2、自启动系数1.5、返回系数0.85计算:
保护1的III段定值为0.424kA,动作时间1.0秒。保护2的III段定值一样,但动作时间取0.5秒。
到这里,整一张完整的定值表就出来了:
| 保护 | 段别 | 定值(kA) | 动作时间(s) | 整定依据 |
|---|---|---|---|---|
| 保护1 | I段 | 2.425 | 0 | 躲过母线B最大三相短路电流 |
| 保护1 | II段 | 1.025 | 0.5 | 与保护2的I段配合 |
| 保护1 | III段 | 0.424 | 1.0 | 躲过最大负荷电流 |
| 保护2 | I段 | 0.932 | 0 | 躲过母线C最大三相短路电流 |
| 保护2 | III段 | 0.424 | 0.5 | 躲过最大负荷电流 |
这里想提醒一句:公式里的可靠系数、自启动系数、返回系数都是经验值,不能随意改。Kre取0.85是为了留出“动作电流和返回电流之差”的空间,否则故障切除后电流恢复到接近定值时,继电器会反复抖动。
2.3 灵敏度校验与时限阶梯配合
定值算完不是终点,还要做灵敏度校验,不然可能出现“算出来的保护根本够不着故障电流”的窘境。
I段通常用保护范围来评价。在最小运行方式下,两相短路电流正好等于I段定值的位置,就是保护范围末端。用公式反解:
代入I段定值2.425kA,最小方式等值阻抗3Ω:
也就是说,I段的最小保护范围大约在线路L1的10.5km处,保护范围约为全线的52.5%,远大于15%到20%的要求,合格。
II段用母线B最小两相短路电流校验灵敏度:
一般要求大于1.3,这里1.55是合格的。
III段要分近后备和远后备。近后备是本线路末端两相短路,远后备是相邻线路末端两相短路:
-
近后备:
-
远后备:
远后备要求不小于1.2,这里1.53也满足。如果发现远后备灵敏度不够,那就是III段定值躲负荷躲得太高导致的,实际设计里可以考虑降低自启动系数、缩短配合时间,或者干脆增加一级保护。
时限配合也要检查。从时间轴上看,保护2的I段是0秒,保护2的III段是0.5秒;保护1的II段是0.5秒,保护1的III段是1.0秒。这样形成阶梯,每一级都比下级慢一个时间差,既保证了选择性,又留出了后备切换的时间。
3. 从零搭模型:Simulink建模仿真全程实录
3.1 一次系统搭建与参数设置
下面进入实操环节。我以Simulink里较新的Simscape Electrical库为例,老版本里叫SimPowerSystems,模块名称基本一样。
新建一个Simulink模型,先搭一次系统,模块清单如下:
- Three-Phase Source:三相交流电源,设置线电压35kV,频率50Hz,源内阻不要设成0,在Parameters里可以用工作区变量Xs_max或Xs_min来切换运行方式。
- PI Section Line:线路模型,L1长度20km,L2长度40km,单位电阻0.27Ω/km,单位电感按0.4Ω/km折算成1.27mH/km,电容可以暂时设0简化。
- Three-Phase Series RLC Load:负荷,按额定电压35kV、最大电流200A、功率因数0.9折算出有功和无功。
- Three-Phase Breaker:断路器,两个,初始状态闭合,选择外部控制模式。
- Three-Phase Fault:故障模块,可以设置在L1中段、母线B、L2中段、母线C等不同位置,故障类型有三相、两相、单相接地等,过渡电阻给0.01Ω。
- Three-Phase V-I Measurement:电流电压测量,装在每个断路器下游,用来给保护逻辑提供电流信号。
接线顺序是:电源 → 断路器1 → L1 → 母线B → 断路器2 → L2 → 负荷。故障模块并联在需要设置故障的位置上,比如故障1装在L1线路上,故障2装在L2线路上。
设置模块参数时我建议全部在工作区用脚本初始化,不要在对话框里写死数值。这样后面扫描运行方式时,只要把Xs_max改成Xs_min再仿真一次,其他参数都不用手动改。
3.2 保护逻辑实现:测量、比较、延时、出口
一次系统搭完之后,开始搭二次保护逻辑。别急着把三段都串进去,先把一条链路的逻辑理清:电流输入 → 有效值转换 → 定值比较 → 延时 → 出口。
电流信号,从V-I Measurement的电流输出端拉出来,取A相电流即可。由于对称短路时三相电流情况类似,单相采样已经能说明问题;如果是单相接地故障,则要从三相里取故障相。这里我直接取A相。
有效值转换,用RMS模块。整定值都是有效值,所以不能拿瞬时波形去比较。RMS模块有一个输出建立时间,大约十几毫秒,这个延迟会在后面影响到动作时间分析,记住这一点,后面调试会用到。
定值比较,我的建议是用Relay模块,而不是直接拿信号和常数做大于等于比较。Relay带有滞回特性,比如启动阈值设0.42kA、返回阈值设0.38kA,能避免故障电流在定值附近抖动时造成继电器反复开合。把RMS输出和整定值比较,输出就是该段的启动信号。
延时,I段直接用启动信号,不延时。II段用On Delay模块,延时时间填0.5。III段同样用On Delay模块,延时1.0。有一点很关键:ON Delay必须在输入消失后能把输出清零,所以不要用Transport Delay偷懒,Transport Delay会把跳闸信号机械地平移,电流恢复以后出口信号还赖着不走,逻辑上是错的。
出口逻辑,三段启动信号出口通过Logical Operator取或,合并成断路器控制信号。如果断路器是高电平跳闸,就把合并信号直接接到断路器外部控制端。
仿真的图不要画得太乱,建议用Goto/From标签把电流信号和跳闸信号传递到子系统里,层次清晰,调起来也方便。每段的启动信号和出口信号都单独引到Scope里,后面分析波形就靠它。
3.3 仿真运行与结果判读
模型搭好后,设置故障点、仿真时长1.5秒,故障在0.2秒时刻投入,然后跑仿真。我建议先把求解器设置成ode23tb,最大步长限制在1e-4秒,这样能兼顾速度和收敛性。
这里用三组有代表性的场景来说明判读方法。
第一组,L1中段约15km处三相短路。用最大运行方式算,故障电流大约是2.5kA,超过保护1的I段定值2.425kA。预期结果是保护1的I段瞬时动作,断路器1立即跳闸,L1电流在故障发生后的极短时间内降到0。Scope里会看到电流从负荷电流突升到故障电流,然后迅速归零。保护1的II段和III段也会同时启动,但由于故障已被I段切除,它们的启动信号会随着电流消失而返回,不会出口。
第二组,母线B三相短路。故障电流2.02kA,低于I段定值2.425kA,所以I段不动作;但大于II段定值1.025kA,所以保护1的II段启动,0.5秒后跳闸。这个场景能看到明显的“I段拒动、II段延时动作”过程,很多人第一次看波形时会问:为什么I段不动?看定值就清楚了。
第三组,L2中段三相短路。这是下级线路故障,保护2的I段瞬时动作,断路器2跳闸。保护1的II段虽然也会启动,但它有0.5秒延时,而在它延时结束之前故障已经被保护2切掉了,所以保护1不会误跳。这正是选择性最直观的体现:下级保护先动作,上级保护启动后返回。
仿真结束后,重点看两个时间点:故障发生时间与断路器跳闸时间的差值。用To Workspace记录出口信号,再用MATLAB脚本读取信号跳变的时刻,可以自动算出动作时间,避免靠肉眼在Scope里估。
4. 调试记录:常见问题与排查技巧
4.1 仿真不收敛、步长和求解器问题
这个项目里最折磨人的就是仿真报错。最常见的提示是求解器无法在指定步长内收敛,或者系统出现奇异点。
我遇到这类问题,排查顺序基本固定。先看电源内阻有没有设0,设成全理想电源就会在断路器断开瞬间出现电流突变,数值上很容易发散,至少要给零点几欧姆的内阻。再看故障过渡电阻,不要设成0,0.01欧姆已经足够模拟金属性短路,又能帮助求解器稳定。接着看求解器,连续仿真优先用ode23tb或ode15s,最大步长从1e-3开始往下降,通常降到1e-4就稳了。
还有一个经验是先用Phasor仿真模式跑一遍整定逻辑。Phasor模式只算稳态,速度快,也不会出现采样暂态问题,适合快速验证保护动作逻辑;连续模式再看详细暂态波形。两个模式配合使用,能省下很多调试时间。
4.2 保护误动或拒动的排查思路
如果仿真结果里该跳的没跳,我先看启动信号有没有产生。启动信号只要出现了,说明测量和定值这两层没问题,问题大概率在延时或出口逻辑上;启动信号根本没出现,那就从测量信号和定值往下查。
常见的一个坑是RMS模块的初始窗口。如果是零初始状态,RMS输出会在十几个毫秒内波动,有可能在正常负荷时误触发比较器。解决方法是让仿真先跑0.1秒再到故障时刻,或者把RMS模块的采样历史设成长一点。模型里我通常会把故障时间设置在0.2秒,让系统先达到稳态。
另一个坑是断路器跳闸后,电流为0,但保护出口信号因为用了On Delay的“记忆”而迟迟不返回。事实上只要模块选对,输入为0后输出会跟着清零,不会粘连。如果发现粘连,先检查是不是用了Transport Delay。
4.3 整组动作时间与选择性检查技巧
校验整组动作时间,比单纯看波形更严谨的做法是将出口信号写入工作区。
matlab复制t_jump = t_out(find(out_signal > 0.5, 1));
t_action = t_jump - t_fault;
这段脚本的前提是out_signal和t已经通过To Workspace模块保存。动作时间计算出来后,与定值表里的0秒、0.5秒、1.0秒逐项对比,就能判断延时环节是否准确。
检查选择性时,要同时把保护1和保护2的出口波形叠在一起看。以下级线路故障为例,正常的时序应该是保护2先跳,保护1的出口可能启动但绝对不能先于保护2出口。如果发现保护1抢先跳,基本就是两个原因:上级保护的启动条件没有躲开下级故障电流,或者下级保护出口信号根本没生成。前者回去查定值,后者回去查下级保护的测量和延时环节。
4.4 常见问题速查
| 现象 | 可能原因 | 解决方向 |
|---|---|---|
| 仿真发散 | 电源内阻为0、故障电阻为0、步长过大 | 设置合理内阻和0.01Ω故障电阻,降低最大步长 |
| I段不动作 | 定值过高,故障点超出保护范围 | 检查整定值,降低Krel或重新计算 |
| II段不动作 | 故障电流小于II段定值 | 进行灵敏度校验,必要时调整配合定值 |
| III段误动 | 负荷电流接近定值,返回系数不足 | 检查Kss、Kre取值,增加滞回比较 |
| 故障切除后出口不返回 | 用了Transport Delay或延时逻辑错误 | 改用On Delay,确认输入消失输出归零 |
| 波形振荡严重 | 求解器不合适、线路电容参数过大 | 使用ode23tb,限制最大步长,简化电容 |
5. 一些值得再说的实操经验
5.1 虚拟仿真在设计验证里的真实价值
我后来做项目时,有次需要对一套直配线路的保护定值做复核。按以往流程,得先约动模实验,排期至少一周,参数还得在现场来回调。那次我提前把所有典型工况用Simulink扫了一遍,包括最大最小运行方式、不同故障点、单相和相间短路,结果发现II段在某个边界工况下灵敏度只有1.1,明显不满足要求。发现问题后,我改了配合方式重新整定,再次仿真验证过了以后,才拿到动模实验室确认。从那以后,我对这套虚拟仿真流程的定位就不只是“教学工具”,而是真正能辅助工程设计的验证平台。
仿真和实际保护装置之间当然有差异,比如真实互感器有饱和、真实继电器有机械部分,但把两者结合使用会特别高效:仿真负责广撒网找薄弱点,动模负责关键工况一锤定音。
5.2 这个仿真还能往哪些方向扩展
做完基础的三段保护,模型可以继续扩展,可玩性很高。
方向过电流保护:把系统改成双电源或者环网结构,就需要判断功率方向。在Simulink里同时采集电压和电流,通过相位比较生成方向判据,就能实现方向过流保护。
自动重合闸:在断路器出口加上重合闸模块,跳闸后延时0.8秒重合,再把故障模块设置成瞬时性和永久性两种,观察重合成功和重合失败的区别,这个过程对理解供电可靠性非常有帮助。
自适应保护:把运行方式作为变量实时输入可靠系数,在仿真里动态修改定值。这个方向很适合做毕业设计,工作量适中,又能体现现代保护理念。
含分布式电源的配电网保护:引入光伏或风机模型后,故障电流方向可能反向,三段式配合会遇到新问题,也不失为一个深入研究的切入点。
回到基础来总结一下我的个人体会:做这个仿真项目,最核心的不是把Simulink模块拖得多花哨,而是把整定计算做扎实。公式推导一遍、手算一遍、仿真再验证一遍,三者对上了,这个项目才算真正吃透。如果只是在模型里随便扔个比较器、调个数字看着像那么回事,那学到的东西就会大打折扣。至少我自己调试了无数遍之后才真正明白,为什么I段要躲末端,为什么II段要配合,为什么III段要阶梯延时——这些答案,全都在你先算清楚的那些短路电流里。
