sewind_w2500_135_2p5mw.yaml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # 数据契约 — 上海电气 SEWIND W2500-135 (马王 二期, 2.5MW)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py.
  3. # oem-onboard 复用路径 (SEWIND 已知家族) — 但实测 schema 与 W2000-110-80(长清) 不同, 见下。
  4. #
  5. # ⚠ 马王=3 OEM 90台混场 (configs/contracts/mawang_machine_map.csv):
  6. # 一期 华创 CCWE-2000/116 ×8 + 明阳 MY2.0se-121 ×42; 二期 上海电气 W2500-135 ×40(机号51-90) [本契约]
  7. #
  8. # 🔴 复用路径关键教训 (本契约价值): "同OEM家族 ≠ 同schema"。
  9. # 长清 W2000-110-80 = ~28列(桨距×3/风向角/限功率/齿轮箱油温/转速全有);
  10. # 马王二期 W2500-135 = **精简7列主schema** (无桨距/限功率/转速; 偏航/桨距分析做不了) + 12文件9列少数schema(有风向/地理风向/密度归一风速)。
  11. # → 可复用: SEWIND 单位(有功功率kW)/语义(风速self_ref/风机状态enum/state11半载降额)/陷阱(月间schema裂); 不可复用: 整份W2000列定义。
  12. # 源: scripts/mw_se_survey.py + mw_se_goem.py (21半月包/40台/全年2023/972,933行).
  13. meta:
  14. oem: 上海电气 SEWIND
  15. model: W2500-135
  16. topology: DFIG_geared # SEWIND平台 (W2000家族DFIG_geared); W2500未单独核手册, 暂承袭
  17. rated_kw: 2500
  18. rotor_diameter_m: 135
  19. hub_height_m: 100 # 收资表机型 2.5MW/100m (待GPS图核)
  20. source_farm: 马王 (广西; 二期 机号51-90)
  21. units_count: 40
  22. device_id_map: "风机名称 = 机号 51-90 (40台); csv文件名 F2650002NNN = 设备id"
  23. sampling: {raw_s: 600, note: "10min(600s); 全年2023(Jan15-Dec15跨度); per-turbine密度~部分(全量973k行/40台). 无1秒/秒级层(异于一期华创明阳)"}
  24. ground_truth:
  25. fault_codes_ref: "configs/fault_dicts/sewind_w2000_fault_codes.csv (2026-09-02 扩到1000码位/实义543, 源=淄博下发包CF卡) ⚠原问号『SEWIND家族共用?』**已答: 不共用** — 长清W2000 vs 淄博 277共同码仅64%一致, 30xxx/70xxx/230xxx/300xxx族系统性错位; W2500 更须用本场事件表重解, 勿直接套"
  26. status_enum: "configs/fault_dicts/sewind_w2500_135_status_enum_mawang.csv (15码行为自解; 无官方SEWIND运行状态表, 同W2000缺)"
  27. provenance: "oem-onboard 复用路径; SEWIND field_std/KB§4.3复用 + W2500 G-OEM实证(schema/状态/单位)"
  28. power_curve_ref: "无W2500合同曲线 (收资表功率曲线表为一期2.0MW, 不适用2.5MW); 绝对性能需W2500曲线+自由来流"
  29. # ============ 主 schema (360文件, 7列) ============
  30. turbine:
  31. required: ["有功功率(kW)", 风机状态]
  32. columns:
  33. "有功功率(kW)":
  34. canonical_id: WAPC_active_power
  35. raw_unit: kW # ✓ 实测 max2788≈额定2500+裕量(111%), 非瓦特
  36. valid_range: [-300, 2900] # min-259=并网寄生(停机态负功率, 正常); 额定2500
  37. block_if_raw_exceeds: 50000 # 瓦特守卫
  38. "10min滑动平均风速(m/s)":
  39. canonical_id: WMET_wind_speed_nacelle
  40. unit: m/s
  41. valid_range: [0, 40]
  42. self_ref_risk: true # ★ 机舱风(滑动平均), 功率曲线自指(finding89)
  43. note: "★ null~46.7% (非发电态无风读数; 主schema稀疏) → 性能分析只在有风行"
  44. 风机状态:
  45. canonical_id: WSLG_turbine_state
  46. unit: enum
  47. status_enum_ref: configs/fault_dicts/sewind_w2500_135_status_enum_mawang.csv
  48. semantic: "W2500自解15码 (无官方表): 8=发电(87%, ★≠华创3/明阳3) / 1=有风停机(真损候选) / 3·10·2·9等=停机(负寄生功率) / 11=半载降额(P≈半额定, ★跨变体印证长清W2000 state11) / 12·43=发电变体"
  49. "塔底柜温度(℃)": {canonical_id: WNAC_tower_base_cabinet_temp, unit: degC, valid_range: [0, 80]}
  50. 主轴温度:
  51. canonical_id: WTRM_main_shaft_temp
  52. unit: degC
  53. valid_range: [-20, 90]
  54. note: "★ null~83% 且 min=0 → 0疑缺失占位(非真温), 用前剔0; 稀疏"
  55. # ============ 少数 schema (12文件, 9列; 多 风向/地理风向/密度归一风速) ============
  56. # ⚠ 月间schema裂 (SEWIND陷阱复现): 少数期导出此9列, 读前核列集。下列仅这12文件有。
  57. turbine_alt_schema:
  58. columns:
  59. "风向角(°)":
  60. canonical_id: WYAW_yaw_error
  61. unit: deg
  62. frame: nacelle # 同W2000 '风向角'=nacelle偏航误差(非地理), 仅观测级
  63. valid_range: [-180, 180]
  64. note: "仅9列少数schema有; nacelle-frame偏航误差, 勿当地理"
  65. "实际自然风向(度)":
  66. canonical_id: WMET_wind_direction_geo
  67. unit: deg
  68. frame: geographic # ★ 真地理风向 (rare); 偏航对风地理参考 (但仅12文件小样本)
  69. valid_range: [0, 360]
  70. "标准空气密度下的风速(m/s)":
  71. canonical_id: WMET_wind_speed_density_norm
  72. unit: m/s
  73. valid_range: [0, 40]
  74. self_ref_risk: true # 密度归一但仍机舱风源 → 自指未消
  75. "舱外温度(℃)": {canonical_id: WMET_ambient_temp, unit: degC, valid_range: [-45, 50]}
  76. "环境温度(℃)": {canonical_id: WMET_ambient_temp_2, unit: degC, valid_range: [-45, 50]}
  77. cleaning:
  78. physical:
  79. - "有功功率 小负(-300~0)=停机态并网寄生, 保留 (非坏值)"
  80. - "主轴温度=0 疑缺失占位 (83%null+min0) → 剔0再用"
  81. semantic:
  82. - "风机状态 按W2500自解enum (15码, ≠华创/明阳; 8=发电); 可用率状态派生 (无可用率列)"
  83. - "10min滑动平均风速 自指 → 真功率曲线需W2500合同曲线+自由来流测风塔"
  84. - "风向角(少数schema)=nacelle偏航误差非地理, 勿做扇区/风玫瑰 (finding89)"
  85. status_enum_ref: configs/fault_dicts/sewind_w2500_135_status_enum_mawang.csv
  86. fault_codes_ref: configs/fault_dicts/sewind_w2000_fault_codes.csv
  87. traps:
  88. - "★同OEM家族≠同schema: W2500(7列thin)≠长清W2000(28列); 不可盲复用W2000契约列定义"
  89. - "★月间schema裂(SEWIND复现): 360文件7列 vs 12文件9列(多风向/地理风向/密度风速); 读前核列集"
  90. - "★风机状态 8=发电(W2500), 但华创=3/明阳=3 → 同SCADA枚举跨OEM语义不同, 必各自解"
  91. - "★state11=半载降额 跨SEWIND变体复现(W2000→W2500); 卡半载, 无官方枚举解"
  92. - "风速 null~46.7% (主schema稀疏, 非发电无读数) + 主轴温度 null83%/min0哨兵疑"
  93. - "无桨距/转速/限功率列(主schema) → 桨距零位/限电分析做不了; 无W2500合同曲线 → 绝对性能不可下"
  94. - "有功功率负值=停机寄生非坏 (不同于哨兵)"