envision_1500_shenmu.yaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # 数据契约 — 远景 ENVISION 1.5MW (陕西国华 神木风电场, 66台)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard 2026-07-12 (双OEM混场之远景侧)。
  3. # 复用: envision_en87_1500.yaml (王家湾) canonical 语义参考 (同OEM远景; canonical_id 复用非列名照搬)。
  4. # 数据: 远景 10-min 整年层 = 收资数据/DATA/远景/one_year/*.zip 内 per台 ten_avg_val CSV (GBK, 43列);
  5. # zip内目录名 GBK(cp437乱码), 机台id在文件名/名称列 = "351101(A09)" (内部id+机位)。窗 2024-05-08~2025-05-08。
  6. # ★ 无测风塔 (远景侧收资无 mast) → 绝对性能/达成率/Cp绝对值 天然 INSUFFICIENT (机舱风 self_ref); 相对机群筛查可做。
  7. # 层级: 远景另有 1-min per台层 (收资数据/远景1min/, 40列, 2025-01~05 窗更短且列⊂10min); 10-min整年层最富(+控制柜内温度/轮毂内温度/可利用率)→ 选为清洗持久层。
  8. schema_version: 2
  9. meta:
  10. oem: 远景能源 ENVISION
  11. model: EN-family 1.5MW (天仁TR-1.5G变桨/低温型; 风轮直径/精确型号待远景图纸坐实) # ⚠待核(2026-09-02): '天仁TR-1.5G' 系 onboard 7bb518e6 录入, commit自述'精确型号未列→unverified', **供应商无出处**(repo grep 仅本行); 同平台九宫口配置块=**变桨=Envision自研**(2026-09-02); 判供应商序: 配置块>铭牌/台账>资料目录>SOE码族(SOE平台通用, 码里有X≠本场用X). 铭牌或配置块前不定谳, 不删仅标
  12. rated_kw: 1500
  13. n_turbines: 66
  14. farm: shenmu
  15. site: 陕西神木 (神木一期A/B/C环线 + 三期; 高纬寒冷, 舱外温度 min -23℃)
  16. topology: unverified # 远景1.5MW多为双馈(DFIG)齿箱; 发电机转速 med1101/max1820 rpm = 高速侧, 与DFIG一致 (待手册坐实)
  17. self_ref_risk: true # 无测风塔 → 机舱风自指, 绝对功率曲线 INSUFFICIENT
  18. has_mast: false
  19. reuse_of: envision_en87_1500.yaml
  20. ground_truth:
  21. event_log: "收资数据/DATA/远景/mrweb_firstfault_20250508093913.csv (神木; 故障码SC*/故障描述/部件/系统/刹车等级/时长; 2025窗)"
  22. power_curve: "收资数据/DATA/远景/mrweb_powercurve_*.xls x2 (v-P理论曲线)"
  23. pitch_anomaly: "收资数据/异常记录/所有风机变桨差异异常记录.csv (远景per叶1#/2#/3#桨角差异事件, 表头双重GBK乱码; 派生非原始SCADA)"
  24. turbine_10min:
  25. sampling_s: 600
  26. required: [发电机有功功率, 风速]
  27. columns:
  28. 时间: {role: timestamp}
  29. 发电机有功功率: {canonical_id: WAPC_active_power, raw_unit: kW, to_canonical: 1, valid_range: [-50, 1700], observed_range: [-7.1, 1506.2], sentinel: [], note: "额定1500; min负=寄生"}
  30. 发电机转速: {canonical_id: WGEN_speed, raw_unit: rpm, to_canonical: 1, valid_range: [-50, 2000], observed_range: [0.0, 1800.7], sentinel: [], note: "DFIG高速侧 med1106"}
  31. 发电机驱动端轴承温度: {canonical_id: WGEN_bearing_temp_de, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [8.6, 58.7], sentinel: []}
  32. 发电机非驱动端轴承温度: {canonical_id: WGEN_bearing_temp_nde, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [9.3, 57.5], sentinel: []}
  33. 发电机定子U相线圈温度: {canonical_id: WGEN_stator_u_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 180], observed_range: [11.4, 102.2], sentinel: [], note: "F级155阈"}
  34. 发电机定子V相线圈温度: {canonical_id: WGEN_stator_v_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 180], observed_range: [10.8, 102.1], sentinel: []}
  35. 发电机定子W相线圈温度: {canonical_id: WGEN_stator_w_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 180], observed_range: [11.0, 100.8], sentinel: []}
  36. 实际扭矩: {canonical_id: WTRM_torque, raw_unit: unverified, to_canonical: 1, valid_range: [-1000, 12000], observed_range: [0.0, 8091.1], sentinel: [], note: "单位未坐实(Nm?) med1466"}
  37. 设定扭矩: {canonical_id: WTRM_torque_setpoint, raw_unit: unverified, to_canonical: 1, valid_range: [-1000, 12000], observed_range: [0.0, 8095.9], sentinel: []}
  38. 舱内温度: {canonical_id: WNAC_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 80], observed_range: [0.0, 41.3], sentinel: []}
  39. 控制柜内温度: {canonical_id: WNAC_control_cabinet_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 90], observed_range: [8.8, 43.4], sentinel: [], note: "10min层独有(1min缺)"}
  40. 舱外温度: {canonical_id: WMET_ambient_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 55], observed_range: [-14.3, 34.1], sentinel: []}
  41. 风向: {canonical_id: WMET_wind_direction_geo, raw_unit: deg, to_canonical: 1, valid_range: [0, 360], observed_range: [1.8, 358.2], sentinel: [], frame: geographic}
  42. 风速: {canonical_id: WMET_wind_speed_nacelle, raw_unit: mps, to_canonical: 1, valid_range: [0, 40], observed_range: [0.5, 14.1], sentinel: [], self_ref_risk: true, note: "机舱风; 绝对功率曲线自指(无塔)"}
  43. 机舱风向夹角: {canonical_id: WYAW_yaw_error, raw_unit: deg, to_canonical: 1, valid_range: [0, 360], observed_range: [0.1, 359.9], sentinel: [], frame: nacelle, trap: "0-360编码非±180; med24.65; 对风偏差需wrap到±180"}
  44. "1#桨叶片角度": {canonical_id: WROT_pitch_angle_1, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-0.4, 89.0], sentinel: [], trap: "独立变桨; 罕见坏点(3#min-269/2#max133)物理门NaN"}
  45. "2#桨叶片角度": {canonical_id: WROT_pitch_angle_2, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-0.4, 89.0], sentinel: []}
  46. "3#桨叶片角度": {canonical_id: WROT_pitch_angle_3, raw_unit: deg, to_canonical: 1, valid_range: [-11, 95], observed_range: [-0.4, 89.0], sentinel: []}
  47. "1#桨设定角度": {canonical_id: WROT_pitch_setpoint_blade1, unit: deg, scale: 0.01, valid_range: [-50, 9100]} # ★原值×100; ÷100得度; 控制器指令值(非实测)
  48. "2#桨设定角度": {canonical_id: WROT_pitch_setpoint_blade2, unit: deg, scale: 0.01, valid_range: [-50, 9100]} # ★原值×100; ÷100得度; 控制器指令值(非实测)
  49. "3#桨设定角度": {canonical_id: WROT_pitch_setpoint_blade3, unit: deg, scale: 0.01, valid_range: [-50, 9100]} # ★原值×100; ÷100得度; 控制器指令值(非实测)
  50. "1#桨电机温度": {canonical_id: WROT_pitch_motor_temp_1, raw_unit: C, to_canonical: 1, valid_range: [-40, 155], observed_range: [0.1, 78.1], sentinel: []}
  51. "2#桨电机温度": {canonical_id: WROT_pitch_motor_temp_2, raw_unit: C, to_canonical: 1, valid_range: [-40, 155], observed_range: [0.3, 81.3], sentinel: [850], trap: "850=卡死哨兵"}
  52. "3#桨电机温度": {canonical_id: WROT_pitch_motor_temp_3, raw_unit: C, to_canonical: 1, valid_range: [-40, 155], observed_range: [0.1, 75.5], sentinel: []}
  53. 轮毂内温度: {canonical_id: WROT_hub_temp, raw_unit: C, to_canonical: 1, valid_range: [-40, 90], observed_range: [4.6, 40.7], sentinel: [], note: "10min层独有"}
  54. 齿轮箱油泵吸油口油压: {canonical_id: WTRM_gbx_oil_pump_pressure, raw_unit: unverified, to_canonical: 1, valid_range: [-10, 20], observed_range: [-0.2, 4.0], sentinel: [], note: "单位未坐实(bar?) med3"}
  55. 齿轮箱分配器位置油压: {canonical_id: WTRM_gbx_distributor_pressure, raw_unit: unverified, to_canonical: 1, valid_range: [-10, 30], observed_range: [0.0, 13.9], sentinel: []}
  56. 偏航液压刹车系统蓄能罐压力: {canonical_id: WYAW_hydraulic_accum_pressure, raw_unit: unverified, to_canonical: 1, valid_range: [-30, 150], observed_range: [0.0, 65.4], sentinel: []}
  57. 主轴转速: {canonical_id: WROT_rotor_speed, raw_unit: rpm, to_canonical: 1, valid_range: [0, 25], observed_range: [0.0, 17.0], sentinel: [], note: "额定~17"}
  58. 齿轮箱油路入口温度: {canonical_id: WTRM_gbx_oil_inlet_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [17.0, 119.9], sentinel: [850], trap: "≥50%=850卡死哨兵(去哨兵后近死列, 慎用)"}
  59. 齿轮箱中间轴驱动端轴承温度: {canonical_id: WTRM_gbx_interm_bearing_temp_de, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [15.9, 75.0], sentinel: [850]}
  60. 齿轮箱中间轴非驱动端轴承温度: {canonical_id: WTRM_gbx_interm_bearing_temp_nde, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [14.8, 77.5], sentinel: [850]}
  61. 齿轮箱油池温度: {canonical_id: WTRM_gbx_oil_sump_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 120], observed_range: [16.1, 63.5], sentinel: [850]}
  62. 主轴承外圈温度: {canonical_id: WTRM_main_bearing_temp, raw_unit: C, to_canonical: 1, valid_range: [-30, 100], observed_range: [6.8, 47.5], sentinel: []}
  63. 可利用率: {canonical_id: WTUR_availability, raw_unit: pct, to_canonical: 1, valid_range: [0, 100], observed_range: [94.5, 100.0], sentinel: [], note: "10min层独有; 机组可利用率%"}
  64. 机舱位置: {canonical_id: WYAW_nacelle_position, raw_unit: deg, to_canonical: 1, valid_range: [0, 360], observed_range: [1.6, 358.2], sentinel: []}
  65. 总扭缆角度: {canonical_id: WYAW_cable_twist, raw_unit: deg, to_canonical: 1, valid_range: [-2000, 2000], observed_range: [-348.3, 642.3], sentinel: [], note: "累积扭缆(解缆代理)"}
  66. cleaning:
  67. physical: "valid_range clip→NaN(非clamp); 温度类850=卡死哨兵→NaN; 桨角罕见坏点(<0.01%)物理门NaN"
  68. semantic: "机舱风(风速)自指→无塔, 绝对功率曲线 INSUFFICIENT; 状态用事件日志(mrweb_firstfault)非10min(无状态列); 机舱风向夹角0-360非±180"
  69. dead_or_unusable:
  70. 变频器冷却回路出口温度: "全 N/A 空列 (10min整年层) → 弃"
  71. 功率曲线状态: "全 N/A 空列 → 状态enum用事件日志(SC故障码), 非本列"
  72. 刹车盘温度: "全 N/A 空列 → 弃"
  73. 仪表盘风速: "med1366/max9107 != m/s (疑仪表盘原始码/误标) → 不可用; 风速用'风速'列(机舱风)"
  74. traps:
  75. - "★★神木远景66台**不是一个fleet, 是4个** (2026-09-02 独立验证工作流实跑, 两条正交分组轴): 轴A=Region-2 K×精桨位(完全嵌套): K低离群22.6%∧fine=-0.10°(n=11: A02/03/04/05/07/08/09/10/14/15/18) vs K高∧fine=-0.40°(n=22) vs K高∧fine=-0.35°(n=33); 轴B=齿轮箱变比 106(n=48) vs **107**(n=18, 全为3521xx/3522xx, 最大间隙0.976 vs 次大0.020=49.6×) — 变比轴切在fine=-0.35组内部 ⇒ 非机型标记, 机制(真变比差 vs 主轴编码器标定)INSUFFICIENT需BOM。交叉得 G1(K低/-0.10/106,n=11) G2(-0.40/106,n=22) G3(-0.35/106,n=15) G4(-0.35/**107**,n=18)。**所有 fleet-relative 判据(温度NBM/欠发/Cp/功率曲线)必先按G1-G4分层**; 已知nbm_hot台352101/352104/352202全落G4, 66台单池比较对其无效。⚠G4台号=同期次同区域连续块 ⇒ 机组分组与地理共线, 组间差异不可归因机型。"
  76. - "★机台id在文件名/名称列 = '351101(A09)' (内部id 3511xx/3512xx/3513xx=一期A/B/C环, 3521xx/3522xx/3523xx; +机位Axx/FDxx/XJPxx/XDMxx/DLxx)"
  77. - "★zip 内目录名 GBK(cp437)乱码; CSV = GBK; 逐 zip 读 per台 ten_avg_val.csv"
  78. - "★850=温度卡死哨兵(齿轮箱油路入口温度≥50%=850, 中间轴/油池/2#桨电机 偶发850)"
  79. - "★★桨设定角度x3 **非损坏, 系 ×100 定标**(2026-09-02 订正; 原判'编码坏→弃'作废): 逐点为 INT×100(度), 10min均值化后含小数。验证: 发电态 234.9万行回归 斜率0.998/截距+0.024°/残差p95 0.176° 三桨一致; min=-40→**-0.40°=Pitch_FinePosition**(远景EN87/93同值), max=9000→**90.00°=顺桨位**。用前 ÷100。仪表盘风速非m/s; 变频器冷却/功率曲线状态/刹车盘温度 全N/A → 仍弃(见 dead_or_unusable)"
  80. - "★机舱风向夹角=0-360编码(非±180 signed); 机舱位置/风向=0-360; 总扭缆角度=累积>±360"
  81. - "★无测风塔 → 绝对性能/达成率 INSUFFICIENT (self_ref); 仅相对机群筛查/温度NBM/偏航/变桨可做"