做继电保护的人,谁还没被三段式电流保护折磨过几回。教材里一段、二段、三段写得明明白白,真到自己拿着一个双线路网络去整定计算,才发现到处都是坑:单位搞混、灵敏度算出来不够、时限配合捋不顺。我前两年带课程设计时,把这道题从纯手算升级成Matlab脚本加曲线可视化,整个流程跑下来顺畅多了,学生出错的概率也明显下降。今天就拿一个典型的110kV双线路算例,把一段、二段、三段保护的数值计算完整走一遍,每一步的公式、代码、校验逻辑都会写清楚,也把我在实际计算里踩过的坑一并抖出来。这篇文章适合刚接触继电保护的学生、准备继保课程设计的人,以及正在做电网运行方式分析的新入职工程师。
1. 三段式电流保护的整定逻辑梳理
1.1 为什么非要“一段、二段、三段”配在一起
先说一个很多初学者容易忽略的点:三段式电流保护不是三个独立方案,而是一套“由近到远、由快到慢”的配合体系。只有一段时,它瞬时动作、特别快,但保护范围只覆盖线路首端附近,末端故障它根本够不着;只有三段时,保护范围能到相邻线路甚至更远,但动作时间太长,故障不切除会让设备烧坏。所以实际保护配置把“速动性”和“选择性、灵敏性”拆开,让一段负责最危险、最近处的故障,二段补上本线路全长的保护,三段留作后备。
理解这条逻辑线后,再看整定公式就不会死记硬背了。每个保护段回答的问题不同:一段回答“多远以内我可以无延时跳掉”,二段回答“本线路没来得及动作时谁上来”,三段回答“前面所有保护都拒动时我能不能兜底”。
1.2 三个保护段的整定公式与物理含义
我习惯把三个保护段的整定逻辑整理成一张表,放在手边,计算之前先确认自己用的是哪套公式:
| 保护段 | 整定原则 | 整定公式 | 灵敏性要求 |
|---|---|---|---|
| I段(瞬时电流速断) | 躲过本线路末端最大三相短路电流 | (I_{dz}^{I}=K_{rel}^{I}\cdot I_{k.max}^{本线路末端}) | 最小保护范围≥线路全长15%~20% |
| II段(限时电流速断) | 躲过相邻线路I段保护范围末端短路,或与相邻线路II段配合 | (I_{dz}^{II}=K_{rel}^{II}\cdot I_{dz}^{相邻段}) | 本线路末端最小两相短路电流下,(K_{sen}\geq1.3\sim1.5) |
| III段(定时限过电流) | 躲过本线路最大负荷电流 | (I_{dz}^{III}=\dfrac{K_{rel}^{III}\cdot K_{st}}{K_{re}}\cdot I_{L.max}) | 近后备≥1.3~1.5,远后备≥1.2 |
可靠系数取值也有讲究。I段通常取1.2~1.3,这个裕度要吸收非周期分量、互感器传变误差和计算误差;II段因为已经和相邻保护配合,系数可以稍微放宽,取1.1~1.2;III段面对的是负荷电流,要考虑可靠系数、自启动系数和返回系数三者的联合作用。
1.3 时间阶梯与选择性是怎么“错开”的
三段式保护的选择性除了靠定值,还要靠时间阶梯。保护动作时间的安排原则很简单:从最下游的线路往电源侧,每一级保护的动作时间递增加一个时间阶梯(\Delta t)。常规(\Delta t)取0.3~0.5s,我习惯取0.5s,稳妥。
为什么梯度不能太小?因为要让上一级保护在动作前,确实给下一级保护留出“启动、判断、出口跳闸、断路器分闸”的完整时间。断路器分闸时间本身就要几十毫秒,再加上保护装置的动作时间、返回时间以及时间继电器误差,0.5s的阶梯在工程上最常用。
2. 用Matlab搭建整定计算框架
2.1 为什么选Matlab而不是手算或Excel
手算三段式保护其实不难,难的是“整定→校验→不合格→调参数→再校验”这个循环。我第一次做课程设计时,手算调整一次定值,等于把全部公式重新抄一遍,算完基本就不想改了。用Excel也能做,但公式藏在单元格里,逻辑不直观,画保护范围曲线又得另起炉灶。
Matlab的好处是脚本即文档。所有公式摊开写在脚本里,参数改一个数,重新跑一下,定值、灵敏度、保护范围一次全出来。再加上它自带绘图能力,短路电流随距离变化的曲线可以直接画出来和定值线做对比,这对理解“保护范围到底在哪里”帮助非常大。
2.2 算例网络与参数设定
为了让计算过程完整且可复现,我构造一个典型的110kV双线路辐射网络:母线A经线路AB供电到母线B,母线B再经线路BC供电到负荷侧。保护安装在线路AB靠近母线A的一侧,要对AB线路配置三段式电流保护,同时校验它与相邻线路BC保护的配合。
所有参数用有名值计算,电压单位V、电流单位A、阻抗单位Ω、长度单位km,避免标幺值换算在初学时带来的额外负担。
| 参数 | 符号 | 数值 |
|---|---|---|
| 系统额定线电压 | (U_N) | 110kV |
| 线路AB长度 | (L_{AB}) | 20km |
| 线路BC长度 | (L_{BC}) | 15km |
| 线路单位电抗 | (x_1) | 0.4Ω/km |
| 最大运行方式系统阻抗 | (X_{s.min}) | 3Ω |
| 最小运行方式系统阻抗 | (X_{s.max}) | 5Ω |
| 最大负荷电流 | (I_{L.max}) | 200A |
| I段可靠系数 | (K_{rel}^{I}) | 1.3 |
| II段可靠系数 | (K_{rel}^{II}) | 1.15 |
| III段可靠系数 | (K_{rel}^{III}) | 1.2 |
| 自启动系数 | (K_{st}) | 1.5 |
| 返回系数 | (K_{re}) | 0.85 |
2.3 短路电流计算的三条基础公式
整套计算只依赖三个公式,搞清楚这三个公式,后面代码就是在反复调用它们。
第一,最大运行方式下线路末端三相短路电流。它决定I段定值,公式是:
[ I_{k.max}^{(3)}=\frac{E_{\phi}}{X_{s.min}+X_{线路}} ]
(E_{\phi})是相电势。对110kV系统来说(E_{\phi}=110kV/\sqrt{3}\approx63.5kV)。
第二,最小运行方式下两相短路电流。它决定灵敏度校验,公式是:
[ I_{k.min}^{(2)}=\frac{\sqrt{3}}{2}\cdot\frac{E_{\phi}}{X_{s.max}+X_{线路}} ]
有个很好记的规律:对于110kV系统,(\frac{\sqrt{3}}{2}\cdot E_{\phi}=55kV),正好是线电压的一半。所以两相短路电流可以直接写为(U_N/2)除以总阻抗。
第三,I段最小保护范围校验。令最小运行方式下两相短路电流等于I段定值,反解故障距离:
[ l_{min}=\frac{1}{x_1}\left(\frac{55kV}{I_{dz}^{I}}-X_{s.max}\right) ]
这个式子的物理意义很直白:在系统最弱、故障类型最不利的情况下,短路电流还能大于I段定值的线路长度只有这么远。
3. 核心代码实现与分层整定
3.1 一段保护整定:定值计算加保护范围校验
先说一段保护。基于前面参数,Matlab脚本从系统参数定义开始:
% 三段式电流保护整定计算 % 单位约定:V / A / Ω / km U_N = 110e3; % 额定线电压 E_ph = U_N / sqrt(3); % 相电势,约63508V x1 = 0.4; % 线路单位电抗 L_AB = 20; X_AB = x1*L_AB; % 线路AB阻抗 L_BC = 15; X_BC = x1*L_BC; % 线路BC阻抗 Xs_min = 3; % 最大运行方式系统阻抗 Xs_max = 5; % 最小运行方式系统阻抗 IL_max = 200; % 最大负荷电流 Krel_1 = 1.3; Krel_2 = 1.15; Krel_3 = 1.2; Kst = 1.5; Kre = 0.85;I段整定关键是最大运行方式下AB末端三相短路电流:
% I段:躲过线路AB末端最大三相短路电流 I_k_AB_max = E_ph / (Xs_min + X_AB); % 5773.5 A I_dz_I = Krel_1 * I_k_AB_max; % 7505.5 A % 最小保护范围校验(最小运行方式下两相短路) l_min = ((U_N/2) / I_dz_I - Xs_max) / x1; % 5.82 km l_min_pct = l_min / L_AB * 100; % 29.12% fprintf('I段整定值:%.1f A\n', I_dz_I); fprintf('最小保护范围:%.2f km,占全长 %.1f%%\n', l_min, l_min_pct);跑出来的结果是I段定值7505.5A,最小保护范围5.82km,占全线长29.12%,大于20%,合格。
这里有个细节值得多说一句:为什么最小保护范围校验用的是“最小运行方式下的两相短路”,而不是最大运行方式下的三相短路?因为保护范围短不短,要看最不利的情况。系统最小运行方式下系统阻抗最大,短路电流最小;两相短路电流又比三相短路小。这两种因素叠加,得到的保护范围是最短的,如果这种情况下都满足20%的要求,其他情况下更没问题。
3.2 二段保护整定:与相邻I段配合的“失败案例”
二段的常规做法是与相邻线路BC的I段配合。先算出BC线路末端在最大运行方式下的三相短路电流,再乘BC的I段可靠系数,得到相邻线路I段定值,最后用本保护的可靠系数和它配合:
% II段:先尝试与相邻线路BC的I段配合 I_k_BC_max = E_ph / (Xs_min + X_AB + X_BC); % 3735.8 A I_dz_BC_I = Krel_1 * I_k_BC_max; % 4856.5 A I_dz_II = Krel_2 * I_dz_BC_I; % 5585.0 A % 灵敏度校验:本线路AB末端最小两相短路电流 I_k_AB_min = (U_N/2) / (Xs_max + X_AB); % 4230.8 A Ksen_II = I_k_AB_min / I_dz_II; % 0.76 fprintf('II段初次整定:%.1f A\n', I_dz_II); fprintf('II段灵敏度:%.2f(要求≥1.3)\n', Ksen_II);灵敏度0.76,远低于1.3,不合格。这个结果我在教学时经常会碰到,不是算错了,而是二段整定里最典型的工程矛盾:相邻线路BC末端短路电流大,导致BC的I段定值大,AB的II段被迫抬高,结果AB线路末端最小两相短路电流又不够看了。线路AB比BC长、或者系统阻抗变化幅度大时,这个问题尤其突出。
3.3 二段保护调整:换用与相邻II段配合
面对灵敏度不足,最直接的调整思路有两个。一是把II段可靠系数从1.15降到1.1,但这里算下来只有0.79,仍然不够。二是改用与相邻线路BC的II段配合,牺牲一部分速动性,换取明显更低的整定值。
BC线路的II段需要保护BC全长,我们按“BC末端最小两相短路电流除以1.3”反推一个BC II段定值,然后AB的II段与它配合:
% BC线路末端最小两相短路电流 I_k_BC_min = (U_N/2) / (Xs_max + X_AB + X_BC); % 2894.7 A % BC II段按常规近后备灵敏度1.3反推 I_dz_BC_II = I_k_BC_min / 1.3; % 2226.7 A % AB II段与BC II段配合 I_dz_II = 1.1 * I_dz_BC_II; % 2449.4 A Ksen_II = I_k_AB_min / I_dz_II; % 1.73 fprintf('II段调整后整定值:%.1f A\n', I_dz_II); fprintf('II段灵敏度:%.2f(合格)\n', Ksen_II);调整后II段定值2449.4A,灵敏度1.73,满足要求。代价是时限变长:BC的II段按常规取0.5s,AB的II段要再错开一个(\Delta t),取1.0s。
这里必须提醒一句:上面反推BC II段定值是简化演示。实际工程中BC的II段定值还要和更下游的保护配合,不是随便按灵敏度反推一下就能用的。但作为理解“二段灵敏度不够时怎么调整”的教学算例,这个思路完全成立。
3.4 三段保护整定与三级时限配合
三段保护的任务是作为本线路和相邻线路的后备,整定核心是躲过最大负荷电流:
% III段:躲过最大负荷电流 I_dz_III = (Krel_3 * Kst / Kre) * IL_max; % 423.5 A % 近后备灵敏度:AB末端最小两相短路 Ksen_III_near = I_k_AB_min / I_dz_III; % 9.99 % 远后备灵敏度:BC末端最小两相短路 Ksen_III_far = I_k_BC_min / I_dz_III; % 6.84 fprintf('III段整定值:%.1f A\n', I_dz_III); fprintf('近后备灵敏度:%.2f(要求≥1.5)\n', Ksen_III_near); fprintf('远后备灵敏度:%.2f(要求≥1.2)\n', Ksen_III_far);III段定值423.5A,做近后备灵敏度9.99,远后备灵敏度6.84,全部合格。注意灵敏度这么高并不奇怪,过电流保护的定值是按负荷电流整定的,本身很小,而短路电流通常有几千安,数值上自然很充裕。
三个保护段的时限配合,最后整理成一张时间阶梯表:
| 保护段 | 时限配合关系 | 动作时间 |
|---|---|---|
| BC I段 | 瞬时 | 0s |
| BC II段 | BC I段+Δt | 0.5s |
| BC III段 | BC II段+Δt | 1.0s |
| AB I段 | 瞬时 | 0s |
| AB II段 | 与BC II段配合,BC II段+Δt | 1.0s |
| AB III段 | 与BC III段配合,BC III段+Δt | 1.5s |
这张表就是后面画时间配合梯形图的基础。
4. 实操中的高频坑点与排查建议
4.1 单位混用:算出来的保护范围直接“消失”
我见过太多初学者把110kV直接写成110,而不是110e3。相电势变成63.5V,短路电流直接小了1000倍。更隐蔽的是三相短路电流公式中如果(E_{\phi})用V、总阻抗用Ω,得到的电流单位是A;但如果有人习惯用kA做输出,又忘了在保护范围公式里把A换算回kA,最小保护范围就会算出一个离谱的数,甚至出现“负公里”。
排查单位问题我有个固定套路:先看短路电流数量级对不对。110kV系统、线路阻抗几个欧姆,短路电流应该在千安级别,如果代码算出几十安,那肯定是电压单位或阻抗单位出了问题。
4.2 最小保护范围出现负值的三种可能
I段保护范围校验时,如果l_min算出来是负值,说明“即使故障发生在母线出口,短路电流都达不到I段定值”,这肯定不对。三个常见原因:
第一,最小运行方式系统阻抗取得太大。比如把Xs.max从5Ω改成12Ω,故障点在线路首端的短路电流都只有不到4.6kA,小于I段定值7.5kA,保护范围直接就不存在了。实际计算前要确认运行方式数据是否合理,最小方式不是随便取的。
第二,I段可靠系数取得偏大。可靠系数1.3已经不算小,如果再人为抬高,保护范围会迅速缩水。
第三,线路长度与系统阻抗不匹配。短线路配大系统阻抗,一段很容易出现保护范围不足,这时候与其勉强调系数,不如考虑改用其他保护原理,这是很多课程设计和工程计算里都会遇到的问题。
4.3 二段灵敏度不足时,常用的几种调整手段
我在3.3节演示了从“与相邻I段配合”切换到“与相邻II段配合”,这是最有效的手段。除此之外,实际工程里还有几种常见的调整策略:
| 调整手段 | 灵敏度变化 | 代价 |
|---|---|---|
| 降低II段可靠系数 | 小幅提升 | 裕度减小,误动风险略增 |
| 与相邻II段配合 | 大幅提升 | 时限从0.5s增加到1.0s |
| 缩短相邻线路配合长度 | 中幅提升 | 可能失去对相邻末端的后备作用 |
| 重新核对最小运行方式 | 取决于系统数据 | 需向调度确认运行方式清单 |
| 改用其他原理保护 | 彻底改善 | 配置复杂度上升 |
实际整定不追求“灵敏度越高越好”。灵敏度过高,意味着保护范围延伸很远,可能与多个下游保护的时间阶梯打架。所以最终方案要在灵敏性和选择性之间找平衡,算出来的数还要放回整个保护配合表里整体检查一遍。
4.4 三段保护的负荷电流参数陷阱
三段定值公式里三个系数都容易踩坑。自启动系数(K_{st})要按线路实际负载类型来取,全是电动机负荷的线路取1.5~2.0,纯电阻性负荷可以取小一些。返回系数(K_{re})为什么小于1,很多人不理解:常规过流继电器动作后,要等电流降到“返回电流”以下才复归,返回电流比动作电流小;整定公式里除以(K_{re}),就是保证继电器在负荷电流波动时能可靠返回。
如果用的是微机保护,返回系数物理上可以更接近1,但为了与常规保护配合,很多整定方案里仍然保留0.85~0.95这个范围。这个细节在考试里容易丢分,工程上却直接影响定值大小。
5. 可视化表达与结果再校验
5.1 短路电流随距离变化曲线与定值线
算完三个定值,我再习惯性画一张“短路电流-故障距离”曲线图。横轴是故障点距母线A的距离,纵轴是短路电流,红色实线是最大运行方式下沿线路各点三相短路电流,蓝色虚线是最小运行方式下沿线路各点两相短路电流。然后把三个定值线画成水平线,和曲线相交的位置就是各保护段的实际边界。
d = linspace(0, L_AB, 500); I_3ph = E_ph ./ (Xs_min + x1*d); I_2ph_min = (U_N/2) ./ (Xs_max + x1*d); figure('Color','w'); plot(d, I_3ph/1e3, 'r-', 'LineWidth', 1.5); hold on; plot(d, I_2ph_min/1e3, 'b--', 'LineWidth', 1.5); plot([0 L_AB], [I_dz_I I_dz_I]/1e3, 'k-', 'LineWidth', 1.2); plot([0 L_AB], [I_dz_II I_dz_II]/1e3, 'g-', 'LineWidth', 1.2); plot([0 L_AB], [I_dz_III I_dz_III]/1e3, 'm-', 'LineWidth', 1.2); legend('三相短路(最大方式)','两相短路(最小方式)', ... 'I段定值','II段定值(调整后)','III段定值','Location','east'); xlabel('故障点距母线A的距离 (km)'); ylabel('短路电流 (kA)'); grid on;这张图画完,I段保护范围5.82km就能直接从蓝色虚线与黑色I段定值线的交点读出来。II段定值线2449.4A明显“压得很低”,说明它是靠时限而不是靠定值区分选择性的。
5.2 时间配合梯形图:肉眼检查越级问题
计算完定值和时限,我还会画一张梯形图,把每个保护段的保护范围和动作时间画成矩形块。横轴是线路走廊位置,从母线A到母线B再到母线C,纵轴是动作时间。
figure('Color','w'); hold on; xlim([0 38]); ylim([0 2.0]); rectangle('Position',[0, 0, 5.82, 0.06], 'FaceColor',[0.2 0.6 0.9]); rectangle('Position',[0, 1.0, 35, 0.06], 'FaceColor',[0.3 0.8 0.5]); rectangle('Position',[0, 1.5, 35, 0.06], 'FaceColor',[0.9 0.6 0.2]); % BC侧 rectangle('Position',[20, 0, 5.2, 0.06], 'FaceColor',[0.4 0.4 0.8]); rectangle('Position',[20, 0.5, 15, 0.06], 'FaceColor',[0.2 0.7 0.8]); rectangle('Position',[20, 1.0, 15, 0.06], 'FaceColor',[0.8 0.8 0.2]); text(2, 0.12, 'AB I段(0s)'); text(2, 1.12, 'AB II段(1.0s)'); text(2, 1.62, 'AB III段(1.5s)'); text(22, 0.12, 'BC I段(0s)'); text(22, 0.62, 'BC II段(0.5s)'); text(22, 1.12, 'BC III段(1.0s)'); xlabel('线路位置 (km)'); ylabel('动作时间 (s)');梯形图的价值在于同一张图里看到“同一位置故障时,谁先动、谁后动”。比如母线B附近故障,BC I段0s跳、AB II段要到1.0s才跳,时间差足够让BC侧抢先把故障切除。如果肉眼看到某两块矩形在时间和空间上重叠过多,就要回头检查配合关系。
5.3 用表格清单做最后的再校验
我把最终整定结果汇总成一张表,检查每一段的定值、时限、灵敏度是否互相矛盾:
| 保护段 | 整定值 | 时限 | 校验结果 |
|---|---|---|---|
| I段 | 7505.5A | 0s | 最小保护范围29.1%,合格 |
| II段 | 2449.4A | 1.0s | 近后备灵敏度1.73,合格 |
| III段 | 423.5A | 1.5s | 近后备9.99,远后备6.84,合格 |
Matlab里可以直接用table输出:
T = table({'I段';'II段';'III段'}, ... [I_dz_I; I_dz_II; I_dz_III]/1e3, ... [0; 1.0; 1.5], ... {'保护范围29.1%'; '灵敏度1.73'; '近后备9.99'}, ... 'VariableNames', {'保护段','定值_kA','时限_s','校验结论'}); disp(T);再校验这一步不能省。我见过不少定值单,每个段落单独看都对,放在一起却发现II段灵敏度刚好卡线、III段时间和相邻线路重叠这种问题。整定计算最后一步一定是“整体回看”。
最后说一个自己实践中的体会:三段式电流保护的计算本身不复杂,真正的经验都在“调整循环”里。第一次算出不合格结果别急着怀疑代码,先把物理过程想清楚——是系统运行方式的问题,还是相邻保护配合的问题,还是本身这个线路条件就不适合用电流保护。Matlab能帮你快速跑完整个循环,但决定往哪个方向调,靠的还是对保护原理的理解。动手把参数改一改,观察保护范围曲线怎么移动,几次下来,这套配合逻辑就真正印在脑子里了。