干过输电线路运维或者搞过继电保护仿真的朋友,应该都有同感:线路出了故障,最怕的不是跳闸,而是跳闸之后找不到故障点在哪。传统阻抗法测距受过渡电阻、负荷电流影响大,算出来的距离经常让人跑断腿。这些年行波测距越来越受重视,核心思路就是抓故障瞬间产生的电压电流行波,靠波头到达时刻反推故障位置。我自己在做的这套研究,用的是小波分解与重构配合卡伦堡变换(凯伦鲍尔变换)来处理三相耦合信号,在Simulink里搭了完整的输电线路故障模型,实现故障选线和行波测距,整个过程可以完整复现。这套方案适合继电保护方向的学生、刚接触行波测距的工程师,以及想在Simulink里做故障仿真验证的人参考。下面我把原理、步骤、参数和踩过的坑一次讲清楚。
1. 先理清思路:为什么选择“相模变换+小波”这套组合
1.1 三相耦合是行波测距的第一道坎
输电线路本质上是三相耦合系统,A相发生接地故障时,B相和C相上也会感应出电压电流变化。如果直接把某相电流拿去做行波波头检测,波形里混着其他相的耦合分量,波头位置会被干扰,测距精度直接受影响。
这就是为什么行波测距不能绕过相模变换。相模变换的目的,是把三相耦合的电压电流信号,通过一个固定的变换矩阵,映射到互相独立的模量空间里。解耦之后,每个模量可以当作单相线路独立分析,波头特征干净很多。
刚开始接触这个方向时,我也想过能不能直接拿Clark变换或对称分量法替代卡伦堡变换。对称分量法是为工频稳态分析设计的,处理暂态行波时并不合适。卡伦堡变换的优势在于它不需要假设系统对称,也不依赖相序,直接对瞬时值做线性变换,时域特性好,非常适合暂态行波分析。
1.2 小波变换为什么能“抓”住行波波头
行波波头本质上是故障点产生的一个高频瞬态突变,持续时间只有几微秒到几十微秒。傅里叶变换是全局性的,它能把信号分解成不同频率的正弦波,但无法告诉你在哪个时刻出现了突变,也就是没有时频局部化能力。你要是用傅里叶分析行波,只能知道信号里有高频分量,却定位不了波头到达母线的精确时刻。
小波变换恰恰解决这个问题。它相当于在信号上开了一个可以伸缩的窗口:高频部分用窄窗口,时间分辨率高,能精确标定突变位置;低频部分用宽窗口,频率分辨率高,能看到信号整体趋势。把行波信号做小波分解后,波头到达时刻会在高频细节系数上形成一个明显的模极大值点,这个极值点对应的时刻就是我们要的时间。
打个比方,傅里叶变换像是一台只能告诉你声音里有高音的频谱仪,而小波变换像是一台能告诉你“第几秒出现了高音、持续了多久”的录音分析仪。对行波测距来说,后者才是我们要的东西。
1.3 整体技术路线与仿真框架
我做这套研究时,把整个流程拆成了四步:
第一步,在Simulink里搭建双端输电线路模型,设置某条线路在指定位置发生故障,采集母线上的三相电压电流波形。
第二步,对采集到的三相电流做卡伦堡变换,提取线模分量,消除相间耦合。
第三步,对线模分量做小波多尺度分解,提取第一层高频细节系数,通过模极大值标定行波波头到达时刻。
第四步,利用双端测距公式计算故障距离,同时对比多回出线的波头幅值和极性,完成故障选线。
这套路线的优势在于每一环节职责单一、可以独立验证。卡伦堡变换负责治信号污染,小波变换负责治时间定位,测距公式负责算距离。哪个环节出了问题,单独检查哪一段就行,不会一锅粥。
2. 卡伦堡变换:把三相耦合线路变成三个独立模通道
2.1 卡伦堡变换矩阵与模量分解
卡伦堡变换,同学们经常写成Karenbauer变换,核心就是一个三阶常数矩阵。工程上常见的非归一化形式是:
[ i0 ] [ 1 1 1 ] [ ia ] [ iα ] = [ 1 -1 0 ] [ ib ] [ iβ ] [ 1 0 -1 ] [ ic ]其中 i0 称为零模分量,iα、iβ 称为线模分量。对电压量也可以做同样的变换,只是把电流换成电压。
这里的物理含义很直观:零模分量是三相电流的算术和,本质上是流入大地的电流,走的路径是“导线-大地-导线”,受大地电阻率影响严重;线模分量是不同相电流之间的差值,行波沿着导线之间传播,基本不经过大地,传播特性稳定得多。
具体到仿真数据处理,我用的是MATLAB里简单的矩阵运算。假设Simulink导出的三相电流是列向量 ia、ib、ic,直接算:
i0 = (ia + ib + ic) / 3; i_alpha = ia - ib; i_beta = ia - ic;注意归一化系数的问题。有些文献里的卡伦堡矩阵带有 1/3 的比例系数,有些没有。实际使用时,如果你只关心波头出现的时刻和相对幅值,比例系数不改变极值点的位置,所以不影响测距结果。但如果你要对多回线路的波头幅值做横向比较,就必须统一变换形式,或者干脆都做归一化处理。
2.2 线模与零模的差异和工程取舍
线模和零模的选择不是随意的,两者在行波传播特性上有显著差异。我做了个对比表格,方便看:
| 项目 | 线模分量 | 零模分量 |
|---|---|---|
| 传播路径 | 导线之间 | 导线-大地回路 |
| 波速稳定性 | 受大地影响小,稳定 | 受大地电阻率影响大 |
| 衰减程度 | 较小 | 较大,尤其高频分量衰减快 |
| 测距适用性 | 推荐使用 | 一般只做辅助判据 |
零模波速不稳定的问题在仿真里可能不明显,因为仿真模型里的线路参数是固定的,但在实际工程中,大地电阻率会随土壤湿度、温度变化,零模波速可能偏差百分之几到百分之十几。行波测距对波速误差很敏感,波速差1%,测距误差就会等比例放大。所以我在仿真中固定用线模分量做测距,零模只用来辅助判断故障类型。
还有一个工程细节:有些文献建议用零模和线模的到达时间差来测距,这在理论上成立,因为零模和线模波速不同,传播时间差与故障距离相关。但零模衰减太严重,远距离故障时零模波头可能衰减到检测不出来,工程上可靠性存疑。我的建议是别把主测距手段押在零模上。
2.3 变换后的模量如何参与故障选线
进行故障选线时,重点观察的是母线上各回出线的线模行波。假设一个母线带了3回线路,其中一回发生了接地故障,那么故障线路和非故障线路上的行波方向、幅值特征有明显区别。
故障线路直接承受故障点的行波注入,初始行波幅值最大;而健全线路上的行波是经过母线折射过来的,幅值小,极性相位也可能发生翻转。具体到判据上,我用的是以下三个特征组合:
第一,幅值判据。对每回出线的线模电流做小波分解,取第一层细节系数的模极大值,幅值最大的那回最可疑。
第二,极性判据。故障线路上的初始行波极性与健全线路相反。这是因为对母线而言,故障线路上的行波是“流出母线”,健全线路上的行波是“经由母线折射后再流入”,方向相反。
第三,零模辅助判据。发生接地故障时,故障线路的线模和零模分量都会显著增大;两相短路、三相短路时零模分量很小甚至为零。所以零模幅值大且与线模同时出现的,基本可以锁定是接地故障。
这三条综合下来,选线准确率在仿真里能做到很高。我对多回线路做过十几组不同位置的故障仿真,判据组合判断的结果没有出过错。
3. 小波分解与重构:行波波头的“显微镜”
3.1 小波基怎么选、分解几层合适
小波变换的“小波基”选择是个老生常谈又绕不开的问题。常用的小波族有Daubechies系列(dbN)、Symlets系列(symN)、Meyer、Morlet等。行波波头是一个突变信号,需要小波基有良好的紧支撑特性和一定的正则性。我实测下来,db4和sym4在行波检测里的表现比较均衡。
db4支撑长度适中,计算量小,对突变的定位精度好,也是大量文献里的默认选项。如果信号噪声较大,可以试试db6或者sym6,更高阶的小波正则性更好,但支撑变长,定位精度轻微下降,计算时间也增加。我的经验是:先跑db4,如果模极大值不明显、波头附近有抖动,再换sym4对比一次,基本能解决。
分解层数方面,仿真采样率设为1MHz时,第一层细节系数对应的频带是250kHz到500kHz(具体取决于小波滤波器组),这个频段基本覆盖了行波波头的能量集中区。所以在多数情况下,只看第一层或第二层细节系数就够了。我习惯分解5层,保留d1、d2、d5三组结果备用。
需要注意,分解层数不是越多越好。层数多了,低频近似信号占比越大,高频细节被多次滤波后,波形展宽,波头定位反而模糊。层数太少,噪声占比高,模极大值可能被噪声干扰。我用5层,核心分析只用d1,这是一组经过多组故障距离仿真验证的经验参数。
3.2 模极大值与波头到达时刻的关系
小波变换检测波头的核心机理,是信号中的突变点会在小波系数中产生模极大值。行波波头到达测量点的那一刻,电流信号发生阶跃性突变,对应的小波细节系数会出现一个正或负的尖峰,尖峰出现的位置即波头到达时刻。
具体操作中,我不用直接去找原始电流波形上的拐点,那太容易受噪声影响。而是先对线模电流做小波分解,提取第一层细节序列 d1,再找出d1绝对值最大的点(或者找满足阈值条件的第一个峰值点)。这个点的时间就是波头到达时间。
举个实际数据:线路全长10km,故障发生在距M端5km处,故障点产生行波同时向两侧传播,到达M端和N端的时间差理论上为零,因为距离相等。我把故障设置在距M端6km处,仿真采样率1MHz,小波分析定位到M端波头到达时刻为20μs(相对故障发生时刻),N端为14μs左右。时间差6μs,乘以波速2.96×10^8 m/s,约1776m,加上线路一半5000m,计算结果约6.09km,与实际6km偏差很小,在单个采样周期的量化误差范围内。
一个容易被忽视的点是波头极性。故障发生在电压正半周和负半周,产生的行波极性相反,模极大值会出现正峰和负峰两种情况。所以找极值点时不能只找正峰值,要取绝对值后再判断。我第一次做的时候只找正向极大值,结果有一半故障工况下波头定位丢失,后来改成abs()取绝对值,问题才解决。
3.3 分解与重构的实操细节
很多人容易混淆“小波分解”和“小波重构”。我们从Simulink里导出的原始采样信号长度是确定的,做wavedec分解后会得到多层的系数数组C和小波分解长度记录L。如果只想观察某一层的高频细节波形,需要把这一层的系数单独重构回原始时间尺度,用的函数是wrcoef。
wname = 'db4'; level = 5; [C, L] = wavedec(i_alpha, level, wname); d1 = wrcoef('d', C, L, wname, 1); % 重构第一层细节 d2 = wrcoef('d', C, L, wname, 2); % 重构第二层细节重构后的d1和你直接拿原始信号做差分滤波得到的结果类似,但小波重构的优势是带通滤波特性更锐利,能更好地抑制工频分量和低频趋势分量的干扰。
我做的另一个细节处理是去掉边界效应。小波分解在信号的两端会因为滤波器卷积边界补零而产生伪震荡,这段伪数据通常出现在信号开头和结尾各几十个采样点。定位波头时,如果波头恰好落在信号起始附近,容易被边界效应干扰。解决办法有两种:一是在仿真时让故障发生时刻离数据起始点远一点,比如仿真0.02秒(一个工频周期)后再触发故障;二是在分析时直接把d1序列开头和结尾的200个采样点置零或忽略。
4. 故障线路识别与行波测距的核心算法
4.1 故障选线的实用判据
前面在模量应用里简单提过选线判据,这里展开成一套完整的操作流程。以母线带3回出线的辐射状网络为例,假设L2线路距母线3km处发生A相接地故障。
第一步,采集母线侧每一回出线的三相电流,分别做卡伦堡变换,得到各自的线模分量。
第二步,对每回出线的线模分量做小波分解,提取d1细节系数,找出模极大值。
第三步,比较3回线路的模极大值幅值和极性。故障线路L2的模极大值最大,极性与健全线路相反。如果某回线路的模极大值几乎为零,说明该回线上没有行波传过来,可以初步排除。
第四步,用零模分量辅助确认。L2的零模分量幅值明显大于健全线路,且故障初瞬线模和零模几乎同时到达。
这个流程我建议在仿真中做成一个自动判据脚本,避免肉眼观察的主观性。脚本逻辑大致是:
% 假设 i_alpha_L1, i_alpha_L2, i_alpha_L3 是三条线路的线模电流 d_L1 = wrcoef('d', wavedec(i_alpha_L1, 5, 'db4'), 'db4', 1); d_L2 = wrcoef('d', wavedec(i_alpha_L2, 5, 'db4'), 'db4', 1); d_L3 = wrcoef('d', wavedec(i_alpha_L3, 5, 'db4'), 'db4', 1); [pk1, ~] = max(abs(d_L1(200:end-200))); [pk2, ~] = max(abs(d_L2(200:end-200))); [pk3, ~] = max(abs(d_L3(200:end-200))); [pmax, idx] = max([pk1, pk2, pk3]); % idx 对应的线路就是嫌疑最大的故障线路极性判据可以直接看d1在模极大值时刻的正负号。故障线路的d1极性和健全线路相反,这个特征在金属性接地故障时非常明显,过渡电阻较大时会变弱,最好和幅值判据、零模判据联合使用。
4.2 双端行波测距原理和公式
双端法是目前工程上应用最广的行波测距方法,原理很简单:故障产生的行波同时向线路两端传播,由于故障点位置不同,到达两端的时间不同,通过时间差就能算出故障位置。
设线路总长为L,波速为v,故障点距M端距离为x。故障发生瞬间,行波到M端用时x/v,到N端用时(L-x)/v。两侧测距装置记录到的波头到达时刻分别是tM和tN,于是:
tM - tN = (x - (L - x)) / v = (2x - L) / v整理后得到:
x = (L + v × (tM - tN)) / 2这就是双端行波测距的经典公式。注意tM和tN必须使用同一个时间基准,仿真中直接用仿真时钟,不存在这个问题;实际工程里两侧装置需要高精度时钟同步。
举个例子加深理解。线路长10km,波速取2.96×10^8 m/s。假设故障距M端6km,理论时间差为:
x = 6000m,L-x = 4000m tM = 6000 / 2.96e8 ≈ 20.27μs tN = 4000 / 2.96e8 ≈ 13.51μs tM - tN ≈ 6.76μs
代入公式:
x = (10000 + 2.96e8 × 6.76e-6) / 2 x = (10000 + 2000.96) / 2 ≈ 6000.48m
结果6000.48m,误差不到0.5m,这是理想情况。实际仿真中因为采样率1MHz对应的最小时间分辨率是1μs,tM、tN只能取整数微秒,带来的最大量化误差约为半微秒,对应测距误差约148m。要提高精度,要么提高采样率到2MHz或5MHz,要么对细节系数做样条插值细化极值点位置。
4.3 单端法作为补充
双端法需要两侧数据同步和通信链路,如果一侧拿不到数据,就得靠单端法兜底。单端法的基本原理,是利用测量端收到的第一个波头(从故障点直接传来的初始行波)和第二个波头(故障点反射波)之间的时间差来计算故障距离。
故障点反射波路径是:故障点→测量端,反射后测量端→故障点,再反射回测量端,总路程正好是2x。所以:
x = v × (t2 - t1) / 2其中t1是初始行波到达时刻,t2是故障点反射波到达时刻。
原理简单,实际识别反射波却是个技术活。母线上会有对端母线反射波、其他线路折射波,哪一个才是故障点反射波,需要结合波头极性辅助判断。故障点反射波与初始行波极性相同,对端母线反射波极性与初始行波相反(取决于母线结构)。我的做法是把d1细节波形上模极大值按时间顺序列出来,找出与第一个波头极性相同且幅值衰减符合预期的极值点,认定为故障点反射波。
单端法我没有作为主测距手段,因为仿真和工程中反射波的识别都容易出问题,尤其是高阻接地故障时,反射波幅值可能衰减到接近噪声水平。但作为双端法数据缺失时的备用手段,它的价值还是很大的。
4.4 波速确定与误差修正
行波测距的公式里,除了时间,另一个关键参数就是波速v。波速取不准,测距结果根本不可信。
线模波速的理论计算公式是:
v = 1 / sqrt(L1 × C1)其中L1是线路正序电感(H/m),C1是正序电容(F/m)。以典型的110kV架空线路参数为例,正序电感约0.9337mH/km,正序电容约12.74nF/km:
v = 1 / sqrt(0.9337e-3 × 12.74e-9) ≈ 2.9 × 10^8 m/s实际仿真中,我建议不要直接拿理论值,而是用“仿真校准法”:设置一个已知故障距离(比如5km),运行仿真,用检测到的波头时间反算波速,然后把这个波速值用于其他故障距离的测距计算。这样能抵消Simulink线路模型中分布式参数的微小偏差,测距精度会明显提升。
我的具体操作是:
% 已知故障距离5km,M端波头时间tM_cal,N端波头时间tN_cal v_cal = 5000 * 2 / (tN_cal - tM_cal); % 单位m/s,注意时间差为负时取绝对值位置仿真校准后再做未知故障距离测试,误差比直接用理论波速小一个量级。这套方法在工程现场也适用,用已知距离的短路试验校准波速,比依赖理论值靠谱得多。
5. Simulink仿真搭建的完整实操
5.1 顶层模型与关键模块
先说一下模型整体架构。我用的仿真平台是MATLAB/Simulink,电力系统模块库是Simscape Electrical(旧版本叫SimPowerSystems,再老的版本是Simscape Power Systems)。不同版本模块路径略有差异,但核心模块大同小异。
模型自顶向下包括五个部分:三相电源、被测输电线路(分布式参数模型)、故障模块、母线测量点、数据导出模块。
具体到模块选择:
- 电源用Three-Phase Source,电压等级按110kV设置,频率50Hz,内阻抗按典型值设置。
- 线路用Distributed Parameters Line(分布参数线路模型),这个模块能模拟行波在输电线上的传播特性,是行波测距仿真最关键的基础。如果用了集总参数模型,行波传播直接被简化成集中元件,波头特性就没有了。
- 故障用Three-Phase Fault模块,可以灵活设置故障类型、故障相、接地电阻和故障时间。
- 测量用Three-Phase V-I Measurement,把母线处的三相电压电流接入导出模块。
- 数据导出用To Workspace模块,采样数据直接进MATLAB工作空间,供后续小波分析和测距计算使用。
如果是双端测距,需要在线路两端各布置一套测量点和数据导出模块。为了便于后续分析,我给两端的导出变量分别命名,比如M端三相电流导出为ia_M、ib_M、ic_M,N端导出为ia_N、ib_N、ic_N。
5.2 仿真参数设置的关键点
行波仿真的时间步长设置是整个模型的灵魂。工频50Hz信号的周期是20ms,如果只观察工频量,采样步长设为50μs甚至100μs都够;但行波波头的持续时间是微秒级的,步长必须压到1μs以下。
我采用的策略是:仿真步长设为1μs,对应采样频率1MHz,既保证波头分辨率,又不至于让仿真时间太长。涉及的具体数值,10km输电线路的行波从一端传到另一端大约需要34μs,所以故障后的仿真时长至少需要留出0.5ms(500个采样点),才能观察到完整的行为过程。
仿真算法方面,我选择ode23tb或ode15s这类适合刚性系统的变步长算法。电力系统线路分布参数模型在行波尺度下是一个高频刚性系统,用默认的ode45大概率会仿真失败或者极其缓慢。
关键参数汇总如下:
| 参数项 | 设置值 | 说明 |
|---|---|---|
| 电源电压 | 110kV | 三相正序 |
| 线路长度 | 10km | 可根据需要调整 |
| 线路模型 | 分布参数 | 必须 |
| 采样/仿真步长 | 1μs | 对应1MHz采样率 |
| 故障类型 | A相接地为主 | 可扫描其他类型 |
| 接地电阻 | 0.001Ω~50Ω | 金属性→高阻 |
| 故障触发时间 | 0.02s | 一个工频周期后 |
| 仿真算法 | ode23tb | 刚性系统适用 |
故障时间设置上,我习惯在0.02s触发故障,让第一个工频周期处于稳态,便于故障分量提取和后续对比。故障持续时长设为0.05s,足够覆盖后续若干个工频周期和行波反射过程。
5.3 数据导出与MATLAB小波分析
Simulink仿真完成后,三相电流数据已经在MATLAB工作空间里了。注意To Workspace模块的导出格式,我通常设置为Array格式,这样得到的数据可以直接用矩阵索引操作,不用Struct提取,省不少事。
接下来是完整的信号处理流程,我把整个脚本贴出来供参考:
% 参数定义 fs = 1e6; % 采样频率1MHz dt = 1/fs; L_line = 10e3; % 线路长度10km v = 2.96e8; % 线模波速 m/s(先用理论值) % M端三相电流 ia = ia_M', ib = ib_M', ic = ic_M'; t = (0:length(ia)-1) * dt; % 卡伦堡变换 i0 = (ia + ib + ic) / 3; i_alpha = ia - ib; i_beta = ia - ic; % 小波分解与重构 wname = 'db4'; [C, L] = wavedec(i_alpha, 5, wname); d1 = wrcoef('d', C, L, wname, 1); % 去掉边界效应,寻找第一个模极大值 seg = d1(200:end-200); [~, loc_shift] = max(abs(seg)); loc = loc_shift + 200 - 1; t_arrive_M = t(loc); % N端做同样处理得到 t_arrive_N % 双端测距 d_M = (L_line + v * (t_arrive_M - t_arrive_N)) / 2;这段代码就是整个研究的核心处理链,卡伦堡变换、小波分解、模极大值定位、双端测距一步到位。实际使用中,我会把波速换成仿真校准值,测距结果会更准。
一个容易忽略的点:To Workspace导出的信号默认是连续时间信号,采样步长等于仿真步长,所以t数组要自己构造,不要依赖Simulink内部的仿真时间向量。我上面脚本里用t = (0:length(ia)-1)*dt构造,就是为了保证时间轴和数据长度严格对应。
5.4 仿真结果怎么解读
以A相接地故障、故障距M端6km、接地电阻0.001Ω为例,看一组典型的仿真结果。
M端线模电流在小波分解后的d1波形上,大约在第20μs处出现一个明显的模极大值,幅值为负;N端d1波形上,大约在第14μs处出现模极大值,幅值为正。幅值一负一正,正好验证了前面说的极性判据。两侧时间差为6μs,代入双端测距公式:
d_M = (10e3 + 2.96e8 × 6e-6) / 2 ≈ 5.888km实际故障距离6km,误差112m。如果改用仿真校准波速,误差可以进一步压缩到50m以内。
再看选线结果:同一母线上另有一条健全线路L1,其线模d1模极大值幅值明显小于故障线路L2,且极性与之相反。这个表现在图像上非常直观,故障线路的波头又高又尖,健全线路的波头矮且方向相反。
仿真结果里还有一个值得关注的现象:波头不是单独一个,而是会连续出现多个极值点,这是行波在故障点、母线之间来回反射的结果。第一个极值点对应初始行波,后面的极值点对应各种反射波。做测距时一定要锁定第一个极值点,后续极值点用于单端法反射波识别。
6. 常见问题与排查技巧实录
6.1 波速不准导致测距偏差
这是新手做行波测距最容易踩的坑。明明小波变换定位的时间差很准确,测距结果却偏了几百米甚至上公里,排查到最后才发现是波速取值不对。
波速不准的主要来源有三类:第一,直接用理论公式计算时,线路参数没取对,尤其是忽略了线路的几何参数影响;第二,零模波速和线模波速混用,零模波速受大地影响大,用错直接导致结果离谱;第三,仿真模型的分布参数线路模块内部对波速的设定和理论值存在细微差异。
解决办法就是仿真校准法。在同样的线路模型上设置一个已知故障距离,用检测到的波头时间反推实际波速,再把这个校准后的波速用于后续测距。我实测下来,校准一次,所有故障距离下的测距误差都能显著下降。我通常会在模型参数改动后重新校准一次,因为线路参数变了,波速也会跟着变。
6.2 采样频率不足抓不到波头
有人用50μs步长(20kHz采样率)跑仿真,结果小波分解后d1上完全找不到明显的模极大值,波头被淹没在噪声里。这不是算法问题,是采样率不够。
行波波头的高频分量频率可以达到几百千赫兹甚至更高,根据奈奎斯特采样定理,采样率至少要是信号最高频率的两倍。采样率20kHz能检测的最高频率只有10kHz,根本覆盖不了行波波头的频带。我用1MHz采样率,对应1μs时间分辨率,才能比较可靠地定位波头。
如果你的仿真模型计算量太大,可以先把线路缩短,比如从10km减到5km,行波传播时间变短,但采样率不变,这样既能看清波头,仿真时间也不会太长。等模型调试完成、算法验证通过后,再恢复线路长度做完整验证。
6.3 反射波和对端母线波混淆
做单端法测距时,需要识别第二个波头是故障点反射波还是对端母线反射波。这两个波头到达测量端的时间都可能接近,一旦认错,测距结果就完全错了。
我的识别方法是组合使用极性判据和幅值判据。故障点反射波,是在故障点发生反射后回到测量端的,它的极性与初始行波一致,幅值大约是初始行波的线模反射系数倍。对端母线反射波,是对端母线反射后传回来的,极性取决于母线的接线方式,通常与初始行波相反。
在仿真里可以直观验证:把故障距离设到线路中点附近,两种反射波到测量端的时差最大,一个在前一个在后,比较容易区分。把故障距离逐渐移向一端,两种反射波的到达时间会越来越接近,区分难度增大。这时候可以借助小波的多尺度分析,观察两个候选极值点在多个尺度上的幅值衰减趋势,故障点反射波在各尺度上的衰减规律和对端反射波有差异。
6.4 故障时刻对齐与故障初相角的影响
小波变换定位的是波头到达时刻,但测距公式需要的是两侧波头到达时刻的差值,所以理论上不需要知道故障发生的绝对时刻。但仿真中有一个细节:故障模块的触发时刻如果设置不当,导致故障发生在电压过零点附近,行波幅值会非常小,波头可能检测不到。
这是因为行波的幅值与故障瞬间的电压大小相关,电压过零时刻故障,产生的行波幅值极小。仿真中我一般把故障时间设在电压峰值附近,确保行波幅值足够大。这在实际故障中也有对应:在电压过零附近发生故障,行波测距装置确实容易失效,所以工程上会要求行波测距装置的灵敏度足够高。
另外,故障时刻最好不要正好是采样点整数倍,否则会出现时间量化误差叠加。我在设置故障时间时会故意加一个微小偏移,比如0.0200003s,模拟实际故障的随机性,考察算法在非理想时刻下的表现。这个方法对验证算法的鲁棒性很有帮助。
最后再分享一个我调模型时的个人习惯:每次改完参数,先用固定故障距离(比如5km)跑一遍,验证波头定位稳定后再批量扫其他故障距离。不要一上来就做几十组仿真,出了错根本不知道是模型问题还是算法问题。这套流程我调过很多次,稳定、效率高,建议直接照搬。如果你在复现过程中遇到本文没写到的问题,多半出在Simulink模块版本差异上,优先检查模块参数和数据导出格式,这两个地方是版本差异的重灾区。