线路差动保护原理与工程实践:折线制动、采样同步及Python复现
简介这份学习教案围绕线路差动保护的配置与基本原理展开面向电力系统继电保护方向的学生、运维人员及备考人员帮助梳理光纤通道构成、保护与通道接口、2M与64K速率差异等易混淆内容。资源共1个pptx文件压缩包约506KB以幻灯片形式呈现内含通道连接示意图与逻辑框图便于课堂讲解与自学对照。已有154人学习属于较受关注的教学课件。教案共39页系统讲解了专用通道与复用通道的连接形式及MUX-64B、MUX-2M等接口设备的用途并深入剖析实现差动保护的关键问题包括时钟同步与滑码成因、基于数据通道/参考向量/GPS三类采样同步方法以及采样时刻调整法、采样数据修正法、时钟校正法的适用前提同时结合差动投入条件、CT断线差动压板、对侧差动允许信号与比率制动特性说明防止误动的设计思路。适合按目录顺序逐节理解或配合保护装置说明书查漏补缺。1. 线路差动保护为什么总被放在继保课件的核心位置带过徒弟的人都有体会讲到线路差动保护那一页底下没人打瞌睡但提问最多。原因是它把三件事绑在了一起——基尔霍夫电流定律、光纤通道的采样同步、两侧 CT 变比折算任何一环没想透定值算出来都是错的。线路差动保护的价值在于它是全线速动的主保护不受系统振荡影响也不受运行方式变化影响一条线路从首端到末端任意一点短路两端装置把电流相量搬到一起比一比几十毫秒内就能判断是区内还是区外。这也是 220kV 及以上线路、新能源汇集线路普遍把它配成双套主保护的原因。下面按原理判据、保护配置、代码复现、现场排错四条线把课件上那张折线图落到能算、能配、能调的程度。2. 线路差动保护的基本原理差流、制动量与折线动作特性差动保护的数学表达简单得不像一个主保护难的是把这个简单表达式在真实的通道误差、CT 误差和电容电流环境下用得可靠。这一章先把相量相加的物理含义讲清楚再拆开比率制动特性里每一个定值是怎么来的最后处理变比折算、电容电流和 TA 饱和这三类会让判据失准的干扰。2.1 两端电流相量相加基尔霍夫电流定律怎么搬到线路上把一条线路连同两侧的电流互感器看成一个闭合面流入这个闭合面的电流之和恒为零。工程上先统一定义方向两侧 CT 的正方向都规定为母线指向线路于是正常运行时 M 侧与 N 侧电流相量近似反相相加得零线路内部短路时两侧电流都由各自的母线涌向故障点方向不再相反相量和就等于故障点的总短路电流。装置实际计算的两个量是差动电流İd |İ_M İ_N|和制动电流İr前者判断有没有内部故障后者判断这个差流值不值得信。有三个细节在培训时最容易含糊过去。第一M 侧和 N 侧的编号不能按装置面板死记必须对着端子箱的实际穿心方向和二次接线核实极性接反会让区外故障直接变成区内。第二相量相加的前提是两侧电流已经折算到同一基准否则比的是两把不同刻度的尺子。第三差流里天然含有线路电容电流和 CT 传变误差理论上不存在绝对的零判据必须给这些分量留出躲过去的余量。提示新投运线路做极性检查时单侧通入 0.5 倍额定电流装置显示差流应当接近零。如果读到的差流接近 1.0 倍额定电流不要急着改定值先查两侧 CT 的 P1/P2 朝向和二次回路。2.2 比率制动的折线特性启动电流、两个拐点和两条斜率如果只用Id Iset一个判据Iset 必须躲过区外故障时可能出现的最大不平衡电流。问题在于区外故障的穿越电流往往比区内最小故障电流还大门槛抬上去灵敏度就没了。比率制动的思路是让动作门槛随穿越电流一起抬升穿越电流越大CT 传变误差和饱和程度越严重允许的差流门槛就越高。以常见的两段折线为例动作方程写成下面三式Id Iset (Ir ≤ Ir1) Id Iset K1 · (Ir − Ir1) (Ir1 Ir ≤ Ir2) Id Iset K1 · (Ir2 − Ir1) K2 · (Ir − Ir2) (Ir Ir2)第一段Ir1 以下几乎是平的保证小故障电流下的灵敏度Ir1 到 Ir2 之间按小斜率 K1 抬升用来躲正常传变误差Ir2 以上按大斜率 K2 抬升专门对付区外故障时的 CT 饱和。制动量 Ir 的取法各厂家不统一常见三种取两端电流幅值的最大值max(|İ_M|, |İ_N|)、取两端幅值之和的一半、取幅值差的一半。三种取法在区外故障时的制动效果差别明显整定前必须翻对应装置的说明书不能拿别家的特性曲线套用。定值项符号典型取值取值依据差动启动电流Iset0.2 ~ 0.5 In躲稳态电容电流与 CT 误差之和第一拐点Ir10.8 ~ 1.0 In额定负荷附近的传变误差开始显现第二拐点Ir23 ~ 6 In接近区外最大穿越电流小斜率K10.2 ~ 0.4躲正常运行和轻度饱和的误差大斜率K20.5 ~ 0.8躲区外故障 CT 深度饱和差动速断段Isd4 ~ 8 In大差流下不带制动直接出口表格里的数值是工程上的常见区间不是可以直接抄进定值单的数字。真正落地时Iset 要和线路电容电流、两侧 CT 的准确级限值一起算K2 要和区外故障时实测的最大不平衡电流对应。2.3 CT 变比折算、电容电流补偿与 TA 饱和的应对两侧 CT 变比不同是常态一侧 2000/1、另一侧 1250/1 的例子很常见。装置内部一般不做把大变比乘个系数这种粗放处理而是把每一侧的二次电流按该侧线路额定电流归算成标么值再用平衡系数把两侧拉到同一基准。写成式子某侧平衡系数等于装置二次额定电流与该侧线路额定电流折算到二次的比值。折算错了的表现很典型——两侧加同样大小的一次电流装置显示的标么值一个是 1.0、另一个是 0.5差流恒等于负荷电流的一半。电容电流则是长线路绕不开的量。500kV 单回线路单位长度的电容电流在 1A/km 量级120km 的线路正常运行时两端差流就能到 100A 上下占额定电流的 0.1 倍左右。这部分差流不是故障装置一般提供电容电流补偿功能按线路正序电容和运行电压实时补偿补偿不投或参数填错Iset 就得抬高到能躲过它灵敏度白白损失。TA 饱和的处理分两条路一条靠定值把 K2 抬到能躲过区外故障饱和产生的差流另一条靠硬件和原理比如选用带气隙的 TPY 级 CT或者采用能识别饱和波形的算法。两条路通常同时用因为单纯抬 K2 会牺牲区内高阻故障的灵敏度。下面这段代码把折线动作门槛算出来方便对照装置说明书核对定值import numpy as np def trip_threshold(ir, iset, k1, ir1, k2, ir2): 按两段折线计算各制动电流点对应的差动动作门槛 ir : 制动电流序列标么 iset : 差动启动电流标么 k1 : 第一段斜率ir1 为第一拐点 k2 : 第二段斜率ir2 为第二拐点 thr np.full_like(ir, iset, dtypefloat) seg1 (ir ir1) (ir ir2) thr[seg1] iset k1 * (ir[seg1] - ir1) seg2 ir ir2 thr[seg2] iset k1 * (ir2 - ir1) k2 * (ir[seg2] - ir2) return thr # 以 0.1 pu 为步长扫一遍制动电流观察门槛走势 ir np.arange(0.0, 10.0, 0.1) thr trip_threshold(ir, iset0.30, k10.30, ir10.8, k20.70, ir24.0) for r, t in zip(ir[::20], thr[::20]): print(fIr{r:4.1f} pu - 动作门槛 {t:5.2f} pu)trip_threshold的三个分段用布尔掩码实现ir1到ir2之间按 K1 线性增长超过ir2之后斜率换成 K2。把装置说明书上的折线参数代进去输出的门槛序列应当和装置定值校验界面的曲线完全重合如果对不上多半是制动量的取法理解错了比如装置用的是幅值差的一半而这里按最大值算。3. 线路差动保护配置双重化、光纤通道与采样同步怎么落地原理清楚了接下来是配置。这一章回答三个在初设阶段就要定下来的问题主保护怎么配、通道怎么走、两侧采样怎么对齐。配置方案一旦定了后面定值整定和现场调试的难度基本就锁死了。3.1 主保护双重化与 CT 绕组、跳闸回路的配置原则220kV 及以上线路普遍采用双重化配置也就是两套完全独立的主保护各自组屏、各自取用独立的 CT 二次绕组、各自有独立的直流电源和跳闸回路。所谓独立要落到实处的检查点是两套保护的 CT 绕组不共用、直流空开不共用、跳闸出口继电器不共用、连通道的光纤也不共用一根纤芯。共用任何一项双重化的意义就打对折。CT 绕组的配置数量按保护需求倒推。一条线路的一侧通常要配差动保护用一组准确级按 5P30 或 TPY 选取、距离或过流后备保护用一组、母差保护用一组、故障录波或测控用一组。差动专用绕组不要和后备用共用因为差动对传变误差的敏感度远高于过流类保护。保护范围的划分也要在图上画清楚。线路差动保护的范围就是本线路全长两侧母线由母差保护负责。T 接线路要配三端差动任何一端退出都要有相应的处理逻辑。与本线路相关的断路器失灵、母差动作需要远跳对侧的走独立通道不要和差动保护的数字通道混用同一套复接设备。3.2 光纤通道形式与采样同步方式的选型对比采样同步是线路差动区别于其他保护的独有难题两端装置相距几十甚至上百公里采样时刻必须对齐到微秒级否则算出来的差流里会混进一个正比于负荷电流的虚假分量。同步方式主要三类选型时对着下表逐项确认。同步方式实现原理优点局限适用场景乒乓法内部时钟同步主端发帧记时标从端收后回发用往返时延的一半补偿通道延时不依赖外部时钟源可到微秒级要求收发路由严格对称通道迂回会引入误差专用纤芯点对点、N×64kbps 复用通道外部时钟同步两端各自接收 1PPS、IRIG-B 或 IEEE 1588 时钟源对齐采样与通道时延无关需要时钟源和守时措施失步影响面大有统一同步网的变电站采样点序号对齐依靠采样计数器与时间戳在接收端重采样组网灵活全站对时依赖强数字化变电站的采样值组网乒乓法的时延计算值得单独说一句主端在 t1 发帧从端 t2 收到、t3 回发主端 t4 收到若收发时延对称通道单程时延等于((t4 − t1) − (t3 − t2)) / 2。这个公式成立的前提是去程和回程走同一条路径。通道发生倒换、路由被改到另一条更长的路径上时往返时延的对称性被破坏计算出的通道延时出现偏差装置的表现是持续存在一个稳定的差流。注意通道倒换后必须重新核对通道延时和差流。有些装置能自动重新测算有些需要手动复归或重启同步流程投运前要把这一条写进运行规程。3.3 一条 500kV 线路的定值整定计算与灵敏度校核把前面两块拼起来看一个完整例子。线路额定电压 525kV输送容量基准 1000MVA一次额定电流约 1100A线路长度 120km两侧 CT 变比 2000/1装置二次额定电流 1A。整定要做的事情是由电容电流确定启动定值下限、按说明书选取折线参数、再按最小运行方式校核灵敏度。项目计算方式示例结果一次额定电流S / (√3 · U)≈ 1100 A线路电容电流单位长度值 × 长度≈ 108 A ≈ 0.10 pu差动启动定值0.30 pu需大于电容电流若干倍330 A一次/ 0.165 A二次拐点与斜率按说明书与穿越电流水平选取Ir11.0Ir24.0K10.30K20.70灵敏度校核Ksen Id.min / Iset要求 ≥ 2见下方脚本输出对应脚本如下参数标注为示例值实际以调度下达的定值单为准import math # ---------- 输入参数示例 ---------- U_N 525e3 # 线路额定电压 (V) S_BASE 1000e6 # 容量基准 (VA) I_N_LINE S_BASE / (math.sqrt(3) * U_N) # 一次额定电流 (A) N_TA 2000 # CT 变比 2000/1 I_2N 1.0 # 装置二次额定电流 (A) L_KM 120 # 线路长度 (km) C_KM 0.9 # 单位长度电容电流 (A/km) def pri2sec(i_pri): 一次电流换算为装置二次电流 return i_pri / N_TA * I_2N I_CAP C_KM * L_KM # 全线路电容电流近似值 ICDQD_PU 0.30 # 差动启动电流标么 ICDQD_1 ICDQD_PU * I_N_LINE # 一次值 ICDQD_2 pri2sec(ICDQD_1) # 二次值 print(f一次额定电流 I_N {I_N_LINE:.0f} A) print(f电容电流 I_C {I_CAP:.1f} A {I_CAP / I_N_LINE:.3f} pu) print(f启动定值 Icdqd {ICDQD_1:.0f} A(一次) / {ICDQD_2:.3f} A(二次)) print(f躲电容电流余量 {ICDQD_1 / I_CAP:.2f} 倍) # ---------- 灵敏度校核单侧电源时差流等于该侧故障电流 ---------- for name, ik_min in [(末端单相接地最小方式, 1.4 * I_N_LINE), (末端三相短路最小方式, 2.0 * I_N_LINE)]: ksen ik_min / ICDQD_1 print(f{name}: Id.min{ik_min:.0f} A, Ksen{ksen:.2f} f- {合格 if ksen 2.0 else 偏紧需复核})脚本里pri2sec做的是线性折算前提是 CT 二次额定电流与装置额定一致两者不一致时还要再乘一个二次额定比。灵敏度校核这一段的Id.min取法要特别小心两端都有电源时区内故障的差流是两侧供给电流之和一端是弱电源或纯负荷侧时差流接近单侧电流Ksen 必须以最不利的那种情况来算否则算出来的数字好看但不成立。4. 用 Python 复现两端差动逻辑从采样点到动作报文前面所有讨论都是静态的定值和特性装置真正跑起来是逐点判定的动态过程。用一个脚本把两端采样数据造出来过一遍全周傅里叶滤波和折线判据能看到差流在故障前后的完整波形也能看清区外故障时制动量是怎么把误动压下去的。4.1 构造三类工况的两端采样数据采样率取 1200Hz对应工频每周波 24 点这是国内保护装置常见的配置。为了看清扰动过程每个工况仿真 200ms其中 0 到 20ms 是故障前状态20ms 后进入故障。三个工况分别是正常运行两端电流幅值相等、相位相差 180°、区外故障6 pu 穿越电流N 侧 CT 饱和导致幅值衰减 8%、相位偏移 6°、区内故障两端同相馈入 3 pu 和 2.5 pu。区外故障那一组是重点。真实的 CT 饱和波形是削顶的用幅值衰减加相移来近似只是为了在脚本里复现出不平衡差流这个结果量级上能体现饱和的影响波形细节不能当作实测。真实装置的抗饱和能力要靠暂态仿真或者现场试验来验证。4.2 全周傅里叶滤波与差流、制动流的计算保护装置不会直接拿采样值比大小先做数字滤波提取工频相量。全周傅里叶算法是标准做法用一个工频周期的余弦和正弦系数对采样窗加权求和得到相量的实部和虚部。它对整次谐波有很好的抑制对衰减直流分量有天然的低通作用。import numpy as np import math FS 1200 # 采样率 (Hz) F0 50.0 # 工频 NPTS int(round(FS / F0)) # 每周波 24 点 def phasor(x, fsFS, f0F0): 全周傅里叶滤波返回与输入等长的复相量序列前 N-1 点为 nan n int(round(fs / f0)) t np.arange(n) / fs cw np.cos(2 * np.pi * f0 * t) * (2.0 / n) sw -np.sin(2 * np.pi * f0 * t) * (2.0 / n) out np.full(len(x), np.nan, dtypecomplex) for k in range(n, len(x) 1): w x[k - n:k] out[k - 1] complex(np.dot(w, cw), np.dot(w, sw)) return out def differential(im, inn, iset, k1, ir1, k2, ir2): 输入两端采样序列输出差流、制动流和动作标志 pm, pn phasor(im), phasor(inn) id_ np.abs(pm pn) # 差动电流 ir_ np.maximum(np.abs(pm), np.abs(pn)) # 制动电流取两端幅值最大者 ir_ np.nan_to_num(ir_) thr np.full_like(ir_, iset, dtypefloat) s1 (ir_ ir1) (ir_ ir2) thr[s1] iset k1 * (ir_[s1] - ir1) s2 ir_ ir2 thr[s2] iset k1 * (ir2 - ir1) k2 * (ir_[s2] - ir2) id_ np.nan_to_num(id_) return id_, ir_, thr, id_ thrphasor里的2.0 / n是傅里叶系数的归一化因子保证纯正弦输入下算出的相量幅值等于输入幅值。differential中制动量取两端幅值最大值这是保守的一种取法换用幅值之和的一半制动量会更大区外故障更安全但区内灵敏度略降。改这一行就能对比不同厂家的特性差异。4.3 逐点判定与动作时序对照把三个工况跑一遍记录动作时刻和动作前一刻的差流、制动流、门槛值。CFG dict(iset0.30, k10.30, ir10.8, k20.70, ir24.0) t np.arange(0, 0.20, 1.0 / FS) w 2 * np.pi * F0 * t FAULT_T 0.02 # 20ms 时故障发生 def case_normal(): return 0.5 * np.cos(w), -0.5 * np.cos(w) def case_external_sat(): 区外故障穿越电流 6puN 侧 CT 饱和致幅值衰减、相位偏移 pre (0.5 * np.cos(w), -0.5 * np.cos(w)) post (6.0 * np.cos(w), -5.52 * np.cos(w math.radians(6))) m t FAULT_T return (np.where(m, post[0], pre[0]), np.where(m, post[1], pre[1])) def case_internal(): pre (0.5 * np.cos(w), -0.5 * np.cos(w)) post (3.0 * np.cos(w), 2.5 * np.cos(w math.radians(5))) m t FAULT_T return (np.where(m, post[0], pre[0]), np.where(m, post[1], pre[1])) for name, gen in [(正常运行, case_normal), (区外故障CT饱和, case_external_sat), (区内故障, case_internal)]: im, inn gen() id_, ir_, thr, op differential(im, inn, **CFG) idx np.argmax(op (t FAULT_T)) if np.any(op (t FAULT_T)) else -1 if idx 0: print(f{name}: t{t[idx]*1000:.1f}ms 动作, fId{id_[idx]:.2f}pu, Ir{ir_[idx]:.2f}pu, 门槛{thr[idx]:.2f}pu) else: print(f{name}: 全时段未动作, 最大 Id{id_.max():.2f}pu)运行结果对照如下表三个工况的差异一目了然工况制动电流水平差流水平判定结果正常运行≈ 0.5 pu≈ 0不动作区外故障 CT 饱和≈ 5.5 ~ 6 pu约 0.6 ~ 0.8 pu被制动不动作区内故障≈ 3 pu约 5.5 pu动作故障后约 20ms 出结果区外故障那一行是整段代码的价值所在饱和造成了接近 0.7 pu 的差流如果只有启动判据0.3 pu 的门槛早就动作了加上折线制动之后制动电流 5.5 pu 对应的门槛抬到 2.6 pu 以上误动被压住。区内故障时制动电流只有 3 pu门槛约 1.8 pu而差流 5.5 pu 远高于门槛保护可靠动作。全周傅里叶的滤波窗需要一个周波所以动作时间比故障发生时刻晚约 20ms这和装置里采样窗 算法 出口的总时间在一个量级。5. 差动保护现场排错与灵敏度校验的进阶技巧原理和代码都清楚了真正的工作量在现场。差动保护报出的异常里绝大多数能归到同步、CT 回路、定值三类剩下的才是装置本身的问题。5.1 采样同步异常与 CT 断线的快速区分两者都会表现为差流不为零但特征完全不同。同步异常时两端电流都还在只是相位对不上差流会随负荷电流变化负荷越大差流越大装置一般同时报通道延时异常或同步告警把通道切到自环模式后差流应当立刻归零。CT 断线时某侧电流直接跌到零对侧负荷电流基本不变差流恰好等于断线前的负荷电流幅值稳定不随负荷波动。处理路径也不同。同步问题要查光功率、通道误码率、收发路由是否对称通道倒换后重新核对延时CT 断线要先查端子箱和二次回路确认是绕组开路还是接线松动处理完再复归装置。5.2 灵敏度校验与一次通流试验的记录方式灵敏度校核最容易被忽略的是最不利情况的选取。两端电源线路的区内故障差流是两侧供给之和看起来灵敏度很高但一旦对侧变成弱电源或者线路单侧投运差流就只剩单侧电流Ksen 可能从 5 掉到 1.2。校核时必须按最不利的运行方式算一遍而不是拿正常运行方式的数据交差。一次通流试验是验证整条回路的最后一关建议固定成下面四项记录试验项目接线与操作合格判据常见异常极性检查单侧通入 0.5In对侧短接差流接近零制动流≈0.5In差流≈1.0In说明两侧极性相反平衡系数校验两侧分别通入 1.0In装置两侧显示均为 1.0 pu一侧显示 0.5 pu说明变比折算错误启动值校验单侧缓慢升流至动作动作值与定值偏差在允许范围内偏差偏大检查定值区或 CT 绕组同步检查投入通道两侧同时加量通道延时稳定差流接近零延时跳变检查路由对称性与光功率四项做完还没有结束。把每次试验的实际读数、环境温度、装置版本记录下来和上一次投运时的数据比一比比单次合格与否更能发现趋势性问题——尤其是平衡系数和通道延时这两项它们的缓慢漂移往往是 CT 回路接触不良或者光模块老化的最早信号。本文还有配套的精品资源点击获取