gup_up2000_2mw.yaml 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # 数据契约 — 国电 GUP UP2000 2.0MW DFIG (阜山)
  2. # schema: docs/OEM_KB/OEM_knowledge_base_v1.md §3. 校验器: scripts/validate_contract.py
  3. # 用途: 分析前的"门"。任一 BLOCK 级违规 → 拒绝进分析 (不在下游补救)。
  4. meta:
  5. oem: 国电联合动力 GUP
  6. model: UP2000 2.0MW DFIG
  7. topology: dfig_geared
  8. rated_kw: 2080
  9. source_farm: 阜山 (A01-A18)
  10. sampling:
  11. default_s: 600 # 真实=混采
  12. caveat: "10月=1s, 其余=10min; 必逐时段 t.diff() 测, 全局 median 会撒谎"
  13. provenance: "outputs/fushan/阜山_测风塔集成.md; findings 87-91"
  14. # ---- 机组 SCADA (raw 列名来自 GBK CSV) ----
  15. turbine:
  16. required: [变频器有功, 风速1, 功率设定]
  17. columns:
  18. 变频器有功:
  19. canonical_id: WAPC_active_power
  20. raw_unit: W # ★ 陷阱: 原始是瓦特, 非 kW
  21. to_canonical: "/1000" # → kW
  22. valid_range_canonical: [0, 2200] # kW (校验在换算后值上跑)
  23. block_if_raw_exceeds: 50000 # raw>5e4 = 仍是瓦特未换算 → BLOCK
  24. 风速1:
  25. canonical_id: WMET_wind_speed_nacelle
  26. unit: m/s
  27. valid_range: [0, 40]
  28. self_ref_risk: true # ★ 机舱风, 功率曲线自指 (finding 89)
  29. 风速2:
  30. canonical_id: WMET_wind_speed_2
  31. unit: m/s
  32. dead_channel: true # ★ 中位 0.46 = 死通道, 弃
  33. 风向1:
  34. canonical_id: WYAW_yaw_error
  35. raw_unit: rad # ★ 弧度 ±π, 非度
  36. to_canonical: "*57.2958"
  37. frame: nacelle # ★ nacelle-frame, 非地理 → 偏航不可作地理扇区
  38. valid_range_canonical: [-180, 180]
  39. 功率设定:
  40. canonical_id: WAPC_setpoint
  41. raw_unit: W
  42. to_canonical: "/1000"
  43. semantic: "<额定 = 限电标志 (已校正 kW 后比)"
  44. 机舱位置:
  45. canonical_id: WYAW_nacelle_position
  46. frame: na # ★ 范围 -5.7~10.7 非航向 → 不可用
  47. unusable: true
  48. # ---- 测风塔 (raw 列名来自 utf-8 CSV; cache: fushan_mast.parquet) ----
  49. mast:
  50. required: [ws_free, rho]
  51. columns:
  52. ws_free:
  53. canonical_id: WMET_free_stream_ws
  54. unit: m/s
  55. valid_range: [0, 40]
  56. sentinel: [-99] # ★ -99 哨兵 (72.8% 行); 未转 NaN = BLOCK
  57. frame: geographic
  58. note: "仅 Oct16-Jan 有效; 缺失(NaN)可接受, 但残留 -99 字面值不可接受"
  59. wdir_geo:
  60. canonical_id: WMET_free_stream_wdir
  61. unit: deg
  62. valid_range: [0, 360]
  63. sentinel: [-99]
  64. frame: geographic
  65. baro_kpa:
  66. canonical_id: WMET_pressure
  67. unit: kPa
  68. valid_range: [80, 110] # ★ 有 ×10 污染子集(~1000), 越界 → 该行 rho 不可信
  69. temp:
  70. canonical_id: WMET_ambient_temp
  71. unit: degC
  72. valid_range: [-40, 50]
  73. rho:
  74. canonical_id: WMET_air_density
  75. unit: kg/m3
  76. valid_range: [0.90, 1.45] # ★ 物理门; 未门 → 13.5 (baro 污染传导)
  77. # ---- 跨表清洗规则 ----
  78. cleaning:
  79. physical:
  80. - "哨兵 -99 → NaN (ws_free/wdir_geo)"
  81. - "baro ∉[80,110] → 该行 rho 置 NaN"
  82. - "rho 物理门 [0.90,1.45]"
  83. semantic:
  84. - "功率设定 < 额定 = 限电 (非坏值)"
  85. - "风速2 死通道 直接弃, 勿当缺失填补"
  86. traps:
  87. - "变频器有功=瓦特: 盲用差 1000 倍 (险酿大错)"
  88. - "采样混采: 全局 median t.diff()=1s 是 98% 行来自10月的假象"
  89. - "单 mast: 机舱风/自由来流比 ±9% → 立方 ±27% 功率, 不下绝对性能 (finding 89)"