xuji_wt2000_hefeng_yuanbaoshan.yaml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # 数据契约 — 和风风电场/元宝山子场 (farm#7, 大唐河南) — 许继 XUJI WT2000/XW2000, 2MW DFIG geared
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py
  3. # 🔴 多OEM混场(3期89台)但仅"元宝山"子场有秒级数据 (HARD GATE 读全资料坐实, 唐珍/马王式):
  4. # 场站基本信息表+收资清单 坐实 89台3期3OEM:
  5. # 上渠(和渠1-16号): 联合动力 UP3000-120, 3MW, 16台, 轮毂90m/叶轮120m, COD2014-12~2015-02
  6. # 元宝山(和宝N号): 许继 WT2000/XW2000, 2MW, 21台, 轮毂80/90m/叶轮93/100/110m混转子, COD2015-01~02
  7. # 赵庄: 东气 DF121-2500, 2.5MW, 52台, 轮毂90m/叶轮121m, COD2018-05
  8. # ⚠ **秒级SCADA仅"元宝山参与分析的机组"= 许继21台**(元宝山1-21号风机); 上渠(联合动力)/赵庄(东气)无秒级数据 → 不可分析.
  9. # 本契约只适用 许继 WT2000 (元宝山21台). 许继=repo新OEM(≈14家); ⚠ ≠ 已有 xemc_xe2000(湘电, 不同厂!).
  10. meta:
  11. farm: 和风风电场 (元宝山子场)
  12. farm_code: HF
  13. oem: 许继 XUJI (许继风电; ⚠非XEMC湘电)
  14. model: WT2000/XW2000 (2MW DFIG geared; 河南三门峡渑池县海拔~700m; COD 2015-01)
  15. topology: dfig_geared
  16. rated_kw: 2000 # 有功功率 max~2160, 额定2000
  17. rotor_diameter_m: [93, 100, 110] # 🔴混转子3变体(收资清单坐实); 额定rpm可辨大转子组{18,19,20,21}(叶轮14.6-14.8 vs 其余~15.5)但{18,19}另有gen-rpm异常(§5, 1598 vs t20/21=1801); 细分93/100/110三映射=INSUFFICIENT
  18. hub_height_m: [80, 90] # 收资清单 80/80/90
  19. n_turbines_nameplate: 89 # 全场3期(多OEM)
  20. n_turbines_with_data: 21 # ★仅许继元宝山子场有SCADA; 联合动力上渠16/东气赵庄52 无秒级
  21. province: 河南
  22. benchmark: [1, 13, 18, 19, 21] # 元宝山号 (短窗P_max较高者, 待全量重选标杆)
  23. sampling:
  24. sec_s: 30 # ★ 实测30秒 (≠"sec"文件夹/列名暗示1秒; 唐珍15s/金华山10s/和风30s 第4例"别信名")
  25. min_s: 600 # 10-min层=6个双月.xls(全年2023, 元宝山十分钟)
  26. windows:
  27. sec: "2023 全年 (元宝山1号验Jan起; 30秒×全年≈100万行/台)"
  28. min: "2023 全年 (6 .xls 双月: 1-2/3-4/5-6/7-8/9-10/11-12月)"
  29. mast: "测风塔数据未在收资xlsx(表4=格式模板'数据单独提交') → 数据位置待查(顶层zip/beifen/未提供)"
  30. met_mast: absent_data # 🔴 测风塔信息表列2塔(#1塔80m梯度10/30/50/80 + #2塔90m梯度10/30/70/90)但**实测数据文件未随交付**(全场文件名递归 测风/塔/风速 0命中); 仅位置信息无数据 → **绝对功率曲线 INSUFFICIENT**(顶层场族; 有OEM曲线表3条可做relative/表观但机舱风self_ref)
  31. power_curve_table: present # 🟢 收资清单表3 功率曲线: 许继WT2000/93 + /100 + /110 三转子变体(密度1.153) + 联合动力/东气(其他子场) → 绝对达成率可锚, 但需per-turbine转子映射(INSUFFICIENT→可能按额定行为反推或caveat)
  32. event_table: absent # 🔴 收资清单表6(故障)/表7(限电)=空模板(仅"如:..."示例行) → 无真故障/限电日志; 故障靠状态码1/8(好风/中风停)+温度/振动
  33. encoding: gbk
  34. reuse: "许继=repo无契约新OEM, 从机台表+G-OEM全新onboard; 物理层(DFIG geared 2MW)通用框架; 状态码per场重解(本场14=发电主态, 异其他OEM枚举)"
  35. provenance: "scripts/hf_survey.py(读全资料xlsx), hf_goem.py(sec字段语义), hf_goem2.py(状态解码+跨21台校验); 和风12.06.xlsx(机台表/测风塔表) + 附件1收资清单(曲线/分期)"
  36. # ============ sec 层 (21列原始; 30秒; 许继元宝山21台) ============
  37. turbine_sec:
  38. required: [有功功率, 环境风速, 风机状态接收]
  39. columns:
  40. 风机号: {canonical_id: WTUR_id, note: "元宝山N号风机"}
  41. 时间: {canonical_id: timestamp, parse: datetime, note: "30秒间隔"}
  42. 有功功率: {canonical_id: WAPC_active_power, unit: kW, valid_range: [-100, 2200], note: "max2160 rated2000; min~-33电动/寄生"}
  43. 环境风速: {canonical_id: WMET_wind_speed_nacelle, unit: m/s, valid_range: [0, 40], self_ref_risk: true, note: "★唯一可用风参考(风向/机舱位置死); 绝对性能self_ref→需mast"}
  44. 叶轮转速: {canonical_id: WROT_speed, unit: rpm, valid_range: [0, 25], sentinel_near: [-0.49], note: "发电~13.6, 低速轴; geared比~118"}
  45. 发电机转速: {canonical_id: WGEN_speed, unit: rpm, valid_range: [0, 2000], note: "发电~1571, max1883; DFIG geared"}
  46. 机舱温度: {canonical_id: WNAC_ambient_temp, unit: degC, valid_range: [-40, 60]}
  47. 环境温度: {canonical_id: WMET_ambient_temp, unit: degC, valid_range: [-40, 55]}
  48. 总发电量: {canonical_id: WTUR_total_energy, unit: kWh, note: "累积单调↑(7.87M→), 可做能量核对"}
  49. 齿轮箱油温: {canonical_id: WTRM_gearbox_oil_temp, unit: degC, valid_range: [-40, 100], note: "★唯一活的齿轮箱测点(31-71)"}
  50. 发电机驱动侧轴承温度: {canonical_id: WGEN_bearing_de_temp, unit: degC, valid_range: [-40, 120]}
  51. 发电机非驱动侧轴承温度: {canonical_id: WGEN_bearing_nde_temp, unit: degC, valid_range: [-40, 120]}
  52. 发电机定子绕组温度U1: {canonical_id: WGEN_stator_temp_u, unit: degC, valid_range: [-40, 180]}
  53. 发电机定子绕组温度V1: {canonical_id: WGEN_stator_temp_v, unit: degC, valid_range: [-40, 180]}
  54. 发电机定子绕组温度W1: {canonical_id: WGEN_stator_temp_w, unit: degC, valid_range: [-40, 180]}
  55. 风机状态接收:
  56. canonical_id: WTUR_state_received
  57. status_enum_ref: configs/fault_dicts/xuji_wt2000_hefeng_state_enum.csv
  58. semantic: "★主状态源(cross-tab坐实, 元宝山1号12万行): 14=发电77.6%(P1090/gen1571)/9=低风待机17%(ws2.0<切入)/1=好风停机(ws10.8却P0=真故障停)/8=中风停机/11,15,13=转子转就绪·启动过渡/0=离线(部分台); ⚠preliminary, 全量clean重cross-tab精修"
  59. dead_columns_fleetwide: # 🔴 跨21台全验死 (非单台; dead-col必跨机判)
  60. 机舱位置: "全21台nac_uq=1恒值 → 偏航 INSUFFICIENT (无可用heading; 同唐珍/吉山)"
  61. 齿轮箱高速轴承温度: "全21台死(0) → 齿轮箱仅油温可用"
  62. 齿轮箱中速轴承温度: "全21台死(0)"
  63. 齿轮箱低速轴承温度: "全21台死(0)"
  64. unreliable_columns:
  65. 环境风向: "🔴全21台越界脏([-108,497]/[300,850]…每台不同偏置~600°跨度, 非[0,360]地理也非干净nacelle-rel) → 风向类/对风分析 INSUFFICIENT, 不用"
  66. # ============ 测风塔 (信息表列2塔, 数据文件待查) ============
  67. mast:
  68. status: data_file_TBD
  69. towers:
  70. "#1": {height_m: 80, gradients_m: [10, 30, 50, 80], lon: "111°31′05″", lat: "34°41′17″"}
  71. "#2": {height_m: 90, gradients_m: [10, 30, 70, 90], lon: "111°39′33″", lat: "34°43′00″"}
  72. note: "🟡 收资xlsx只给测风塔信息(位置/梯度)非数据(表4模板'数据单独提交'). 数据文件未在已survey层 → 下一步找(顶层234MB-zip/beifen.rar txt/或未提供). 找到后必验: 切变物理性(高层>低层)+双高度风向一致(唐珍80m坏为戒) 再决定绝对功率曲线可行性. 未找到→绝对达成率 INSUFFICIENT(同顶层场族)."
  73. # ============ 桨距 (独立 桨距角数据.zip, 待peek) ============
  74. pitch:
  75. status: available # ✅ peek确认
  76. source: "sec层 桨距角数据.zip (87.9MB, 21台 per-turbine 桨距csv ~51MB/台, 配_1 2023窗) + 元宝山数据.zip(_5.csv变体: 2024-05, 24列含叶片1/2/3变桨角度A inline + 齿轮箱轴承温度活)"
  77. note: "桨距有(2023独立zip + 2024-05 _5内联). 🔴 但本场无X/Y振动列 → 桨距集距死时叶片不平衡整体INSUFFICIENT(振动+桨距双缺其一); 待clean期验集距死(per-blade桨距spread). _5(2024-05短窗)齿轮箱高/中/低速轴承温度活(2023死=该年传感器/logging问题, 非永久)"
  78. cleaning:
  79. physical:
  80. - "叶轮转速≈-0.49 近零噪声 → clip[0,25]; 有功 clip[-100,2200]"
  81. - "环境风向 不可用 → 不纳入清洗输出 (越界脏全台)"
  82. - "机舱位置/齿轮箱高中低速轴承温度 死列 → 不纳入"
  83. - "风机状态接收 取整 (滤过渡分数值若有)"
  84. semantic:
  85. - "环境风速=机舱风 self_ref → 绝对功率曲线必用mast自由来流(若数据找到且可信), 不用机舱风"
  86. - "无内置可利用率列 → 可用率由状态码派生(14发电/9低风待机/1·8停机分项); 同步性判别器(景泰/昌平式)分外部限电vs故障(本场无限电直接列+表7空)"
  87. - "无真故障日志(表6空) → 故障靠状态1(好风停)+8(中风停)downtime + 温度(油温/发电机/定子)+ 状态码"
  88. traps:
  89. - "★ 采样30秒 ≠ 'sec'/列名暗示1秒 (第4场'别信名': 唐珍15/金华山10/和风30)"
  90. - "★ 多OEM 89台3期但仅许继元宝山21台有秒级; 联合动力上渠16/东气赵庄52 无数据→不可分析(报告只许继21台)"
  91. - "★ 许继=新OEM(≈14家), ⚠ ≠ xemc_xe2000(湘电); 状态码14=发电主态(per场枚举, 别套其他OEM)"
  92. - "🔴 机舱位置死(全台)+环境风向越界脏(全台) → 偏航/对风/风向 INSUFFICIENT (无任何可用方向量)"
  93. - "🔴 齿轮箱仅油温活(高/中/低速轴承温度全台死) → 齿轮箱热分析仅油温level粗筛"
  94. - "🔴 表6故障/表7限电=空模板(无真日志) → 限电'无停机型'靠同步性判据; 功率限制型无列→INSUFFICIENT(SOP#19); 故障靠状态码+温度"
  95. - "🟡 混转子93/100/110 + per-turbine映射未知 → 绝对功率曲线选错曲线风险; 需按额定行为/叶轮转速反推转子或caveat"
  96. - "🟡 测风塔数据文件待查; 桨距独立zip待peek; 无X/Y振动列(异唐珍/明阳)→叶片不平衡可能整体INSUFFICIENT"