资讯详情

资讯详情

配电网单相接地故障行波测距:Matlab实现与凯伦布尔变换

配电网的单相接地故障能占到全部故障类型的七八成可真正要把故障点找出来很多做了多年配电保护的工程师也得皱眉头。原因不复杂故障电阻高、线路分支多、负荷波动大传统的阻抗测距算法经常给出一个让你无法相信的距离。相比之下行波法在原理上对这些坏条件不敏感——故障那一刻产生的暂态行波从故障点向两端传播只要记下两端到达时刻故障距离就能算出来。我最近在Matlab里把这条技术路线完整跑了一遍10kV放射状馈线模型、凯伦布尔变换解耦、小波变换提取波头、双端行波测距公式定位。这篇文章就把这套流程的来龙去脉和可以直接复现的代码分享出来。先说下这篇文章适合谁。如果你在做配网故障测距的课题或者正在研究馈线自动化里的行波定位方案再或者纯粹想搞明白为什么故障波形要经过凯伦布尔变换、小波变换才能算出距离那这篇文章基本上就是为你准备的。我会拆开每一个环节不省略推导也不只给结论。1. 为什么配电网单相故障测距这么头疼阻抗法的局限与行波法的机会1.1 配电网测距和输电网测距不是一个难度级输电网结构相对简单线路长、两端或多端连接清晰故障大多是金属性短路。阻抗法的思路是测量端的电压和电流推算一个阻抗这个阻抗与线路长度成正比于是距离约等于阻抗除以单位长度阻抗。这套方法在几十公里的输电线上能用是因为过渡电阻小、线路结构单一误差可以被容忍。但配电网完全是另一回事。它通常是放射状结构一条主干馈线上挂着一堆分支和配电变压器负荷还随时在变。单相接地故障又占了绝大多数而且经常是电阻性接地比如树枝碰线、绝缘子破损、导线断落碰地过渡电阻可以到几百欧姆。故障电流小到保护都可能没有反应阻抗计算出来的电抗分量严重受过渡电阻影响——这就是第一个难题。更麻烦的是分支。阻抗法遇到分支时故障回路的阻抗不再是单一线路长度的线性函数而是分支阻抗的并联组合。你测到的阻抗可能对应好几个可能的故障位置哪个都不是真解。负荷波动还会改变线路的等效模型参数进一步把计算结果拉偏。对比维度阻抗法双端行波法原理依据工频电压电流与阻抗关系高频行波到达时刻差对过渡电阻敏感高阻时误差大不敏感只影响波头幅值对分支结构分支导致多解主线测距仍可用分支需辅助判断对线路长度短线路信噪比差短线路需要更高采样率现场设备要求常规保护/测距装置高速采样、双端同步授时1.2 阻抗法在配网里最容易翻车的几个场景我做仿真时专门试过一条20km的10kV馈线A相经100Ω电阻接地故障点在10km处。用经典的单端阻抗法推算误差很容易超过2到3公里因为过渡电阻引入的附加电抗被当成了线路距离。如果把分支也加进来结果就更离谱几乎没法用。有的文献会告诉你可以用解方程的方式同时估计过渡电阻和故障距离。理论上没错但前提是线路参数准确、负荷稳定、故障前负荷电流已知。配网里这些条件全都靠不住。末端负荷可能一天变几次温度变化会改变导线电阻甚至电缆和架空线的混合段还会让单位阻抗不一致。所以工程上阻抗法在配网里更多用于故障选段而不是故障精确测距。1.3 行波法为什么能绕开这些麻烦行波测距的思路跟阻抗法完全不同。故障发生的瞬间故障点电压突然跌落相当于在故障点并联了一个负的电压源产生一个在导线上传播的暂态行波。这个行波向两端传播速度接近光速到达两端测量点的时间只由线路长度和波速决定跟过渡电阻、负荷大小基本没关系。过渡电阻高会削弱行波能量但不会改变波头的到达时刻。只要测量设备足够灵敏能把波头检测到距离公式依旧是准的。这就是行波法在原理上对高阻接地、负荷波动、分支线路不那么敏感的根本原因。当然分支问题需要在应用时小心处理这个我放到后面专门讲。2. 双端行波测距的核心公式一次故障、两个到达时刻、一条距离2.1 行波是怎么产生的要理解公式先理解行波本身。设故障发生时刻为t0故障点离M端距离为x线路全长为L。故障产生的暂态行波同时向M端和N端传播速度记为v。那么M端在t1时刻收到第一次波头N端在t2时刻收到第一次波头存在关系t1 x / v t0 t2 (L - x) / v t0两式相减t0就消掉了t1 - t2 (2x - L) / v x (L v * (t1 - t2)) / 2这个公式就是双端行波测距的全部核心。它只用了两个到达时刻不依赖故障电阻、不依赖负荷电流也不依赖故障前系统的详细状态。理论上只要两端时钟同步、波头识别准确、波速取对精度就只受到测量采样时标的限制。2.2 为什么双端比单端稳单端行波测距只用一个测量点需要识别故障点反射回来的第二个波头然后利用两个反射时间差算距离。这在输电网里勉强可行因为反射波路径清晰。到了配电网每个分支都是反射源乱七八糟的反射波会让人分不清哪个是故障点反射回来的识别错一个波头距离可能偏出几公里。双端法只认每个测量点第一次到达的波头。首次到达的波头是唯一的路径也最明确因为它是从故障点直接传来的中间最多穿过若干分支节点不会产生路径歧义。所以在复杂配网结构下双端法在原理上比单端法稳健得多。2.3 波速度到底取多少合适公式里v是行波速度它不是工频相量速度而是由线路分布电感和电容决定的暂态传播速度v 1 / sqrt(L1 * C1)这里的L1、C1是正序分布参数。架空线典型值L1约1.2 mH/km、C1约9.6 nF/km算下来v大约在2.9×10^8 m/s接近光速。电缆就慢得多L1约0.3 mH/kmC1约240 nF/kmv可能只有1.1×10^8 m/s上下。实际工程里波速的选取非常关键。三相线路存在相间耦合故障产生的行波会同时包含多个模式不同模式的传播速度不一样。后面要讲的凯伦布尔变换目的就是把耦合的三相信号分解成独立的模式然后我们取出速度稳定的线模分量来测距。如果误用了受大地路径影响严重的地模分量波速不稳定测距误差会显著增大。3. 凯伦布尔变换把三相耦合信号拆成能用的线模3.1 三相线路为什么必须解耦三相导线之间既有互电感又有互电容任何一相电流的变化都会在另外两相上感应出分量。如果你直接拿A相电流去做小波分析看到的波头其实是A相自身分量和B、C相耦合分量的叠加。碰巧故障相别不同叠加形态还完全不一样算法就很难有通用性。这就像三根连在一起的弹簧你拉其中一根旁边两根也跟着晃。直接测单根的位移看不出是哪根被拉。凯伦布尔变换干的事情就是把坐标旋转一下让这三根弹簧的振动分解成一起动相对动几种独立的模式每种模式不再互相耦合。对于三相线路变换后得到三个模量一个地模和两个线模。3.2 凯伦布尔变换矩阵与推导凯伦布尔变换在电磁暂态仿真里很常见。它的变换矩阵和逆矩阵长这样S [1 1 1; 1 -2 1; 1 1 -2]; Sinv (1/3) * [1 1 1; 1 -1 0; 1 0 -1];如果三相电流向量是 [ia; ib; ic]那么模电流就是i_modes Sinv * [ia; ib; ic];展开来看i0 (ia ib ic) / 3 i1 (ia - ib) / 3 i2 (ia - ic) / 3i0是零模分量以大地为回路受土壤电阻率影响大速度低且和频率相关。i1和i2是线模分量以其他相线为回路基本不依赖大地参数传播速度稳定适合用来测距。这个矩阵的好处是没有无理数、逆矩阵计算简单、元素对称好记。只要你采样得到三相电流或电压乘以Sinv就能完成解耦。在实际代码里如果只关心波头位置而不关心模量幅值的物理含义那个1/3因子可以略去因为后续找峰值时等比例缩放不影响时间位置。3.3 什么时候换用克拉克变换有人可能会问既然要解耦为什么不用更熟悉的克拉克Clarke变换克拉克变换把三相量变换成α、β、0三个分量iα (2 * ia - ib - ic) / 3 iβ (ib - ic) / sqrt(3) i0 (ia ib ic) / 3它的解耦效果在理想换位线路下同样不错而且α、β分量物理意义更直观。差别主要在于克拉克矩阵里有无理数√3实现上稍麻烦一点凯伦布尔的线模1和线模2分别对应线路对地模式在相间差动上的分量对于单相接地这种不对称故障两个线模都会被充分激励用哪个都可以。我在仿真里测试过这两种变换对小波波头定位的结果差别非常小。凯伦布尔胜在计算简单和与EMTP生态兼容。你只要记住一个原则测距时优先选线模不要选零模。至于矩阵具体是凯伦布尔还是克拉克属于工程口味问题。4. 小波变换为什么适合找波头模极大值方法的原理与参数选择4.1 从肉眼找突变到算法找奇异点行波波头在原始波形里是什么样的故障瞬间电流在几微秒内发生突变叠加在50Hz工频信号上。你要是直接看时域波形大概率只看到一个大斜坡过去很难精确指出突变发生在第几个采样点。因为波头本质上是一个奇异点而工频分量占绝对主导信噪比很差。小波变换的作用就是把信号按频率尺度拆开。高频细节分量把工频踢掉留下波头附近的剧烈变化表现为一个典型的脉冲峰值。峰值所在位置就是行波到达测量点的时刻。这个峰值定位的思路比在原始波形上设固定阈值可靠得多。固定阈值为什么不行因为故障电阻不同波头幅值差异很大。高阻接地时波头小阈值设高了检测不到轻载时噪声相对明显阈值设低了一堆假峰。我更推荐的办法是找小波细节分量的模极大值在每个尺度上信号突变处的小波系数绝对值最大这个峰的位置就是奇异点位置和信号绝对幅值关系不大。4.2 母小波和分解层数怎么选Matlab里做离散小波变换很直接用wavedec就行。母小波我优先推荐db4其次是db6、sy4。db4的滤波器长度短时频窗适合捕捉高频瞬态对波头的定位偏置小。滤波器越长频域分辨率越好但时域定位模糊性也会增加因为滤波器的群延迟更大。分解层数建议在4到6层之间。最细尺度的第一层细节对波头最敏感峰也最尖锐第二、三层可以佐证防止第一层受噪声干扰再往高层去波形被平滑峰的位置反而被拉宽不适合精细定位。我通常取前3层细节的幅值叠加或包络来找峰。如果要用连续小波变换Matlab里cwt(i_mode, amor, fs)也可以但数据量大时会比较慢而且Morlet小波的峰定位并没有比db4显著更准。离散小波加模极大值是这个场景下性价比最高的组合。4.3 到达时刻的精确化插值与多尺度确认采样率决定波头时间标定精度的下限。一个采样间隔对应的距离误差可以这样算误差下限 ≈ v * Ts / 2这里的Ts是采样周期。v取2.9×10^8 m/s的话1MHz采样对应的单采样点误差就有差不多146米。10MHz采样才降到15米左右。所以想要配电线路几十米级的定位精度仿真里要么采样率开到10MHz级别要么对细节系数做峰值插值。我用过一种简单有效的做法找到细节系数峰值附近三个点做抛物线插值把峰的位置插到亚采样点。这样等效时间分辨率能比原始采样率提高好几倍但前提是原始波形没有严重削顶或饱和。另外建议用两个尺度做交叉验证第一层细节的峰和第三层细节的峰位置如果一致说明这个波头可信如果差了好几个采样点多半附近有干扰需要重新检查。5. 一套能跑的Matlab实现从Simulink模型到双端测距主代码5.1 Simulink模型的关键设置我用Simscape Electrical里的分布式参数线路模块搭了一个20km的10kV放射状馈线。主线参数按典型架空线设置参数数值单位R10.127Ω/kmL11.22mH/kmC19.6nF/kmR00.32Ω/kmL04.10mH/kmC06.0nF/km这三个麻烦点牢记第一一定要用固定步长求解器步长设1e-7秒采样输出用零阶保持设成1MHz或10MHz。变步长求解器在波头到达时容易自动缩小步长导致导出的时间轴不均匀直接拿下标除以采样率算时刻会错。第二故障时刻设在A相电压峰附近比如电源相位设置好后让故障发生在t0.06s这样行波幅值最大波头最清晰。第三末端不要空载挂一个三相负载并在末端加一个电压电流测量模块模拟实际馈线上装了终端单元的情形。5.2 仿真数据的导出与预处理仿真结束之后把两个测量模块的三相电流导出到工作区得到ia_M、ib_M、ic_M、ia_N、ib_N、ic_N六个向量加上时间向量t。为了减少边界效应只取故障前0.5ms到故障后2ms的一段。如果你想用电压行波也可以导出三相电压流程一样。预处理阶段我一般不做带通滤波。db4的第一层细节天然滤掉了工频分量再做额外的带通反而可能引入滤波器本身的群延迟把波头时间拉偏几微秒这在双端测距里就是几十米的误差。这一点很重要很多人以为要先滤波再变换实际上离散小波重建本身就承担了这个角色。5.3 主测距代码逐段讲解下面是完整的核心测距代码你可以直接放到脚本里跑替换成自己的仿真数据即可%% 参数设置 fs 10e6; % 采样率 10MHz L 20e3; % 主干线全长 20km v 2.92e8; % 线模波速度 m/s %% 凯伦布尔变换取线模1 Sinv (1/3) * [1 1 1; 1 -1 0; 1 0 -1]; i_modes_M Sinv * [ia_M; ib_M; ic_M]; i_modes_N Sinv * [ia_N; ib_N; ic_N]; im1_M i_modes_M(2, :); % 线模1 im1_N i_modes_N(2, :); %% 小波变换取第一层细节 wav db4; level 5; [C_M, L_M] wavedec(im1_M, level, wav); [C_N, L_N] wavedec(im1_N, level, wav); d1_M wrcoef(d, C_M, L_M, wav, 1); d1_N wrcoef(d, C_N, L_N, wav, 1); %% 模极大值定位首个波头 th_M 0.2 * max(abs(d1_M)); [~, locM] findpeaks(abs(d1_M), MinPeakHeight, th_M, ... MinPeakDistance, 30); th_N 0.2 * max(abs(d1_N)); [~, locN] findpeaks(abs(d1_N), MinPeakHeight, th_N, ... MinPeakDistance, 30); tM locM(1) / fs; tN locN(1) / fs; %% 双端测距公式 d_est (L (tM - tN) * v) / 2; fprintf(估算故障距离 M端: %.1f m\n, d_est);这段代码看起来简单但每一步都对应前面讲的原理。凯伦布尔变换把三相变成线模小波变换把线模中的突变变成峰findpeaks把峰的位置提取成到达时刻最后的双端公式把时刻差变成距离。提一个容易踩的细节findpeaks返回的数组里第一个峰值不一定是波头本身因为如果MinPeakHeight设得太低噪声也会产生一个更早的小峰。我试过在故障电阻较小、波头幅值很大时没问题但高阻接地时噪声峰可能混到前面。所以建议先plot(d1_M)看一眼确认第一个峰确实是突变位置再批量跑数据。6. 仿真结果、误差来源和精度提升手段6.1 一组典型的仿真定位结果我在20km线路上分别设置了3.2km、12.7km、18.4km三个故障点过渡电阻取了100Ω采样率10MHz故障相角按A相电压峰值设置。小波参数用db4和第一层细节跑出来的结果大致如下设定故障位置估算位置绝对误差3.2 km3.173 km27 m12.7 km12.632 km68 m18.4 km18.433 km33 m这个结果放在配网测距里已经比较能接受了。误差主要来自波头峰在离散小波重建后的采样点量化大约在1到2个采样点之间。10MHz采样率下每个采样点对应15米量级的距离误差所以几十米误差是正常水平。如果把采样率降到1MHz同样的故障设定误差会跳到100到200米量级。所以仿真时别贪快采样率太低会让算法整体失去说服力。6.2 四项误差从哪里来双端测距的误差可以拆成四块第一是同步误差。两端时钟如果有δt的偏差距离误差是v×δt/2。1微秒的同步偏差差不多就是146米。所以双端行波测距在工程上必须有可靠的授时源。仿真里默认没有这个误差但你要心里有数。第二是采样量化误差。一个采样间隔的时间不确定带来的距离误差上限是v×Ts/2。提高采样率或者做峰值插值可以压下去。第三是波速误差。这一点特别有意思速度误差的影响在故障靠近线路两端时最大因为此时两端到达时刻差最大v的误差被Δt放大了故障在线路中点时Δt接近零波速误差反而几乎不影响结果。所以做误差分析时不能只报一个点的精度要在全线路多布几个故障点看。第四是小波定位误差。母小波、分解层数、噪声都会让峰值位置偏移几个采样点。通过多尺度确认和插值可以把这部分误差减小到最高一个采样点。6.3 提升精度的几个实用操作想进一步提高定位精度我的建议有三条。一是对细节系数峰值做抛物线插值。找峰附近三点用二次多项式拟合顶点位置时间分辨率可以明显超过原始采样周期。二是采用线模速度在线计算。可根据实际线路参数算v1/sqrt(L1C1)不要拍脑袋用光速。电缆和架空线混合的线路要找等效速度或者分段处理。三是不要只取第一个强峰就完事。先用plot看两端波形确认两个波头对应的是同一起源的到达再代入公式。两端波头极性方向一致的匹配才说明它们是从同一个故障点出发的行波。7. 配电网里容易翻车的几个坑分支、高阻、同步和我的实测体会7.1 分支故障时双端公式给的是分支点而不是故障点这是我在仿真中印象最深的一个坑。假设20km主线上有分支分支点在离M端7km处故障却发生在分支上的2km位置。此时行波从故障点传到M端要经过729km传到N端要经过13215km。把这两个到达时刻代入双端公式算出来的距离是7km也就是分支点的位置而不是真正的故障点2km处。原因在于双端公式假设行波只在线路两端之间的直线路径上传播而分支故障的实际路径是先走主线一段再折进分支。这个路径在双端时间差里被消掉了剩下的是分支点的位置。所以遇到带分支的放射状配网双端测距得到的距离要理解成故障所在分支节点沿主干线的位置要想真正定位到分支上的具体点需要在分支点附近也加测量或者结合反射波到达的特征做分支识别。7.2 高阻接地时的波头弱化高阻接地会让波头幅值明显变小但好消息是只要故障电阻别夸张到几千欧db4小波在第一、二层的模极大值依旧能识别到波头。我在200Ω接地时测试定位误差和高阻值关系不大真正影响定位的是波头附近叠加的噪声。处理办法是把阈值改小同时把第一层和第二层细节叠加用包络峰辅助定位。别因为怕噪声就把阈值抬太高否则弱波头会被当成噪声直接滤掉。7.3 末端的同步与测量装置问题双端测距的工程前提是末端有一个采样同步、数据可回传的装置。配电网很多馈线末端根本没有这类设备这是方法落地的最大障碍。现在不少配网终端单元开始具备高速采样和对时能力可以作为双端测距的测量点但通信延迟、数据同步、安装位置都需要单独设计。仿真里搭模型很容易两端数据天然同步。一旦到了现场不同装置的采样时钟偏差就直接进入误差公式。所以做方案评估时别只看算法精度要把授时精度和设备采样率也算进去。7.4 我的实操体会和给后来者的建议如果把整条流程再压缩成几句话我会说固定步长仿真、故障相角选在电压峰值、采样率往10MHz开、凯伦布尔取线模、小波用db4取第一层细节、双端公式算主干距离、遇到分支结果要打个问号。这套组合我反复验证过在仿真层面上稳定在数值上也说得通。最后分享一个小经验动手之前先花半小时搭一个最简单的两端模型把故障直接设在中点把代码跑通看到估算距离和实际距离接近后再去加分支、加负载、加噪声。我见过太多人一上来就搭一个大网最后跑出来误差几百米根本说不清是模型问题还是算法问题。行波测距这东西链路上的每一环都可能是误差来源一步一步验证才是最省时间的办法。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →