sinovel_sl1500_77_jingtaixingquan.yaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # 数据契约 — 华锐 Sinovel SL1500/77 (景泰兴泉风电场, 大唐2025科研)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard (loop farm#1) 2026-06-10.
  3. # 🔴 v2 重写: v1 错建在 10-min 清洗层(犯 feedback_onboard_from_raw_not_cleaned). 本版建在 秒级 sec2.
  4. meta:
  5. oem: 华锐 Sinovel
  6. model: SL1500/77
  7. topology: dfig_geared
  8. rated_kw: 1500
  9. rotor_d_m: 77
  10. hub_height_m: 65
  11. turbine_count: 30 # ✅ 读全机台表坐实 (非v1瞎写的16!)
  12. turbines: DJ01-DJ30 (全 SL1500/77, 1期, 甘肃海拔1705-1783m, COD 2008)
  13. benchmark_turbines: [DJ01, DJ05, DJ11, DJ14, DJ18, DJ19, DJ24, DJ28] # 机台表 标杆=是 共8台
  14. ground_truth:
  15. power_curve: "curv_power_hetong_jingtaixingquan.csv (合同曲线) + 功率曲线.xlsx"
  16. machine_info: "机组信息_风电场_jingtaixingquan.csv (30台全, 已读全)"
  17. event_codes: "风机事件代码定义表.xlsx (12.4MB, 状态码/事件解码 ground truth, 待解析)"
  18. met_mast: "测风塔数据.rar (1.8MB, 自由来流, 破机舱风自指/真地理偏航, 待解压7z)"
  19. spec_doc: "SL1500-77参数.docx + 说明.doc (待读)"
  20. data_layers:
  21. PRIMARY_sec: "数据转换及清洗/sec2/DJ01-DJ30.csv (47列, 10秒, 全30台, ~190-244MB/台). 实证DJ01=71.8万行 2023-12→2024-02(~84天)"
  22. raw_10s: "十秒数据(华锐77).rar (1.16GB, 原始10秒, 需7z)"
  23. raw_monthly: "2023年12月/2024年1/2月.rar (~900MB/月, 原始高频, 需7z)"
  24. agg_10min: "数据转换及清洗/DJ*.csv (51列10min) + min_scada*.zip — ⚠缺状态码/对风角度/振动, 且风向被污染成-4421野值, 仅辅助勿主用"
  25. sampling: {primary_s: 10, verified: "sec2 DJ01 时间diff中位=10s"}
  26. provenance: "oem-onboard loop 2026-06-10 v2; G-OEM scripts/jtxq_goem2_sec.py (DJ01+DJ05 秒级全量)"
  27. # 秒级 sec2 列 (47). G-OEM 实测见注.
  28. turbine:
  29. required: [有功功率, 环境风速, 转集团标准状态]
  30. columns:
  31. 有功功率: {canonical_id: WAPC_active_power, raw_unit: kW, valid_range: [-50, 1700]} # max1648(10s峰) p99=1561≈额定
  32. 环境风速: {canonical_id: WMET_wind_speed_nacelle, unit: m/s, valid_range: [0, 40], self_ref_risk: true} # 中位2.5=极低风场, 44%待机
  33. 环境风向:
  34. canonical_id: WMET_wind_direction
  35. frame: UNVERIFIED_nacelle_suspect # 🔴 range±180 中位0, corr(env-nac,对风角度)=-0.06低 → 疑nacelle-rel≈对风角度(非地理); 真地理需测风塔
  36. valid_range: [-180, 180]
  37. note: "≤-90 占5.5% 是合法负向角(±180frame)非哨兵; 秒级干净[-178,176] (10-min那层才被污成-4421)"
  38. 对风角度:
  39. canonical_id: WYAW_yaw_error
  40. unit: deg
  41. frame: nacelle_relative # ✅ 直接偏航误差! 发电态中位-0.40° IQR[-6.2,3.5]=对风良好, 绕风向-机舱自指
  42. valid_range: [-180, 180]
  43. 机舱位置:
  44. canonical_id: WYAW_nacelle_position
  45. frame: geographic_unwrapped # range[-449,489] 累积航向(缆绕), 29%<-90是负累积非哨兵; mod360+北偏移[TBD]
  46. valid_range: [-540, 540]
  47. 转集团标准状态:
  48. canonical_id: WTUR_status_group_std
  49. type: enum
  50. note: "★限电/可用率 ground truth. 13种: 101=发电(44.5%,P591) / 1=待机(43.8%,P0) / 601(6.6%,P0)=停? / 102·104=发电变体 / 201·202·302=各类停(P0). 需事件代码定义表.xlsx 解码"
  51. 风机子状态:
  52. canonical_id: WTUR_substatus_bitmask
  53. type: enum_suspect_bitmask # 22种 码1024/1536/1026/132096/263168/66560/4195328 = 疑位掩码(power-of-2组合), 用 status_code_decode_method
  54. 偏航状态: {canonical_id: WYAW_status, type: enum, note: "15种 码20=对风发电(47%)/21=待机(46%)/0/5/15..."}
  55. 频率: {canonical_id: WGRID_frequency, unit: Hz, valid_range: [45, 55]} # 中位49.9 电网
  56. 网侧A相电压: {canonical_id: WGRID_voltage_a, unit: V}
  57. 叶轮转速: {canonical_id: WROT_rotor_speed, unit: rpm}
  58. 发电机转速: {canonical_id: WGEN_speed, unit: rpm, valid_range: [-20, 1900]} # range[0,1890]
  59. 叶片1变桨角度: {canonical_id: WROT_pitch_angle_1, unit: deg, valid_range: [-5, 95]} # 集距(死指标, 见traps)
  60. 叶片1变桨力矩: {canonical_id: WROT_pitch_torque_1, unit: Nm}
  61. 齿轮箱油温: {canonical_id: WTRM_gearbox_oil_temp, unit: degC, valid_range: [-40, 120], sentinel: [-272.5, -273]}
  62. 发电机驱动侧轴承温度: {canonical_id: WGEN_bearing_temp_de, unit: degC, valid_range: [-40, 150]}
  63. X方向振动加速度: {canonical_id: WVIB_acc_x, note: "range[-16,4.6]; 振动健康(同明阳双轴), Y方向同"}
  64. 日发电量: {canonical_id: WAPC_energy_daily, unit: kWh}
  65. 总发电量: {canonical_id: WAPC_energy_total, unit: kWh, note: "累积, 差分得增量"}
  66. cleaning:
  67. physical:
  68. - "机舱位置 越界[-540,540] → NaN (累积航向, 但极端野值剔)"
  69. - "温度类 ≈-272.5/-273 → NaN (绝对零度哨兵)"
  70. - "风速 >40 → 尖峰剔"
  71. - "⚠ 方向类(环境风向/对风角度) ≤-90 是合法负向角, 勿当哨兵剔 (v1在10-min误判过)"
  72. semantic:
  73. - "限电/可用率 必用 转集团标准状态 (秒级), 非10-min(无此列)"
  74. - "叶片角度=集距死指标(测不了不平衡); 不平衡只能1P谐波(有X/Y振动可做)/光学"
  75. traps: # 🔴🔴 本场核心教训
  76. - "★★ onboard 必从秒级 sec2 起: 10-min清洗层缺 状态码/对风角度/振动/电网频率, 且把环境风向污染成-4421野值. 用10-min=做不了限电/可用率/偏航(feedback_onboard_from_raw_not_cleaned 又犯, 用户2026-06-10纠)"
  77. - "★ 30台非16: 必读全 机组信息csv (Import-Csv .Count), 勿读前5行假设 (feedback_read_all_farm_data_no_assume)"
  78. - "环境风向 frame 未定(±180中位0疑nacelle-rel), 但'对风角度'已是干净直接偏航误差(中位~0对风良好); 真地理绝对偏航零点需测风塔"
  79. - "风机子状态=位掩码(码1024=2^10/1536/132096), 解码用 reference_status_code_decode_method (binary状态列坐实枚举)"
  80. - "极低风场(env风中位2.5m/s, 44%待机码1) → cf必低是资源非缺陷; 待机≠故障"
  81. - "机舱风自指 NTF: 有测风塔可自校(待解压); 绝对功率曲线必自由来流"