# 功图特征抽取(indicator_features) 从 `wave_file` + `wave_sample_one`(每文件一个**首周期**)抽取单周期功图特征,用于找气阀/活塞故障特征。**只读、抽样、不建模**。 级配(现场确认):**一级=2/4/6 缸、二级=3/5 缸、三级=1 缸**;气体从 2/4/6 进,1 缸压缩后出,压力逐级升高。 ## 用法 ```bash cd backend python indicator_features/extract_from_db.py \ --unit 7 --cylinders 二 四 六 --sides 盖侧 轴侧 \ --start 2026-05-01 --end 2026-05-22 --per-day 3 \ --output cache/indicator/7_1stage_valve_202605.csv ``` - `--per-day N`:每个测点每天最多取 N 个文件(均匀取样),控制拉取量。 - 输出每周期一行的 CSV:吸/排气平台、压比、相位占比、斜率、拐角、指示功、效率、相位剖面等。 对照分析(同级缸间 / 同缸双腔 / 本缸自身基线,含通道 QC): ```bash python indicator_features/analyze.py cache/indicator/7_1stage_valve_202605.csv ``` ## 特征(当前) - 平台:`p_suction`、`p_discharge`、`p_span`、`pressure_ratio` - 相位:`suction_frac`、`discharge_frac` - 线型:`compression_slope`、`expansion_slope`、`corner_sharpness` - 功:`indicated_work`、`imep`(**注意**:需物理相位锚定,当前不可靠) ## 已知问题 1. **坏通道**:如 8 号机六缸盖侧、7 号机六缸盖侧/四缸盖侧在部分时段压力≈0,必须识别并排除。 2. **指示功/效率**:单周期起始角与活塞相位未锚定,`∮P dV` 目前不可用;需用键相/相位对齐后再算。 3. **数据覆盖**:功图只在设备运行日存在,很多故障发生在停机附近,故障前数据可能不足。 见 `观察记录.md`。 ## 每 10° 分箱局部统计 整周期统计会互相抵消,故障可能只在某个小角度区间。把每周期按键相 0-360° 切成 36 个 10° 箱,箱内直接在原始点上算 **23 个**特征(不重采样),再做**同点**前后对比;另外每周期还算 **13 个**阀时序特征。 - 分箱 23:均值/极差/标准差/中位绝对偏差/斜率/粗糙度 + 10/50/90分位/四分位距 + 偏度/峰度 + 导数族 + 形状族(二阶导最大/总变差/过均次数/移动度/复杂度)。 - 整周期 13:吸气压力/排气压力/压比/吸气占比/排气占比 + 最小、最大压力角 + 上升、下降穿越角 + 最大上升、下降斜率及其角度。 - 中文名对照见 `cn_names.py`。 ```bash # 0) 看某机组的 rpm>0 运行段(开机表按数据本身统计) python indicator_features/run_segments.py --unit 7 # 1) 逐周期逐箱抽特征(只读,rpm>0;--bin-deg 可选 5/10/15/20) python indicator_features/angle_bins.py --unit 7 \ --start 2025-04-30 --end 2026-06-07 --per-day 3 \ --output cache/indicator/bins/7_all.csv # 2) 同点前后对比(--normalize span 压工况;--z 变化阈值;前段取事件前最近运行段) python indicator_features/event_bins.py --unit 7 \ --csv cache/indicator/bins/7_all.csv --normalize span --z 2 \ --pre-days 6 --post-days 30 --max-gap 45 --trend-days 60 \ --out cache/indicator/bins/event_final_7.csv # 3) 跨事件候选汇总(事件×测点×角度箱 合并指标;含“整体/局部”范围列) python indicator_features/summary_features.py \ --csv cache/indicator/bins/event_final_7.csv cache/indicator/bins/event_final_8.csv cache/indicator/bins/event_final_9.csv \ --threshold 2 --out cache/indicator/bins/summary_final.csv # 4) 生成中文交付(CSV + 特征汇总.md) cd indicator_features && python3 make_report.py && cd .. # 5) 单指标全时间轴演化轨迹(查事件前是否有长期渐变) python indicator_features/metric_trace.py --csv cache/indicator/bins/7_all.csv \ --unit 7 --cylinder 二 --side 盖侧 --bin-start 140 --metric std \ --out cache/indicator/bins/plots/7号_二缸盖侧_140-150_波动随时间.png # 6) 单点 停机前/开机后 三联简图(左 平均压力 / 中 波动 / 右 关注段随时间) python indicator_features/pair_plot.py --csv cache/indicator/bins/7_all.csv \ --unit 7 --date 2026-05-21 --cylinder 二 --side 盖侧 --highlight 140-150 \ --series-metric std --out cache/indicator/bins/plots/7号_2026-05-21_二缸盖侧_140-150.png ``` - 对比只限**同一点**(同缸同侧);每个指标分成 **整体**(全角度一起动=负荷/传感器)与 **局部**(个别箱动=阀/局部故障)。 - `--normalize span`:压力幅度类指标除以本周期压力幅度,压掉负荷/压比变化。 - 坏道/卡死(压力幅度<0.3)自动跳过;角度型指标按 0-360° 环形处理。 - 中文交付在 `cache/indicator/bins/results_cn/`。