跳转至

设备预测维护

项目背景与目标

工业设备故障停机带来巨大损失:单条产线停机每小时损失可达数十万元,突发故障还可能引发安全事故。传统维护模式(事后维修 + 定期保养)存在"维修过度"与"维修不足"并存的问题。预测性维护(Predictive Maintenance, PdM)通过传感器数据分析,在故障发生前预警并安排维护,最大化设备可用性同时降低维护成本。

本项目目标是构建一个设备预测维护 Agent,通过传感器数据采集、异常检测、故障预测、维护建议,实现从"坏了修"到"预测防"的转变。

需求分析

核心能力: 1. 数据采集:振动、温度、压力、电流、声学等多维传感器数据 2. 异常检测:实时识别偏离正常状态的设备 3. 故障预测:预测剩余使用寿命(RUL)与故障时间窗口 4. 故障诊断:定位故障类型与部位 5. 维护建议:维护时机、内容、备件准备 6. 健康评估:设备健康度评分与趋势

设备类型:旋转机械(电机、泵、风机)、静止设备(换热器、反应釜)、移动设备(AGV、叉车)。

技术选型说明

模块 技术方案 选型理由
数据采集 MQTT + 时序数据库 高频传感器数据接入
异常检测 Isolation Forest + Autoencoder 无监督异常检测
故障预测 LSTM + Survival Analysis 时序预测与寿命估计
故障诊断 1D-CNN + 规则 振动信号诊断
Agent 框架 LangGraph 维护决策流程
LLM Qwen-Max 诊断报告与建议
后端 FastAPI + Flink 实时流处理
数据库 TimescaleDB + InfluxDB 时序数据

架构设计

flowchart TD
    SENSOR[传感器] --> EDGE[边缘网关]
    EDGE --> MQTT[(MQTT)]
    MQTT --> STREAM[Flink 流处理]
    STREAM --> TDB[(时序数据库)]
    STREAM --> ANOM[异常检测]
    ANOM --> AGENT[预测维护 Agent]
    AGENT --> RUL[寿命预测]
    AGENT --> DIAG[故障诊断]
    RUL --> LSTM[LSTM 模型]
    DIAG --> CNN[1D-CNN]
    AGENT --> HEALTH[健康评分]
    AGENT --> MAINT[维护建议]
    MAINT --> LLM[LLM 生成]
    AGENT --> ALERT[告警推送]
    TDB --> TRAIN[模型训练]
    HIST[历史故障] --> TRAIN

关键模块实现思路

模块1:传感器数据采集与特征工程

高频传感器(振动采样可达 kHz)数据量大,需在边缘做特征提取降低传输量。时域特征(均值、方差、峰值、峭度)、频域特征(FFT 频谱、功率谱密度)、时频域特征(小波包能量)多维刻画设备状态。

def extract_features(vibration_signal):
    time_feat = {
        "rms": np.sqrt(np.mean(signal**2)),
        "kurtosis": scipy.stats.kurtosis(signal),
        "crest_factor": np.max(signal) / rms(signal)
    }
    freq_feat = fft_features(signal)
    return {**time_feat, **freq_feat}

特征工程是 PdM 成功关键,需结合设备机理知识选择有效特征。

模块2:异常检测

无监督异常检测适用于缺乏故障标注的场景。双模型策略: - Isolation Forest:基于特征向量检测异常样本 - Autoencoder:重建误差超阈值判定异常,捕捉细微异常

def detect_anomaly(features, if_model, ae_model):
    if_score = if_model.decision_function(features)
    ae_recon = ae_model.predict(features)
    ae_error = np.mean((features - ae_recon)**2)
    return if_score < -0.5 or ae_error > threshold

双模型交叉验证降低误报,异常触发后进入故障预测与诊断。

模块3:故障预测与 RUL 估计

故障预测两类方法: - LSTM 时序预测:基于退化趋势预测未来状态,达到故障阈值的时间即 RUL - 生存分析:基于设备运行时长、工况、历史故障估计剩余寿命分布

def predict_rul(history_features, threshold):
    # LSTM 预测未来特征轨迹
    future = lstm_model.predict(history_features, horizon=100)
    # 找到首次超过故障阈值的时间点
    for t, val in enumerate(future):
        if val > threshold:
            return t  # 剩余寿命
    return horizon  # 预测期内无故障

RUL 输出点估计 + 置信区间,维护决策考虑不确定性。

模块4:故障诊断

故障类型诊断需结合机理与数据。旋转机械常见故障(不平衡、不对中、轴承故障、齿轮磨损)有特征频谱:轴承外圈故障频率 = BPFO,可用包络解调识别。1D-CNN 直接从原始振动信号学习故障模式,结合规则做机理校验。

def diagnose_fault(vibration_signal, rotating_speed):
    spectrum = fft(vibration_signal)
    faults = []
    if has_peak_at(spectrum, bpfo_frequency(rotating_speed)):
        faults.append({"type": "轴承外圈故障", "confidence": 0.85})
    if has_peak_at(spectrum, 1 * rotating_speed):
        faults.append({"type": "不平衡", "confidence": 0.9})
    return faults

模块5:维护建议生成

LLM 综合异常检测、RUL、故障诊断结果生成维护建议:维护时机(立即/计划窗口)、维护内容(更换部件/调整/检查)、备件准备、人员安排、风险评估。

MAINTENANCE_PROMPT = """设备维护建议生成:
设备:{equipment}
当前状态:{health_score}
异常:{anomalies}
故障预测:{diagnosis}
RUL:{rul}
要求:给出维护时机、内容、备件、人员建议"""

核心流程详解

实时监控流程: 1. 传感器数据高频采集 → 边缘特征提取 2. Flink 流处理 → 异常检测实时运行 3. 异常触发 → 故障诊断与 RUL 预测 4. Agent 生成维护建议 → 推送维护团队 5. 健康看板实时更新

维护决策流程: 1. RUL < 警告阈值 → 生成维护工单 2. 评估维护窗口:结合生产计划选最优时机 3. 备件库存检查 → 缺件则提前采购 4. 维护执行 → 记录维护内容与发现 5. 维护后状态评估 → 验证效果 → 模型更新

部署与优化建议

  • 边缘计算:高频数据处理在边缘,降低带宽与延迟
  • 机理融合:纯数据驱动模型结合设备机理知识,提升可解释性
  • 标注积累:每次故障与维护记录回流为标注数据
  • 工况分群:不同工况下设备状态基准不同,需分群建模
  • 告警分级:避免告警风暴,按紧急度分级推送
  • 备件联动:维护建议联动备件库存系统,自动触发采购

常见问题与解决方案

问题 原因 解决方案
误报多 工况变化误判异常 工况分群 + 自适应阈值
故障样本少 设备可靠性高 数据增强 + 迁移学习
RUL 不准 退化规律复杂 多模型集成 + 置信区间
传感器故障 数据失真 数据质量校验 + 冗余传感器

扩展方向

  • 数字孪生:设备虚拟镜像仿真维护方案
  • AR 辅助维护:增强现实指导现场维修
  • 备件预测:基于 RUL 预测备件需求
  • 能效优化:维护决策兼顾能耗优化