搞过输电线路保护的人,大多被同一种情况折磨过:系统没有短路故障,距离保护却因为功率摆动动作了,线路被无故跳开。功率摆动闭锁(Power Swing Blocking,PSB)和解闭锁(Deblocking,PSD)功能就是为了把这种误动拦住而设计的,但传统方案在“把摆动拦得严”和“把故障放得快”之间越来越难取舍。这篇文章是我改进距离继电器功率摆动闭锁/解闭锁逻辑的完整记录——从摆动误动机理讲起,对比传统判据的短板,然后给出一套“突变量启动+阻抗轨迹形态+对称分量辅助”的新方法,并附上Matlab代码实现、状态机逻辑和仿真工况验证。适合正在做保护算法仿真的工程师和研究生,也想把手头距离保护PSB功能从“能动作”调到“动作得准”的同行,都能从里面找到可直接落地的思路。
1. 功率摆动与距离继电器误动:误动的机理比你想的更普遍
1.1 功率摆动的基本物理过程
功率摆动本质上是“发电机转子相对运动的宏观表现”。把系统等值成两机模型,发电机1电动势E1∠δ、发电机2电动势E2∠0,中间由总电抗XΣ连接,输送功率可以写成:
P = E1·E2·sinδ / XΣ
当系统发生短路、切机、重合闸、甩负荷这类扰动后,发电机的电磁功率和机械功率失去平衡,转子就要开始相对摆动,功角δ在某个平衡点附近来回振荡。转子本身有巨大的机械惯性,所以这种摆动节奏很慢,频率通常在0.1Hz到2Hz之间,比50Hz工频慢了不止一个数量级。
这个慢速摆动反映到保护安装处的电气量上,就是电压、电流的幅值和相位都在按某个低频规律周期性变化。注意,这种变化是“连续渐变”的,它仍然是三相基本对称的工频量,只是工频量的幅值和相角被低频调制了。
1.2 测量阻抗为什么会“路过”动作区
距离继电器的本质是测阻抗,它算的是母线电压和线路电流的比值Z = Um / Im。正常负荷时,测量阻抗落在负荷区;当功率摆动发生后,电压电流的幅值相位都在动,测量阻抗就会在R-X阻抗平面上画出一条轨迹。这条轨迹有可能从负荷区慢慢扫进距离保护的动作圆,然后再慢慢扫出来,整个过程持续几十毫秒到几百毫秒。
问题就出在这里:动作圆没有分辨“真短路”和“摆动路过”的能力。它只看到“阻抗落入动作区”,就认为线路内部发生了故障。于是一条好好的线路,仅仅因为系统在摆动,距离I段、II段就可能被误触发跳闸。这种误动在现场并不罕见,尤其是摆动中心恰好落在保护线路附近时,测量阻抗会最深地扎进动作区。
可以这样理解:距离保护动作圆像一个限速摄像头,它盯的是“有没有车出现在不该出现的区域”,但一辆车因为堵车、改道“路过”了这个区域,它也会被拍照。PSB要做的事,就是告诉摄像头“这辆车只是路过,别拍”。
1.3 闭锁与解闭锁的逻辑边界
PSB功能的职责是:识别“系统正在功率摆动”,在摆动期间输出闭锁信号,把距离保护跳闸出口暂时屏蔽掉。这个动作听起来简单,难点在另一半——如果摆动期间真的发生了故障,PSD功能又必须立刻解除闭锁,把故障跳开。这等于要求同一个保护同时做到“拦得严”和“放得快”,这两个目标天然冲突。
再加上系统摆动平息之后,闭锁信号不能立刻撤回。因为摆动可能在阻尼作用下慢慢衰减,也可能后面还有第二个振荡周期,如果闭锁撤得太早,残余振荡扫回动作区又会导致误动。所以复归逻辑还要有延时和条件约束。整套功能在逻辑上是一个小状态机,必须在“正常、预判、闭锁、解锁”几个状态之间切换,每一步都要有清晰的判据。
2. 传统检测手段的底子与新方法的三个突破口
2.1 传统检测手段回看
功率摆动检测不是新课题。早年微机保护普及之后,主流做法有好几类,我简单过一遍它们的底子。
第一类是R/Rdot判据。R可以取测量阻抗的模值,也可以是电阻分量,Rdot就是它对时间的导数。正常负荷变化时,阻抗移动很慢,Rdot很小;短路瞬间,阻抗几乎阶跃式变化,Rdot极大;功率摆动介于两者之间。于是设定两个门槛,当Rdot落在中间区域且阻抗进入动作区后,判为摆动。这个思路直观,但有一个大缺陷:摆动过程中Rdot并不是恒定值,越靠近振荡中心变化越快,甚至可能达到接近故障的水平,固定门槛很难两边兼顾。
第二类是对称分量法。功率摆动在理想情况下三相是对称的,负序和零序分量基本为零;故障时负序或零序明显增大。所以用对称分量变化来区分故障与摆动,是工程上很自然的做法。问题在于,三相短路时负序、零序都出不来,高阻接地时零序也可能微弱,这类方法对某些故障类型存在盲区。
第三类是振荡中心跟踪。通过等值系统阻抗计算振荡中心的位置,判断它是否落在保护范围内。这类方法对系统等值参数依赖很大,需要两端电源电动势、系统阻抗等信息,在单端量保护装置里实现起来比较麻烦,整定也复杂。
2.2 传统方案在工程现场的短板
单判据方案在特定工况下都有明显短板。我遇到过几种典型情况:
串补线路上,串联电容器会让测量阻抗呈现跳跃性变化,摆动轨迹可能不是平滑圆弧,而是带折线的畸变轨迹,R/Rdot容易把这种折线误判为故障。含分布式电源或多机系统里,等值阻抗参数随时在变,振荡中心跟踪的精度很难保证。还有不对称运行方式下,线路本身就有负序和零序输出,对称分量门槛必须抬高,否则闭锁逻辑会被频繁扰动。再有就是系统振荡过程中叠加负荷快速波动,采样值上会出现类似突变的“毛刺”,干扰启动判据。
这些场景叠加起来,结论很清楚:想让PSB/PSD在复杂电网结构下都稳得住,单靠一个特征量是不够的,必须走多判据融合的路子。
2.3 新方法:突变量启动+轨迹形态+对称分量联动
我在改进方案里采用的核心思路,可以概括成一句话:不要只盯着阻抗轨迹本身,要把“电气量突变”“轨迹形态”“对称分量变化”放到同一个数据窗里联合判断。
第一层是突变量启动。用当前采样值或基波相量减去一个周波前的值,超过门槛就说明系统发生了快速的电磁暂态。故障是电磁暂态,功率摆动是机电暂态,两者天然时间尺度不同。但要注意,负荷快速变化、开关操作也会产生一定的突变量,所以突变量只能作为启动量,不能单独作为解锁判据。
第二层是阻抗轨迹形态分析。计算测量阻抗在阻抗平面上的运动速率、方向连续性和在动作区内的“停留时间”。功率摆动轨迹是一个连续、缓慢、单调性较好的弧或圆,方向变化是渐进的;而故障轨迹往往是很快的折线甚至跳变,进入动作区后通常会一直停留在故障阻抗附近。把这两类轨迹特征量化成几个指标,比单独看Rdot可靠得多。
第三层是对称分量辅助。负序、零序分量增大时,可以直接加速解锁,把不对称故障的解锁时间压到很短;而在三相短路这种没有负序零序的场景,就改用“低电压+阻抗快速入圆”的判据。三个判据各管一摊,又互相兜底,整个逻辑的健壮性比单判据好很多。
3. Matlab实现:数据、相量与特征计算的完整链路
3.1 仿真数据的获取与组织
在Matlab里开发PSB/PSD算法,第一步是拿到电压电流的时域波形。日常工作中数据来源主要有三类:电磁暂态仿真软件(如PSCAD、Simulink)导出的波形,现场故障录波装置导出的COMTRADE文件,以及自己按解析模型构造的测试数据。
我建议先按解析模型构造一组“教学数据”,把算法流程调通,再换成仿真或录波数据做批量验证。原因是解析数据里我们精确知道故障加入时刻,标定算法响应时间非常方便。下面这组Matlab代码构造了一个理想化的摆动+故障复合波形:阻抗轨迹先按圆弧扫过动作区,在2s时突然切成一个低阻抗故障点。
fs = 1000; % 采样率 1000Hz f0 = 50; % 工频 50Hz T = 4; t = (0:1/fs:T)'; % 功率摆动:测量阻抗在R-X平面上沿圆弧轨迹移动 Z0 = 100 + 50j; % 圆弧圆心 Zr = 40; % 圆弧半径 omega_p = 2*pi*0.5; % 摆动角频率,对应0.5Hz的机电振荡 Z_meas = Z0 + Zr * exp(1j*(omega_p*t + pi/6)); % 2.0s时叠加A相接地故障:阻抗跳变到一个低阻抗点 kf = find(t > 2.0 & t <= 2.1); Z_meas(kf) = 8 + 20j; % 构造三相电压电流:设定电流幅值和相角,由Z反推电压 I_mag = 1; I_meas = I_mag * exp(1j*(omega_p*t + 0.2)); V_meas = Z_meas .* I_meas;这样做出来的电压电流在三相上是对称的,只用来验证算法逻辑。如果要验证零序负序判据,需要另外构造不对称故障,或者直接用电磁暂态模型数据。
3.2 基于全周傅氏算法的相量提取
距离保护要算测量阻抗,必须先把电压电流基波相量提出来。Matlab里用fft很顺手,但为了讲清楚原理,我写了一个自定义的全周傅氏相量提取函数。它按一个周波的数据窗计算基波分量,相位参考点为窗内第一个采样点。
function ph = dft_phasor(x, N, k) % x:采样序列 % N:每周波采样点数 % k:当前数据窗结束点 if k < N ph = 0; return; end win = x(k-N+1:k); n = (0:N-1).'; ph = 2/N * sum(win .* exp(-1j * 2 * pi * n / N)); end在主程序里对电压电流逐点滑动调用这个函数,得到基波相量序列,然后相除就是测量阻抗。注意全周傅氏对衰减直流分量比较敏感,真实故障电流里常常带有衰减直流,会影响相量幅值。实际工程中可以在数据窗前面加一个差分滤波,或者用最小二乘拟合把直流分量剔掉;在算法演示阶段,先用纯工频分量调通逻辑,再考虑这个误差源。
3.3 阻抗轨迹关键特征的计算
相量提取之后,核心特征计算包括:阻抗模值Z、变化速率dZdt、相量突变量dVa/dIa、正序电压幅值、负序和零序分量、以及“是否在动作圆内”的标志。
Nw = round(fs/f0); dt = 1/fs; % 逐点计算基波相量和测量阻抗 Va_ph = zeros(length(t), 1); Ia_ph = zeros(length(t), 1); for k = Nw+1:length(t) Va_ph(k) = dft_phasor(V_meas, Nw, k); Ia_ph(k) = dft_phasor(I_meas, Nw, k); end Z_ph = Va_ph ./ Ia_ph; % 相量突变量:当前相量减一周前相量的幅值 dVa = zeros(length(t), 1); dIa = zeros(length(t), 1); for k = Nw+1:length(t) dVa(k) = abs(Va_ph(k) - Va_ph(k-Nw)); dIa(k) = abs(Ia_ph(k) - Ia_ph(k-Nw)); end % 阻抗变化速率 dZdt = zeros(length(t), 1); for k = Nw+2:length(t) dZdt(k) = abs(Z_ph(k) - Z_ph(k-1)) / dt; end % 方向圆动作区判断:|Z - Zset/2| <= |Zset/2| Zset = 20 + 20j; inZone = abs(Z_ph - Zset/2) <= abs(Zset/2);这段代码把三个关键判据输入都算出来了。实际项目中dZdt一般不用整段连续计算,而是对阻抗轨迹做滑动线性拟合求斜率,抗噪能力更好。轨道形态特征还包括“轨迹在动作区内的连续点数”和“轨迹运行方向变化角”,这两个量在摆动过程中和故障过程中差异非常明显,后面状态机里会用到。
4. 核心判据逻辑:状态机、解锁与复归决策
4.1 主闭锁状态机设计
整套PSB/PSD逻辑我实现成了一个有限状态机,比直接堆一堆if/else要清晰得多。状态定义如下:
- 状态0(正常):没有闭锁,保护正常开放。当阻抗进入动作区且dZdt落在“摆动典型区间”内,进入状态1预闭锁;如果dZdt极大且突变量明显,说明可能是故障,直接进入状态3。
- 状态1(预闭锁):连续观察一段时间,确认轨迹是否“平滑缓慢”。若确认是摆动,进入状态2正式闭锁;如果过程中出现明显突变量,立刻切到故障处理路径。如果轨迹很快离开动作区且变化率恢复正常,则延时返回状态0。
- 状态2(闭锁):输出闭锁信号,屏蔽距离保护跳闸出口。此时时刻监视故障特征,只要解锁子判据满足,马上进入状态3。
- 状态3(解锁输出):解除闭锁,允许距离保护出口跳闸,同时记录解锁时刻。解锁信号保持一段设定的时间,防止状态翻转。
为什么加一个“预闭锁”状态?因为故障合闸或者线路充电瞬间,阻抗也可能快速进入动作区,这时候马上闭锁会把真正的故障也给拦掉。用一小段时间观察轨迹是否平滑,能显著提高可靠性。
4.2 故障解锁的三个子判据
闭锁状态下最核心的任务是“快速、可靠地识别故障并放行”。我在状态机里用了三个子判据,它们相互配合:
| 子判据 | 计算方式 | 主要面向故障 | 设计思路 |
|---|---|---|---|
| 突变量判据 | dVa和dIa超过门槛,且连续多拍保持 | 各种短路类型 | 电磁暂态与机电渐变本质不同 |
| 对称分量判据 | 负序/零序分量超过门槛 | 不对称接地、相间短路 | 响应快,可在半个周波内动作 |
| 低电压+快速入圆判据 | 正序电压低于门槛,且dZdt超过故障速度门槛 | 三相短路、无负序零序的故障 | 弥补对称分量盲区 |
突变量判据不能单独解锁,否则系统冲击、开关操作会引起误放行。我把它和“阻抗同时在动作区内”一起用:突变量超过门槛,并且阻抗满足动作方程,才认为是真故障。对称分量判据的好处是响应快,基本不需要等待阻抗稳定;但CT饱和时负序和零序也会假性增大,所以我在工程版本里加了“正序电压不能深度凹陷”的约束条件,防止饱和误判。
低电压+快速入圆判据是专门留给三相短路的。发生三相短路时没有负序零序,突变量虽然很大,但如果恰恰发生在摆动轨迹上,dZdt和纯摆动可能重叠,这时正序电压跌落是最可靠的补充特征。
4.3 复归与展期逻辑
功率摆动平息后,闭锁信号不能马上撤。我见过一个现场案例,摆动第一波衰减后保护复归,结果第二波回摆又扫进动作区,照样误跳。所以复归需要满足两个条件:一是测量阻抗连续离开动作区超过一个设定时间,二是正序电压基本恢复。这两个条件同时满足,才允许状态回到正常。
“展期”逻辑是个容易被忽略的细节。当阻抗轨迹正在动作区内移动时,突变量启动过一次但最终没有满足解锁条件,这时候不能简单回到闭锁等待状态。原因是这往往意味着“真有故障但特征不够明显”,比如高阻接地。我的做法是:一旦出现过上述情况,就进入一个“警惕展期”,在这个时间段内降低解锁门槛,同时延长闭锁保持时间,防止故障特征稍微模糊就被漏掉。
5. 典型工况仿真结果与性能对比
5.1 三种测试工况设计
为了验证改进算法,我构造了三类典型工况,模拟的是实际运行中最容易出问题的场景:
- 工况A:纯功率摆动,无故障。设置摆动幅度使测量阻抗周期性进入距离I段动作圆,摆完约1.5个振荡周期后趋于稳定。这个工况考验的是“闭锁会不会漏”。
- 工况B:功率摆动期间,在阻抗轨迹刚进入动作区后约50ms叠加A相接地故障。这个工况最考验“解锁快不快”,因为它发生在摆动最“像故障”的阶段。
- 工况C:功率摆动期间发生三相短路,故障点靠近线路末端。这个工况考验“没有对称分量可用时,能不能靠低电压判据把故障捞出来”。
5.2 三种工况下的判据响应
工况A的结果很直观:阻抗进入动作区后,dZdt落在摆动区间内,状态机从正常走到预闭锁再到闭锁,闭锁信号建立后距离保护即使测量阻抗落在I段圆内,跳闸出口也被可靠屏蔽。摆动过程中没有出现突变量,对称分量也基本为零,解锁子判据全部不满足,最后摆动衰减,闭锁信号延时复归。
工况B是重点。故障发生瞬间,相量突变量很快超过门槛,负序分量也同步增大,状态机在故障发生后大约13ms(在我的整定参数下)就给出了解锁信号,距离保护随即跳闸。这个速度对于后备保护完全够用。如果改用传统R/Rdot判据,在这个故障时刻下要么因为摆动速度刚好处于“灰色地带”而拒绝解锁,要么因为门槛太低过早解锁,很难两全。
工况C的响应稍慢一点,因为没有负序零序可用,也没有明显的相量突变量优势,最后是靠“正序电压跌落+阻抗快速入圆”判据把故障识别出来的,解锁时间约18ms。这个数值仍然在保护允许范围内,而且比单纯依赖负序零序的方案在三相短路场景下要可靠得多。
5.3 性能指标对比
我把三种工况的核心指标整理成表格,这里数值是基于我自己整定参数的实测结果,具体数值会随系统参数变化,但趋势是稳定的:
| 工况 | 闭锁建立时间 | 故障解锁时间 | 是否有误动/拒动 | 传统R/Rdot对比 |
|---|---|---|---|---|
| A 纯摆动 | 约24ms | 无 | 无误动 | 摆动速度较快时容易误动 |
| B 摆动中单相接地 | 约26ms | 约13ms | 无拒动 | 可能拒动或误动,取决于门槛 |
| C 摆动中三相短路 | 约25ms | 约18ms | 无拒动 | 对门槛依赖严重,容易漏判 |
从对比里能看到,改进方案最大的提升不是某一个指标“特别快”,而是把三种典型工况都照顾到了。传统方案往往在某一种工况下表现不错,换一种工况就露馅。
6. 常见问题与调试心得
6.1 判据整定与延时取舍
功率摆动闭锁的整定是整个功能调试里最费时间的部分。dZdt门槛不能拍脑袋定,我习惯先跑一组纯摆动波形,统计阻抗变化速率的分布范围,再跑一组故障波形,看故障瞬间的dZdt峰值,然后取一个让两类工况有明显区分度的中间值。两个门槛的办法更实用:一个低门槛用于“摆动识别”,一个高门槛用于“故障快速判别”。
突变量启动门槛一般取额定电压幅值的5%~10%,或者额定电流幅值的10%左右。太灵敏会在负荷波动、系统冲击时频繁启动,干扰状态机;太迟钝则延迟解锁,影响保护动作时间。我建议在Matlab里用批量仿真做一次简单扫参,观察解锁时间与误动次数的关系,再定最终值。
6.2 数据窗与滤波器选型对结果的影响
全周傅氏算法有一个固有延时:故障发生后大约要一个周波才能给出准确的基波相量,所以纯阻抗判据很难把故障解锁时间压进半个周波以内。改进方案里我采用“双数据窗并行”的思路:负序、零序分量用短窗滤波器计算,5ms左右就能出来;测量阻抗用全周窗计算,保证精度。两个数据窗各自服务于不同的解锁子判据。
衰减直流分量是个必须处理的坑。故障电流中如果含有明显的衰减直流,全周傅氏算出来的基波幅值会偏大,直接导致测量阻抗失真。我在调试时专门构造了带衰减直流的仿真数据,发现不加处理的算法在高阻接地场景下判据稳定性很差。解决方案是数据窗之前加差分滤波,或者在最小二乘估计模型里把指数衰减项作为未知量一起估计。
6.3 现场录波与电磁暂态仿真数据的差异
仿真数据通常很“干净”,现场录波数据则有一堆现实问题:采样噪声、测量误差、CT饱和、电压互感器暂态误差。我调试中遇到最典型的问题是CT饱和时负序分量假性增大,导致对称分量解锁判据误动。解决办法是在对称分量判据前增加一个约束:正序电压不能深度跌落。因为真正的不对称故障通常伴随明显的电压跌落,而CT饱和发生在电流侧,对电压影响没那么大。
另一个常见问题是录波数据里三相电压不平衡时零序分量长期存在,如果门槛按理想对称系统设定,闭锁逻辑会被频繁扰动。处理方法是把零序门槛抬高,或者增加“电压不平衡度”作为配套条件。这些都是纯仿真验证很难暴露出来的工程细节,遇到录波数据时务必注意。
功率摆动闭锁功能我前后改了三版。第一版只盯阻抗变化率,振荡中心附近故障解锁太慢;第二版加了突变量启动,又把三相短路的低电压判据带上,才把两种极端工况都兜住。调试下来最大的体会是:这种功能千万别指望单一判据包打天下,判据融合、状态机管理才是出路。你可以先用我上面的教学数据把状态机调通,再换成电磁暂态仿真或录波数据做批量验证。下一步,整套逻辑还可以移植到基于采样值的快速距离保护里,与行波启动配合,进一步压缩动作时间。