2. 基于故障录波的过流波形特征提取与初步判读

录波数据的三条证据链

故障录波是过流事件发生瞬间唯一能还原“电—磁—控制”同步过程的原始证据。判读时不要只盯住某一相电流的峰值,而要把三相输出电流、直流母线电流和门极驱动信号放在同一时间轴上对齐,看它们是否在同一时刻、以同一因果顺序发生变化。真实过流与传感器干扰的差别,恰恰体现在这三条证据链是否“自洽”。

下面这张图给出本节的核心判读框架:以触发时刻 t₀ 为基准,把录波窗口划分为触发前、触发瞬间和封锁后三段,并标出真实过流与传感器干扰在三条通道上的典型差异。

触发前(稳态/异常孕育) t₀ 触发 封锁后(保护动作后) t t₀ 三相输出电流 Iu/Iv/Iw 真实过流:三相同步陡升,峰值远超阈值 传感器干扰:仅单相窄毛刺,其余两相平稳 直流母线电流 Idc 真实过流:母线电流同步抬升(能量真实流动) 传感器干扰:母线电流无对应变化 门极驱动信号(上桥 PWM) 真实过流:t₀ 后立即封锁,PWM 消失 传感器干扰:PWM 可能短暂封锁后恢复,或未封锁 判读结论 三通道同步变化 → 真实过流 仅电流通道异常、母线/门极无响应 → 传感器干扰误触发 需结合零漂/增益校验进一步确认 真实过流特征 传感器干扰特征

录波文件的关键通道与提取要点

城轨牵引逆变器录波通常以固定采样率(常见 5~20 kHz)记录多路模拟量与数字量。判读前先确认三件事:采样率是否足以捕捉过流上升沿(至少每周期 20 点以上)、各通道是否同一时基、门极信号是原始 PWM 还是经过状态压缩的开关量。若门极通道只有“封锁/未封锁”两态,则重点看封锁时刻与电流峰值时刻的先后关系。

通道提取特征真实过流表现传感器干扰表现
三相输出电流峰值、上升沿斜率、三相一致性三相同步陡升,峰值超阈值单相窄毛刺,其余相平稳
直流母线电流与输出电流的相位/幅值对应同步抬升,能量守恒可验证无明显对应变化
门极驱动封锁时刻、PWM 是否消失t₀ 后立即封锁可能未封锁或短暂封锁后恢复
母线电压过流瞬间是否跌落大电流导致电压暂降基本无跌落

用 Python 做特征提取与初步判读

下面给出一个可直接运行的脚本,读取录波 CSV(列名:t, iu, iv, iw, idc, gate, udc),自动定位触发点、计算三相峰值与一致性、母线电流相关性,并输出初步判读结论。示例数据由脚本内置生成,便于先跑通流程再替换为真实录波。

import numpy as np
import pandas as pd

# ---------- 1. 构造示例录波(真实使用时替换为 pd.read_csv("rec.csv")) ----------
fs = 10000                      # 采样率 10 kHz
t = np.arange(0, 0.2, 1/fs)
t0 = 0.10                       # 触发时刻
f = 50.0

def make_case(kind):
    iu = 200*np.sin(2*np.pi*f*t)
    iv = 200*np.sin(2*np.pi*f*t - 2*np.pi/3)
    iw = 200*np.sin(2*np.pi*f*t + 2*np.pi/3)
    idc = 0.05*(iu + iv + iw) + 5
    gate = (np.sin(2*np.pi*500*t) > 0).astype(float)
    udc = np.full_like(t, 1500.0)
    if kind == "real":
        mask = t >= t0
        iu[mask] += 900*np.exp(-(t[mask]-t0)/0.004)
        iv[mask] += 900*np.exp(-(t[mask]-t0)/0.004)
        iw[mask] += 900*np.exp(-(t[mask]-t0)/0.004)
        idc[mask] += 120*np.exp(-(t[mask]-t0)/0.004)
        gate[mask] = 0.0
        udc[mask] -= 80*np.exp(-(t[mask]-t0)/0.006)
    else:  # sensor glitch
        idx = np.argmin(np.abs(t - t0))
        iu[idx:idx+3] += 1200
    return pd.DataFrame({"t": t, "iu": iu, "iv": iv, "iw": iw,
                         "idc": idc, "gate": gate, "udc": udc})

# ---------- 2. 特征提取 ----------
def extract(df, thr=600.0):
    pre = df[df.t < t0]
    post = df[df.t >= t0]
    res = {}
    for ph in ["iu", "iv", "iw"]:
        res[f"{ph}_peak"] = float(post[ph].abs().max())
    res["three_phase_peak"] = max(res["iu_peak"], res["iv_peak"], res["iw_peak"])
    res["phase_spread"] = res["three_phase_peak"] - min(res["iu_peak"], res["iv_peak"], res["iw_peak"])
    # 母线电流与三相电流之和的相关性(真实过流应强相关)
    isum = post["iu"] + post["iv"] + post["iw"]
    res["idc_corr"] = float(np.corrcoef(isum, post["idc"])[0, 1])
    # 门极封锁:t0 后是否持续为 0
    res["gate_blocked"] = bool((post["gate"] < 0.5).all())
    # 母线电压跌落
    res["udc_drop"] = float(pre["udc"].mean() - post["udc"].min())
    res["over_thr"] = res["three_phase_peak"] > thr
    return res

# ---------- 3. 判读规则 ----------
def judge(r):
    if not r["over_thr"]:
        return "未超过阈值,非过流事件"
    if r["phase_spread"] > 400 and r["idc_corr"] < 0.3:
        return "疑似传感器干扰误触发:单相异常、母线无对应"
    if r["gate_blocked"] and r["idc_corr"] > 0.7 and r["udc_drop"] > 30:
        return "真实过流:三通道自洽,保护正确动作"
    return "证据不足,需补充零漂/增益校验"

for kind in ["real", "glitch"]:
    df = make_case(kind)
    r = extract(df)
    print(f"--- {kind} ---")
    for k, v in r.items():
        print(f"  {k}: {v}")
    print("  结论:", judge(r))

运行后可以看到:real 案例三相峰值接近、idc_corr 高、gate_blocked 为真、udc_drop 明显;glitch 案例仅 iu_peak 异常、phase_spread 大、idc_corr 低。判读规则据此给出不同结论。实际使用时把 make_case 替换为读取真实录波即可,阈值 thr 按该车型过流保护定值填写。

判读时先看“三相是否同步”,再看“母线是否跟随”,最后看“门极是否封锁”。三者自洽才可判为真实过流;任一环节缺失,都应先怀疑传感器或录波通道本身,再下结论。
录波通道的采样率、量程和时基必须与保护装置一致。若门极信号为压缩开关量,不能据此判断 PWM 占空比,只能判断封锁时刻。示例中的数值均为教学假设,不代表任何实际车型的实测结果。