Explorar el Código

提交 backend 和 cache 数据

18922397810 hace 2 semanas
padre
commit
31b229a95e
Se han modificado 29 ficheros con 3480877 adiciones y 13 borrados
  1. 304 0
      backend/scan_pks_clean_evolution.py
  2. 47 13
      backend/scan_pks_fault_candidates.py
  3. 315 0
      backend/scan_pks_pressure_v2.py
  4. BIN
      cache/.DS_Store
  5. 1710721 0
      cache/pks_levels.csv
  6. 1710721 0
      cache/pks_minute_levels.csv
  7. BIN
      cache/pks_scanner/.DS_Store
  8. 10 0
      cache/pks_scanner/evolution_hourly/报警阈值配置.csv
  9. 27 0
      cache/pks_scanner/evolution_hourly/振动异常段.csv
  10. 9817 0
      cache/pks_scanner/evolution_hourly/润滑油压力小时等级.csv
  11. 84 0
      cache/pks_scanner/evolution_hourly/润滑油压力小时阶段段.csv
  12. 55 0
      cache/pks_scanner/evolution_hourly/润滑油压力演化周期.csv
  13. 10 0
      cache/pks_scanner/evolution_pct_confirm_verify/报警阈值配置.csv
  14. 2 0
      cache/pks_scanner/evolution_pct_confirm_verify/振动异常段.csv
  15. 247 0
      cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力小时等级.csv
  16. 4 0
      cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力小时阶段段.csv
  17. 4 0
      cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力演化周期.csv
  18. 10 0
      cache/pks_scanner/evolution_pct_confirmed/报警阈值配置.csv
  19. 27 0
      cache/pks_scanner/evolution_pct_confirmed/振动异常段.csv
  20. 9817 0
      cache/pks_scanner/evolution_pct_confirmed/润滑油压力小时等级.csv
  21. 23 0
      cache/pks_scanner/evolution_pct_confirmed/润滑油压力小时阶段段.csv
  22. 55 0
      cache/pks_scanner/evolution_pct_confirmed/润滑油压力演化周期.csv
  23. 10 0
      cache/pks_scanner/evolution_pct_verify/报警阈值配置.csv
  24. 27 0
      cache/pks_scanner/evolution_pct_verify/振动异常段.csv
  25. 9817 0
      cache/pks_scanner/evolution_pct_verify/润滑油压力小时等级.csv
  26. 65 0
      cache/pks_scanner/evolution_pct_verify/润滑油压力小时阶段段.csv
  27. 55 0
      cache/pks_scanner/evolution_pct_verify/润滑油压力演化周期.csv
  28. 162 0
      cache/pks_scanner/full/fault_candidates.csv
  29. 28441 0
      cache/pks_scanner/full/hourly_summary.csv

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 304 - 0
backend/scan_pks_clean_evolution.py


+ 47 - 13
backend/scan_pks_fault_candidates.py

@@ -26,6 +26,8 @@ BATCH_TO_UNIT = {30: "7号机", 31: "8号机", 32: "9号机"}
 DEFAULT_COLUMNS = ("YSJ_5", "YSJ_7", "YSJ_8", "YSJ_9", "YSJ_10", "YSJ_11", "YSJ_14", "YSJ_40", "YSJ_41")
 DEFAULT_COLUMNS = ("YSJ_5", "YSJ_7", "YSJ_8", "YSJ_9", "YSJ_10", "YSJ_11", "YSJ_14", "YSJ_40", "YSJ_41")
 EXPECTED_PER_HOUR = 720
 EXPECTED_PER_HOUR = 720
 MIN_COVERAGE = 0.80
 MIN_COVERAGE = 0.80
+MIN_HISTORY_HOURS = 24
+MAX_SCORE = 12.0
 
 
 HOURLY_FIELDS = [
 HOURLY_FIELDS = [
     "batch", "unit", "hour", "samples", "running_samples", "coverage",
     "batch", "unit", "hour", "samples", "running_samples", "coverage",
@@ -34,6 +36,30 @@ HOURLY_FIELDS = [
     "oil_temp_avg", "valve_avg",
     "oil_temp_avg", "valve_avg",
 ]
 ]
 
 
+HOURLY_HEADERS = {
+    "batch": "批次", "unit": "机组", "hour": "小时",
+    "samples": "样本数", "running_samples": "运行样本数", "coverage": "运行覆盖率",
+    "oil_avg": "润滑油压力均值", "oil_min": "润滑油压力最小值", "oil_max": "润滑油压力最大值",
+    "p1_avg": "一级排气压力均值", "p2_avg": "二级排气压力均值", "p3_avg": "三级排气压力均值",
+    "coupling_avg": "联轴器端振动均值", "coupling_max": "联轴器端振动最大值",
+    "chain_avg": "链轮端振动均值", "chain_max": "链轮端振动最大值",
+    "oil_temp_avg": "主油道润滑油温度均值", "valve_avg": "回流调节阀位均值",
+}
+
+CANDIDATE_FIELDS = [
+    "candidate_id", "unit", "batch", "fault_hint", "start_time", "end_time", "peak_time",
+    "score", "confidence", "history_valid_hours", "candidate_duration_hours", "repeat_count",
+    "coverage", "running_samples", "reason",
+]
+
+CANDIDATE_HEADERS = {
+    "candidate_id": "候选段标识", "unit": "机组", "batch": "批次", "fault_hint": "异常方向",
+    "start_time": "开始时间", "end_time": "结束时间", "peak_time": "峰值时间",
+    "score": "异常分数(0-12)", "confidence": "可信度", "history_valid_hours": "历史有效运行小时数",
+    "candidate_duration_hours": "候选持续小时数", "repeat_count": "异常重复次数",
+    "coverage": "最低运行覆盖率", "running_samples": "峰值小时运行样本数", "reason": "触发原因",
+}
+
 SQL = """
 SQL = """
 SELECT
 SELECT
     FROM_UNIXTIME((UNIX_TIMESTAMP(sample_time) DIV 3600) * 3600) AS hour_start,
     FROM_UNIXTIME((UNIX_TIMESTAMP(sample_time) DIV 3600) * 3600) AS hour_start,
@@ -146,13 +172,15 @@ def slope(values):
     return sum((x - xbar) * (y - ybar) for x, y in pairs) / denominator
     return sum((x - xbar) * (y - ybar) for x, y in pairs) / denominator
 
 
 
 
-def add_reason(candidates, row, kind, score, reason):
+def add_reason(candidates, row, kind, score, reason, history_hours):
     candidates.append({
     candidates.append({
         "candidate_id": f"{row['unit']}-{kind}-{row['hour']}",
         "candidate_id": f"{row['unit']}-{kind}-{row['hour']}",
         "unit": row["unit"], "batch": row["batch"], "fault_hint": kind,
         "unit": row["unit"], "batch": row["batch"], "fault_hint": kind,
         "start_time": row["hour"], "end_time": row["hour"],
         "start_time": row["hour"], "end_time": row["hour"],
-        "peak_time": row["hour"], "score": round(score, 3),
-        "coverage": round(row["coverage"], 3),
+        "peak_time": row["hour"], "score": round(min(max(score, 0.0), MAX_SCORE), 3),
+        "confidence": "高" if history_hours >= 336 else "中" if history_hours >= 168 else "低",
+        "history_valid_hours": history_hours, "candidate_duration_hours": 1,
+        "repeat_count": 1, "coverage": round(row["coverage"], 3),
         "running_samples": row["running_samples"], "reason": reason,
         "running_samples": row["running_samples"], "reason": reason,
     })
     })
 
 
@@ -169,7 +197,7 @@ def detect(rows, baseline_hours: int):
             if row["coverage"] < MIN_COVERAGE:
             if row["coverage"] < MIN_COVERAGE:
                 continue
                 continue
             prior = [r for r in valid if r["hour"] < row["hour"]][-baseline_hours:]
             prior = [r for r in valid if r["hour"] < row["hour"]][-baseline_hours:]
-            if len(prior) < 12:
+            if len(prior) < MIN_HISTORY_HOURS:
                 continue
                 continue
 
 
             oil_center, oil_scale = robust_baseline([r["oil_avg"] for r in prior])
             oil_center, oil_scale = robust_baseline([r["oil_avg"] for r in prior])
@@ -179,7 +207,7 @@ def detect(rows, baseline_hours: int):
                 oil_drop = (oil_center - row["oil_avg"]) / oil_scale
                 oil_drop = (oil_center - row["oil_avg"]) / oil_scale
                 if oil_drop >= 2.5 and oil_slope < 0:
                 if oil_drop >= 2.5 and oil_slope < 0:
                     add_reason(candidates, row, "润滑油压力下降", oil_drop + min(abs(oil_slope) / oil_scale, 5),
                     add_reason(candidates, row, "润滑油压力下降", oil_drop + min(abs(oil_slope) / oil_scale, 5),
-                               f"YSJ_5低于近期基线{oil_drop:.1f}倍稳健尺度,近6个有效小时斜率为{oil_slope:.5f}")
+                               f"YSJ_5低于近期基线{oil_drop:.1f}倍稳健尺度,近6个有效小时斜率为{oil_slope:.5f}", len(prior))
 
 
             for side, avg_key, max_key in (("联轴器端", "coupling_avg", "coupling_max"), ("链轮端", "chain_avg", "chain_max")):
             for side, avg_key, max_key in (("联轴器端", "coupling_avg", "coupling_max"), ("链轮端", "chain_avg", "chain_max")):
                 avg_center, avg_scale = robust_baseline([r[avg_key] for r in prior])
                 avg_center, avg_scale = robust_baseline([r[avg_key] for r in prior])
@@ -191,10 +219,10 @@ def detect(rows, baseline_hours: int):
                 if peak_score >= 4:
                 if peak_score >= 4:
                     kind = "活塞/机械冲击候选" if side == "链轮端" else "机械振动候选"
                     kind = "活塞/机械冲击候选" if side == "链轮端" else "机械振动候选"
                     add_reason(candidates, row, kind, peak_score + max(avg_score, 0),
                     add_reason(candidates, row, kind, peak_score + max(avg_score, 0),
-                               f"{side}峰值{row[max_key]:.3f},高于近期基线{peak_score:.1f}倍稳健尺度;均值偏离{avg_score:.1f}")
+                               f"{side}峰值{row[max_key]:.3f},高于近期基线{peak_score:.1f}倍稳健尺度;均值偏离{avg_score:.1f}", len(prior))
                 elif avg_score >= 3:
                 elif avg_score >= 3:
                     add_reason(candidates, row, "气阀相关振动候选", avg_score,
                     add_reason(candidates, row, "气阀相关振动候选", avg_score,
-                               f"{side}平均振动{row[avg_key]:.3f},高于近期基线{avg_score:.1f}倍稳健尺度")
+                               f"{side}平均振动{row[avg_key]:.3f},高于近期基线{avg_score:.1f}倍稳健尺度", len(prior))
 
 
     return merge_candidates(candidates)
     return merge_candidates(candidates)
 
 
@@ -208,6 +236,13 @@ def merge_candidates(candidates):
             current = datetime.strptime(item["start_time"], "%Y-%m-%d %H:%M:%S")
             current = datetime.strptime(item["start_time"], "%Y-%m-%d %H:%M:%S")
             if current - previous <= timedelta(hours=6):
             if current - previous <= timedelta(hours=6):
                 merged[-1]["end_time"] = item["end_time"]
                 merged[-1]["end_time"] = item["end_time"]
+                merged[-1]["candidate_duration_hours"] = max(
+                    1, int((datetime.strptime(merged[-1]["end_time"], "%Y-%m-%d %H:%M:%S") -
+                            datetime.strptime(merged[-1]["start_time"], "%Y-%m-%d %H:%M:%S")).total_seconds() / 3600) + 1
+                )
+                merged[-1]["repeat_count"] += item["repeat_count"]
+                merged[-1]["coverage"] = min(merged[-1]["coverage"], item["coverage"])
+                merged[-1]["running_samples"] = max(merged[-1]["running_samples"], item["running_samples"])
                 if item["score"] > merged[-1]["score"]:
                 if item["score"] > merged[-1]["score"]:
                     merged[-1]["score"] = item["score"]
                     merged[-1]["score"] = item["score"]
                     merged[-1]["peak_time"] = item["peak_time"]
                     merged[-1]["peak_time"] = item["peak_time"]
@@ -215,14 +250,14 @@ def merge_candidates(candidates):
                     merged[-1]["reason"] += "; " + item["reason"]
                     merged[-1]["reason"] += "; " + item["reason"]
                 continue
                 continue
         merged.append(dict(item))
         merged.append(dict(item))
-    return merged
+    return sorted(merged, key=lambda r: (r["batch"], r["start_time"], r["fault_hint"]))
 
 
 
 
-def write_csv(path: Path, rows, fields):
+def write_csv(path: Path, rows, fields, headers=None):
     path.parent.mkdir(parents=True, exist_ok=True)
     path.parent.mkdir(parents=True, exist_ok=True)
     with path.open("w", encoding="utf-8-sig", newline="") as handle:
     with path.open("w", encoding="utf-8-sig", newline="") as handle:
         writer = csv.DictWriter(handle, fieldnames=fields, extrasaction="ignore")
         writer = csv.DictWriter(handle, fieldnames=fields, extrasaction="ignore")
-        writer.writeheader()
+        writer.writerow(headers or {field: field for field in fields})
         writer.writerows(rows)
         writer.writerows(rows)
 
 
 
 
@@ -249,9 +284,8 @@ def main():
     all_rows.sort(key=lambda r: (r["batch"], r["hour"]))
     all_rows.sort(key=lambda r: (r["batch"], r["hour"]))
     candidates = detect(all_rows, args.baseline_hours)
     candidates = detect(all_rows, args.baseline_hours)
     out = Path(args.output_dir)
     out = Path(args.output_dir)
-    write_csv(out / "hourly_summary.csv", all_rows, HOURLY_FIELDS)
-    write_csv(out / "fault_candidates.csv", candidates,
-              ["candidate_id", "unit", "batch", "fault_hint", "start_time", "end_time", "peak_time", "score", "coverage", "running_samples", "reason"])
+    write_csv(out / "hourly_summary.csv", all_rows, HOURLY_FIELDS, HOURLY_HEADERS)
+    write_csv(out / "fault_candidates.csv", candidates, CANDIDATE_FIELDS, CANDIDATE_HEADERS)
     print(f"小时摘要:{len(all_rows):,} 行")
     print(f"小时摘要:{len(all_rows):,} 行")
     print(f"候选段:{len(candidates):,} 段")
     print(f"候选段:{len(candidates):,} 段")
     print(f"输出:{out / 'hourly_summary.csv'}")
     print(f"输出:{out / 'hourly_summary.csv'}")

+ 315 - 0
backend/scan_pks_pressure_v2.py

@@ -0,0 +1,315 @@
+#!/usr/bin/env python3
+"""Second PKS scanner focused on pressure usefulness.
+
+This is intentionally a new scanner.  It does not modify the first scanner or
+the database.  Pressure alarm limits come from the site_point configuration
+confirmed for YSJ_5..YSJ_9; the output keeps both absolute alarm evidence and
+relative, recent-baseline evidence so they can be reviewed separately.
+"""
+from __future__ import annotations
+
+import argparse
+import csv
+import math
+import os
+import sys
+from collections import defaultdict
+from datetime import datetime, timedelta
+from pathlib import Path
+from statistics import median
+
+import pymysql
+
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+from app.config import settings  # noqa: E402
+
+BATCH_TO_UNIT = {30: "7号机", 31: "8号机", 32: "9号机"}
+EXPECTED_PER_HOUR = 720
+MIN_COVERAGE = 0.80
+MIN_HISTORY_HOURS = 24
+
+# AlarmLimit1..4 in site_point.  The same engineering limits are configured
+# for all three units, while the measured values remain unit-specific.
+PRESSURE_LIMITS = {
+    "oil": {"field": "oil", "name": "润滑油压力", "low": 0.34, "low_low": 0.31, "high": 0.68, "high_high": 0.72},
+    "inlet": {"field": "inlet", "name": "进气压力", "low": 0.45, "low_low": 0.40, "high": 0.95, "high_high": 1.00},
+    "p1": {"field": "p1", "name": "一级排气压力", "high": 2.60, "high_high": 2.75},
+    "p2": {"field": "p2", "name": "二级排气压力", "high": 4.90, "high_high": 5.00},
+    "p3": {"field": "p3", "name": "三级排气压力", "high": 6.20, "high_high": 6.30},
+}
+
+PRESSURE_KEYS = ("oil", "inlet", "p1", "p2", "p3")
+EXHAUST_KEYS = ("p1", "p2", "p3")
+
+SQL = """
+SELECT
+    FROM_UNIXTIME((UNIX_TIMESTAMP(sample_time) DIV 3600) * 3600) AS hour_start,
+    COUNT(*) AS samples,
+    SUM(YSJ_41 > 0) AS running_samples,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_5 END) AS oil_avg,
+    MIN(CASE WHEN YSJ_41 > 0 THEN YSJ_5 END) AS oil_min,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_5 END) AS oil_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_6 END) AS inlet_avg,
+    MIN(CASE WHEN YSJ_41 > 0 THEN YSJ_6 END) AS inlet_min,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_6 END) AS inlet_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_7 END) AS p1_avg,
+    MIN(CASE WHEN YSJ_41 > 0 THEN YSJ_7 END) AS p1_min,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_7 END) AS p1_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_8 END) AS p2_avg,
+    MIN(CASE WHEN YSJ_41 > 0 THEN YSJ_8 END) AS p2_min,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_8 END) AS p2_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_9 END) AS p3_avg,
+    MIN(CASE WHEN YSJ_41 > 0 THEN YSJ_9 END) AS p3_min,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_9 END) AS p3_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_10 END) AS coupling_avg,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_10 END) AS coupling_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_11 END) AS chain_avg,
+    MAX(CASE WHEN YSJ_41 > 0 THEN YSJ_11 END) AS chain_max,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_14 END) AS oil_temp_avg,
+    AVG(CASE WHEN YSJ_41 > 0 THEN YSJ_40 END) AS valve_avg,
+    SUM(YSJ_41 > 0 AND YSJ_5 <= 0.34) AS oil_low_count,
+    SUM(YSJ_41 > 0 AND YSJ_5 <= 0.31) AS oil_low_low_count,
+    SUM(YSJ_41 > 0 AND YSJ_5 >= 0.68) AS oil_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_6 <= 0.45) AS inlet_low_count,
+    SUM(YSJ_41 > 0 AND YSJ_6 >= 0.95) AS inlet_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_7 >= 2.60) AS p1_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_7 >= 2.75) AS p1_high_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_8 >= 4.90) AS p2_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_8 >= 5.00) AS p2_high_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_9 >= 6.20) AS p3_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_9 >= 6.30) AS p3_high_high_count,
+    SUM(YSJ_41 > 0 AND YSJ_10 >= 7.1) AS coupling_alarm_count,
+    SUM(YSJ_41 > 0 AND YSJ_11 >= 7.1) AS chain_alarm_count
+FROM pks_long_sample
+WHERE import_batch_id = %s AND sample_time >= %s AND sample_time < %s
+GROUP BY FROM_UNIXTIME((UNIX_TIMESTAMP(sample_time) DIV 3600) * 3600)
+ORDER BY hour_start
+"""
+
+
+def connect():
+    return pymysql.connect(host=settings.db_host, port=settings.db_port, user=settings.db_user,
+                           password=settings.db_password, database=settings.db_name,
+                           charset="utf8mb4", cursorclass=pymysql.cursors.DictCursor,
+                           connect_timeout=settings.db_connect_timeout, read_timeout=600,
+                           write_timeout=60, autocommit=True)
+
+
+def parse_dt(value: str) -> datetime:
+    return datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
+
+
+def chunks(start: datetime, end: datetime, days: int):
+    while start < end:
+        nxt = min(start + timedelta(days=days), end)
+        yield start, nxt
+        start = nxt
+
+
+def number(value):
+    if value is None:
+        return None
+    try:
+        value = float(value)
+    except (TypeError, ValueError):
+        return None
+    return value if math.isfinite(value) else None
+
+
+def fetch_hourly(batch, start, end, chunk_days):
+    rows = []
+    connection = connect()
+    try:
+        with connection.cursor() as cursor:
+            for index, (lo, hi) in enumerate(chunks(start, end, chunk_days), 1):
+                cursor.execute("EXPLAIN " + SQL, (batch, lo, hi))
+                plan = cursor.fetchone()
+                if not plan or plan.get("key") not in ("PRIMARY",):
+                    raise RuntimeError(f"安全检查失败:batch={batch} chunk={lo} EXPLAIN 未使用 PRIMARY: {plan}")
+                cursor.execute(SQL, (batch, lo, hi))
+                for raw in cursor.fetchall():
+                    row = {"batch": batch, "unit": BATCH_TO_UNIT[batch],
+                           "hour": raw["hour_start"].strftime("%Y-%m-%d %H:%M:%S"),
+                           "samples": int(raw["samples"] or 0),
+                           "running_samples": int(raw["running_samples"] or 0)}
+                    row["coverage"] = row["running_samples"] / EXPECTED_PER_HOUR
+                    for key, value in raw.items():
+                        if key not in ("hour_start", "samples", "running_samples"):
+                            row[key] = number(value)
+                    rows.append(row)
+                print(f"batch={batch} chunk={index} {lo}..{hi}: {len(rows):,} total hourly rows")
+    finally:
+        connection.close()
+    return rows
+
+
+def baseline(values):
+    values = [v for v in values if v is not None]
+    if len(values) < 12:
+        return None, None
+    center = median(values)
+    mad = median(abs(v - center) for v in values)
+    return center, max(1.4826 * mad, abs(center) * 0.01, 1e-6)
+
+
+def linear_slope(values):
+    pairs = [(i, v) for i, v in enumerate(values) if v is not None]
+    if len(pairs) < 4:
+        return None
+    xbar = sum(x for x, _ in pairs) / len(pairs)
+    ybar = sum(y for _, y in pairs) / len(pairs)
+    den = sum((x - xbar) ** 2 for x, _ in pairs)
+    return None if not den else sum((x - xbar) * (y - ybar) for x, y in pairs) / den
+
+
+def add_candidate(out, row, kind, score, reason, history):
+    out.append({"candidate_id": f"{row['unit']}-{kind}-{row['hour']}", "unit": row["unit"],
+                "batch": row["batch"], "anomaly_type": kind, "start_time": row["hour"],
+                "end_time": row["hour"], "peak_time": row["hour"],
+                "score": round(min(max(score, 0), 12), 3),
+                "history_valid_hours": history, "coverage": round(row["coverage"], 3),
+                "running_samples": row["running_samples"], "repeat_count": 1,
+                "candidate_duration_hours": 1, "reason": reason})
+
+
+def pressure_context(row, prior):
+    """Describe exhaust-pressure evidence without creating pressure-only events."""
+    changes = []
+    for key in EXHAUST_KEYS:
+        current = row.get(f"{key}_avg")
+        center, scale = baseline([x.get(f"{key}_avg") for x in prior])
+        if current is None or center is None:
+            continue
+        z = (current - center) / scale
+        if abs(z) >= 2.5:
+            direction = "上升" if z > 0 else "下降"
+            changes.append(f"{PRESSURE_LIMITS[key]['name']}{direction}{abs(z):.1f}倍尺度")
+    if len(changes) >= 2:
+        return ";压力联合证据:多级同步变化(" + ",".join(changes) + ")"
+    if changes:
+        return ";压力联合证据:" + changes[0]
+    return ";压力联合证据:排气压力无明显同步异常"
+
+
+def merge_candidates(candidates):
+    """Merge hourly triggers of the same phenomenon into reviewable segments."""
+    candidates.sort(key=lambda x: (x["batch"], x["anomaly_type"], x["start_time"]))
+    merged = []
+    for item in candidates:
+        if merged and item["batch"] == merged[-1]["batch"] and item["anomaly_type"] == merged[-1]["anomaly_type"]:
+            previous = datetime.strptime(merged[-1]["end_time"], "%Y-%m-%d %H:%M:%S")
+            current = datetime.strptime(item["start_time"], "%Y-%m-%d %H:%M:%S")
+            if current - previous <= timedelta(hours=6):
+                merged[-1]["end_time"] = item["end_time"]
+                merged[-1]["candidate_duration_hours"] = int(
+                    (current - datetime.strptime(merged[-1]["start_time"], "%Y-%m-%d %H:%M:%S")).total_seconds() / 3600
+                ) + 1
+                merged[-1]["repeat_count"] += 1
+                merged[-1]["coverage"] = min(merged[-1]["coverage"], item["coverage"])
+                merged[-1]["running_samples"] = max(merged[-1]["running_samples"], item["running_samples"])
+                if item["score"] > merged[-1]["score"]:
+                    merged[-1]["score"] = item["score"]
+                    merged[-1]["peak_time"] = item["peak_time"]
+                if item["reason"] not in merged[-1]["reason"]:
+                    merged[-1]["reason"] += "; " + item["reason"]
+                continue
+        merged.append(dict(item))
+    for item in merged:
+        item["candidate_id"] = f"{item['unit']}-{item['anomaly_type']}-{item['start_time']}"
+    return sorted(merged, key=lambda x: (x["batch"], x["start_time"], x["anomaly_type"]))
+
+
+def detect(rows, baseline_hours):
+    result = []
+    grouped = defaultdict(list)
+    for row in rows:
+        grouped[row["batch"]].append(row)
+    for batch, series in grouped.items():
+        series.sort(key=lambda x: x["hour"])
+        valid = [x for x in series if x["coverage"] >= MIN_COVERAGE]
+        for index, row in enumerate(series):
+            if row["coverage"] < MIN_COVERAGE:
+                continue
+            prior = [x for x in valid if x["hour"] < row["hour"]][-baseline_hours:]
+            if len(prior) < MIN_HISTORY_HOURS:
+                continue
+            history = len(prior)
+
+            oil_center, oil_scale = baseline([x.get("oil_avg") for x in prior])
+            oil = row.get("oil_avg")
+            oil_slope = linear_slope([x.get("oil_avg") for x in prior[-6:]] + [oil])
+            low_ratio = (row.get("oil_low_count") or 0) / max(row["running_samples"], 1)
+            low_low_ratio = (row.get("oil_low_low_count") or 0) / max(row["running_samples"], 1)
+            if low_low_ratio >= 0.05 or low_ratio >= 0.20:
+                add_candidate(result, row, "润滑油压力异常", 5 + 5 * min(low_low_ratio * 4, 1),
+                              f"YSJ_5低报警比例{low_ratio:.1%},低低报警比例{low_low_ratio:.1%}{pressure_context(row, prior)}", history)
+            if oil_center is not None and oil is not None and oil_slope is not None:
+                deviation = (oil_center - oil) / oil_scale
+                if deviation >= 2.5 and oil_slope < 0:
+                    add_candidate(result, row, "润滑油压力异常", deviation + min(abs(oil_slope) / oil_scale, 5),
+                                  f"油压均值{oil:.3f},低于近期基线{deviation:.1f}倍尺度,近6小时斜率{oil_slope:.5f}{pressure_context(row, prior)}", history)
+
+            abnormal_exhaust = []
+            for key in EXHAUST_KEYS:
+                current = row.get(f"{key}_avg")
+                center, scale = baseline([x.get(f"{key}_avg") for x in prior])
+                if current is None or center is None:
+                    continue
+                z = abs(current - center) / scale
+                high_ratio = (row.get(f"{key}_high_count") or 0) / max(row["running_samples"], 1)
+                if z >= 3:
+                    abnormal_exhaust.append((key, current, center, z))
+
+            for side, avg_key, max_key in (("联轴器端", "coupling_avg", "coupling_max"), ("链轮端", "chain_avg", "chain_max")):
+                center, scale = baseline([x.get(avg_key) for x in prior])
+                max_center, max_scale = baseline([x.get(max_key) for x in prior])
+                if center is None or max_center is None or row.get(max_key) is None:
+                    continue
+                avg_z = (row.get(avg_key) - center) / scale if row.get(avg_key) is not None else 0
+                peak_z = (row[max_key] - max_center) / max_scale
+                alarm_ratio = (row.get(f"{('coupling' if side == '联轴器端' else 'chain')}_alarm_count") or 0) / max(row["running_samples"], 1)
+                if alarm_ratio >= 0.01 or peak_z >= 4 or avg_z >= 3:
+                    add_candidate(result, row, "振动异常(压力联合评估)", min(max(peak_z, avg_z, 0) + min(alarm_ratio * 8, 3), 12),
+                                  f"{side}均值偏离{avg_z:.1f},峰值偏离{peak_z:.1f},报警比例{alarm_ratio:.1%}{pressure_context(row, prior)}", history)
+    return merge_candidates(result)
+
+
+def write_csv(path, rows, fields, headers):
+    path.parent.mkdir(parents=True, exist_ok=True)
+    with path.open("w", encoding="utf-8-sig", newline="") as handle:
+        writer = csv.DictWriter(handle, fieldnames=fields, extrasaction="ignore")
+        writer.writerow(headers)
+        writer.writerows(rows)
+
+
+def main():
+    parser = argparse.ArgumentParser(description="只读扫描 PKS 压力与报警特征(第二版)")
+    parser.add_argument("--batch", nargs="+", type=int, choices=sorted(BATCH_TO_UNIT), default=list(BATCH_TO_UNIT))
+    parser.add_argument("--start", default="2025-04-01 00:00:00")
+    parser.add_argument("--end", default="2026-05-01 00:00:00")
+    parser.add_argument("--chunk-days", type=int, default=14)
+    parser.add_argument("--baseline-hours", type=int, default=336)
+    parser.add_argument("--output-dir", default=str(Path(__file__).resolve().parents[1] / "cache" / "pks_scanner" / "v2_pressure"))
+    args = parser.parse_args()
+    start, end = parse_dt(args.start), parse_dt(args.end)
+    if end <= start or args.chunk_days < 1 or args.baseline_hours < MIN_HISTORY_HOURS:
+        parser.error("时间范围或参数无效")
+    print("只读模式:不修改任何数据库数据;第一版程序未使用")
+    rows = []
+    for batch in args.batch:
+        rows.extend(fetch_hourly(batch, start, end, args.chunk_days))
+    rows.sort(key=lambda x: (x["batch"], x["hour"]))
+    candidates = detect(rows, args.baseline_hours)
+    out = Path(args.output_dir)
+    hourly_fields = list(rows[0]) if rows else []
+    candidate_fields = ["candidate_id", "unit", "batch", "anomaly_type", "start_time", "end_time", "peak_time", "score", "history_valid_hours", "candidate_duration_hours", "repeat_count", "coverage", "running_samples", "reason"]
+    hourly_headers = {key: key for key in hourly_fields}
+    write_csv(out / "hourly_pressure_summary.csv", rows, hourly_fields, hourly_headers)
+    write_csv(out / "pressure_fault_candidates.csv", candidates, candidate_fields, {key: key for key in candidate_fields})
+    print(f"小时摘要:{len(rows):,} 行")
+    print(f"候选记录:{len(candidates):,} 条")
+    print(f"输出目录:{out}")
+
+
+if __name__ == "__main__":
+    main()

BIN
cache/.DS_Store


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1710721 - 0
cache/pks_levels.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1710721 - 0
cache/pks_minute_levels.csv


BIN
cache/pks_scanner/.DS_Store


+ 10 - 0
cache/pks_scanner/evolution_hourly/报警阈值配置.csv

@@ -0,0 +1,10 @@
+机组,批次,点位,点位描述,单位,低报警阈值,低低报警阈值,高报警阈值,高高报警阈值,低报警配置,低低报警配置,高报警配置,高高报警配置
+7号机,30,YSJ_5,7#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_10,7#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_11,7#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_5,8#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+8号机,31,YSJ_10,8#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_11,8#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_5,9#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+9号机,32,YSJ_10,9#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_11,9#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 27 - 0
cache/pks_scanner/evolution_hourly/振动异常段.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9817 - 0
cache/pks_scanner/evolution_hourly/润滑油压力小时等级.csv


+ 84 - 0
cache/pks_scanner/evolution_hourly/润滑油压力小时阶段段.csv

@@ -0,0 +1,84 @@
+机组,批次,周期编号,压力阶段,开始小时,结束小时,持续自然小时数,有效运行小时数,周期基线油压,阶段开始小时油压,阶段结束小时油压,阶段最低小时油压,阶段开始相对周期基线变化,阶段结束相对周期基线变化,阶段最大连续下降有效小时数,阶段低报警小时数,阶段低低报警小时数,是否形成确认等级,阶段触发依据
+7号机,30,7号机-P01,正常波动,2025-04-15 21:00:00,2025-04-15 22:00:00,2,2,0.49984,0.11094,0.194051,0.11094,-0.778049,-0.611774,6,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P01,正常波动,2025-04-18 17:00:00,2025-04-18 18:00:00,2,2,0.49984,0.027698,0.277051,0.027698,-0.944587,-0.445721,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P02,正常波动,2025-04-26 10:00:00,2025-04-26 11:00:00,2,2,0.499519,0.055505,0.249831,0.055505,-0.888883,-0.499856,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P02,正常波动,2025-04-28 11:00:00,2025-04-28 12:00:00,2,2,0.499519,0.249746,0.05549,0.05549,-0.500027,-0.888913,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P02,正常波动,2025-04-30 19:00:00,2025-04-30 21:00:00,3,3,0.499519,0.416279,0.388581,0.0,-0.166641,-0.22209,4,2,2,否,周期基线范围内;等级待连续确认,暂记正常波动; 周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P02,正常波动,2025-05-06 11:00:00,2025-05-06 12:00:00,2,2,0.499519,0.248622,0.055275,0.055275,-0.502277,-0.889344,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P04,正常波动,2025-05-29 07:00:00,2025-05-29 08:00:00,2,2,0.496893,0.165199,0.137864,0.137864,-0.667537,-0.722549,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P04,正常波动,2025-05-31 17:00:00,2025-05-31 18:00:00,2,2,0.496893,0.027579,0.275767,0.027579,-0.944497,-0.445018,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P04,正常波动,2025-06-10 21:00:00,2025-06-10 22:00:00,2,2,0.496893,0.109984,0.192419,0.109984,-0.778657,-0.612757,7,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P04,正常波动,2025-06-11 04:00:00,2025-06-11 05:00:00,2,2,0.496893,0.274706,0.027466,0.027466,-0.447153,-0.944724,5,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P05,正常波动,2025-07-21 10:00:00,2025-07-21 11:00:00,2,2,0.493426,0.054805,0.246673,0.054805,-0.888929,-0.500082,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P05,正常波动,2025-07-23 17:00:00,2025-07-23 18:00:00,2,2,0.493426,0.027363,0.273578,0.027363,-0.944545,-0.445555,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P06,正常波动,2025-08-07 17:00:00,2025-08-07 18:00:00,2,2,0.478197,0.026756,0.267711,0.026756,-0.944047,-0.440167,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P08,正常波动,2025-09-09 13:00:00,2025-09-09 14:00:00,2,2,0.492921,0.446947,0.446711,0.446711,-0.093269,-0.093748,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+7号机,30,7号机-P08,轻微,2025-09-09 15:00:00,2025-09-09 18:00:00,4,4,0.492921,0.445898,0.494261,0.445898,-0.095397,0.002717,5,0,0,是,轻微下降状态已连续确认
+7号机,30,7号机-P10,正常波动,2025-10-03 17:00:00,2025-10-03 18:00:00,2,2,0.490481,0.443296,0.442201,0.442201,-0.096201,-0.098433,3,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+7号机,30,7号机-P10,轻微,2025-10-03 19:00:00,2025-10-03 21:00:00,3,3,0.490481,0.442371,0.490864,0.442371,-0.098087,0.000782,1,0,0,是,轻微下降状态已连续确认
+7号机,30,7号机-P10,正常波动,2025-10-05 12:00:00,2025-10-05 14:00:00,3,3,0.490481,0.434894,0.353437,0.0,-0.113332,-0.279406,4,2,2,否,周期基线范围内;等级待连续确认,暂记正常波动; 周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P11,正常波动,2025-11-26 15:00:00,2025-11-26 16:00:00,2,2,0.480555,0.324697,0.0,0.0,-0.324329,-1.0,4,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P11,正常波动,2025-12-02 08:00:00,2025-12-02 10:00:00,3,3,0.480555,0.349487,0.430658,0.0,-0.272743,-0.103831,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动; 周期基线范围内;等级待连续确认,暂记正常波动
+7号机,30,7号机-P12,正常波动,2026-01-13 00:00:00,2026-01-13 01:00:00,2,2,0.48489,0.196266,0.11233,0.11233,-0.595235,-0.76834,5,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P12,正常波动,2026-01-13 03:00:00,2026-01-13 04:00:00,2,2,0.48489,0.084098,0.224344,0.084098,-0.826563,-0.53733,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P14,正常波动,2026-02-10 11:00:00,2026-02-10 11:00:00,1,1,0.485382,0.245623,0.245623,0.245623,-0.49396,-0.49396,1,1,1,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P15,正常波动,2026-02-13 10:00:00,2026-02-13 11:00:00,2,2,0.485989,0.054079,0.243351,0.054079,-0.888725,-0.499267,4,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P17,正常波动,2026-03-22 00:00:00,2026-03-22 01:00:00,2,2,0.484094,0.18789,0.107299,0.107299,-0.611873,-0.77835,12,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+7号机,30,7号机-P18,正常波动,2026-03-29 08:00:00,2026-03-29 10:00:00,3,3,0.483799,0.347222,0.428329,0.0,-0.2823,-0.114655,16,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动; 周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P01,正常波动,2025-04-02 21:00:00,2025-04-02 22:00:00,2,2,0.499549,0.110689,0.193516,0.110689,-0.778422,-0.612619,7,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P01,正常波动,2025-04-08 17:00:00,2025-04-08 18:00:00,2,2,0.499549,0.02768,0.276775,0.02768,-0.944591,-0.44595,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P02,正常波动,2025-04-22 03:00:00,2025-04-22 04:00:00,2,2,0.498137,0.082679,0.220334,0.082679,-0.834024,-0.557684,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P04,正常波动,2025-05-25 16:00:00,2025-05-25 16:00:00,1,1,0.512445,0.0,0.0,0.0,-1.0,-1.0,1,1,1,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P04,正常波动,2025-05-27 15:00:00,2025-05-27 17:00:00,3,3,0.512445,0.339927,0.481116,0.0,-0.336657,-0.061136,5,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动; 周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P06,正常波动,2025-06-26 04:00:00,2025-06-26 05:00:00,2,2,0.480085,0.259662,0.025938,0.025938,-0.459134,-0.945972,15,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P07,正常波动,2025-07-06 18:00:00,2025-07-06 19:00:00,2,2,0.459362,0.206339,0.077204,0.077204,-0.550813,-0.831933,4,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P07,正常波动,2025-07-09 12:00:00,2025-07-09 14:00:00,3,3,0.459362,0.402382,0.327701,0.0,-0.12404,-0.286617,3,2,2,否,周期基线范围内;等级待连续确认,暂记正常波动; 周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,正常波动,2025-09-27 17:00:00,2025-09-27 18:00:00,2,2,0.488687,0.464073,0.463411,0.463411,-0.050368,-0.051722,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-09-27 19:00:00,2025-09-28 02:00:00,8,8,0.488687,0.463072,0.461984,0.461984,-0.052416,-0.054642,10,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-09-28 05:00:00,2025-09-28 06:00:00,2,2,0.488687,0.461865,0.460742,0.460742,-0.054887,-0.057185,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,正常波动,2025-09-28 14:00:00,2025-09-28 14:00:00,1,1,0.488687,0.460956,0.460956,0.460956,-0.056746,-0.056746,3,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,正常波动,2025-09-28 17:00:00,2025-09-28 18:00:00,2,2,0.488687,0.460394,0.459801,0.459801,-0.057895,-0.05911,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-09-28 19:00:00,2025-09-29 08:00:00,14,14,0.488687,0.459226,0.454282,0.454282,-0.060287,-0.070404,10,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-09-29 14:00:00,2025-09-29 15:00:00,2,2,0.488687,0.459052,0.458423,0.458423,-0.060641,-0.061929,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,正常波动,2025-09-29 18:00:00,2025-09-29 19:00:00,2,2,0.488687,0.457061,0.456907,0.456907,-0.064716,-0.065031,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-09-29 20:00:00,2025-09-30 06:00:00,11,11,0.488687,0.456175,0.452239,0.452239,-0.06653,-0.074583,15,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,轻微,2025-09-30 09:00:00,2025-09-30 10:00:00,2,2,0.488687,0.452844,0.454396,0.452844,-0.073346,-0.07017,1,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-09-30 14:00:00,2025-09-30 14:00:00,1,1,0.488687,0.454997,0.454997,0.454997,-0.068941,-0.068941,3,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,正常波动,2025-09-30 17:00:00,2025-09-30 18:00:00,2,2,0.488687,0.453421,0.452412,0.452412,-0.072165,-0.07423,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-09-30 19:00:00,2025-10-01 00:00:00,6,6,0.488687,0.452061,0.450244,0.450167,-0.074948,-0.078666,8,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-10-01 03:00:00,2025-10-01 04:00:00,2,2,0.488687,0.449373,0.448162,0.448162,-0.080449,-0.082926,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-10-01 05:00:00,2025-10-01 09:00:00,5,5,0.488687,0.447589,0.449256,0.447072,-0.084099,-0.080688,6,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-10-01 13:00:00,2025-10-01 14:00:00,2,2,0.488687,0.449179,0.448846,0.448846,-0.080846,-0.081527,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-10-01 15:00:00,2025-10-01 20:00:00,6,6,0.488687,0.448547,0.44645,0.44645,-0.082138,-0.08643,8,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P08,正常波动,2025-10-01 23:00:00,2025-10-02 00:00:00,2,2,0.488687,0.446277,0.445818,0.445818,-0.086784,-0.087722,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P08,轻微,2025-10-02 01:00:00,2025-10-02 09:00:00,9,9,0.488687,0.445546,0.447317,0.444466,-0.088279,-0.084656,6,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P09,正常波动,2025-10-26 05:00:00,2025-10-26 06:00:00,2,2,0.437814,0.415149,0.414109,0.414109,-0.051769,-0.054144,16,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P09,轻微,2025-10-26 07:00:00,2025-10-26 09:00:00,3,3,0.437814,0.414652,0.416837,0.414652,-0.052904,-0.047913,1,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P09,正常波动,2025-10-26 11:00:00,2025-10-26 12:00:00,2,2,0.437814,0.415616,0.414743,0.414743,-0.050702,-0.052696,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P09,轻微,2025-10-26 13:00:00,2025-10-26 20:00:00,8,8,0.437814,0.412564,0.409099,0.406993,-0.057674,-0.065587,9,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P09,正常波动,2025-10-26 22:00:00,2025-10-26 23:00:00,2,2,0.437814,0.40841,0.408256,0.408256,-0.067162,-0.067513,4,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P09,轻微,2025-10-27 00:00:00,2025-10-27 19:00:00,20,20,0.437814,0.407895,0.393667,0.393562,-0.068337,-0.100835,14,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P09,异常,2025-10-27 20:00:00,2025-10-28 09:00:00,14,14,0.437814,0.391916,0.388642,0.38718,-0.104835,-0.112313,10,0,0,是,异常状态已连续确认
+8号机,31,8号机-P09,正常波动,2025-10-28 11:00:00,2025-10-28 14:00:00,4,4,0.437814,0.194225,0.380725,0.042764,-0.556375,-0.130395,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动; 周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P09,异常,2025-10-28 15:00:00,2025-10-29 23:00:00,33,33,0.437814,0.37631,0.348438,0.348438,-0.140481,-0.204142,26,0,0,是,异常状态已连续确认
+8号机,31,8号机-P09,严重异常,2025-10-30 00:00:00,2025-10-30 12:00:00,13,13,0.437814,0.348189,0.339293,0.339293,-0.204711,-0.225029,35,1,0,是,严重异常状态已连续确认; 严重异常状态已连续确认;低压预警
+8号机,31,8号机-P15,正常波动,2026-03-15 10:00:00,2026-03-15 11:00:00,2,2,0.539746,0.054147,0.272893,0.054147,-0.89968,-0.494404,1,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P15,正常波动,2026-03-17 08:00:00,2026-03-17 09:00:00,2,2,0.539746,0.511957,0.51072,0.51072,-0.051485,-0.053778,37,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P15,轻微,2026-03-17 10:00:00,2026-03-18 03:00:00,18,18,0.539746,0.509916,0.486595,0.486595,-0.055267,-0.098474,55,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P15,轻微,2026-03-18 06:00:00,2026-03-18 07:00:00,2,2,0.539746,0.520685,0.533865,0.520685,-0.035315,-0.010896,1,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P15,正常波动,2026-03-21 10:00:00,2026-03-21 11:00:00,2,2,0.539746,0.059843,0.269651,0.059843,-0.889127,-0.500412,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P16,正常波动,2026-04-25 09:00:00,2026-04-25 10:00:00,2,2,0.535008,0.507966,0.507897,0.507897,-0.050545,-0.050674,7,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P16,正常波动,2026-04-26 05:00:00,2026-04-26 07:00:00,3,3,0.535008,0.484926,0.341255,0.0,-0.09361,-0.36215,9,2,2,否,周期基线范围内;等级待连续确认,暂记正常波动; 周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+8号机,31,8号机-P16,正常波动,2026-04-29 00:00:00,2026-04-29 01:00:00,2,2,0.535008,0.507423,0.50615,0.50615,-0.051559,-0.05394,20,0,0,否,周期基线范围内;等级待连续确认,暂记正常波动
+8号机,31,8号机-P16,轻微,2026-04-29 02:00:00,2026-04-30 04:00:00,27,27,0.535008,0.505111,0.480394,0.480394,-0.055882,-0.102081,31,0,0,是,轻微下降状态已连续确认
+8号机,31,8号机-P16,异常,2026-04-30 05:00:00,2026-04-30 14:00:00,10,10,0.535008,0.478981,0.476772,0.474451,-0.104721,-0.10885,22,0,0,是,异常状态已连续确认
+9号机,32,9号机-P01,正常波动,2025-04-09 21:00:00,2025-04-09 22:00:00,2,2,0.512314,0.114048,0.199414,0.114048,-0.777387,-0.610757,5,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P01,正常波动,2025-04-13 00:00:00,2025-04-13 01:00:00,2,2,0.512314,0.198741,0.113457,0.113457,-0.612071,-0.77854,3,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P02,正常波动,2025-06-02 04:00:00,2025-06-02 05:00:00,2,2,0.514716,0.282904,0.028266,0.028266,-0.450369,-0.945083,6,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P08,正常波动,2025-08-10 00:00:00,2025-08-10 01:00:00,2,2,0.508648,0.197256,0.112644,0.112644,-0.612195,-0.778542,11,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P08,正常波动,2025-08-22 17:00:00,2025-08-22 18:00:00,2,2,0.508648,0.028247,0.282377,0.028247,-0.944466,-0.444848,4,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P09,正常波动,2025-09-03 04:00:00,2025-09-03 05:00:00,2,2,0.506451,0.280577,0.027989,0.027989,-0.445994,-0.944736,17,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P11,正常波动,2025-10-09 18:00:00,2025-10-09 19:00:00,2,2,0.504383,0.223597,0.083832,0.083832,-0.556692,-0.833793,5,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P17,正常波动,2026-01-30 05:00:00,2026-01-30 07:00:00,3,3,0.549734,0.52106,0.367699,0.0,-0.05216,-0.331133,6,2,2,否,周期基线范围内;等级待连续确认,暂记正常波动; 周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P20,正常波动,2026-04-09 17:00:00,2026-04-09 18:00:00,2,2,0.558379,0.031009,0.309869,0.031009,-0.944467,-0.445056,2,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动
+9号机,32,9号机-P20,正常波动,2026-04-17 01:00:00,2026-04-17 03:00:00,3,3,0.558379,0.430331,0.46019,0.0,-0.229322,-0.175847,6,2,2,否,周期基线范围内;严重预警;等级待连续确认,暂记正常波动; 周期基线范围内;等级待连续确认,暂记正常波动

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 55 - 0
cache/pks_scanner/evolution_hourly/润滑油压力演化周期.csv


+ 10 - 0
cache/pks_scanner/evolution_pct_confirm_verify/报警阈值配置.csv

@@ -0,0 +1,10 @@
+机组,批次,点位,点位描述,单位,低报警阈值,低低报警阈值,高报警阈值,高高报警阈值,低报警配置,低低报警配置,高报警配置,高高报警配置
+7号机,30,YSJ_5,7#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_10,7#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_11,7#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_5,8#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+8号机,31,YSJ_10,8#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_11,8#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_5,9#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+9号机,32,YSJ_10,9#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_11,9#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 0
cache/pks_scanner/evolution_pct_confirm_verify/振动异常段.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 247 - 0
cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力小时等级.csv


+ 4 - 0
cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力小时阶段段.csv

@@ -0,0 +1,4 @@
+机组,批次,周期编号,压力阶段,开始小时,结束小时,持续自然小时数,有效运行小时数,周期基线油压,正常波动带,阶段开始小时油压,阶段结束小时油压,阶段最低小时油压,阶段开始相对周期基线变化,阶段结束相对周期基线变化,阶段最大连续下降有效小时数,阶段低报警小时数,阶段低低报警小时数,是否形成确认等级,阶段触发依据
+8号机,31,8号机-P01,轻微,2025-10-26 05:00:00,2025-10-27 17:00:00,37,29,0.437814,,0.415149,0.394266,0.394266,-0.051769,-0.099467,16,0,0,否,油压0.415~0.394MPa,最低0.394MPa,连续29个有效运行小时;油压0.415MPa,周期基线0.438MPa,相对周期基线变化-5.2%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P01,异常,2025-10-27 18:00:00,2025-10-29 21:00:00,52,45,0.437814,,0.393562,0.350347,0.350347,-0.101076,-0.199783,24,0,0,是,油压0.394~0.350MPa,最低0.350MPa,连续45个有效运行小时;油压0.394MPa,周期基线0.438MPa,相对周期基线变化-10.1%,相对周期基线下降至少10%并持续下降,或低报警区间连续达到3小时
+8号机,31,8号机-P01,严重异常,2025-10-29 22:00:00,2025-10-30 08:00:00,11,11,0.437814,,0.349426,0.342649,0.342649,-0.201887,-0.217365,35,0,0,是,油压0.349~0.343MPa,最低0.343MPa,连续11个有效运行小时;油压0.349MPa,周期基线0.438MPa,相对周期基线变化-20.2%,相对周期基线下降至少20%并持续下降,或低低报警区间连续达到3小时

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
cache/pks_scanner/evolution_pct_confirm_verify/润滑油压力演化周期.csv


+ 10 - 0
cache/pks_scanner/evolution_pct_confirmed/报警阈值配置.csv

@@ -0,0 +1,10 @@
+机组,批次,点位,点位描述,单位,低报警阈值,低低报警阈值,高报警阈值,高高报警阈值,低报警配置,低低报警配置,高报警配置,高高报警配置
+7号机,30,YSJ_5,7#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_10,7#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_11,7#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_5,8#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+8号机,31,YSJ_10,8#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_11,8#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_5,9#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+9号机,32,YSJ_10,9#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_11,9#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 27 - 0
cache/pks_scanner/evolution_pct_confirmed/振动异常段.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9817 - 0
cache/pks_scanner/evolution_pct_confirmed/润滑油压力小时等级.csv


+ 23 - 0
cache/pks_scanner/evolution_pct_confirmed/润滑油压力小时阶段段.csv

@@ -0,0 +1,23 @@
+机组,批次,周期编号,压力阶段,开始小时,结束小时,持续自然小时数,有效运行小时数,周期基线油压,正常波动带,阶段开始小时油压,阶段结束小时油压,阶段最低小时油压,阶段开始相对周期基线变化,阶段结束相对周期基线变化,阶段最大连续下降有效小时数,阶段低报警小时数,阶段低低报警小时数,是否形成确认等级,阶段触发依据
+7号机,30,7号机-P02,轻微,2025-04-30 19:00:00,2025-04-30 19:00:00,1,1,0.499519,,0.416279,0.416279,0.416279,-0.166641,-0.166641,3,0,0,否,油压0.416~0.416MPa,最低0.416MPa,连续1个有效运行小时;油压0.416MPa,周期基线0.500MPa,相对周期基线变化-16.7%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+7号机,30,7号机-P08,轻微,2025-09-09 13:00:00,2025-09-09 16:00:00,4,4,0.492921,,0.446947,0.463393,0.445898,-0.093269,-0.059905,5,0,0,否,油压0.447~0.463MPa,最低0.446MPa,连续4个有效运行小时;油压0.447MPa,周期基线0.493MPa,相对周期基线变化-9.3%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+7号机,30,7号机-P10,轻微,2025-10-03 17:00:00,2025-10-03 19:00:00,3,3,0.490481,,0.443296,0.442371,0.442201,-0.096201,-0.098087,3,0,0,否,油压0.443~0.442MPa,最低0.442MPa,连续3个有效运行小时;油压0.443MPa,周期基线0.490MPa,相对周期基线变化-9.6%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+7号机,30,7号机-P10,轻微,2025-10-05 12:00:00,2025-10-05 12:00:00,1,1,0.490481,,0.434894,0.434894,0.434894,-0.113332,-0.113332,3,0,0,否,油压0.435~0.435MPa,最低0.435MPa,连续1个有效运行小时;油压0.435MPa,周期基线0.490MPa,相对周期基线变化-11.3%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+7号机,30,7号机-P11,轻微,2025-12-02 10:00:00,2025-12-02 10:00:00,1,1,0.480555,,0.430658,0.430658,0.430658,-0.103831,-0.103831,1,0,0,否,油压0.431~0.431MPa,最低0.431MPa,连续1个有效运行小时;油压0.431MPa,周期基线0.481MPa,相对周期基线变化-10.4%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+7号机,30,7号机-P18,轻微,2026-03-29 10:00:00,2026-03-29 10:00:00,1,1,0.483799,,0.428329,0.428329,0.428329,-0.114655,-0.114655,1,0,0,否,油压0.428~0.428MPa,最低0.428MPa,连续1个有效运行小时;油压0.428MPa,周期基线0.484MPa,相对周期基线变化-11.5%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P04,轻微,2025-05-27 17:00:00,2025-05-27 17:00:00,1,1,0.512445,,0.481116,0.481116,0.481116,-0.061136,-0.061136,1,0,0,否,油压0.481~0.481MPa,最低0.481MPa,连续1个有效运行小时;油压0.481MPa,周期基线0.512MPa,相对周期基线变化-6.1%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P07,轻微,2025-07-09 12:00:00,2025-07-09 12:00:00,1,1,0.459362,,0.402382,0.402382,0.402382,-0.12404,-0.12404,2,0,0,否,油压0.402~0.402MPa,最低0.402MPa,连续1个有效运行小时;油压0.402MPa,周期基线0.459MPa,相对周期基线变化-12.4%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P08,轻微,2025-09-27 17:00:00,2025-09-28 06:00:00,14,10,0.488687,,0.464073,0.460742,0.460742,-0.050368,-0.057185,10,0,0,否,油压0.464~0.461MPa,最低0.461MPa,连续10个有效运行小时;油压0.464MPa,周期基线0.489MPa,相对周期基线变化-5.0%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P08,轻微,2025-09-28 14:00:00,2025-09-29 06:00:00,17,11,0.488687,,0.460956,0.454298,0.454298,-0.056746,-0.070371,10,0,0,否,油压0.461~0.454MPa,最低0.454MPa,连续11个有效运行小时;油压0.461MPa,周期基线0.489MPa,相对周期基线变化-5.7%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P08,轻微,2025-09-29 14:00:00,2025-09-30 06:00:00,17,15,0.488687,,0.459052,0.452239,0.452239,-0.060641,-0.074583,15,0,0,否,油压0.459~0.452MPa,最低0.452MPa,连续15个有效运行小时;油压0.459MPa,周期基线0.489MPa,相对周期基线变化-6.1%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P08,轻微,2025-09-30 14:00:00,2025-10-02 07:00:00,42,25,0.488687,,0.454997,0.444466,0.444466,-0.068941,-0.090488,8,0,0,否,油压0.455~0.444MPa,最低0.444MPa,连续25个有效运行小时;油压0.455MPa,周期基线0.489MPa,相对周期基线变化-6.9%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P09,轻微,2025-10-26 05:00:00,2025-10-27 17:00:00,37,29,0.437814,,0.415149,0.394266,0.394266,-0.051769,-0.099467,16,0,0,否,油压0.415~0.394MPa,最低0.394MPa,连续29个有效运行小时;油压0.415MPa,周期基线0.438MPa,相对周期基线变化-5.2%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P09,异常,2025-10-27 18:00:00,2025-10-29 21:00:00,52,45,0.437814,,0.393562,0.350347,0.350347,-0.101076,-0.199783,24,0,0,是,油压0.394~0.350MPa,最低0.350MPa,连续45个有效运行小时;油压0.394MPa,周期基线0.438MPa,相对周期基线变化-10.1%,相对周期基线下降至少10%并持续下降,或低报警区间连续达到3小时
+8号机,31,8号机-P09,严重异常,2025-10-29 22:00:00,2025-10-30 08:00:00,11,11,0.437814,,0.349426,0.342649,0.342649,-0.201887,-0.217365,35,0,0,是,油压0.349~0.343MPa,最低0.343MPa,连续11个有效运行小时;油压0.349MPa,周期基线0.438MPa,相对周期基线变化-20.2%,相对周期基线下降至少20%并持续下降,或低低报警区间连续达到3小时
+8号机,31,8号机-P15,轻微,2026-03-17 08:00:00,2026-03-18 03:00:00,20,20,0.539746,,0.511957,0.486595,0.486595,-0.051485,-0.098474,55,0,0,否,油压0.512~0.487MPa,最低0.487MPa,连续20个有效运行小时;油压0.512MPa,周期基线0.540MPa,相对周期基线变化-5.1%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P16,轻微,2026-04-25 09:00:00,2026-04-25 10:00:00,2,2,0.535008,,0.507966,0.507897,0.507897,-0.050545,-0.050674,7,0,0,否,油压0.508~0.508MPa,最低0.508MPa,连续2个有效运行小时;油压0.508MPa,周期基线0.535MPa,相对周期基线变化-5.1%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P16,轻微,2026-04-26 05:00:00,2026-04-26 05:00:00,1,1,0.535008,,0.484926,0.484926,0.484926,-0.09361,-0.09361,8,0,0,否,油压0.485~0.485MPa,最低0.485MPa,连续1个有效运行小时;油压0.485MPa,周期基线0.535MPa,相对周期基线变化-9.4%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P16,轻微,2026-04-29 00:00:00,2026-04-30 02:00:00,27,27,0.535008,,0.507423,0.482506,0.482506,-0.051559,-0.098133,31,0,0,否,油压0.507~0.483MPa,最低0.483MPa,连续27个有效运行小时;油压0.507MPa,周期基线0.535MPa,相对周期基线变化-5.2%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+8号机,31,8号机-P16,异常,2026-04-30 03:00:00,2026-04-30 12:00:00,10,10,0.535008,,0.481381,0.474631,0.474451,-0.100236,-0.112852,22,0,0,是,油压0.481~0.475MPa,最低0.474MPa,连续10个有效运行小时;油压0.481MPa,周期基线0.535MPa,相对周期基线变化-10.0%,相对周期基线下降至少10%并持续下降,或低报警区间连续达到3小时
+9号机,32,9号机-P17,轻微,2026-01-30 05:00:00,2026-01-30 05:00:00,1,1,0.549734,,0.52106,0.52106,0.52106,-0.05216,-0.05216,5,0,0,否,油压0.521~0.521MPa,最低0.521MPa,连续1个有效运行小时;油压0.521MPa,周期基线0.550MPa,相对周期基线变化-5.2%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时
+9号机,32,9号机-P20,轻微,2026-04-17 03:00:00,2026-04-17 03:00:00,1,1,0.558379,,0.46019,0.46019,0.46019,-0.175847,-0.175847,1,0,0,否,油压0.460~0.460MPa,最低0.460MPa,连续1个有效运行小时;油压0.460MPa,周期基线0.558MPa,相对周期基线变化-17.6%,相对周期基线下降至少5%并持续下降,或普通异常持续不足3小时

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 55 - 0
cache/pks_scanner/evolution_pct_confirmed/润滑油压力演化周期.csv


+ 10 - 0
cache/pks_scanner/evolution_pct_verify/报警阈值配置.csv

@@ -0,0 +1,10 @@
+机组,批次,点位,点位描述,单位,低报警阈值,低低报警阈值,高报警阈值,高高报警阈值,低报警配置,低低报警配置,高报警配置,高高报警配置
+7号机,30,YSJ_5,7#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_10,7#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+7号机,30,YSJ_11,7#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_5,8#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+8号机,31,YSJ_10,8#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+8号机,31,YSJ_11,8#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_5,9#压缩机润滑油压力,MPa,0.34,0.31,0.68,0.72,AlarmType2/AlarmLimit2,AlarmType1/AlarmLimit1,AlarmType3/AlarmLimit3,AlarmType4/AlarmLimit4
+9号机,32,YSJ_10,9#压缩机联轴器端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2
+9号机,32,YSJ_11,9#压缩机链轮端振动,mm/s,,,7.1,8.5,,,AlarmType1/AlarmLimit1,AlarmType2/AlarmLimit2

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 27 - 0
cache/pks_scanner/evolution_pct_verify/振动异常段.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9817 - 0
cache/pks_scanner/evolution_pct_verify/润滑油压力小时等级.csv


+ 65 - 0
cache/pks_scanner/evolution_pct_verify/润滑油压力小时阶段段.csv

@@ -0,0 +1,65 @@
+机组,批次,周期编号,压力阶段,开始小时,结束小时,持续自然小时数,有效运行小时数,周期基线油压,正常波动带,阶段开始小时油压,阶段结束小时油压,阶段最低小时油压,阶段开始相对周期基线变化,阶段结束相对周期基线变化,阶段最大连续下降有效小时数,阶段低报警小时数,阶段低低报警小时数,是否形成确认等级,阶段触发依据
+7号机,30,7号机-P01,严重异常,2025-04-15 21:00:00,2025-04-15 22:00:00,2,2,0.49984,,0.11094,0.194051,0.11094,-0.778049,-0.611774,6,2,2,是,油压0.111~0.194MPa,最低0.111MPa,连续2个有效运行小时;油压0.111MPa,周期基线0.500MPa,相对周期基线变化-77.8%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例77.8%
+7号机,30,7号机-P01,严重异常,2025-04-18 17:00:00,2025-04-18 18:00:00,2,2,0.49984,,0.027698,0.277051,0.027698,-0.944587,-0.445721,3,2,2,是,油压0.028~0.277MPa,最低0.028MPa,连续2个有效运行小时;油压0.028MPa,周期基线0.500MPa,相对周期基线变化-94.5%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+7号机,30,7号机-P02,严重异常,2025-04-26 10:00:00,2025-04-26 11:00:00,2,2,0.499519,,0.055505,0.249831,0.055505,-0.888883,-0.499856,2,2,2,是,油压0.056~0.250MPa,最低0.056MPa,连续2个有效运行小时;油压0.056MPa,周期基线0.500MPa,相对周期基线变化-88.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例88.9%
+7号机,30,7号机-P02,严重异常,2025-04-28 11:00:00,2025-04-28 12:00:00,2,2,0.499519,,0.249746,0.05549,0.05549,-0.500027,-0.888913,3,2,2,是,油压0.250~0.055MPa,最低0.055MPa,连续2个有效运行小时;油压0.250MPa,周期基线0.500MPa,相对周期基线变化-50.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例50.0%
+7号机,30,7号机-P02,轻微,2025-04-30 19:00:00,2025-04-30 19:00:00,1,1,0.499519,,0.416279,0.416279,0.416279,-0.166641,-0.166641,3,0,0,否,油压0.416~0.416MPa,最低0.416MPa,连续1个有效运行小时;油压0.416MPa,周期基线0.500MPa,相对周期基线变化-16.7%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+7号机,30,7号机-P02,严重异常,2025-04-30 20:00:00,2025-04-30 21:00:00,2,2,0.499519,,0.0,0.388581,0.0,-1.0,-0.22209,4,1,1,是,油压0.000~0.389MPa,最低0.000MPa,连续2个有效运行小时;油压0.000MPa,周期基线0.500MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+7号机,30,7号机-P02,严重异常,2025-05-06 11:00:00,2025-05-06 12:00:00,2,2,0.499519,,0.248622,0.055275,0.055275,-0.502277,-0.889344,3,2,2,是,油压0.249~0.055MPa,最低0.055MPa,连续2个有效运行小时;油压0.249MPa,周期基线0.500MPa,相对周期基线变化-50.2%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例50.0%
+7号机,30,7号机-P04,严重异常,2025-05-29 07:00:00,2025-05-29 08:00:00,2,2,0.496893,,0.165199,0.137864,0.137864,-0.667537,-0.722549,3,2,2,是,油压0.165~0.138MPa,最低0.138MPa,连续2个有效运行小时;油压0.165MPa,周期基线0.497MPa,相对周期基线变化-66.8%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例66.7%
+7号机,30,7号机-P04,严重异常,2025-05-31 17:00:00,2025-05-31 18:00:00,2,2,0.496893,,0.027579,0.275767,0.027579,-0.944497,-0.445018,2,2,2,是,油压0.028~0.276MPa,最低0.028MPa,连续2个有效运行小时;油压0.028MPa,周期基线0.497MPa,相对周期基线变化-94.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+7号机,30,7号机-P04,严重异常,2025-06-10 21:00:00,2025-06-11 05:00:00,9,4,0.496893,,0.109984,0.027466,0.027466,-0.778657,-0.944724,7,4,4,是,油压0.110~0.027MPa,最低0.027MPa,连续4个有效运行小时;油压0.110MPa,周期基线0.497MPa,相对周期基线变化-77.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例77.8%
+7号机,30,7号机-P05,严重异常,2025-07-21 10:00:00,2025-07-21 11:00:00,2,2,0.493426,,0.054805,0.246673,0.054805,-0.888929,-0.500082,3,2,2,是,油压0.055~0.247MPa,最低0.055MPa,连续2个有效运行小时;油压0.055MPa,周期基线0.493MPa,相对周期基线变化-88.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例88.9%
+7号机,30,7号机-P05,严重异常,2025-07-23 17:00:00,2025-07-23 18:00:00,2,2,0.493426,,0.027363,0.273578,0.027363,-0.944545,-0.445555,2,2,2,是,油压0.027~0.274MPa,最低0.027MPa,连续2个有效运行小时;油压0.027MPa,周期基线0.493MPa,相对周期基线变化-94.5%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+7号机,30,7号机-P06,严重异常,2025-08-07 17:00:00,2025-08-07 18:00:00,2,2,0.478197,,0.026756,0.267711,0.026756,-0.944047,-0.440167,2,2,2,是,油压0.027~0.268MPa,最低0.027MPa,连续2个有效运行小时;油压0.027MPa,周期基线0.478MPa,相对周期基线变化-94.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+7号机,30,7号机-P08,轻微,2025-09-09 13:00:00,2025-09-09 16:00:00,4,4,0.492921,,0.446947,0.463393,0.445898,-0.093269,-0.059905,5,0,0,否,油压0.447~0.463MPa,最低0.446MPa,连续4个有效运行小时;油压0.447MPa,周期基线0.493MPa,相对周期基线变化-9.3%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+7号机,30,7号机-P10,轻微,2025-10-03 17:00:00,2025-10-03 19:00:00,3,3,0.490481,,0.443296,0.442371,0.442201,-0.096201,-0.098087,3,0,0,否,油压0.443~0.442MPa,最低0.442MPa,连续3个有效运行小时;油压0.443MPa,周期基线0.490MPa,相对周期基线变化-9.6%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+7号机,30,7号机-P10,轻微,2025-10-05 12:00:00,2025-10-05 12:00:00,1,1,0.490481,,0.434894,0.434894,0.434894,-0.113332,-0.113332,3,0,0,否,油压0.435~0.435MPa,最低0.435MPa,连续1个有效运行小时;油压0.435MPa,周期基线0.490MPa,相对周期基线变化-11.3%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+7号机,30,7号机-P10,严重异常,2025-10-05 13:00:00,2025-10-05 14:00:00,2,2,0.490481,,0.0,0.353437,0.0,-1.0,-0.279406,4,1,1,是,油压0.000~0.353MPa,最低0.000MPa,连续2个有效运行小时;油压0.000MPa,周期基线0.490MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+7号机,30,7号机-P11,严重异常,2025-11-26 15:00:00,2025-11-26 16:00:00,2,2,0.480555,,0.324697,0.0,0.0,-0.324329,-1.0,4,2,1,是,油压0.325~0.000MPa,最低0.000MPa,连续2个有效运行小时;油压0.325MPa,周期基线0.481MPa,相对周期基线变化-32.4%,油压达到低低报警阈值,立即记录为严重异常;低报警样本比例33.3%
+7号机,30,7号机-P11,严重异常,2025-12-02 08:00:00,2025-12-02 09:00:00,2,2,0.480555,,0.349487,0.0,0.0,-0.272743,-1.0,3,1,1,是,油压0.349~0.000MPa,最低0.000MPa,连续2个有效运行小时;油压0.349MPa,周期基线0.481MPa,相对周期基线变化-27.3%,油压达到低低报警阈值,立即记录为严重异常
+7号机,30,7号机-P11,轻微,2025-12-02 10:00:00,2025-12-02 10:00:00,1,1,0.480555,,0.430658,0.430658,0.430658,-0.103831,-0.103831,1,0,0,否,油压0.431~0.431MPa,最低0.431MPa,连续1个有效运行小时;油压0.431MPa,周期基线0.481MPa,相对周期基线变化-10.4%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+7号机,30,7号机-P12,严重异常,2026-01-13 00:00:00,2026-01-13 04:00:00,5,4,0.48489,,0.196266,0.224344,0.084098,-0.595235,-0.53733,5,4,4,是,油压0.196~0.224MPa,最低0.084MPa,连续4个有效运行小时;油压0.196MPa,周期基线0.485MPa,相对周期基线变化-59.5%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例61.1%
+7号机,30,7号机-P14,严重异常,2026-02-10 11:00:00,2026-02-10 11:00:00,1,1,0.485382,,0.245623,0.245623,0.245623,-0.49396,-0.49396,1,1,1,是,油压0.246~0.246MPa,最低0.246MPa,连续1个有效运行小时;油压0.246MPa,周期基线0.485MPa,相对周期基线变化-49.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例50.0%
+7号机,30,7号机-P15,严重异常,2026-02-13 10:00:00,2026-02-13 11:00:00,2,2,0.485989,,0.054079,0.243351,0.054079,-0.888725,-0.499267,4,2,2,是,油压0.054~0.243MPa,最低0.054MPa,连续2个有效运行小时;油压0.054MPa,周期基线0.486MPa,相对周期基线变化-88.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例88.9%
+7号机,30,7号机-P17,严重异常,2026-03-22 00:00:00,2026-03-22 01:00:00,2,2,0.484094,,0.18789,0.107299,0.107299,-0.611873,-0.77835,12,2,2,是,油压0.188~0.107MPa,最低0.107MPa,连续2个有效运行小时;油压0.188MPa,周期基线0.484MPa,相对周期基线变化-61.2%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例61.1%
+7号机,30,7号机-P18,严重异常,2026-03-29 08:00:00,2026-03-29 09:00:00,2,2,0.483799,,0.347222,0.0,0.0,-0.2823,-1.0,16,1,1,是,油压0.347~0.000MPa,最低0.000MPa,连续2个有效运行小时;油压0.347MPa,周期基线0.484MPa,相对周期基线变化-28.2%,油压达到低低报警阈值,立即记录为严重异常
+7号机,30,7号机-P18,轻微,2026-03-29 10:00:00,2026-03-29 10:00:00,1,1,0.483799,,0.428329,0.428329,0.428329,-0.114655,-0.114655,1,0,0,否,油压0.428~0.428MPa,最低0.428MPa,连续1个有效运行小时;油压0.428MPa,周期基线0.484MPa,相对周期基线变化-11.5%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P01,严重异常,2025-04-02 21:00:00,2025-04-02 22:00:00,2,2,0.499549,,0.110689,0.193516,0.110689,-0.778422,-0.612619,7,2,2,是,油压0.111~0.194MPa,最低0.111MPa,连续2个有效运行小时;油压0.111MPa,周期基线0.500MPa,相对周期基线变化-77.8%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例77.8%
+8号机,31,8号机-P01,严重异常,2025-04-08 17:00:00,2025-04-08 18:00:00,2,2,0.499549,,0.02768,0.276775,0.02768,-0.944591,-0.44595,2,2,2,是,油压0.028~0.277MPa,最低0.028MPa,连续2个有效运行小时;油压0.028MPa,周期基线0.500MPa,相对周期基线变化-94.5%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+8号机,31,8号机-P02,严重异常,2025-04-22 03:00:00,2025-04-22 04:00:00,2,2,0.498137,,0.082679,0.220334,0.082679,-0.834024,-0.557684,2,2,2,是,油压0.083~0.220MPa,最低0.083MPa,连续2个有效运行小时;油压0.083MPa,周期基线0.498MPa,相对周期基线变化-83.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例83.3%
+8号机,31,8号机-P04,严重异常,2025-05-25 16:00:00,2025-05-25 16:00:00,1,1,0.512445,,0.0,0.0,0.0,-1.0,-1.0,1,1,1,是,油压0.000~0.000MPa,最低0.000MPa,连续1个有效运行小时;油压0.000MPa,周期基线0.512MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+8号机,31,8号机-P04,严重异常,2025-05-27 15:00:00,2025-05-27 16:00:00,2,2,0.512445,,0.339927,0.0,0.0,-0.336657,-1.0,5,2,1,是,油压0.340~0.000MPa,最低0.000MPa,连续2个有效运行小时;油压0.340MPa,周期基线0.512MPa,相对周期基线变化-33.7%,油压达到低低报警阈值,立即记录为严重异常;低报警样本比例33.3%
+8号机,31,8号机-P04,轻微,2025-05-27 17:00:00,2025-05-27 17:00:00,1,1,0.512445,,0.481116,0.481116,0.481116,-0.061136,-0.061136,1,0,0,否,油压0.481~0.481MPa,最低0.481MPa,连续1个有效运行小时;油压0.481MPa,周期基线0.512MPa,相对周期基线变化-6.1%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P06,严重异常,2025-06-26 04:00:00,2025-06-26 05:00:00,2,2,0.480085,,0.259662,0.025938,0.025938,-0.459134,-0.945972,15,2,2,是,油压0.260~0.026MPa,最低0.026MPa,连续2个有效运行小时;油压0.260MPa,周期基线0.480MPa,相对周期基线变化-45.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例44.4%
+8号机,31,8号机-P07,严重异常,2025-07-06 18:00:00,2025-07-06 19:00:00,2,2,0.459362,,0.206339,0.077204,0.077204,-0.550813,-0.831933,4,2,2,是,油压0.206~0.077MPa,最低0.077MPa,连续2个有效运行小时;油压0.206MPa,周期基线0.459MPa,相对周期基线变化-55.1%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例55.6%
+8号机,31,8号机-P07,轻微,2025-07-09 12:00:00,2025-07-09 12:00:00,1,1,0.459362,,0.402382,0.402382,0.402382,-0.12404,-0.12404,2,0,0,否,油压0.402~0.402MPa,最低0.402MPa,连续1个有效运行小时;油压0.402MPa,周期基线0.459MPa,相对周期基线变化-12.4%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P07,严重异常,2025-07-09 13:00:00,2025-07-09 14:00:00,2,2,0.459362,,0.0,0.327701,0.0,-1.0,-0.286617,3,2,1,是,油压0.000~0.328MPa,最低0.000MPa,连续2个有效运行小时;油压0.000MPa,周期基线0.459MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+8号机,31,8号机-P08,轻微,2025-09-27 17:00:00,2025-09-28 06:00:00,14,10,0.488687,,0.464073,0.460742,0.460742,-0.050368,-0.057185,10,0,0,否,油压0.464~0.461MPa,最低0.461MPa,连续10个有效运行小时;油压0.464MPa,周期基线0.489MPa,相对周期基线变化-5.0%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P08,轻微,2025-09-28 14:00:00,2025-09-29 06:00:00,17,11,0.488687,,0.460956,0.454298,0.454298,-0.056746,-0.070371,10,0,0,否,油压0.461~0.454MPa,最低0.454MPa,连续11个有效运行小时;油压0.461MPa,周期基线0.489MPa,相对周期基线变化-5.7%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P08,轻微,2025-09-29 14:00:00,2025-09-30 06:00:00,17,15,0.488687,,0.459052,0.452239,0.452239,-0.060641,-0.074583,15,0,0,否,油压0.459~0.452MPa,最低0.452MPa,连续15个有效运行小时;油压0.459MPa,周期基线0.489MPa,相对周期基线变化-6.1%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P08,轻微,2025-09-30 14:00:00,2025-10-02 07:00:00,42,25,0.488687,,0.454997,0.444466,0.444466,-0.068941,-0.090488,8,0,0,否,油压0.455~0.444MPa,最低0.444MPa,连续25个有效运行小时;油压0.455MPa,周期基线0.489MPa,相对周期基线变化-6.9%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P09,轻微,2025-10-26 05:00:00,2025-10-27 17:00:00,37,29,0.437814,,0.415149,0.394266,0.394266,-0.051769,-0.099467,16,0,0,否,油压0.415~0.394MPa,最低0.394MPa,连续29个有效运行小时;油压0.415MPa,周期基线0.438MPa,相对周期基线变化-5.2%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P09,异常,2025-10-27 18:00:00,2025-10-29 21:00:00,52,45,0.437814,,0.393562,0.350347,0.350347,-0.101076,-0.199783,24,0,0,是,油压0.394~0.350MPa,最低0.350MPa,连续45个有效运行小时;油压0.394MPa,周期基线0.438MPa,相对周期基线变化-10.1%,低报警区间连续达到3小时
+8号机,31,8号机-P09,严重异常,2025-10-28 11:00:00,2025-10-28 12:00:00,2,2,0.437814,,0.194225,0.042764,0.042764,-0.556375,-0.902325,3,2,2,是,油压0.194~0.043MPa,最低0.043MPa,连续2个有效运行小时;油压0.194MPa,周期基线0.438MPa,相对周期基线变化-55.6%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例50.0%
+8号机,31,8号机-P09,严重异常,2025-10-29 22:00:00,2025-10-30 12:00:00,15,13,0.437814,,0.349426,0.339293,0.339293,-0.201887,-0.225029,35,1,0,是,油压0.349~0.339MPa,最低0.339MPa,连续13个有效运行小时;油压0.349MPa,周期基线0.438MPa,相对周期基线变化-20.2%,油压达到低低报警阈值,立即记录为严重异常
+8号机,31,8号机-P15,严重异常,2026-03-15 10:00:00,2026-03-15 11:00:00,2,2,0.539746,,0.054147,0.272893,0.054147,-0.89968,-0.494404,1,2,2,是,油压0.054~0.273MPa,最低0.054MPa,连续2个有效运行小时;油压0.054MPa,周期基线0.540MPa,相对周期基线变化-90.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例90.3%
+8号机,31,8号机-P15,轻微,2026-03-17 08:00:00,2026-03-18 03:00:00,20,20,0.539746,,0.511957,0.486595,0.486595,-0.051485,-0.098474,55,0,0,否,油压0.512~0.487MPa,最低0.487MPa,连续20个有效运行小时;油压0.512MPa,周期基线0.540MPa,相对周期基线变化-5.1%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P15,严重异常,2026-03-21 10:00:00,2026-03-21 11:00:00,2,2,0.539746,,0.059843,0.269651,0.059843,-0.889127,-0.500412,2,2,2,是,油压0.060~0.270MPa,最低0.060MPa,连续2个有效运行小时;油压0.060MPa,周期基线0.540MPa,相对周期基线变化-88.9%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例88.9%
+8号机,31,8号机-P16,轻微,2026-04-25 09:00:00,2026-04-25 10:00:00,2,2,0.535008,,0.507966,0.507897,0.507897,-0.050545,-0.050674,7,0,0,否,油压0.508~0.508MPa,最低0.508MPa,连续2个有效运行小时;油压0.508MPa,周期基线0.535MPa,相对周期基线变化-5.1%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P16,轻微,2026-04-26 05:00:00,2026-04-26 05:00:00,1,1,0.535008,,0.484926,0.484926,0.484926,-0.09361,-0.09361,8,0,0,否,油压0.485~0.485MPa,最低0.485MPa,连续1个有效运行小时;油压0.485MPa,周期基线0.535MPa,相对周期基线变化-9.4%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P16,严重异常,2026-04-26 06:00:00,2026-04-26 07:00:00,2,2,0.535008,,0.0,0.341255,0.0,-1.0,-0.36215,9,1,1,是,油压0.000~0.341MPa,最低0.000MPa,连续2个有效运行小时;油压0.000MPa,周期基线0.535MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+8号机,31,8号机-P16,轻微,2026-04-29 00:00:00,2026-04-30 02:00:00,27,27,0.535008,,0.507423,0.482506,0.482506,-0.051559,-0.098133,31,0,0,否,油压0.507~0.483MPa,最低0.483MPa,连续27个有效运行小时;油压0.507MPa,周期基线0.535MPa,相对周期基线变化-5.2%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+8号机,31,8号机-P16,异常,2026-04-30 03:00:00,2026-04-30 12:00:00,10,10,0.535008,,0.481381,0.474631,0.474451,-0.100236,-0.112852,22,0,0,是,油压0.481~0.475MPa,最低0.474MPa,连续10个有效运行小时;油压0.481MPa,周期基线0.535MPa,相对周期基线变化-10.0%,低报警区间连续达到3小时
+9号机,32,9号机-P01,严重异常,2025-04-09 21:00:00,2025-04-09 22:00:00,2,2,0.512314,,0.114048,0.199414,0.114048,-0.777387,-0.610757,5,2,2,是,油压0.114~0.199MPa,最低0.114MPa,连续2个有效运行小时;油压0.114MPa,周期基线0.512MPa,相对周期基线变化-77.7%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例77.8%
+9号机,32,9号机-P01,严重异常,2025-04-13 00:00:00,2025-04-13 01:00:00,2,2,0.512314,,0.198741,0.113457,0.113457,-0.612071,-0.77854,3,2,2,是,油压0.199~0.113MPa,最低0.113MPa,连续2个有效运行小时;油压0.199MPa,周期基线0.512MPa,相对周期基线变化-61.2%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例61.1%
+9号机,32,9号机-P02,严重异常,2025-06-02 04:00:00,2025-06-02 05:00:00,2,2,0.514716,,0.282904,0.028266,0.028266,-0.450369,-0.945083,6,2,2,是,油压0.283~0.028MPa,最低0.028MPa,连续2个有效运行小时;油压0.283MPa,周期基线0.515MPa,相对周期基线变化-45.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例44.4%
+9号机,32,9号机-P08,严重异常,2025-08-10 00:00:00,2025-08-10 01:00:00,2,2,0.508648,,0.197256,0.112644,0.112644,-0.612195,-0.778542,11,2,2,是,油压0.197~0.113MPa,最低0.113MPa,连续2个有效运行小时;油压0.197MPa,周期基线0.509MPa,相对周期基线变化-61.2%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例61.1%
+9号机,32,9号机-P08,严重异常,2025-08-22 17:00:00,2025-08-22 18:00:00,2,2,0.508648,,0.028247,0.282377,0.028247,-0.944466,-0.444848,4,2,2,是,油压0.028~0.282MPa,最低0.028MPa,连续2个有效运行小时;油压0.028MPa,周期基线0.509MPa,相对周期基线变化-94.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+9号机,32,9号机-P09,严重异常,2025-09-03 04:00:00,2025-09-03 05:00:00,2,2,0.506451,,0.280577,0.027989,0.027989,-0.445994,-0.944736,17,2,2,是,油压0.281~0.028MPa,最低0.028MPa,连续2个有效运行小时;油压0.281MPa,周期基线0.506MPa,相对周期基线变化-44.6%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例44.4%
+9号机,32,9号机-P11,严重异常,2025-10-09 18:00:00,2025-10-09 19:00:00,2,2,0.504383,,0.223597,0.083832,0.083832,-0.556692,-0.833793,5,2,2,是,油压0.224~0.084MPa,最低0.084MPa,连续2个有效运行小时;油压0.224MPa,周期基线0.504MPa,相对周期基线变化-55.7%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例55.6%
+9号机,32,9号机-P17,轻微,2026-01-30 05:00:00,2026-01-30 05:00:00,1,1,0.549734,,0.52106,0.52106,0.52106,-0.05216,-0.05216,5,0,0,否,油压0.521~0.521MPa,最低0.521MPa,连续1个有效运行小时;油压0.521MPa,周期基线0.550MPa,相对周期基线变化-5.2%,进入预警幅度区间或报警持续不足3小时,记录为轻微
+9号机,32,9号机-P17,严重异常,2026-01-30 06:00:00,2026-01-30 07:00:00,2,2,0.549734,,0.0,0.367699,0.0,-1.0,-0.331133,6,1,1,是,油压0.000~0.368MPa,最低0.000MPa,连续2个有效运行小时;油压0.000MPa,周期基线0.550MPa,相对周期基线变化-100.0%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例100.0%
+9号机,32,9号机-P20,严重异常,2026-04-09 17:00:00,2026-04-09 18:00:00,2,2,0.558379,,0.031009,0.309869,0.031009,-0.944467,-0.445056,2,2,2,是,油压0.031~0.310MPa,最低0.031MPa,连续2个有效运行小时;油压0.031MPa,周期基线0.558MPa,相对周期基线变化-94.4%,油压达到低低报警阈值,立即记录为严重异常;低低报警样本比例94.4%
+9号机,32,9号机-P20,严重异常,2026-04-17 01:00:00,2026-04-17 02:00:00,2,2,0.558379,,0.430331,0.0,0.0,-0.229322,-1.0,6,1,1,是,油压0.430~0.000MPa,最低0.000MPa,连续2个有效运行小时;油压0.430MPa,周期基线0.558MPa,相对周期基线变化-22.9%,油压达到低低报警阈值,立即记录为严重异常
+9号机,32,9号机-P20,轻微,2026-04-17 03:00:00,2026-04-17 03:00:00,1,1,0.558379,,0.46019,0.46019,0.46019,-0.175847,-0.175847,1,0,0,否,油压0.460~0.460MPa,最低0.460MPa,连续1个有效运行小时;油压0.460MPa,周期基线0.558MPa,相对周期基线变化-17.6%,进入预警幅度区间或报警持续不足3小时,记录为轻微

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 55 - 0
cache/pks_scanner/evolution_pct_verify/润滑油压力演化周期.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 162 - 0
cache/pks_scanner/full/fault_candidates.csv


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 28441 - 0
cache/pks_scanner/full/hourly_summary.csv