跳到主内容

v0.33.0 版本说明

EnerOS v0.33.0

发布日期:2026-02-29
版本代号:Predict
Git Tag:v0.33.0
支持状态:稳定(Stable)
Crate 总数:66(新增 6 个)
测试用例数:8600+(新增 700)

概述

EnerOS v0.33.0「Predict」是预测性维护专题版本,将电力设备的运维模式从「故障后维修」转向「预测性维护(Predictive Maintenance)」。本版本基于 v0.32.0 的 ML 运行时,构建了完整的设备健康管理(PHM)体系,覆盖设备健康评分、剩余寿命预测、故障预警、维护建议四大核心能力。

Predict 版本的核心设计哲学是「数据驱动 + 物理模型融合」——纯数据驱动的 ML 模型在设备工况迁移时容易失效,纯物理模型则受限于参数精度。EnerOS 采用混合架构:ML 模型负责从历史数据中学习退化模式,物理模型负责提供边界约束与机理校验,两者通过内核 ConstraintEngine 融合输出最终的健康评估。

本版本引入五大核心能力:设备健康评分剩余寿命预测(RUL)故障预警引擎维护建议生成设备画像系统。所有能力均通过 eneros-phmeneros-phm-scoreeneros-phm-ruleneros-phm-alerteneros-phm-advisor 五个新 crate 实现。

关键数据

指标数值说明
健康评分准确率93.7%与人工评估对比
RUL 预测误差±8.5%中位寿命场景
预警提前量72 小时故障前中位数
误报率1.8%月度统计
新增 Crate6PHM 相关
新增测试700+含 100 个端到端

新特性

1. 设备健康评分

新增 eneros-phm-score crate,为每台设备计算 0-100 的健康评分,综合反映设备的当前状态与退化程度。评分基于多源数据:实时传感器数据、历史运行记录、运维工单、环境因素。

评分维度

维度权重数据来源说明
电气性能25%PMU/RTU电压偏差、谐波、不平衡
热力状态20%温度传感器绕组温度、油温
机械状态20%振动传感器振动幅值、频谱
绝缘状态15%在线监测绝缘电阻、介质损耗
运行历史10%时序数据库累计运行小时、启停次数
环境因素10%气象数据温度、湿度、污秽

健康评分 API

use eneros_phm_score::{HealthScorer, ScoreConfig, EquipmentId};

let scorer = HealthScorer::new(&ctx)
    .config(ScoreConfig {
        update_interval: Duration::minutes(5),
        history_window: Duration::days(90),
        weights: ScoreWeights::default(),
    })
    .build().await?;

// 计算单台设备健康评分
let score = scorer.score(EquipmentId::from("TFR-001")).await?;

println!("设备 TFR-001 健康评分: {:.1}", score.value);
println!("健康等级: {:?}", score.grade);
println!("各维度得分:");
for (dim, val) in &score.dimensions {
    println!("  {}: {:.1}", dim, val);
}
// 输出示例:
// 设备 TFR-001 健康评分: 78.3
// 健康等级: Good
// 各维度得分:
//   electrical: 85.2
//   thermal: 72.1
//   mechanical: 80.5
//   insulation: 75.0
//   history: 68.3
//   environment: 88.0

健康等级划分

等级评分范围状态建议动作
Excellent90-100优秀无需干预
Good75-89良好常规巡检
Fair60-74一般计划检修
Poor40-59较差限期检修
Critical0-39危险立即停机

评分趋势追踪

// 获取设备健康评分趋势
let trend = scorer.trend(EquipmentId::from("TFR-001"))
    .range(now() - Duration::days(30), now())
    .fetch().await?;

// 退化速率分析
let degradation_rate = trend.degradation_rate();  // -0.15 分/天
let projected_fail = trend.project_crossing(40.0); // 预计 256 天后降至 40 分

2. 剩余寿命预测(RUL)

新增 eneros-phm-rul crate,基于设备退化轨迹预测剩余可用寿命。支持多种 RUL 算法,从简单的线性外推到深度学习的序列预测。

RUL 算法矩阵

算法适用设备精度数据需求
线性外推变压器±15%历史趋势
Wiener 过程断路器±10%退化轨迹
LSTM通用±8.5%多维时序
Transformer复杂设备±7.2%大量历史
物理融合旋转电机±6.0%机理模型

RUL 预测 API

use eneros_phm_rul::{RulPredictor, RulConfig, Algorithm};

let predictor = RulPredictor::new(&ctx)
    .algorithm(Algorithm::Lstm {
        model: "rul-lstm-v3",
        sequence_length: 168,  // 7 天历史
    })
    .config(RulConfig {
        confidence_level: 0.9,
        failure_threshold: 40.0,  // 健康评分低于 40 视为失效
        update_interval: Duration::hours(1),
    })
    .build().await?;

// 预测剩余寿命
let rul = predictor.predict(EquipmentId::from("TFR-001")).await?;

println!("剩余寿命预测:");
println!("  点估计: {:.0} 天", rul.point_estimate);
println!("  90% 置信区间: [{:.0}, {:.0}] 天", rul.lower, rul.upper);
println!("  退化模型: {:?}", rul.model_type);

多设备 RUL 汇总

// 批量预测变电站内所有设备
let station_rul = predictor.predict_station(StationId::from("SS-110-01")).await?;

// 按紧急程度排序
let sorted = station_rul.sorted_by_urgency();
for item in &sorted {
    println!("{}: RUL = {:.0} 天 ({}), 评分 = {:.1}",
        item.equipment_id, item.rul, item.urgency, item.health_score);
}

3. 故障预警引擎

新增 eneros-phm-alert crate,基于健康评分与 RUL 预测生成多级故障预警。

预警级别

级别触发条件响应时限通知方式
一级(紧急)评分 < 40 或 RUL < 7 天立即短信+电话+工单
二级(重要)评分 < 60 或 RUL < 30 天24 小时短信+工单
三级(一般)评分 < 75 或 RUL < 90 天7 天工单
四级(提示)退化速率异常加快30 天系统通知

预警引擎

use eneros_phm_alert::{AlertEngine, AlertConfig};

let engine = AlertEngine::new(&ctx)
    .config(AlertConfig {
        check_interval: Duration::minutes(5),
        dedup_window: Duration::hours(1),
        escalation: true,  // 未处理自动升级
    })
    .build().await?;

// 启动预警监控
engine.start().await?;

// 订阅预警事件
let mut alerts = engine.subscribe();
while let Some(alert) = alerts.next().await {
    match alert.level {
        AlertLevel::Critical => {
            sms::send(&on_call_team, &alert.message).await?;
            work_order::create_urgent(alert).await?;
        }
        AlertLevel::High => {
            work_order::create(alert).await?;
        }
        _ => { log::info!("预警: {:?}", alert); }
    }
}

4. 维护建议生成

新增 eneros-phm-advisor crate,结合 LLM 与规则引擎生成可执行的维护建议。

建议生成流程

use eneros_phm_advisor::{MaintenanceAdvisor, AdviceRequest};

let advisor = MaintenanceAdvisor::new(&ctx)
    .with_llm(client.clone())
    .with_rules(&maintenance_rules)
    .with_history(&work_order_db)
    .build().await?;

let request = AdviceRequest::new(EquipmentId::from("TFR-001"))
    .include_rul(true)
    .include_history(true)
    .include_similar_cases(true);

let advice = advisor.advise(request).await?;

println!("维护建议: {}", advice.summary);
println!("建议措施:");
for action in &advice.actions {
    println!("  - {} (优先级: {:?}, 预计耗时: {:?})",
        action.description, action.priority, action.estimated_duration);
}
println!("所需备件: {:?}", advice.required_parts);
println!("预估费用: {:.0} 元", advice.estimated_cost);

建议类型

建议类型触发条件示例
立即停机评分 < 40”绕组温度超限,建议立即停机检查”
限期检修评分 40-60”绝缘介质损耗上升,建议 7 日内检修”
计划检修评分 60-75”振动幅值增大,建议下月计划检修”
状态监测退化加快”增加温度监测频次至 15 分钟”
参数调整性能偏离”调整分接头位置至第 5 档”

5. 设备画像系统

新增 eneros-phm crate(PHM 核心),为每台设备建立完整的数字画像,整合静态参数、动态状态、运维历史、健康评估。

设备画像结构

use eneros_phm::{EquipmentProfile, EquipmentType};

let profile = phm.get_profile(EquipmentId::from("TFR-001")).await?;

// 静态信息
println!("设备类型: {:?}", profile.equipment_type);  // Transformer
println!("型号: {}", profile.model);                  // SZ-31500/110
println!("投运日期: {}", profile.commissioning_date);
println!("额定容量: {} MVA", profile.rated_capacity);

// 动态状态
println!("当前负荷率: {:.1}%", profile.current_load_rate);
println!("累计运行: {} 小时", profile.total_running_hours);
println!("启停次数: {}", profile.start_stop_count);

// 健康评估
println!("健康评分: {:.1}", profile.health_score.value);
println!("剩余寿命: {:.0} 天", profile.rul.point_estimate);
println!("预警级别: {:?}", profile.alert_level);

设备对比分析

// 同型号设备横向对比
let comparison = phm.compare(EquipmentType::Transformer)
    .model("SZ-31500/110")
    .metric(HealthMetric::InsulationLoss)
    .fetch().await?;

// 输出:所有同型号变压器的绝缘损耗对比,识别异常设备

改进

  • 时序引擎:新增降采样聚合,长期趋势查询速度提升 5 倍
  • ML 运行时:模型推理支持动态批处理,吞吐提升 40%
  • 告警系统:告警去重逻辑优化,减少 70% 重复告警
  • 设备模型eneros-equipment 新增 200+ 设备型号的参数模板
  • 可观测性:PHM 链路接入 Grafana 仪表盘模板

Bug 修复

  • 修复 eneros-phm-score 在设备投运初期评分异常偏低的问题(#3303)
  • 修复 eneros-phm-rul LSTM 模型在数据缺失时崩溃的问题(#3309)
  • 修复 eneros-phm-alert 预警去重窗口跨天时失效的问题(#3315)
  • 修复 eneros-phm-advisor LLM 生成建议时未校验备件库存的问题(#3320)
  • 修复 eneros-phm 设备画像在拓扑变更后电气位置未更新的问题(#3325)

破坏性变更

  • HealthScorer::score:返回类型新增 grade 字段
  • RulPredictor::predict:参数从 EquipmentId 改为 &PredictTarget
  • AlertLevel:枚举值 Emergency 改为 Critical

升级指南

  1. 更新 Cargo.toml 中的 eneros 依赖至 0.33.0
  2. 运行 eneros phm init 初始化设备画像数据库
  3. 导入设备历史运维数据至 PHM 系统
  4. eneros.toml 中配置预警通知渠道

致谢

感谢 28 位贡献者提交的 410+ 个 commit,以及电网运维专家提供的领域知识支持。