news 2026/9/18 3:21:42

谐振接地系统单相接地故障:暂态量选线与行波定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谐振接地系统单相接地故障:暂态量选线与行波定位

简介:谐振接地系统中复杂单相接地故障的选线与定位,长期是配电网故障检测的难点之一。这份资源面向电力系统保护与控制领域的研究人员、工程师及配电网运维人员,聚焦两点同相接地和高阻接地两种特殊故障类型,基于零序等效网络与高阻故障模型,分别介绍基于零序电流暂态量、过渡电阻特征以及变模态分解和对地电容参数特征的选线与定位方法。压缩包内为1个docx文档,仅54KB,便于随取随用。文档不仅给出完整理论推导,还包含详细Python代码及逐段解释,覆盖谐振接地系统建模与仿真、VMD分解选线、故障定位算法实现,并对参数调整和抗干扰措施做了说明;同时提到方法在多个省级电网示范工程中的实际应用效果。目前已有37人学习浏览,是一份兼顾理论深度与工程落地性的技术参考。

1. 谐振接地系统的单相接地故障,难就难在“不接地”

谐振接地系统,业内常称为中性点经消弧线圈接地系统,是 10kV、35kV 配电网里最主流的中性点运行方式之一。它最大的矛盾在于:单相接地故障发生后,按规程系统还能带故障运行 1~2 小时,但这个“容错能力”直接换来的是选线与定位的极度困难。消弧线圈补偿了容性电流,故障残流可能只有几安培,稳态分量小到常规零序过流保护根本不敢动作;而故障点电弧又时燃时熄,波形严重畸变,别说定位,连“这条线到底是不是故障线”都常常判断错。

比单一接地更棘手的是这个标题里的两类复杂工况。两点同相接地,意味着同一时刻两条不同馈线发生了同相接地,两个接地点通过大地和系统网络构成并联通道,任意一条线路的零序电流都不再具备典型的故障特征,单端量选线几乎失效;高阻接地则表现为故障电流极小、电压变化不明显,有时故障点还是一个间歇性电弧,波形里全是暂态分量而非工频分量。传统基于工频稳态量的选线装置,在这两类工况下的正确动作率远低于运行规程的预期。

这篇文章要解决的事很具体:在谐振接地系统里,两点同相接地和高阻接地这两种复杂故障类型下,如何用暂态量构造选线判据,如何用双端量或行波法缩小定位范围,以及对应的代码骨架该怎么搭。读者对象是从事配网运维、保护整定、故障录波分析的工程师,也包括在做配网自动化算法验证的研究人员。你不需要有继电保护背景才能读,但最好懂一点 Python 和基本的信号处理。下面从故障特征开始,一步步把选线、定位的完整闭环拆开。

2. 两类复杂故障的电气特征与选线困境

2.1 消弧线圈补偿下的故障电流分布:为什么稳态判据失灵

谐振接地系统的核心是一个接在中性点与地之间的消弧线圈,电感值按系统对地总电容调谐。正常运行时,三相对地电容电流大小相等、相位互差 120°,中性点位移电压近似为零;当 A 相发生金属性接地时,A 相对地电容被短接,B、C 相对地电压升高为线电压,对地电容电流增大到正常值的√3倍,流过故障点的电流由 B、C 相对地电容电流的向量和构成。

这时消弧线圈投入,它提供一个感性电流分量,方向与电容电流相反。补偿度设计通常在 8%~10% 之间(过补偿),故障残流只有系统总电容电流的 10% 上下。以一条 10kV 出线为例,单条馈线的对地电容电流大约 2~5A,多条馈线并联后母线总电容电流可能达到 30~50A,补偿后故障点残流也就 3~8A。这么小的电流,要驱动零序过流保护动作,定值根本无法整定——因为任何一条健全线路的零序电流都可能在 5A 以上,两者在数值上没有可靠区分度。

稳态量不行的另一层原因是相位。正常运行时(包括单相接地后的稳态阶段),零序电压与零序电流的相位关系取决于补偿状态:过补偿时零序电流超前零序电压 90°,欠补偿时滞后 90°,而消弧线圈的分接头调整会改变这个角度。这意味着,传统的零序功率方向判据在谐振接地系统里对补偿状态极为敏感,调谐不当就产生方向误判。

2.2 两点同相接地:为什么选线变成“双盲”问题

两点同相接地,指两条不同馈线(或同一馈线不同区段)在同一时刻发生同相接地。现实中常见于雷雨天气多条线路遭雷击、树障被打断后搭接,以及同一电缆沟里多回电缆同时被外力破坏的场景。设馈线 L1 的 A 相接地点为 f1,馈线 L2 的 A 相接地点为 f2,系统零序等效网络里出现了两个并联的接地支路。

这个模型的直接后果是:流过 f1 的电流不是 L1 自身的电容电流,而是“系统总电容电流减去 L2 支路分流”后的剩余部分;反过来,f2 也一样。用零序电流幅值比较法选线时,故障线路 L1 和 L2 的零序电流幅值都显著增大,且大小关系随两侧接地电阻的差异而变化——如果 f1 是金属接地、f2 是高阻接地,可能 L1 的零序电流远大于 L2,选线装置会毫不犹豫地只判 L1 为故障线,漏掉 L2;而 L2 这根隐患线路继续带故障运行,若故障点发展成相间短路,就是扩大事故。

更麻烦的是相位判据。当两个接地点距离母线电气距离相近时,两条故障线路的零序电流相位都接近(同为容性分量主导),传统“零序电流最大+方向”的联合判据会把这两条线都识别为“疑似故障”,运行人员面临两条线都试拉闸的尴尬操作。对一个双电源供电的重要用户来说,拉错一条线就是一次非计划停电。

2.3 高阻接地:电弧是主角,工频量只是配角

高阻接地指故障点通过树枝、水泥地面、沙土等过渡电阻接地,工程上通常把过渡电阻超过 100Ω(有的规程定 1000Ω)的情况归入此类。故障电流可能只有 0.5~2A,而这个量级与系统正常运行时的不平衡电流几乎相当。谐振接地系统本身就用消弧线圈把残流压到很小,再叠加一个高阻,故障特征被系统性“抹平”了。

高阻接地最值得注意的特征是间歇性电弧。故障点在电压峰值附近击穿、在电流过零附近熄弧,形成“烧断—熄弧—再烧断”的循环,每次重燃都会产生一个高频暂态分量。这个暂态分量的频带很宽,从几百赫兹延伸到几十千赫兹,且幅值远大于稳态残流。换句话说,高阻接地故障的能量主要躲在高频暂态里,工频分量反而不重要。这就是为什么业界普遍接受一个观点:高阻接地选线,必须用暂态量做判据。

3. 暂态量特征提取:从录波数据到选线特征

3.1 为什么用暂态量:数学上的必然性

要理解暂态量为什么能区分故障线路与健全线路,需要回到零序网络的暂态等值电路。在故障发生的瞬间,消弧线圈的感性电流不能突变(电感电流连续),因此暂态期间故障点的接地电流几乎完全由线路对地电容的放电电流和健全线路对地电容的充电电流构成。这个电流的初始幅值取决于故障初相角,在电压峰值附近接地时最大,幅值可以达到稳态电容电流的数倍到十几倍。

关键区别在于流通路径。故障线路的零序暂态电流包含两个成分:本线路对地电容的放电电流(从故障点流回母线)和所有健全线路对地电容的充电电流(从母线流向各健全线路再经故障点流回)。而健全线路的零序暂态电流只有一个成分——它自身的对地电容充电电流,方向从母线流向线路,与故障线路的方向相反且幅值上没有对侧成分叠加。用极性和能量两个维度去区分,这就是暂态选线的基本数学原理。

实际录波中,零序电压和零序电流通过电压互感器开口三角和零序电流互感器取得。采样率通常在 10kHz~100kHz 之间,这个带宽足够捕捉高阻接地电弧重燃产生的数千赫兹暂态分量,但对行波到达时刻的高精度定位,100kHz 仍然不够,需要专用的高速采集单元。选线装置的常用采样率在 10kHz~20kHz,定位装置则要求 1MHz 以上。

3.2 小波包分解提取暂态特征频段

小波变换是处理非平稳暂态信号的主流工具。与傅里叶变换只能给出信号在整个时间窗内的频率成分不同,小波变换能同时在时域和频域刻画信号,对于持续几毫秒、频率不断变化的电弧暂态最合适。小波包分解比离散小波变换更进一步,它对高频细节也做逐层分解,能更好地区分不同故障类型下的高频分量差异。

import numpy as np import pywt def wavelet_packet_energy(signal, wavelet='db4', level=4, fs=10000): """ 对零序电流信号做小波包分解,返回各频段的能量占比 参数: signal: 零序电流录波数组,建议截取故障前0.5周波到故障后2周波 wavelet: 小波基函数,db4对工频暂态的时频局部性较好 level: 分解层数,4层在10kHz采样率下对应约312Hz频率分辨率 fs: 采样率,单位Hz 返回: freq_bands: 各频段的频率范围列表 energy_ratio: 各频段能量占比 """ wp = pywt.WaveletPacket(data=signal, wavelet=wavelet, mode='symmetric') # 获取第level层的所有节点 nodes = wp.get_level(level, order='freq') energy = [] for node in nodes: coeffs = node.data energy.append(np.sum(np.square(coeffs))) total_energy = np.sum(energy) + 1e-12 # 防止除零 energy_ratio = energy / total_energy # 计算每个频段的实际频率范围 nyquist = fs / 2 band_width = nyquist / (2 ** level) freq_bands = [(i * band_width, (i + 1) * band_width) for i in range(2 ** level)] return freq_bands, energy_ratio

这段代码做的事很直接:把故障后一段零序电流信号做 4 层小波包分解,得到 16 个频段各自的能量占比。order='freq'参数确保节点按频率从低到高排列,这样energy_ratio[0]对应最低频段(接近工频及低频谐波),越往后频率越高。db4小波基是暂态信号处理的首选,它的消失矩为 4,既能有效抑制工频分量的干扰,又不至于因为消失矩过高而丢失短暂的暂态尖峰。

高阻接地时,能量占比的分布规律与金属性接地有明显差异。金属性接地故障,能量集中在较低频段(几百 Hz 到 2kHz),因为故障点相当于一个稳定的低阻通道,高频分量被快速衰减;高阻接地则不同,间歇性电弧持续产生高频重燃脉冲,2kHz 以上频段的能量占比会显著升高。这个差异可以作为后续选线判据的输入特征。应用中建议在此基础上求能量熵,即对能量占比做信息熵计算,量化频谱分布的“混乱度”,频谱越分散高阻接地的可能性越大。

3.3 零序电压启动与录波窗口对齐

任何选线算法都依赖一个准确的启动时刻。谐振接地系统通常用零序电压突变量启动,整定值躲过正常运行时的最大不平衡电压。对消弧线圈接地系统,规程要求中性点位移电压不超过相电压的 15%,因此启动整定值可取相电压的 10%~15%。实际电网不平衡电压可能有波动,建议用突变量而不是绝对量,即取当前零序电压与 2 个周波前零序电压的差值。

录波窗口的选择直接影响特征提取效果。故障前保留 1 个周波用于确认启动前状态,故障后保留 3~5 个周波覆盖完整的暂态衰减过程。总录波时长建议 0.2~0.4 秒,既给足特征分析窗口,又不至于让文件过大影响多路并发采样。数据对齐的关键是采样时刻必须与 GPS/北斗对时信号同步,否则后续双端测距的时差计算会产生系统性误差。对选线装置而言,各出线间隔的零序电流录波需要由同一台装置同步采样,这就要求装置具备多通道同步采样能力,任何一个通道的独立启动都有可能错开故障时刻,导致特征对齐失败。

4. 选线实现:构造多判据融合的故障选线算法

4.1 判据一:暂态零序电流极性比较法

极性比较法的物理解释很清晰:故障线路的暂态零序电流由本线路放电电流与健全线路充电电流叠加而成,健全线路的暂态零序电流只有自身的充电电流,因此故障线路与健全线路的暂态零序电流初始极性相反。实现时无需事先知道哪个极性是“故障方向”,只需要比较各线路之间暂态电流波形的相似度。

from scipy.signal import correlate import numpy as np def polarity_compare(line_currents, fs=10000, window_len=200): """ 基于暂态零序电流极性的选线判据 参数: line_currents: 二维数组,形状为(馈线数, 采样点数),每行是一条馈线的零序电流 fs: 采样率 window_len: 用于极性比较的采样点数量,一般取故障后2~5个工频周期 返回: polarity_scores: 每条馈线的极性得分,得分最高的为故障线 ref_line: 参考线路索引 """ n_lines = line_currents.shape[0] # 取故障后数据,注意这里调用方传入的已经是截断后的数据 window = line_currents[:, :window_len] # 所有线路对第一条线路做互相关,用相关系数刻画极性一致程度 ref = window[0, :] - np.mean(window[0, :]) ref_norm = np.linalg.norm(ref) corr_coeffs = [] for i in range(n_lines): sig = window[i, :] - np.mean(window[i, :]) sig_norm = np.linalg.norm(sig) if sig_norm < 1e-8 or ref_norm < 1e-8: corr_coeffs.append(0.0) else: corr = np.dot(ref, sig) / (ref_norm * sig_norm) corr_coeffs.append(corr) # 与参考线路相关性最弱的线路可能是故障线(极性相反),但也可能是另一条故障线 polarity_scores = 1.0 - np.array(corr_coeffs) # 找出与参考线路最不相关的那条 fault_idx = int(np.argmax(polarity_scores)) return polarity_scores, fault_idx

这段代码的核心是计算各馈线暂态零序电流与第一条馈线(参考线)的归一化相关系数。正常工况下所有健全线路电流波形相似,相关系数接近 1;故障线路与健全线路极性相反,相关系数接近 -1,换算成极性得分就接近 2。两点同相接地时,两条故障线路的极性相对参考线路可能都是负值,极性得分都会显著大于健全线路,所以要同时看得分分布而不只是最大值——当有两条及以上线路的极性得分都明显偏高时,应该怀疑两点同相接地,闭锁单线路跳闸逻辑。

需要注意:极性比较法对电流互感器接线方向敏感。接反的互感器会让健全线路也呈现“反极性”,直接导致误判。工程上要确保所有零序电流互感器的同名端指向母线,投运前逐路校验。

4.2 判据二:基于小波包能量的选线判据

暂态能量判据不依赖极性,而是比较各线路在特定频带上的能量大小。对高阻接地尤其有效,因为高阻接地时各线路暂态电流的波形相似,极性差异可能不明显,但故障线路因流过的暂态电流包含对侧全部健全线路的电容电流,总能量显著大于任何一条健全线路。

def energy_selection(line_currents, fs=10000, wavelet='db4', level=3): """ 基于小波包频带能量的选线判据 参数: line_currents: 形状为(馈线数, 采样点数) fs: 采样率 wavelet: 小波基 level: 分解层数,3层在10kHz采样率下频带宽度625Hz 返回: energy_scores: 各馈线高频段能量占比 fault_lines: 得分超过阈值的线路索引列表 """ n_lines = line_currents.shape[0] high_freq_ratio = [] for i in range(n_lines): signal = line_currents[i, :] # 用上面的小波包函数分解 freq_bands, energy_ratio = wavelet_packet_energy( signal, wavelet=wavelet, level=level, fs=fs ) # 取最高频段(占比最大的高频部分) 这里取全部频段的比例,或用前30%频率以上频段的能量总和 # 简单起见,取频率最高的一段(索引为最后四分之一)的能量占比 n_bands = len(energy_ratio) high_start = int(n_bands * 0.75) high_freq_energy = np.sum(energy_ratio[high_start:]) high_freq_ratio.append(high_freq_energy) energy_scores = np.array(high_freq_ratio) # 阈值设为平均值的2倍,可直接勾选明显偏高线路 threshold = np.mean(energy_scores) + 2.0 * np.std(energy_scores) + 0.01 fault_lines = np.where(energy_scores > threshold)[0].tolist() return energy_scores, fault_lines

这个判据在高阻接地场景下比极性比较更稳定。电弧型高阻接地故障,故障线路上的高频暂态能量由所有健全线路的高频充电电流汇聚而成,占比可以达到总高频能量的 60%~80%。而健全线路只有自身那一条通道的高频电流,能量占比小且彼此接近。当过渡电阻特别高(如 1000Ω 以上),所有线路的高频能量都偏小时,阈值会自适应回落,避免漏判。

判据里threshold用均值加两倍标准差,这在 3~4 条馈线的小系统里够用;如果馈线数量超过 20 条,建议改用中位数加 3 倍绝对中位差来构造阈值,避免个别异常线路把均值抬高、压低灵敏性。注意别把采样率设得太低——10kHz 以下时,电弧特征频段可能落在采样带宽之外,能量判据失效。

4.3 判据三:零序电压与电流的相位关系辅助判据

作为前两个判据的兜底,可以用零序电压为参考,计算各馈线零序电流的基波相位。消弧线圈过补偿状态下,健全线路的零序电流容性分量主导,电流超前零序电压 90° 左右;故障线路的情况相反,感性分量成为主导,电流滞后零序电压。这个判据的实现方法可以借助 DFT 提取基波相角:

def phase_judgment(voltage, line_current, fs=10000, freq=50): """ 计算单条馈线零序电流相对零序电压的相位差 参数: voltage: 零序电压波形 line_current: 该馈线的零序电流波形 fs: 采样率 freq: 工频频率 返回: phase_deg: 电流相对电压的相位差,正值表示电流超前电压 """ n = len(voltage) t = np.arange(n) / fs # 生成参考正弦和余弦 sin_ref = np.sin(2 * np.pi * freq * t) cos_ref = np.cos(2 * np.pi * freq * t) # DFT求基波分量 def fundamental_component(sig): a = 2.0 / n * np.sum(sig * sin_ref) b = 2.0 / n * np.sum(sig * cos_ref) return complex(a, -b) v_fund = fundamental_component(voltage) i_fund = fundamental_component(line_current) v_phase = np.angle(v_fund) i_phase = np.angle(i_fund) phase_diff = np.degrees(i_phase - v_phase) # 归一到[-180, 180] if phase_diff > 180: phase_diff -= 360 if phase_diff < -180: phase_diff += 360 return phase_diff

这个相位判据单独使用时在两点同相接地时容易出错——两条故障线路的相位差不再像单点接地那样遵循容性/感性的简单规律。因此它只作为辅助:当前面两个判据结论不一致时,以相位判据做加权投票。工程实现时注意电压和电流必须来自同一数据窗口,否则 DFT 算出的相位值受频谱泄漏影响,误差可能超过 10°,这个误差对方向判断是致命的。

4.4 多判据融合策略输出综合选线结果

三套判据的融合不建议简单做算术平均,而应该按故障场景动态分配权重。运行经验表明:金属性接地和低阻接地时,极性判据和能量判据都可靠,相位判据的贡献可以调低;高阻接地时,能量判据权重最高,极性判据降低;两点同相接地时,能量判据的分流效应让两条故障线路能量都可能偏低,此时极性判据中的“多个高得分线路”特征更可靠。下面的融合逻辑直接把三个判据输出映射成可疑度,并给出带有“多点接地预警”的最终结论:

def fusion_selection(voltage, line_currents, fs=10000): """ 多判据融合选线主函数 参数: voltage: 零序电压波形 line_currents: 所有馈线的零序电流波形 返回: result: 字典,包含故障线路、可疑线路、故障类型提示 """ n_lines = line_currents.shape[0] # 判据1: 极性比较 polarity_scores, fault_by_polarity = polarity_compare(line_currents, fs=fs) # 判据2: 小波包能量 energy_scores, fault_by_energy = energy_selection(line_currents, fs=fs) # 判据3: 相位辅助 phase_scores = [] for i in range(n_lines): phase_diff = phase_judgment(voltage, line_currents[i], fs=fs) phase_scores.append(phase_diff) phase_scores = np.array(phase_scores) # 融合规则 suspicious = set(fault_by_polarity) | set(fault_by_energy) # 找出相位为负,且能量或极性得分高的线路 phase_suspicious = np.where(phase_scores < 0)[0].tolist() suspicious.update(phase_suspicious) # 判定是否可能两点同相接地 if len(fault_by_polarity) >= 2: flag_two_point = True else: flag_two_point = False # 判定是否高阻接地(整体高频能量极低,但相对有异常线路) total_energy = np.sum(energy_scores) if total_energy < 1e-5: flag_high_impedance = True else: flag_high_impedance = False # 最终结果:可疑线路最多给3条 final_candidates = sorted(list(suspicious))[:3] return { 'fault_lines': final_candidates, 'polarity_scores': polarity_scores, 'energy_scores': energy_scores, 'phase_scores': phase_scores, 'two_point_grounding': flag_two_point, 'high_impedance': flag_high_impedance }

这个融合函数比较直白,工程应用时建议再叠加一个“告警延时”机制——暂停输出选线结果 1~2 个周波,等待暂态能量充分展现,同时避开故障瞬间的电流互感器饱和区段。电流互感器在故障瞬间可能进入饱和状态,波形出现严重畸变,此时极性判据的输出是随机的。处理办法是先检测故障后第 1 个周波内的电流幅值变化率,如果出现接近 90° 的边沿突变,就跳过极性判据,只用能量判据和相位判据。

5. 故障定位:双端测距与行波法的工程实现

5.1 双端测距原理与输入数据要求

选线解决了“哪条线路”,定位要回答“在哪个位置”。谐振接地系统的架空线长度通常在几公里到几十公里,电缆线路则从几百米到十几公里不等。传统阻抗法依赖稳态工频量,在这种故障电流极小的场景下误差很大。工程上常见的是双端测距法:利用线路两端(变电站母线与线路末端联络开关处)的故障录波数据,计算暂态电流或故障行波到达两端的时间差,再根据行波在该线路上的传播速度推算故障点位置。

def two_ended_location(time_diff_s, line_length_km, v_wave=2.98e5): """ 双端行波测距 参数: time_diff_s: 行波到达两端的时间差,单位秒,取绝对值 line_length_km: 线路全长,单位公里 v_wave: 行波传播速度,单位km/s,架空线一般取光速的0.98~0.99倍 返回: distance_from_start: 故障点距首端的距离,单位公里 """ # 设故障点距首端 x km,行波到达首端时间 t1,到达末端时间 t2 # t1 = x / v, t2 = (L - x) / v # 时间差 = t2 - t1 = (L - 2x) / v distance_from_start = (line_length_km - v_wave * time_diff_s) / 2 return distance_from_start

双端测距准确的前提是两端时钟严格同步,时间精度直接决定定位误差:1 微秒的时间误差对应约 300 米定位误差。所以输电线路用北斗/GPS 对时,精度约 0.1 微秒,定位精度在几十米量级;配网线路如果只有普通 IRIG-B 码对时,精度约 1 微秒,定位误差就会放大到数百米,已经超过了大多数配网线路一个区段的长度。配电网经济性有限,不可能每台终端都装高精度对时模块,这是双端测距在配电网落地的最大约束之一。

另一种折中方案是单端测距加故障指示器辅助:变电站端检测到行波反射波,利用反射波到达时间推算故障距离。单端法不需要对时,但依赖故障点反射波与母线反射波的区分,高阻接地时故障点反射波极其微弱,算法稳定性堪忧。

5.2 行波波头识别:小波变换模极大值法

行波测距的关键是从录波数据里精确找出行波到达时刻。工程上最常用的是小波变换模极大值法。行波在线路上传播时,到达测量端的瞬间表现为一个高频陡峭的电压或电流突变,小波变换在小波尺度上对这一突变产生模极大值,其出现时刻就是行波到达时刻。

def wave_head_detection(signal, wavelet='db4', fs=10e6): """ 用小波变换模极大值法检测行波波头到达时刻 参数: signal: 高速采集的行波电流/电压信号,采样率通常需要1MHz以上 wavelet: 小波基,db4或db6在高频段分辨率较好 fs: 采样率 返回: arrival_samples: 波头对应的采样点索引列表 """ coeffs, _ = pywt.cwt(signal, scales=np.arange(1, 32), wavelet=wavelet) # 取第一尺度(最高频)的小波系数,模极大值最尖锐 detail = coeffs[0, :] # 寻找模极大值:当前点大于前一点且大于后一点 extrema_indices = [] for i in range(1, len(detail) - 1): if abs(detail[i]) > abs(detail[i-1]) and abs(detail[i]) > abs(detail[i+1]): if abs(detail[i]) > 0.05 * np.max(np.abs(detail)): extrema_indices.append(i) # 去抖:距离太近的波头只取第一个 min_gap = int(0.5e-6 * fs) # 0.5微秒内的波头视为同一波前 filtered = [] for idx in extrema_indices: if not filtered or idx - filtered[-1] > min_gap: filtered.append(idx) return filtered

模极大值检测要处理的核心问题是“多个波头竞争”。第一个到达的通常是故障初始行波,之后是故障点反射波、对侧母线反射波,以及各条分支线路产生的折射波。配电网有大量分支线,每次行波经过分支点都会产生反射和折射,波形里的波头数量可能高达几十个,如果程序只会找前几个极大值,往往会把分支点的反射波误认为故障点的二次反射。实际定位时,固定使用故障初始行波(第一波头)进行定位,后到的波头用于校核。

代码里阈值取最大模值的 5%,这在高阻接地时可能漏掉弱波头。高阻接地故障的行波幅值很低,建议改用分形维数或者时频能量聚集度来识别,而不是固定比例阈值。或者干脆对信号做带通滤波(通带 100kHz~1MHz),抑制工频分量和噪声后,再用能量累积突变点来判断到达时刻。

5.3 定位误差的典型来源与校正手段

行波速度不是恒定的。架空线的行波速度接近光速,但电缆线路因为绝缘介质相对介电常数较大(交联聚乙烯约为 2.3),波速大约只有光速的 65%~67%。混合线路(架空+电缆混合接线)每个区段的波速不同,不能用一个恒定的v_wave参与计算。工程做法是按区段分段计算传播时间,而不是直接折算距离:

def mixed_line_location(segments, total_time_diff_s): """ 混合线路双端测距 参数: segments: 列表,每项为(distance_km, wave_speed_km_s) total_time_diff_s: 行波到达两端的总时间差,已按绝对值和方向校正 返回: fault_position: 故障点所在的区段索引和距离该区段起点的距离 """ # 故障在首端时的行波时间差 def time_diff_for_fault_at(pos_km): t1 = 0.0 remaining = pos_km for dist, spd in segments: seg_len = remaining if remaining < dist else dist t1 += seg_len / spd remaining -= seg_len if remaining <= 0: break t2 = 0.0 remaining = total_length(segments) - pos_km for dist, spd in reversed(segments): seg_len = remaining if remaining < dist else dist t2 += seg_len / spd remaining -= seg_len if remaining <= 0: break return t2 - t1 total_len = total_length(segments) # 二分法求使时间差等于测量值的故障点位置 low, high = 0.0, total_len target_time = total_time_diff_s for _ in range(50): mid = (low + high) / 2.0 if time_diff_for_fault_at(mid) > target_time: high = mid else: low = mid pos = (low + high) / 2.0 # 判断落在哪个区段 acc = 0.0 for idx, (dist, _) in enumerate(segments): acc += dist if pos <= acc: return idx, pos - (acc - dist) return len(segments) - 1, pos - (acc - segments[-1][0])

混合线路定位处理不好,误差会比单一段线路大一个数量级。因为行波在架空线与电缆的交界处会发生波阻抗变化,产生反射和透射,到达两端的时间差不再是故障距离的简单函数。二分法是工程上最稳的解法,收敛性有保证,不需要求导。如果线路中还存在 T 接分支,双端测距会失效,必须改为三端甚至多端测距。

6. 高阻接地定位的灵敏度增强与工程参数整定

6.1 高阻接地时行波波头变弱,怎么补救

高阻接地时故障点过渡电阻分散了大量能量,行波波头幅值从金属性接地时的数百伏降到几伏甚至更低,常规模极大值检测几乎失效。工程上常见做法是“电压行波+电流行波联合检测”,或者在变电站端加装专用高速采集装置之前,先用录波数据里的零序电压突变来粗定位。

更有效的一种手段是利用故障后的多次重燃。高阻接地电弧每次重燃都相当于一次新故障的“开关操作”,产生新的行波。技术诀窍不是用一次行波定位,而是把多次重燃产生的多组波头拿来做统计平均。假设每次重燃产生的行波到达两端的时间差随故障位置不变——因为故障点位置没变——那么多组时间差的平均值比单次测量更稳定。同时,计算每组时间差的方差,如果方差过大,说明某次重燃发生在不同位置(电弧爬移),定位结果应优先取最先发生的几次。

6.2 选线定位参数整定的关键数值参考

整套系统的性能取决于几个核心参数的整定。零序电压启动定值,一般取系统相电压的 10%~15%,同时加一个时间窗确认(连续 1~2 个工频周期超过定值)防止瞬时干扰。高阻接地选线的频率分析范围,建议覆盖 300Hz~2kHz 作为“特征频带”,这个频段既有足够的暂态能量又能避开 50Hz 工频和主要谐波干扰。若采样率只有 10kHz,那么 2kHz 以上的分析意义有限,因为采样定理限制了可靠频段上限为采样率的一半。下表是几个最常用参数的推荐值及调整方向:

参数推荐值调整方向
零序电压启动突变量10% 相电压对高阻接地抬低至 5%,但需确认不会频繁误动
小波包分解层数3~4 层采样率越高可增加层数,层数越多频率分辨率越高但计算量增大
行波采集采样率1MHz 以上定位精度要求 100m 以内时建议 5MHz
极性比较窗口故障后 3~5 个工频周期两个周期会受故障瞬间暂态过冲影响,超过 5 个周期会混入稳态分量
行波波速架空线 2.95e5 km/s,电缆 1.95e5 km/s现场实测波速比查表准确,可用线路末端短路试验标定
高频能量阈值均值+2倍标准差系统容量小、馈线少时用 1.5 倍标准差提高灵敏度

两点同相接地场景还有一个特有的参数——双故障确认时间窗。两条线路的接地时刻不可能绝对同时,工程上定义“同一时间窗内检测到两条及以上故障特征”即判为两点同相接地。时间窗取 5~10 个工频周期比较合理,太短了承受不了断路器分闸不同期带来的误差,太长了延误处理。

6.3 离线验证与现场测试的方法

代码写完后,用真实故障录波数据验证是最可靠的手段。从故障录波器里导出 COMTRADE 格式数据,用pywtscipy重放上面各个函数。如果没有真实数据,可以用电磁暂态仿真软件搭一个 10kV 谐振接地系统模型,设置不同过渡电阻(0Ω、100Ω、500Ω、1000Ω)和不同接地位置(线路首端、中点、末端),把仿真输出的波形导入 Python 脚本验证算法的选线正确率和定位误差。

一个容易被忽视的验证点是互感器传变特性。高阻接地的高频分量经过电磁式电压互感器时会被衰减和移相,录波数据中的高频成分与实际一次侧的波形有差异。如果发现高阻接地场景算法灵敏度不足,先检查采集装置的高频响应带宽,不要在算法上盲目调参。电流互感器同样存在角差,通常 110V/100V 的电磁式电压互感器在 1kHz 以上的角差可能达到 5°~10°,而极性判据对相位差很敏感,所以实际工程里对于高阻接地更依赖能量判据而不是极性判据。建议在验证阶段把互感器模型也纳入仿真,用传变后的二次信号测试算法,这比直接用理想波形更能反映现场的可靠水平。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 3:20:09

供应商质量评分自动化:MySQL+Python实现CPK、PPM与8D闭环

简介&#xff1a;围绕供应商质量管理与控制这一供应链核心议题&#xff0c;这份文档面向采购、质量与供应链管理人员&#xff0c;梳理了可落地的管控方法与实施要点。内容从制定联合质量计划切入&#xff0c;分经济、技术、管理三个维度展开&#xff0c;涵盖价值分析、成本与质…

作者头像 李华
网站建设 2026/9/18 3:20:02

ToDesk清理后必须重启吗?Linux远程工具故障排查实战

如果你在成规模的 Linux 机器上部署过 ToDesk&#xff0c;大概率遇到过这种场景&#xff1a;清理了缓存目录、删掉旧版本、甚至把 /opt/todesk 整个目录移除后重装&#xff0c;结果客户端要么不弹窗&#xff0c;要么命令行报错&#xff0c;要么远程连上去一直转圈。这时候群里的…

作者头像 李华
网站建设 2026/9/18 3:18:04

毕夏AI官网的AIPPT:当“做PPT”变成“说PPT”

毕夏AI官网 www.bixiaai.com 毕夏AI写作官网 www.bixiaai.com 毕夏官网 www.bixiaai.com 毕夏智能写作官网 www.bixiaai.com 你有没有算过一笔账&#xff1f; 一篇开题报告论文写完&#xff0c;可能花了你三周。但从论文到能站在答辩现场的那份PPT&#xff0c;你还要再花…

作者头像 李华
网站建设 2026/9/18 3:16:10

定点数与浮点数:从二进制位权到精度陷阱与工程选型

1. 为什么搞懂定点数和浮点数&#xff0c;比背下IEEE 754更重要先说个场景。你写C语言&#xff0c;判断两个浮点数相等&#xff0c;写了if (a b)&#xff0c;结果程序跑起来跟抽风一样&#xff0c;有时对有时错。你调了一下午&#xff0c;最后发现是精度问题。这种经历&#x…

作者头像 李华
网站建设 2026/9/18 3:15:17

代码、源文件、编辑与编译:从双击无反应到程序跑通

1. 从"我把代码写进文本文档&#xff0c;为什么双击没反应"说起有个问题我在不同的场合被人问过不下二十遍&#xff1a;我把一段代码老老实实敲进了文本文档&#xff0c;保存了&#xff0c;双击它&#xff0c;电脑要么弹出一堆看不懂的英文&#xff0c;要么干脆一闪而…

作者头像 李华
网站建设 2026/9/18 3:13:40

LeetCode 283 移动零:双指针原地算法详解与多语言实现

1. 项目题干与考点拆解1.1 题目到底在说什么LeetCode hot100 第4题“移动零”&#xff0c;原题编号其实是283&#xff0c;题目描述非常短&#xff1a;给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。举个例子&am…

作者头像 李华