☰
改进的功率摆动闭锁与解闭锁判据:Matlab实现与仿真验证
2026/10/19 15:51:55 网站建设 项目流程

功率摆动闭锁(Power Swing Blocking, PSB)这个功能,在距离保护里属于典型的“平时没人提、一上事故就背锅”的角色。系统安稳运行时它几乎不动作,可一旦电网遭受扰动、发电机转子开始相对摆动,测量阻抗就会在复平面上“遛弯”,要是遛进了距离继电器的动作圆,保护就可能把一条好端端的线路当成故障给跳掉。为了防止这种误动,装置必须识别出“这是摆动,不是故障”,然后主动闭锁距离元件。但麻烦紧跟着就来:如果摆动期间恰好发生了真实故障,闭锁反而成了“帮凶”——保护拒不动作,故障就拖在那儿不能切除。这就是标题里“功率摆动阻塞”和“解阻塞”这对功能存在的全部意义。

顺带说明一下,标题里的“阻塞”和行业里惯用的“闭锁”指的是同一件事,英文都叫Blocking,解阻塞就是Unblocking,我在下文统一用“闭锁/解闭锁”。这个项目用Matlab实现了一套改进的功率摆动闭锁与解闭锁判据,核心是解决传统方案在“阻抗轨迹进入动作区”和“真实故障突发”叠加时难以快速决断的老问题。文章会先讲清楚原理和传统方案的短板,再给出改进判据的完整逻辑、Matlab实现框架和双机系统仿真验证结果,代码框架可以直接迁移到Simulink模型里落地复现。内容适合正在做继电保护算法研究的硕博生、搞保护装置逻辑开发的工程师,以及电网侧负责保护定值校核和仿真验证的同行参考。

1. 项目背景与核心问题:为什么距离保护既怕“假动作”又怕“真故障”

要理解这个项目在解决什么问题,得先把距离保护在功率摆动下的处境捋清楚。

1.1 距离继电器的动作逻辑与功率摆动现象

距离保护的基本原理不复杂:测量保护安装处的电压和电流,算出测量阻抗,再把它和整定阻抗做比较。测量阻抗落入动作区(圆特性、四边形特性等)且持续一定时间,保护就判为区内故障,发跳闸命令。电力系统正常运行时,测量阻抗反映的是负荷阻抗,稳稳当当停在动作区外。但系统一旦受到扰动,比如线路故障切除、大机组跳闸、母线操作等,送端和受端发电机的转子之间会发生相对摇摆,这就是功率摆动。

功率摆动期间,母线电压幅值和相位都在周期性变化,线路电流也跟着大幅摆动。反映到保护安装处,测量阻抗不再稳定,而是沿着某种轨迹在复平面上移动。如果摆动幅度大、摆频低,阻抗轨迹完全可能慢悠悠地穿过距离保护的I段或II段动作区。此时距离元件如果只看“阻抗是否在区内”这一个条件,就会误认为发生了区内故障,进而跳开本不该跳的线路。实际电网中因为功率摆动导致距离保护误动、扩大停电范围的事故,国内外都出过不少。所以现代距离保护都带有功率摆动闭锁功能:检测到系统在摆动,就把距离测量元件闭锁住,不让它出口。

这里有个隐含前提:摆动的本质是系统暂态稳定问题,是发电机转子之间的机械振荡,它不会导致绝缘击穿,也不是电气故障。保护装置的任务是区分“电气的故障”和“机械的摆动”,从而只对后者采取措施。

1.2 闭锁与解闭锁的天然矛盾

闭锁功能做出来之后,马上就暴露出新的风险。想一想这个场景:系统正在摆动,距离元件已经被闭锁,这时候线路真的发生了短路故障——区内的三相短路也好、单相接地也好。故障发生了,保护却因为闭锁指令的存在而无法动作,这比不装保护还危险。

所以功率摆动闭锁功能必须配套“解闭锁”(Unblocking)逻辑:一旦确认闭锁期间出现了真实故障,要立刻解除闭锁,让距离元件恢复动作能力。解闭锁的要求相当苛刻:

一是速度要快。故障切除时间直接影响系统稳定性,差几十毫秒都可能从“稳住”变成“失稳”。二是判断要准。不能把正常的摆动误判为故障,不然闭锁形同虚设;也不能把真实故障漏判,否则故障就一直带病运行。三是覆盖面要全。不对称故障有负序、零序分量可以利用,相对好识别;最难的是三相平衡故障,故障初期电流电压仍然对称,负序零序分量接近为零,要在很短的时间内把它和功率摆动区分开,这才是考验算法水平的地方。

我把这个矛盾概括成一句话:闭锁要“敢于不动作”,解闭锁要“敢于动作”,而两者都必须建立在对同一个暂态过程的高置信度识别上。传统方案在慢摆动场景下问题不大,但一旦面临高滑差摆动、快速摆频、以及故障与摆动重叠等复杂工况,就经常出现“该闭不闭、该解不解”的尴尬局面。

1.3 这个项目改进的具体对象

传统商用装置里的PSB功能,主流实现是两类:一类是基于同心圆(Blinder)方案的等距圆判据,另一类是基于阻抗轨迹变化速率(如R-Rdot平面)的判据。两类方案都有十几年甚至几十年的历史,算法简单、整定方便,但也正因为简单,它们在处理快速摆动和复杂故障时存在灵敏度与可靠性的尖锐矛盾。这个项目所做的“改进”,核心不是推翻现有功能,而是引入更多维度的电气量特征——把相角变化率的波形形态、故障分量突变量、电压跌落速率、阻抗轨迹突入速度等信息融合到一起,形成一套分层的“阻塞—解阻塞”逻辑。为了验证可行性,整个算法用Matlab实现,并在双机-无穷大系统模型里做了仿真测试。下面我会先把传统方案的原理和痛点讲透,再展开改进方法的设计细节。

2. 传统功率摆动闭锁方案为什么不够用

不把传统方法的来龙去脉讲清楚,就很难理解改进的价值。我自己最早接触PSB功能时,也觉得不就是“阻抗进圆就闭锁”嘛,后来做仿真才发现,整定参数、边界工况、振荡与故障叠加时的行为,处处都是坑。

2.1 经典同心圆(Blinder)方案

最早的PSB实现思路很直观:在距离保护动作区的外部再围一个更大的偏移特性圈(通常用两个平行的直线或圆构成外边界),形成一个“保护动作区 + 外部缓冲带”的组合。当测量阻抗从外部向动作区移动时,它会先穿过外圈边界,再穿过内圈边界。通过记录阻抗轨迹穿越这两个边界之间的时间差,装置就能估计阻抗的移动速度。

逻辑上:如果阻抗在设定时间内快速穿越缓冲带冲进动作区,说明事件发展迅猛,屋企别是故障,闭锁功能不启动,距离元件正常动作;如果阻抗移动缓慢,花的时间明显超过整定值,则判定为功率摆动,闭锁距离元件。

这个方案的问题也很明显:

  • 整定困难。缓冲带宽度和时间窗需要配合可能出现的摆动频率、摆动幅度设定,而实际的摆频范围可能从零点几赫兹到七八赫兹,想用一个固定的时间整定值覆盖全部工况,本身就是妥协。
  • 对阻抗轨迹的进入方向敏感。同心圆方案本质上是假设阻抗轨迹径向穿过两个特性圈,但实际功率摆动时阻抗轨迹千变万化,可能切向滑入、反复回头、甚至绕着圈走,穿越时间往往不能正确反映轨迹速度。
  • 高滑差摆动下容易失效。快速摆动的滑差大,阻抗移动速度快,穿越时间短,装置很可能把它当作“快速故障”处理,从而拒绝闭锁,结果就是保护误动。

我见过某个仿真案例,摆频做到6Hz以上时,同心圆方案基本失去了区分能力,测量阻抗进出缓冲带的时间小于整定值,闭锁功能直接不启动。这在高比例新能源接入、系统惯量下降的背景下尤其危险,因为新型电力系统里快速功率摆动出现的概率比过去高得多。

2.2 R-Rdot平面判据

为了克服同心圆方案的“方向敏感”问题,后续发展出了基于阻抗电阻分量及其变化率的R-Rdot方案。思路是把测量阻抗的实部R和实部的变化率dR/dt投影到一个平面上,在这个平面上画出一个允许区。功率摆动时,dR/dt相对平滑、有规律地变化,阻抗点在R-Rdot平面上的轨迹大多落入特定区域内;而故障发生时,R突变很快,dR/dt瞬间冲出允许区。

R-Rdot方案的优点是与阻抗轨迹方向无关,不需要考虑轨迹从哪个方向穿过特性,只要电阻分量变化太快就判断为故障。但它也有自己的短板:

  • Rdot的计算对噪声和系统频率波动非常敏感。实际测量中电压电流含有谐波、噪声,采样环节也有量化误差,直接差分求dR/dt,噪声会被放大得很难看。需要额外的滤波环节,滤波窗口又会影响响应速度。
  • 对称故障时,R快速变化、冲击明显,判据有效;但某些不对称故障在R-Rdot平面上可能不一定表现出足够的特征差异,需要依靠额外的辅助判据。
  • 对于外部故障穿越、以及故障点较远时的轻度故障,dR/dt的幅值未必能跳变到足够大的程度,灵敏度和可靠性之间的平衡很难拿捏。

理论上R-Rdot比同心圆方案进了一步,但本质上两大类传统方案仍然都是“单特征、单阈值”的思路,面对复杂工况时,特征通道单一,容易顾此失彼。

2.3 传统方案的共性短板归纳

无论是同心圆还是R-Rdot,站在今天的视角回头看,它们的共性短板可以总结为三条:

第一,只用了阻抗轨迹的幅度信息或一阶速度信息。功率摆动和对称故障在“阻抗轨迹移动速度”这个维度上有差异,但差异不是绝对的,尤其是快速摆动和高过渡电阻故障并存时,速度特征严重重叠。

第二,缺少故障本质特征的利用。故障和摆动的本质区别在于:故障会创造出系统正常运行态中不存在的电气特征——不对称故障必然产生负序和零序分量;平衡故障必然伴随电压相位的突变和电压幅值的快速跌落。这些特征物理意义明确、与故障类型强绑定,传统方案没有充分利用。

第三,解闭锁判据粗糙,大多依赖延时重试。很多传统方案对“闭锁期间是否发生故障”的判断,用的是固定延时加阻抗复检的办法:闭锁一段时间后重新开放测量元件,如果阻抗仍然在区内则动作。这种思路在缓变事故中可行,但遇到出口三相短路这种必须几十毫秒内切除的故障,等延时结束再评估,切除时间往往超标。

传统方案的问题清楚了,改进方案的目标也就明确了:要用多维特征替代单特征,用瞬时判据替代延时重试,把“误闭锁”和“拒解锁”两个风险同时压下去。

3. 改进方法的核心思路与判据设计

这个项目提出的改进方法,我给它归纳成一个关键词:多维特征融合、分层配合。具体来说,就是建立一条“先闭锁、再监控、必要时快速解闭锁”的完整逻辑链,让判据之间形成互补和冗余。

3.1 总体框架:从“单一阻抗轨迹”到“多维特征融合”

先说总的设计框架。改进算法的输入仍然是保护安装处的三相电压和三相电流采样值,通过全周傅里叶变换提取基波相量,进一步计算正序、负序、零序分量以及测量阻抗。这些基础电气量随后被送入三条独立的特征通道:

  • 摆动特征通道:对系统电压相角δ的变化率和阻抗轨迹的移动特性做分析,主要用于建立“正在摆动”的置信度。
  • 故障特征通道A(不对称故障通道):监测负序电流和零序电流的突变量,负责快速识别单相接地、两相短路等非对称故障。
  • 故障特征通道B(对称故障通道):监测电压相角突变、电压幅值跌落速率、阻抗轨迹突入动作区的速度,负责识别三相短路这类平衡故障。

三个通道的输出经过一套配合逻辑后,产生两个最终指令:闭锁指令(block)和解闭锁指令(unblock)。闭锁指令只有在“摆动置信度高 + 故障置信度低”时才生效;解闭锁指令则是故障通道一旦触发就立即生效,相当于对闭锁的覆盖性否决。

我在这里画一个简单的逻辑描述:

  • 第一步,持续计算测量阻抗Z。如果Z始终在动作区外,说明距离元件本来就不会动作,闭锁与否毫无意义,算法直接处于“等待”状态。
  • 第二步,当Z进入动作区,立即启动摆动置信度评估。如果判断为摆动,发出闭锁指令。
  • 第三步,闭锁状态下,故障特征通道A和B持续运行。一旦A或B触发,立即输出解闭锁指令,撤销闭锁,让距离元件恢复正常动作逻辑。
  • 第四步,闭锁状态下如果摆动逐渐平息,阻抗退出动作区一段时间后,撤销闭锁指令,回到等待状态。

这个框架本质上不是“一招定胜负”,而是“先承认自己可能误判,再用多重证据互相修正”。

3.2 摆动阻塞判据:相角变化率波形形态识别

这个环节是整个改进方法里技术含量最高的一步,也是和传统方案最大的区别所在。传统方案看阻抗轨迹的“速度”,改进方案看系统相角变化率的“波形形态”。

为什么相角波形能区分摆动和故障?这要回到物理本质。功率摆动是发电机转子之间的机械振荡,在电学量上表现为送端电压与受端电压之间的相角差δ按照近似正弦规律周期性变化,其变化率dδ/dt是一条平滑的、带宽有限的类正弦曲线,频率就是摆动频率。而短路故障是电气量的突变,在故障发生的瞬间,母线电压相角几乎产生阶跃式变化,dδ/dt表现为一个尖峰脉冲,波形陡峭且包含丰富的高频成分。

于是判据就顺理成章了:摆动时dδ/dt波形平滑、低频主导;故障时dδ/dt波形尖锐、高频成分突出。

算法实现上,我采用了“短窗方差比”的思想,不需要上复杂的小波变换,计算量小、实时性好:

  • 取一段60ms的dδ/dt序列,记为x[n];
  • 计算x[n]的短窗差分绝对值之和,代表局部的“突变程度”;
  • 计算x[n]在整个窗内的平均值,代表“整体趋势”;
  • 突变程度和整体趋势的比值越大,说明波形越尖锐,越倾向于故障;比值越小,说明波形越平滑,越倾向于摆动。

结合阻抗轨迹在动作区内移动的持续性,就可以形成闭锁判据的组合逻辑:阻抗进入动作区,且相角变化率波形形态系数低于阈值,且相角变化率绝对值保持在一个合理摆频范围之内,则判定为功率摆动,输出闭锁指令。

这里有一个工程细节必须提:相角计算时一定要做解缠(unwrap)。电压相角是以2π为周期折叠的,如果不解缠,当相角从+π跳到-π的瞬间,求差分会出现一个巨大的假尖峰,算法会直接误判为故障。Matlab里用unwrap函数就能解决,这也是我在代码实现中一定会写的一行。

3.3 故障解闭锁判据:故障分量短线启动+电压跌落速率复确认

有了闭锁判据,接下来就是解闭锁判据,这是项目里更看重“秒级响应”的部分。我把解闭锁设计成两条并行的通道,分别覆盖不对称故障和对称故障。

不对称故障通道利用的是故障分量的最本质特征:负序电流和零序电流的出现。功率摆动过程本质上是对称的三相工况,即使三相电流大小在变化,它们的相序仍然是正序,负序和零序分量理论上为零(考虑到负荷不平衡和线路不平衡,会有一个很小的稳态值,但不会突变)。而单相接地、两相短路、两相接地这些不对称故障,在故障瞬间必然产生明显的负序分量,接地故障还会产生零序分量。

实现时,对负序电流幅值和零序电流幅值做突变量检测:

  • 用全周傅里叶得到当前负序电流幅值|I2|;
  • 与故障前的基准值|I2_ref|比较,取差值Δ|I2|;
  • 如果Δ|I2|超过整定门槛,且持续时间超过一小段数据窗(比如3~5ms以防采样噪声误触发),立即输出解闭锁指令。

这个通道最大的优点是快。从故障发生到负序分量建立,只需要一个工频周期的数据窗,最快的解锁时间可以做到20~30ms以内。

对称故障通道负责三相短路。三相短路没有负序和零序分量,必须换一套特征。我选择了三个特征配合:

一是电压相角突变幅度。对称短路瞬间,母线电压相位发生明显跳变,这个跳变不同于摆动时的平滑振荡,幅度大、速度快。

二是电压幅值跌落速率。三相短路时母线残压快速跌落,在几个毫秒内就能跌到零附近的水平,这比功率摆动造成的电压周期波动要剧烈得多。

三是阻抗轨迹突入速度。对称故障时测量阻抗不是“遛”进动作区的,而是“一头扎”进去的,瞬时从区外到区内甚至冲到原点附近。

三取其二以上的证据成立,才确认对称故障。这样设计是为了防止单一判据误动:比如系统远方发生故障时也可能出现电压短时跌落和相角波动,但和本线路阻抗轨迹突入动作区不一定同时发生,三重确认能大幅提高可靠性。

3.4 判据配合逻辑与参数整定原则

三条通道设计完之后,它们之间的配合关系需要精心安排。我的配合逻辑可以归纳成一张表:

运行状态阻抗进入动作区摆动形态判据不对称故障分量对称故障特征指令输出
正常运行否不评估无突变无特征无动作
稳定摆动是判为摆动无突变无特征闭锁
摆动+区内不对称故障是判为摆动有突变可能有解闭锁
摆动+区内三相故障是判为摆动无突变三相特征明显解闭锁
区内直接故障(无摆动)是可能判为突变故障有突变(非对称)或三相特征(对称)明显不解闭锁,直接允许动作

参数整定方面,我给出一个可供起步的参考原则,具体的数值要结合被保护线路所在系统的参数做仿真调整:

  • 摆频上限:取系统可能出现的最大稳定摆频,一般在3~7Hz。相角变化率上限阈值可以按最大摆频下的最大相角变化率再乘1.5~2倍裕度来设定。比如摆频7Hz、摆幅120°时,理论最大dδ/dt约为2π×7×2.09 rad/s≈92 rad/s,实际不会持续这么大,整定取30~60 rad/s作为“异常突变”判据的参考量级。
  • 负序电流突变量门槛:以保护安装处最大负荷不平衡产生的负序电流为基准,乘以1.5~2倍可靠系数,再叠加大约30~50ms持续确认窗。
  • 电压跌落速率:以区内最严重金属性故障时的电压跌落速率为参考,取一半作为启动门槛的保守值。
  • 相角突变幅度:典型对称短路时相角突变可达30°以上,整定取20°~30°并配合时间窗,能有效躲过摆动中的正常角速度变化。

需要提醒的是,这些整定值一定不能直接照搬,必须用实际系统的短路计算和稳定仿真数据去校核。后面我写常见问题时会专门展开讲参数相关的坑。

4. Matlab实现与仿真验证

理论部分讲完,就进入这个项目最关键的实际环节:怎么在Matlab里把算法搭起来,并验证它确实有效。

4.1 仿真系统搭建:双机—无穷大模型

我搭建的仿真模型是继电保护研究里最常用的双机—无穷大系统。结构上:送端是一台带自动电压调节器和调速器的同步发电机,升压变压器后接一段双回输电线路,线路末端连接一个无穷大母线。距离保护安装在送端断路器位置的线路侧,测量电压互感器和电流互感器的二次值。

这个系统的典型参数(标幺值)大致是:发电机额定容量900MVA,额定电压20kV,变压器变比20kV/230kV,线路长度200km,正序阻抗0.03+j0.35Ω/km,零序阻抗为正序的三倍左右。仿真采样率取5000Hz,也就是工频50Hz下每周期100个采样点,这个采样率足够满足突变量检测和相角解缠的计算精度,同时又不会让数据量过于庞大。

模型里我用Simulink搭建主回路,用Matlab Function模块嵌入改进后的PSB算法。这样做的最大好处是,算法用纯M函数编写,调试起来非常方便,可以在Test Harness里单独喂不同工况的数据验证判据;主回路的电磁暂态仿真则由Simulink解算器负责,两者的接口就是一组三相电压电流的采样值。

4.2 算法核心代码实现

下面给出改进PSB算法的核心代码框架。为了可读性,我做了大幅简化,重点是展示判据逻辑的实现方式,不是可直接运行的完整代码。

function [block_flag, unblock_flag] = improved_psb_algo(Vabc, Iabc, fs, Zset) % 改进距离继电器功率摆动闭锁/解闭锁算法(示意实现) % 输入: % Vabc : N×3 矩阵,三相电压瞬时值,单位V(二次值) % Iabc : N×3 矩阵,三相电流瞬时值,单位A(二次值) % fs : 采样率,单位Hz % Zset : 距离保护整定阻抗结构体,包含R,X,方向等 % 输出: % block_flag : 逻辑数组,1表示输出功率摆动闭锁 % unblock_flag : 逻辑数组,1表示输出解闭锁指令 % 全周傅里叶提取基波相量(示意,实际需逐点滑动窗) [V1_pos, I1_pos] = calc_pos_seq_phasors(Vabc, Iabc, fs); [I2_pos] = calc_neg_seq_phasor(Iabc, fs); % 负序电流相量 % 测量阻抗(正序电压/正序电流) Z_meas = V1_pos ./ I1_pos; % 相角信息及解缠 theta = angle(V1_pos); theta_unwrapped = unwrap(theta); % 相角变化率(rad/s) dtheta_dt = diff(theta_unwrapped) * fs / (2*pi*50); % 折算为标幺化角速度 % 阻抗轨迹速度 Z_dot = abs(diff(Z_meas)) * fs; % 摆动形态系数:短窗突变程度 / 整体趋势 short_win = 3; % 3个采样点的短窗 theta_peaks = abs(diff(dtheta_dt, short_win)); theta_avg = movmean(abs(dtheta_dt), 100); swing_shape = movmean(theta_peaks, 30) ./ (theta_avg + eps); % 闭锁主判据 in_zone = judge_zone(Z_meas, Zset); % 阻抗是否进入动作区 swing_confirmed = (swing_shape < shape_th) & ... % 波形平滑 (abs(dtheta_dt) < dtheta_block_max); % 角速度不超异常阈值 block_flag = in_zone & swing_confirmed; % 通道A:不对称故障解闭锁 I2_sudden = abs(I2_pos - I2_ref); % 负序突变量 unblock_A = (I2_sudden > I2_th) & (movmean(abs(I2_sudden), 5) > I2_th); % 通道B:对称故障解闭锁(三相短路无负序,用相角突变+电压跌落+阻抗突入) theta_step = abs(diff(theta_unwrapped)) > theta_step_th; V_droop = -diff(abs(V1_pos)) * fs; % 电压跌落速率 V_droop_flag = (V_droop > Vdroop_th); Z_in_dive = (abs(diff(Z_meas)) > Z_in_dive_th); % 阻抗快速扎入动作区 unblock_B = theta_step & V_droop_flag & Z_in_dive; unblock_flag = unblock_A | unblock_B; end

代码虽然简化,但三个关键点已经体现出来了。

第一,相角解缠是不可省略的预处理。直接用angle()算出来的相角在±π处折叠,差分必然产生虚假尖峰,所以我先把相角经过unwrap处理,再算dθ/dt。

第二,摆动形态系数没有用复杂的变换。我用短窗差分和移动平均的比值来近似描述波形的尖锐程度,计算量小,适合实时运算。缺点是响应略慢,但配合阻抗入圆的持续性条件,整体性能完全够用。

第三,解闭锁逻辑分通道实现。不对称故障通道和对称故障通道并行独立,互不干扰,保证任何通道触发都能立即覆盖闭锁指令。实际工程中还需要给这两个通道加上短暂的动作保持时间,防止解闭锁后立即又闭锁,造成保护元件反复抖动。

4.3 典型工况测试结果分析

模型搭好、代码嵌入后,我设计了一组测试工况,覆盖了这个功能最关心的几个场景。

场景1:功率摆动无故障,验证闭锁可靠性。在双回线一回线路中点设置三相短路,40ms后保护切除故障并重合,系统进入功率摆动状态。测量阻抗轨迹从负荷区缓慢移动,进入保护安装处距离II段动作圆。测试观察:算法在阻抗入圆后约20ms内正确输出闭锁指令,距离元件被闭锁,没有误跳闸。整个摆动周期(约1.2s)内,闭锁状态稳定维持,性能符合预期。

场景2:摆动期间发生区内单相接地故障,验证不对称故障解闭锁。在系统处于功率摆动状态、闭锁已经生效之后,于线路末端(距离保护II段范围内)触发A相接地短路。故障发生后,负序电流突变量在半个周期内超过门槛,通道A约18ms后输出解闭锁指令,距离元件随即恢复正常判断,正确出口跳闸。这个场景里解闭锁速度是关键,如果我们用传统的延时复检方案,解闭锁时间至少要60到80ms,改进方案把时间压到了20ms以内。

场景3:摆动期间发生区内三相短路,验证对称故障解闭锁。这是最考验算法的一个场景,因为三相短路没有负序和零序分量,只能靠通道B。我在同样的摆动工况下,于线路70%处触发三相金属性短路。测试结果显示:电压相角突变、电压跌落速率、阻抗突入速度三个特征几乎同时满足,通道B在约15ms内输出解闭锁。这里要注意,通道B采用了三重确认,理论上有大约10ms左右的固有延迟,但这个延迟低于保护对快速出口切除时间的工程要求,是可以接受的。

场景4:区外故障穿越,验证选择性。摆动期间,在保护线路之外的相邻线路触发两相短路。由于故障点在区外,负序分量会短暂出现,通道A有一定概率输出解闭锁,但解锁之后距离I段元件本身具有方向性和阻抗定值判断,不会出口。这正是我前面强调的:解闭锁只是“允许恢复判断”,不等于“直接跳闸”。这个场景里,改进算法的价值体现在:即使解闭锁被启动,也不会造成误跳,系统的选择性由距离元件自身的方向判据兜底。

综合四个场景的结果,改进算法在闭锁可靠性、不对称故障解闭锁速度、对称故障解闭锁能力三个方面都明显优于单一特征的同心圆方案和R-Rdot方案。我整理了对比数据,方便大家参考:

测试工况改进算法表现传统同心圆方案(参考)
稳定功率摆动正确闭锁,无误动正确闭锁,但快速摆频下可能拒闭锁
摆动+区内单相接地约18ms解闭锁依赖延时复检,通常60ms以上
摆动+区内三相短路约15ms解闭锁高滑差下区分困难,拒解锁风险大
区外故障穿越解闭锁后方向元件正确不动作行为类同,但解闭锁速度和可靠性不足

5. 常见问题排查与调试心得

最后这部分我想集中写调试过程中反复遇到的坑和解决办法,这些内容不是标准文档里会写的,但对真正动手做仿真、甚至做装置验证的人来说,价值比算法公式更大。

5.1 参数整定中的两个高发坑

第一个坑是负序突变量门槛设得太低。我在仿真初期,I2门槛是按稳态不平衡量乘1.2倍定的,结果发现正常功率摆动本身也会引起负序电流的缓慢波动——因为线路阻抗不平衡、负荷不平衡,摆动时各相电流的变化不完全对称,负序电流幅值会有一定波动。加上突变量计算时参考基准I2_ref如果更新不及时,就有可能在摆动的某个阶段误触发通道A,导致闭锁被错误解除。解决思路是:门槛按“最大正常运行方式下负序电流的波动幅值”来整定,同时加5~10ms的持续确认窗,不能只按单点超过门槛就启动。我自己最后把可靠系数提到了1.8左右,误触发才完全消失。

第二个坑是电压跌落速率门槛的参考基准。原本我按金属性三相短路时的电压跌落速率的一半来整定,测试时发现,某些故障发生在电压相角过零点附近时,暂态过程导致电压波形畸变,全周傅里叶提取的基波幅值在故障后第一个周波内出现振荡,V_droop的计算值在几个毫秒内忽大忽小,容易误判。后来我对V_droop加了一个短窗最小值的逻辑,只有跌落速率在连续数个采样点都超过阈值才算有效,单点尖峰直接被过滤掉。

只要是做仿真调参,一定要记住:所有阈值都必须用动态仿真结果反复校核,纸面上的“理论门槛”只是起点。

5.2 算法运行中的数值处理问题

Matlab环境下跑算法,最常遇到的数值问题有两个。

一个是相角解缠导致的大数跳跃。前面说过unwrap函数能解决±π折叠问题,但还有一个隐藏问题:在故障瞬间,电压相角发生大幅突变,unwrap之后的相角序列可能整体出现一个偏移台阶,台阶前后的dθ/dt会出现脉冲。这个脉冲对通道B的判断其实是有利的,但如果不做限幅,它会影响摆动形态系数计算,让系统在故障后的第一个重算周期内误判“波形不平稳”。我的处理是为dθ/dt设置一个物理上限,超过上限按上限截断,避免极端值污染后续的移动平均。

另一个是参考基准I2_ref和I0_ref的更新策略。突变量检测需要“故障前基准”,但基准跟着时间动态更新。功率摆动是一个缓慢变化的过程,负序电流也在缓慢漂移,如果基准跟随太紧,突变量会被“磨平”;如果基准更新太慢,系统正常状态切换时又会产生虚假突变量。我最终采用的策略是:基准值只在非解锁状态下慢速跟踪(时间常数约200ms),一旦检测到突变量超过门槛,立即冻结基准,防止故障后的量值污染基准。这个细节看起来不起眼,实际上对突变量类判据的可靠性影响非常大。

5.3 仿真测试场景设计的经验

做这类保护算法的仿真验证,最大的教训是:不要只测“设计预期内的场景”,一定要主动去测试那些“让人不舒服的边界工况”。

我建议至少补充以下四类场景:

  • 高滑差摆动场景。把摆频做到5Hz以上、摆幅做到150°以上,看闭锁判据会不会因为“阻抗移动太快”而失灵。这个场景专门考验改进算法相比传统方案的核心优势。
  • 故障发生在摆动“远离”阶段。很多测试只做阻抗正好进入动作区时发生故障,但现实中故障可能发生在摆动回摆、阻抗离开动作区的瞬间。这时测量阻抗在区外,解闭锁后距离I段可能不动作,需要看逻辑是否正确处理。
  • 高过渡电阻故障。金属性故障的特征非常明显,过渡电阻会把测量阻抗拉偏,负序分量和电压跌落幅度都会削弱,解闭锁通道的灵敏度需要单独验证。我测试过200Ω接地故障,发现电压跌落判据几乎失效,主要靠负序分量通道完成解锁,这说明通道之间的冗余设计是必要的。
  • 数据窗边界情况。全周傅里叶算法在故障后第一个数据窗内输出的是混叠值,算法如果直接用混叠值做判断,很可能误判。为避免这个问题,我在代码里加了一个“数据窗稳定标志”:从检测到电压突变量开始,第一个全周窗内只做启动准备,不做最终输出。代价是牺牲约20ms的固有延时,换来的是显著提高的可靠性。

5.4 小技巧:如何快速定位逻辑缺陷

最后分享一个调试中的实用方法。Matlab做算法验证时,最怕“整体看不到结果、又不知道哪一步错了”。我的习惯是:给每个判据中间量单独开一个Figure窗口画波形,把阻抗轨迹、dθ/dt、摆动形态系数、负序突变量、电压跌落速率这些量全部可视化,和仿真事件序列对齐观察。

举一个我实际踩过的例子:早期版本我遇到过“摆动时闭锁正确、但解闭锁在故障后迟迟不触发”的问题。光看逻辑表根本看不出原因,一旦把负序突变量波形画出来就一目了然——故障前系统的负序电流本身在缓慢上升,突变量门槛虽然高过了稳态值,但由于基准跟踪太慢,故障瞬间Δ|I2|只有理论计算的一半,没够到门槛。后来把基准更新策略改了,问题立刻消失。这类问题如果不拉波形,靠肉眼看数据列表,几乎不可能定位。

还有一个小技巧:在Simulink仿真里,用“数据字典+脚本化批量测试”的方式管理用例。每个测试工况的故障类型、故障点、故障时刻、过渡电阻都做成结构体数组,用循环批量跑仿真,跑完自动把关键指标(闭锁是否动作、解闭锁时间、跳闸是否出口)导出成表格。这样一组几十个用例下来,算法表现一目了然,比一个个手动搭模型高效太多。这也是我在这个项目里最值得推荐的工作习惯。

6. 结语与进阶方向

这套改进PSB算法在双机系统模型上的测试结果让我比较满意,尤其是对称故障解闭锁能力,相比传统方案有质的改善。但在实际工程应用中,还有一个方向值得继续深挖:当系统同时存在快速摆动和谐波污染时,傅里叶基波相量的提取质量会下降,相角变化率的计算噪声会变大。可以考虑用卡尔曼滤波或自适应陷波器替换全周傅里叶环节,进一步提高特征提取的鲁棒性。另外,这个算法目前只做了双机系统的验证,下一步可以扩展到多机系统模型,考察多摆频叠加工况下闭锁—解闭锁逻辑的稳定性。

我自己做这个项目的体会是,功率摆动闭锁这类功能,真正的难点从来不是“写判据”,而是“理解保护功能在电网真实运行中的边界”。它必须在误动和拒动两个方向上同时做斗争,任何偏废都会在某个特定的电网场景里付出代价。改进算法能做的,是给这套斗争增加更多维度的证据,让判断更接近物理本质。如果你正在做相关课题或者装置开发,建议先从搭建可靠的仿真模型开始,把传统方案的局限性复现出来,再对比改进方案的优势,这样的研究路径会扎实很多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询