mingyang_my1_5_shenmu.yaml 13 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # 数据契约 — 明阳 MINGYANG MY1.5MW (陕西国华 神木风电场, 33台; 西门子发电机)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard 2026-07-12 (双OEM混场之明阳侧)。
  3. # 复用: mingyang_my2_0_changpingao / mingyang_my2_0_gucheng canonical 语义参考 (同OEM明阳; canonical_id 复用非列名)。
  4. # 数据: 明阳 10-min 富层 = 收资数据/DATA/MINGYANG/min/分钟数据导出_2025-05-08_13-52-29.csv (GBK, 48列, 全台堆叠);
  5. # 机号列 '风机'=1#..33#。窗 2024-01-01~2025-05-08 (最长层)。机型 = MY1.5MW (历史故障导出 机型列坐实)。
  6. # ★ 无测风塔 → 绝对性能/达成率 INSUFFICIENT (机舱风 self_ref); 相对机群/温度NBM/变桨(集中)可做。
  7. # 层级: 明阳另有 1-min 层 (DATA/MINGYANG/sec/, 27列, 2025-01~05, 列⊂10min富层) + 10-min薄层(standalone 21列 2025)。10min富层(48列/整年)选为持久层。
  8. # ★ 集中变桨 (单'平均变桨角度', 无per叶列; 区别远景独立三叶); 变桨差异异常记录 = 远景侧(见 envision 契约)。
  9. # ★ 温度列双家族: 'X10分钟平均值' (活) vs 'X(℃)' (部分死列全0: 冷却水/发电机DE/NDE/冷风); 见 dead 说明。
  10. schema_version: 2
  11. meta:
  12. oem: 明阳智能 MINGYANG
  13. model: MY1.5MW (西门子发电机; 低温变桨型)
  14. rated_kw: 1500
  15. n_turbines: 33
  16. farm: shenmu
  17. site: 陕西神木 (低温型; 机舱外温度 min -30℃)
  18. topology: DFIG_geared # 转速 med1101/max1830rpm 高速侧 + 齿轮油温/DE-NDE轴承温 → 齿箱双馈 (待手册)
  19. self_ref_risk: true # 无测风塔 → 机舱风自指
  20. has_mast: false
  21. pitch: collective # 单'平均变桨角度' → 集中变桨 (非per叶独立)
  22. reuse_of: mingyang_my2_0_changpingao.yaml
  23. ground_truth:
  24. status_enum: "收资数据/DATA/MINGYANG/历史状态数据导出(1).csv (状态码0-11+200; 3=并网运行/4=机组故障/8=远程停机/9=小风待机/10=大风待机/11=电网故障/1=偏航解缆)"
  25. fault_dict: "收资数据/DATA/MINGYANG/历史故障导出(14).csv (SC*故障码+中文名+英文名+发生/结束/时长; 33台)"
  26. power_curve: "收资数据/DATA/MINGYANG/风机功率曲线数据(118).csv (风速/实际功率/理论功率/风频/饱和度)"
  27. energy: "收资数据/DATA/MINGYANG/发电量统计数据导出(54).csv (发电量kWh/满发小时)"
  28. curtailment: "收资数据/DATA/MINGYANG/损失电量统计数据导出(23).csv (电网限电/手动限电/主控限电/故障/检修/维护损失分列)"
  29. turbine_10min:
  30. sampling_s: 600
  31. required: ["平均发电机功率实时值(kW)", "平均风速实时值(m/s)"]
  32. columns:
  33. 时间: {role: timestamp}
  34. "平均风速实时值(m/s)": {canonical_id: WMET_wind_speed_nacelle, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 11.5], sentinel: [], self_ref_risk: true, note: "机舱风; 绝对功率曲线自指(无塔)"}
  35. "最小风速实时值(m/s)": {canonical_id: WMET_wind_speed_nacelle_min, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 8.2], sentinel: []}
  36. "最大风速实时值(m/s)": {canonical_id: WMET_wind_speed_nacelle_max, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 18.9], sentinel: [], note: "阵风; max49.8"}
  37. "平均风速1秒平均值(m/s)": {canonical_id: WMET_wind_speed_nacelle_1s, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 11.5], sentinel: []}
  38. "最小风速1秒平均值(m/s)": {canonical_id: WMET_wind_speed_nacelle_1s_min, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 8.4], sentinel: []}
  39. "最大风速1秒平均值(m/s)": {canonical_id: WMET_wind_speed_nacelle_1s_max, raw_unit: mps, to_canonical: 1, valid_range: [0, 60], observed_range: [0.0, 18.7], sentinel: []}
  40. "平均发电机功率实时值(kW)": {canonical_id: WAPC_active_power, raw_unit: kW, to_canonical: 1, valid_range: [-500, 1900], observed_range: [0.0, 1469.8], sentinel: [], note: "额定1500(MY1.5MW)"}
  41. "最小发电机功率实时值(kW)": {canonical_id: WAPC_active_power_min, raw_unit: kW, to_canonical: 1, valid_range: [-500, 1900], observed_range: [-41.7, 1133.1], sentinel: []}
  42. "最大发电机功率实时值(kW)": {canonical_id: WAPC_active_power_max, raw_unit: kW, to_canonical: 1, valid_range: [-500, 1900], observed_range: [0.0, 1582.4], sentinel: []}
  43. "平均发电机功率1秒平均值(kW)": {canonical_id: WAPC_active_power_1s, raw_unit: kW, to_canonical: 1, valid_range: [-500, 1900], observed_range: [-0.2, 1469.8], sentinel: []}
  44. "平均发电机功率30秒平均值(kW)": {canonical_id: WAPC_active_power_30s, raw_unit: kW, to_canonical: 1, valid_range: [-500, 1900], observed_range: [-0.2, 1469.7], sentinel: []}
  45. "平均发电机转速实时值(rpm)": {canonical_id: WGEN_speed, raw_unit: rpm, to_canonical: 1, valid_range: [-150, 2000], observed_range: [0.0, 1799.6], sentinel: [], note: "DFIG高速侧 med1101"}
  46. "平均发电机转速1秒平均值(rpm)": {canonical_id: WGEN_speed_1s, raw_unit: rpm, to_canonical: 1, valid_range: [-150, 2000], observed_range: [-0.4, 1799.6], sentinel: []}
  47. "平均发电机转速30秒平均值(rpm)": {canonical_id: WGEN_speed_30s, raw_unit: rpm, to_canonical: 1, valid_range: [-150, 2000], observed_range: [-0.4, 1799.5], sentinel: []}
  48. "平均变桨角度(°)": {canonical_id: WROT_pitch_angle_collective, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-1.0, 89.0], sentinel: [], trap: "集中变桨(单值,非per叶); 浮点损坏min-2.8e32/max197e24→物理门NaN"}
  49. "平均变桨角度1秒平均值(°)": {canonical_id: WROT_pitch_angle_collective_1s, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-1.0, 89.0], sentinel: [], trap: "同上浮点损坏"}
  50. "平均变桨角度30秒平均值(°)": {canonical_id: WROT_pitch_angle_collective_30s, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-1.0, 89.0], sentinel: [], trap: "同上浮点损坏"}
  51. "平均机舱外温度10分钟平均值": {canonical_id: WMET_ambient_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 55], observed_range: [-17.3, 33.2], sentinel: [], trap: "max841=spurious→NaN"}
  52. "平均塔基温度10分钟平均值": {canonical_id: WNAC_tower_base_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 60], observed_range: [-11.0, 34.3], sentinel: []}
  53. "平均桨叶1电机温度10分钟平均值": {canonical_id: WROT_pitch_motor_temp_1, raw_unit: C, to_canonical: 1, valid_range: [-40, 120], observed_range: [-13.0, 73.6], sentinel: []}
  54. "平均桨叶2电机温度10分钟平均值": {canonical_id: WROT_pitch_motor_temp_2, raw_unit: C, to_canonical: 1, valid_range: [-40, 120], observed_range: [-13.8, 73.0], sentinel: []}
  55. "平均桨叶3电机温度10分钟平均值": {canonical_id: WROT_pitch_motor_temp_3, raw_unit: C, to_canonical: 1, valid_range: [-40, 120], observed_range: [-13.7, 73.9], sentinel: []}
  56. "平均转子轴承A温度10分钟平均值": {canonical_id: WTRM_main_bearing_temp_a, raw_unit: C, to_canonical: 1, valid_range: [-40, 100], observed_range: [1.6, 42.1], sentinel: []}
  57. "平均转子轴承B温度10分钟平均值": {canonical_id: WTRM_main_bearing_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 100], observed_range: [4.2, 47.1], sentinel: []}
  58. "平均齿轮油温10分钟平均值": {canonical_id: WTRM_gbx_oil_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 120], observed_range: [12.4, 62.1], sentinel: [], trap: "min-309=spurious→NaN"}
  59. "平均齿轮箱DE端轴承温度10分钟平均值": {canonical_id: WTRM_gbx_bearing_temp_de, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [11.1, 68.3], sentinel: [-1], trap: "max233=spurious→NaN; -1哨兵"}
  60. "平均齿轮箱NDE端轴承温度10分钟平均值": {canonical_id: WTRM_gbx_bearing_temp_nde, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [10.6, 71.9], sentinel: [-1], trap: "max330=spurious→NaN; -1哨兵"}
  61. "平均齿轮冷却水温度10分钟平均值": {canonical_id: WTRM_gbx_cooling_water_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 100], observed_range: [-1.0, -0.9], sentinel: [-1], trap: "近死列(全≈-1哨兵)"}
  62. "平均发电机DE端轴承温度10分钟平均值": {canonical_id: WGEN_de_bearing_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [1.5, 52.5], sentinel: []}
  63. "平均发电机NDE端轴承温度10分钟平均值": {canonical_id: WGEN_nde_bearing_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [2.7, 60.3], sentinel: []}
  64. "平均发电机定子绕组U温度10分钟平均值": {canonical_id: WGEN_stator_u_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.4, 95.2], sentinel: [-1], note: "F级155阈; -1哨兵"}
  65. "平均发电机定子绕组V温度10分钟平均值": {canonical_id: WGEN_stator_v_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.6, 94.9], sentinel: [-1]}
  66. "平均发电机定子绕组W温度10分钟平均值": {canonical_id: WGEN_stator_w_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.5, 94.3], sentinel: [-1]}
  67. "平均发电机冷风温度30秒平均值": {canonical_id: WGEN_cooling_temp_30s, raw_unit: C, to_canonical: 1, valid_range: [-40, 160], observed_range: [0.4, 80.0], sentinel: []}
  68. "平均机舱温度(℃)": {canonical_id: WNAC_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 60], observed_range: [-12.1, 35.8], sentinel: []}
  69. "平均塔基温度(℃)": {canonical_id: WNAC_tower_base_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 60], observed_range: [-11.0, 34.1], sentinel: [], note: "与塔基温度10分钟近同(别名验)"}
  70. "平均齿轮油温(℃)": {canonical_id: WTRM_gbx_oil_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 120], observed_range: [12.3, 62.1], sentinel: [], trap: "min-310=spurious; 与油温10分钟近同"}
  71. "平均齿轮箱DE端轴承温度(℃)": {canonical_id: WTRM_gbx_bearing_temp_de_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [11.0, 68.4], sentinel: [-1], note: "别名(℃)变体"}
  72. "平均齿轮箱NDE端轴承温度(℃)": {canonical_id: WTRM_gbx_bearing_temp_nde_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [10.6, 71.9], sentinel: [-1]}
  73. "平均齿轮冷却水温度(℃)": {canonical_id: WTRM_gbx_cooling_water_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 100], observed_range: [0.0, 0.0], sentinel: [0], dead_channel: true, trap: "死列(全0); 用10分钟变体(亦近死)"}
  74. "平均发电机DE端轴承温度(℃)": {canonical_id: WGEN_de_bearing_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [0.0, 0.0], sentinel: [0], dead_channel: true, trap: "死列(全0); 用10分钟变体"}
  75. "平均发电机NDE端轴承温度(℃)": {canonical_id: WGEN_nde_bearing_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 150], observed_range: [0.0, 0.0], sentinel: [0], dead_channel: true, trap: "死列(全0); 用10分钟变体"}
  76. "平均发电机定子绕组U温度(℃)": {canonical_id: WGEN_stator_u_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.5, 95.3], sentinel: [-1], note: "别名(℃)变体, 活"}
  77. "平均发电机定子绕组V温度(℃)": {canonical_id: WGEN_stator_v_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.6, 94.9], sentinel: [-1]}
  78. "平均发电机定子绕组W温度(℃)": {canonical_id: WGEN_stator_w_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 180], observed_range: [6.5, 94.4], sentinel: [-1]}
  79. "平均发电机冷风温度(℃)": {canonical_id: WGEN_cooling_temp_b, raw_unit: C, to_canonical: 1, valid_range: [-40, 160], observed_range: [0.0, 0.0], sentinel: [0], dead_channel: true, trap: "死列(全0); 用30秒变体"}
  80. cleaning:
  81. physical: "valid_range clip→NaN(非clamp); 变桨浮点损坏(±1e32)/机舱外841/齿轮油-309/齿箱轴承233-330 spurious→NaN; -1哨兵→NaN"
  82. semantic: "机舱风自指(无塔)→绝对功率曲线INSUFFICIENT; 状态用历史状态导出(状态码0-11); 集中变桨单值; '(℃)'家族部分死列(全0)用'10分钟平均值'家族"
  83. dead_or_unusable:
  84. "平均齿轮冷却水温度(℃)": "死列 全0 (nuniq=1) → 用'10分钟平均值'变体(亦近死≈-1哨兵)"
  85. "平均发电机DE端轴承温度(℃)": "死列 全0 → 用'10分钟平均值'变体(活, med30)"
  86. "平均发电机NDE端轴承温度(℃)": "死列 全0 → 用'10分钟平均值'变体(活, med34)"
  87. "平均发电机冷风温度(℃)": "死列 全0 → 用'30秒平均值'变体(活, med38)"
  88. "平均齿轮冷却水温度10分钟平均值": "近死列 全≈-1哨兵(nuniq=5) → 冷却水温实测不可用"
  89. traps:
  90. - "★机号列='风机'=1#..33# (非文件名); 全台堆叠单CSV, GBK 48列"
  91. - "★集中变桨(单平均变桨角度, 无per叶); 浮点损坏值±1e26~1e32(变桨) → 物理门NaN"
  92. - "★温度双家族: 'X10分钟平均值'(活) vs 'X(℃)'(冷却水/发电机DE/NDE/冷风 全0死); 别名对(塔基/机舱/油温/定子)需去重防伪独立"
  93. - "★-1=温度no-data哨兵(齿箱DE/NDE/冷却水/定子); 机舱外841/齿轮油-309/齿箱轴承233-330 = spurious尖峰"
  94. - "★无测风塔 → 绝对性能/达成率 INSUFFICIENT; 状态/限电用收资导出(状态码/损失电量分列)非SCADA"
  95. - "★1-min层(sec/文件夹, 27列, 2025-01~05, 列⊂本层) + 10min薄层(standalone 21列) = 更薄/更短, 未选为持久层"