xemc_xe2000_2mw.yaml 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # 数据契约 — 湘电风能 XEMC XE72-2000 & XE82-2000 (骆驼沟风电场, 大唐2025科研)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard skill 产出 2026-06-07 (第10家OEM).
  3. # 两机型共用同一 154 列 SCADA schema (ABB ACS800 变流器: INU/ISU/RMIO 温度=指纹); 仅转子/曲线/额定转速异.
  4. meta:
  5. oem: 湘电风能 XEMC
  6. model: XE72-2000 / XE82-2000 # 同契约两变体 (SCADA schema 一致)
  7. topology: geared_dfig # 有齿轮箱列(大河西可见)+发电机定子温度(DFIG/异步), 非直驱
  8. rated_kw: 2000
  9. variants:
  10. XE72-2000: {rotor_d_m: 70.65, swept_m2: 3918.3, hub_h_m: 65, rated_rpm: 22.45, cut_in_ms: 3.0, iec: IIB}
  11. XE82-2000: {rotor_d_m: 82.6, swept_m2: 5355, hub_h_m: 79.5, rated_rpm: 19.5, cut_in_ms: 3.0}
  12. converter: ABB ACS800 (INU/ISU/RMIO 温度列 = 指纹)
  13. source_farm: 骆驼沟 (河北承德丰宁, 海拔1750-2230m); 48台主力(坝头二期+骆驼沟二期, turbine_name 82-129) + 大河西074-081(独立regime,见下)
  14. model_assignment: "机型 per-turbine, 按 turbine_name join 机组信息_风电场_{72,82}.csv (★机型≠子阵: 坝头/骆驼沟二期两阵均混装72/82)"
  15. ground_truth:
  16. power_curve: "curv_power_hetong_{72,82}.csv (合同曲线, x=风速1-25 y=有功kW; 72@v13达2000 / 82@v16达2000)"
  17. status_enum: "configs/fault_dicts/xemc_xe2000_status_codes.csv (10态 0-9, cross-tab坐实)"
  18. event_codes: "风机故障代码及详细事件.xls (XE72型/XE82型 两sheet, 事件代码001-371, 表头在第3行)"
  19. spec_sheet: "风机参数.xls (XE72-2000 / XE82-2000)"
  20. turbine_info: "机组信息_风电场_{72,82}.csv (经纬度/轮毂/海拔/并网/标杆机)"
  21. met_mast: "测风塔数据.xls 3号塔@大河西村 — ⚠ 100%是2022年(机组2023), 零时间重叠 + 15-min + 远离主力阵. 仅气候态(风廓线/密度/风向参照), 不可逐时刻NTF (自由来流join不可用, 同finding89但塔救不了)"
  22. sampling: {default_s: 600, caveat: "10-min全年; ⚠混合日期格式(2023/1/1 0:00 vs 2023-01-01 00:00:00)需多格式兜底; 秒级Oct-Dec(33.9GB)+已清洗sec_scada_LTG_822.zip"}
  23. provenance: "oem-onboard 2026-06-07; survey 154列×3阵 + G-OEM 4台(72/82×两阵)全年实证 + 状态码cross-tab + 塔窗坐实"
  24. # 编码: gbk. raw 列名 = 中文无单位.
  25. turbine:
  26. required: [变频器电网侧有功功率, 风速]
  27. columns:
  28. 变频器电网侧有功功率:
  29. canonical_id: WAPC_active_power
  30. raw_unit: kW # ✓ 实测 max 2074-2148≈额定2000+裕量, 非瓦特(无1000×陷阱)
  31. valid_range: [-50, 2200] # 小负=寄生; 上限留裕量
  32. block_if_raw_exceeds: 50000 # 单位守卫: 若喂瓦特(~2e6)立即BLOCK
  33. note: "唯一真输出功率列(无干净'有功功率'). 发电机功率设定点是其设定镜像; 风机有功功率设定点(2240常数)=cap非输出"
  34. 风速:
  35. canonical_id: WMET_wind_speed_nacelle
  36. unit: m/s
  37. valid_range: [0, 40] # 实测尖峰到37-44(持续不可能) → 门40
  38. self_ref_risk: true # ★机舱风非自由来流. XE82低风段读高(v4比合同2.0x, v13收敛1.0)=自指, finding89族
  39. note: "塔在2022不可救(无重叠). 绝对功率曲线只可机群相对+合同比, 低风绝对值标INSUFFICIENT"
  40. 风向:
  41. canonical_id: WMET_wind_direction
  42. unit: deg
  43. frame: geographic_unverified # range 0-360, 分布真实 → 疑绝对风向(非nacelle相对: p50≠偏航对风角度映射). 待北偏移标定
  44. valid_range: [0, 360]
  45. note: "作扇区需先验北偏移; 偏航误差用 偏航对风角度 (直接量)"
  46. 偏航对风角度:
  47. canonical_id: WYAW_yaw_error
  48. unit: deg
  49. frame: nacelle # 真偏航误差(风-机舱失准): range±180, 中位-1~+2°, p5-p95±16-31°
  50. valid_range: [-180, 180]
  51. note: "偏航分析用此(观测级); 真零点回收需lidar(同findings87/88)"
  52. 轮毂角度:
  53. canonical_id: WYAW_nacelle_position
  54. unit: deg
  55. frame: unknown_wrapped # ⚠ range -327~327 (非0-360非累积) = 怪编码, 未解
  56. unusable: true
  57. note: "±327异常编码, 解码前勿用作机舱航向"
  58. 气压:
  59. canonical_id: WMET_pressure
  60. dead_channel: true # ★死值: nunique=2 {1.0:99.9%, 0.0}, 非真气压(塔实测793hPa@2000m)
  61. sentinel: [1.0, 0.0] # 必转NaN; 密度走ISA/塔气候态
  62. note: "raw 全=1.0 → 校验门BLOCK(残留哨兵), 清洗NaN后PASS (dogfood信号)"
  63. 叶片1变桨角度:
  64. canonical_id: WROT_pitch_angle_1
  65. unit: deg
  66. valid_range: [-4, 92] # ★负≈-1°是设定最小角(XEMC版DEC pitch-1): <-2°仅0.01%, 非坏值
  67. note: "仅叶片1/2有瞬时桨距(无叶片3变桨角度列); 叶片1/2/3总变桨角度是累积计数"
  68. 叶片2变桨角度:
  69. canonical_id: WROT_pitch_angle_2
  70. unit: deg
  71. valid_range: [-4, 92]
  72. 轮毂转速:
  73. canonical_id: WROT_rotor_speed
  74. unit: rpm
  75. valid_range: [-5, 30] # XE72额定~22.5 XE82~19.5; 小负=停机噪声(p1≈0)正常
  76. spike_below: -5
  77. 外界温度:
  78. canonical_id: WMET_ambient_temp
  79. unit: degC
  80. valid_range: [-45, 45] # 高原冬季 min-37 是真值, 无哨兵(<-50=0%)
  81. 发电机定子温度1:
  82. canonical_id: WGEN_stator_temp_1
  83. unit: degC
  84. valid_range: [-45, 130]
  85. 发电机轴承温度1:
  86. canonical_id: WGEN_bearing_temp_1
  87. unit: degC
  88. valid_range: [-45, 130]
  89. 机舱温度:
  90. canonical_id: WNAC_nacelle_temp
  91. unit: degC
  92. valid_range: [-45, 60]
  93. 有功功率限定值:
  94. canonical_id: WAPC_power_limit
  95. unit: kW
  96. valid_range: [0, 2200]
  97. semantic_ambiguous: true # ⚠ 部分机62-80% <1900: 不可直接判限电(C4教训), 限电用功率封顶法
  98. note: "082/109全=0(未报), 086/106有值; <2000≠必限电"
  99. 风机PLC功率限制设定值:
  100. canonical_id: WAPC_plc_power_limit
  101. unit: kW
  102. valid_range: [0, 2200]
  103. note: "名义2000(额定上限设定), 非动态限电"
  104. 总产生的有功电量:
  105. canonical_id: WTUR_total_active_energy
  106. unit: kWh # 累积计数器(单调增); 大河西无瞬时功率时可 diff×6 反推kW
  107. note: "counter, 非瞬时; 反推功率注意翻转/复位"
  108. 风机当前状态:
  109. canonical_id: WTUR_state
  110. unit: enum
  111. status_enum_ref: configs/fault_dicts/xemc_xe2000_status_codes.csv
  112. note: "6=正常发电(76.7%); 1/2/3=待机顺桨(非故障); 5=启动; 0=离线"
  113. cleaning:
  114. physical:
  115. - "气压 == 1.0 或 0.0 → NaN (死值占位, 非真气压; 不可用作密度)"
  116. - "风速 >40 → 尖峰剔 (持续不可能)"
  117. - "轮毂转速 / 风速 小负值(>-5) = 停机噪声, 保留; <-5 尖峰剔"
  118. semantic:
  119. - "变频器电网侧有功功率 小负 = 待机寄生功耗, 非坏值"
  120. - "叶片变桨角度 ≈-1° = 设定最小角(非坏值, 同DEC pitch-1)"
  121. - "风速 = 机舱风(self_ref), 勿作绝对功率曲线; 用合同曲线比 + 机群相对"
  122. - "风向 = 绝对(未标北偏移), 作扇区前必验; 偏航误差用 偏航对风角度"
  123. - "有功功率限定值 <2000 勿直接判限电 (C4教训, 用功率封顶法)"
  124. status_enum_ref: configs/fault_dicts/xemc_xe2000_status_codes.csv
  125. traps:
  126. - "机型≠子阵: 坝头二期/骆驼沟二期两阵均混装XE72+XE82, 必按turbine_name join机组信息定机型(配错合同曲线=假欠发)"
  127. - "气压死值=1.0/0.0(非-99/9999), nunique=2 揪出; 塔实测793hPa@2000m 反证"
  128. - "XE82机舱风低风段读高(v4比合同2.0x→v13收敛1.0)=自指(finding89族), 大转子更重; 绝对功率不可信"
  129. - "测风塔100%是2022(机组2023)零重叠 + 15-min + 在大河西远离主力阵 → 自由来流join不可用(塔救不了自指, 不同于阜山有重叠)"
  130. - "混合日期格式(2023/1/1 0:00 vs 2023-01-01 00:00:00): 坝头106全年时间只解出Jan = 漏11月! ingestion必多格式兜底+断言行数"
  131. - "大河西074-081独立regime: 不在机组信息 + 仅10-12月 + 半数列全空(无瞬时功率/转速/状态字, 有齿轮箱温度+时间戳秒) → 不同采集系统, 单独track, 功率只能电量diff反推"
  132. - "无叶片3变桨角度瞬时列(只1/2); 齿轮箱入口油温在主力阵全空(仅大河西有) → 主力阵无齿轮箱MSET"
  133. - "状态码两套: 风机当前状态(0-9状态机) vs 事件代码(001-371, XE72/XE82两sheet) — 勿混"
  134. # 大河西 074-081 独立子契约 (列子集不同, 仅10-12月)
  135. mast:
  136. required: []
  137. note: "3号测风塔 2022全年 15-min, 14列(TIME WS10/30/50/70/HUB DIR×5 TEMP PRESSURE RH). header在xls第3行(row idx2), data从row idx5. PRESSURE真实(778-805hPa). 仅气候态用."
  138. columns:
  139. PRESSURE:
  140. canonical_id: WMET_pressure_mast
  141. raw_unit: hPa
  142. valid_range: [700, 850] # 2000m海拔 ~793hPa
  143. WSHUB:
  144. canonical_id: WMET_wind_speed_mast_hub
  145. unit: m/s
  146. valid_range: [0, 40]