2. 基于历史故障记录的过流发生时段与负载关联分析

把“跳机时刻”还原成“工况时刻”

过流故障记录本身只给出时间戳、故障代码和动作值,单看这些数据无法判断诱因。分析的关键是把每条过流记录与同一时间窗内的负载数据对齐,看跳机前数秒到数十秒内电流、频率、转矩、给定信号的变化形态,再按形态归类到启动冲击、负载突变、堵转、加减速过流等工况。下面以一台矿用变频器(示例:额定 315 kW,驱动带式输送机电机)连续 30 天的记录为对象,说明提取、对齐、归类、排序的完整做法。

一、记录提取与字段约定

从变频器事件记录中导出过流类事件(示例代码 OC-1 加速过流、OC-2 恒速过流、OC-3 减速过流、OC-S 短路型过流),同时导出同一时段的运行数据。为保证后续可对齐,两类数据必须使用同一时钟源,时间戳统一到秒,并明确电流参照:本文所有电流均为变频器输出侧三相有效值,以电机额定电流 Ie 为基准的标幺值表示(I/Ie),过流动作阈值示例取 180% Ie。

数据源关键字段采样/记录方式用途
故障记录时间戳、故障代码、动作时输出电流、输出频率、直流母线电压事件触发,秒级确定跳机时刻与动作值
运行趋势时间戳、输出电流、输出频率、转矩给定、运行/停止状态、外部联锁信号1 s 周期录波还原跳机前工况形态
工况台账班次、给煤机启停、输送机启停、清煤/检修记录人工登记交叉验证负载突变来源

二、时间窗对齐与形态判据

对每条过流记录取跳机前 T-30 s 至跳机时刻 T 的窗口,计算三个特征量:电流上升斜率(跳机前 5 s 内 dI/dt)、频率变化方向(升频/恒频/降频)、电流峰值与持续时间。据此建立判据表,把记录归入四类工况。判据中的数值为示例阈值,实际使用时应按本机电机参数与工艺节拍标定。

工况类别频率特征电流特征典型持续时间关联信号
启动冲击0→低频爬升,处于加速段峰值 ≥180% Ie,斜率大<3 s启动指令刚发出
负载突变恒频或轻微降频由 60%~90% Ie 阶跃至 ≥180% Ie1~5 s给煤机加量、落煤点冲击
堵转频率被压住,转速接近 0持续 ≥150% Ie 且不回落>5 s 后跳机输送带卡阻、滚筒抱死
加减速过流加速或减速过程中120%~180% Ie 波动上升数秒加减速时间设置偏短
过流记录 × 负载趋势:时间窗对齐与形态归类 T-30 s T-5 s T(跳机) OC 动作 输出电流 I/Ie 100% 180% 阈值 阶跃上升 输出频率 / 运行状态 恒频运行(未处于加减速段) 形态:恒频 + 电流阶跃 → 归入「负载突变」 交叉验证:给煤机加量 台账记录时间吻合 诱因排序:负载突变居首 优先核查给煤量与落煤冲击

三、统计归类与诱因排序

把 30 天内全部过流记录逐条按上表归类,统计各类次数、占比与平均动作电流,再结合工况台账核对时间吻合度。示例统计结果如下(教学示例数据,非实测):

工况类别次数占比平均动作电流台账吻合排序
负载突变1145.8%196% Ie9/11 与给煤机加量时间吻合1
启动冲击625.0%188% Ie6/6 发生在启动后 2 s 内2
堵转416.7%172% Ie(持续型)3/4 有卡阻或清煤记录3
加减速过流312.5%165% Ie加速时间设为 8 s,偏短4

排序依据不是单纯次数,而是“次数 × 时间吻合度 × 可干预性”。负载突变次数最多且与给煤节拍高度吻合,属于可通过调整给煤量、加装落煤缓冲或优化转矩限幅来干预的诱因,因此列为第一优先;启动冲击可通过延长启动加速时间、启用启动转矩提升曲线缓解;堵转需结合机械检查;加减速过流则先核对加减速时间参数。

四、分析脚本(可运行示例)

下面用 Python 对导出的两份 CSV 做窗口对齐与归类,输出统计表。字段名与上文表格一致,时间戳为 YYYY-MM-DD HH:MM:SS。脚本只依赖标准库,可直接运行。

import csv
from datetime import datetime, timedelta

def load(path):
    rows = []
    with open(path, newline='', encoding='utf-8') as f:
        for r in csv.DictReader(f):
            r['ts'] = datetime.strptime(r['ts'], '%Y-%m-%d %H:%M:%S')
            for k in ('I_pu', 'freq', 'torque_ref'):
                if k in r and r[k] != '':
                    r[k] = float(r[k])
            rows.append(r)
    return rows

faults = load('oc_events.csv')      # ts, code, I_pu, freq
trend  = load('run_trend.csv')      # ts, I_pu, freq, torque_ref, run

def window(ts, sec=30):
    lo = ts - timedelta(seconds=sec)
    return [r for r in trend if lo <= r['ts'] <= ts]

def classify(ev):
    w = window(ev['ts'])
    if len(w) < 5:
        return '数据不足'
    i0, i1 = w[0]['I_pu'], w[-1]['I_pu']
    f0, f1 = w[0]['freq'], w[-1]['freq']
    slope = (i1 - i0) / max(len(w) - 1, 1)
    if f0 < 5 and f1 > f0:                 # 启动加速段
        return '启动冲击'
    if abs(f1 - f0) < 2 and slope > 8:     # 恒频电流阶跃
        return '负载突变'
    if i1 >= 1.5 and abs(f1 - f0) < 2 and slope < 2:
        return '堵转'
    if abs(f1 - f0) >= 2:
        return '加减速过流'
    return '待人工复核'

stat = {}
for ev in faults:
    c = classify(ev)
    s = stat.setdefault(c, {'n': 0, 'sumI': 0.0})
    s['n'] += 1
    s['sumI'] += ev['I_pu']

total = sum(v['n'] for v in stat.values())
for c, v in sorted(stat.items(), key=lambda x: -x[1]['n']):
    print(f"{c}: {v['n']} 次, 占比 {v['n']/total:.1%}, 平均动作电流 {v['sumI']/v['n']:.2f} pu")

运行后输出各类次数与平均动作电流,与上文统计表对照即可。若某类“待人工复核”占比偏高,说明窗口内数据缺失或采样周期不一致,应先检查录波是否连续,而不是直接下结论。

对齐前务必确认故障记录与趋势数据来自同一时钟。若变频器与上位机存在时差,可选取一次已知的启停动作作为基准点,把两条时间轴平移对齐后再统计,否则“启动冲击”会被误判为“负载突变”。
归类结果只是诱因排序依据,不等于故障根因结论。负载突变排第一,仍需现场核实给煤量、落煤点与输送带张紧状态;堵转类记录必须配合机械检查,不能仅凭电流曲线判定滚筒抱死。