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-phm、eneros-phm-score、eneros-phm-rul、eneros-phm-alert、eneros-phm-advisor 五个新 crate 实现。
关键数据
| 指标 | 数值 | 说明 |
|---|---|---|
| 健康评分准确率 | 93.7% | 与人工评估对比 |
| RUL 预测误差 | ±8.5% | 中位寿命场景 |
| 预警提前量 | 72 小时 | 故障前中位数 |
| 误报率 | 1.8% | 月度统计 |
| 新增 Crate | 6 | PHM 相关 |
| 新增测试 | 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
健康等级划分
| 等级 | 评分范围 | 状态 | 建议动作 |
|---|---|---|---|
| Excellent | 90-100 | 优秀 | 无需干预 |
| Good | 75-89 | 良好 | 常规巡检 |
| Fair | 60-74 | 一般 | 计划检修 |
| Poor | 40-59 | 较差 | 限期检修 |
| Critical | 0-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-rulLSTM 模型在数据缺失时崩溃的问题(#3309) - 修复
eneros-phm-alert预警去重窗口跨天时失效的问题(#3315) - 修复
eneros-phm-advisorLLM 生成建议时未校验备件库存的问题(#3320) - 修复
eneros-phm设备画像在拓扑变更后电气位置未更新的问题(#3325)
破坏性变更
HealthScorer::score:返回类型新增grade字段RulPredictor::predict:参数从EquipmentId改为&PredictTargetAlertLevel:枚举值Emergency改为Critical
升级指南
- 更新
Cargo.toml中的eneros依赖至0.33.0 - 运行
eneros phm init初始化设备画像数据库 - 导入设备历史运维数据至 PHM 系统
- 在
eneros.toml中配置预警通知渠道
致谢
感谢 28 位贡献者提交的 410+ 个 commit,以及电网运维专家提供的领域知识支持。