saic_feicheng.yaml 9.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # 数据契约 — 上汽(SAIC) W2000 (肥城风电场, 华电山东; 混场肥城仅上汽子集)
  2. # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard 2026-07-07 (肥城上汽子集样板).
  3. # ★★★ 混场警示: 肥城=跨期混 OEM 场群 (运行规程权威源坐实 2026-07-12):
  4. # · 虎门期 = 上海电气 W2000-116-80 = 25台 (本契约; "上汽"=上气口语, 虎门运行规程"由上海电气风电设备有限公司制造")。
  5. # · 肥城本部(桃园+安临站期) = 重庆海装 H111N = 50台 (另 OEM 未 onboard=feicheng_taoyuan@CSIC; 肥城运行规程"由重庆海装风电设备有限公司制造")。
  6. # ★ 用户 2026-07-12: 规程里的 "W1900-116-80"(虎门1台) 与 "H111N-1.9MW"(海装2台) = **文字标注, 实质均 2MW** (非异型/降额型) → 两期机型均质 (虎门全 W2000 2MW / 海装全 H111N 2MW)。
  7. # 本契约仅覆盖上海电气虎门子集 (F035000100N, 25台全 2MW); 海装子集不配对, 勿混入。
  8. # ★ OEM=上汽风电 W2000 (据维护手册 MC-030.00-A_..._W2000风力发电机组维护手册.pdf + 主控原理图 DA-030.52.00-G_W2000);
  9. # farm_code F035; rated 实测 p99≈2043~2058kW → 铭牌 2000kW。
  10. meta:
  11. oem: 上海电气 SEWIND # 2026-07-11 取证订正: 原判"上汽风电(SAIC)"错 — 所引 MC-030 维护手册与 DA-030 主控原理图 PDF 文本层均命中"上海电气" (上汽=口语简称误当厂名); 旁证=W2000 平台+华电山东生态 (郭家店/夏邱/台儿庄同族)+plateau 2043-2058 落 SEWIND W2000 带; 证据链 outputs/_genebank/身份悬案取证_2026-07-11.md
  12. model: W2000 (rated 实测 p99≈2043~2058kW, max~2140)
  13. topology: DFIG_geared # 发电机转速 med1180rpm(高速侧) + 齿轮箱油温/齿轮箱冷却水温列齐 + 风轮转速 med9.5rpm 独立列 → 双馈齿轮箱
  14. rated_kw: 2000
  15. farm_code: F035
  16. source_farm: 肥城风电场 (山东, 华电山东; 混场上汽+海装, 本契约仅上汽子集)
  17. turbine_count: 25 # 上汽子集 F0350001001 ~ F0350001025
  18. data_layers:
  19. agg_15min: "10分钟数据/15分钟数据{YYYY-M}({台组})900S.zip (39 zip, 109列GBK, 900s=15min). 窗 2024-10 ~ 2025-10 (13月)"
  20. sec_30: "30秒高频数据/秒级数据{YYYY-M}({台组})30S.zip (本次未 onboard)"
  21. fault_log: "故障记录_20250101_20251124.csv (383030行, 5列GBK: 风机名/状态码/状态码描述/激活时间/复位时间; 台号=裸整数1-25; 窗 2025-01-01~2025-11-24)"
  22. sampling: {agg_15min_s: 900, verified: "样本F0350001004 时间diff中位=900s(众数900, 另148行diff=0=重复时间戳需去重)"}
  23. provenance: >-
  24. oem-onboard 2026-07-07; 编码gbk; 109列含 .1 后缀重复列名(发电机冷却水温度.1/齿轮箱冷却水温度.1/机舱位置.1
  25. 等冗余传感器,用主列); ⚠台号双制式: SCADA文件名=F0350001004 但 SCADA『风机名称』列=裸整数4,
  26. 故障记录『风机名』=裸整数1-25 → join键统一裸整数(文件名末位去前导零)。
  27. # ★★★ 供主Claude复核的语义实证 (拿不准处已 flag, 未硬填):
  28. known_issues:
  29. - "★『限功率运行』列名误导: =1 时(占比0.6~0.84)中风段功率正常(6-9m/s med966kW); =0 时功率≈-3kW(停机/离线)。
  30. 即 限功率运行=1 语义≈『正常并网发电中』, 非『被限电』→ 绝不作限电信号。限电改由 P+电网频率 物理态派生判。"
  31. - "『有功设定值』med=100 → 疑百分比设定(100%满发), 非kW绝对值; 语义未定, 契约仅记录不做判据。"
  32. - "『箱变油温(℃)』全台读 -0.1 恒定(std=0) → 死通道/未接, NBM/温度分析必排除。"
  33. - "『环境温度』列 100% null → 死列, 排除。舱外温度/塔筒温度 为活环境温(NBM amb 用塔筒温, 同岳林柏约定)。"
  34. - "温度列底部见 0.0(低速轴承/高速轴承/齿轮箱油温/定子U 等 min=0.0) → 疑停机时未接/冻结零, 非真-40哨兵;
  35. 未见 -99/9999 数值哨兵。valid_range 保守下界设 -50 兜坏值, 0.0 归清洗层语义(停机段)处理。"
  36. turbine:
  37. required: [有功功率(kW), 10分钟平均风速(m/s)]
  38. columns:
  39. 有功功率(kW): {canonical_id: WAPC_active_power, unit: kW, valid_range: [-200, 2300]} # p99≈2043~2058≈额定2000
  40. 无功功率(kVar): {canonical_id: WAPC_reactive_power, unit: kVar, valid_range: [-2000, 2000]}
  41. 电网频率(Hz): {canonical_id: WGRID_frequency, unit: Hz, valid_range: [0, 55], note: "med49.99; <10=脱网停(物理态判据)"}
  42. 有功设定值: {canonical_id: WAPC_power_setpoint, unit: pct_or_unknown, valid_range: [0, 120], note: "med100 疑百分比;语义未定,勿作限电阈"}
  43. 发电机转速(rpm): {canonical_id: WGEN_speed, unit: rpm, valid_range: [-50, 2100]} # med1180 高速侧, NBM rotor协变量
  44. 风轮转速(rpm): {canonical_id: WROT_speed, unit: rpm, valid_range: [-5, 25]} # med9.5 低速侧独立列
  45. 10分钟平均风速(m/s): {canonical_id: WMET_wind_speed_nacelle, unit: m/s, valid_range: [0, 45], self_ref_risk: true}
  46. 瞬时风速(m/s): {canonical_id: WMET_wind_speed_inst, unit: m/s, valid_range: [0, 60]}
  47. 桨距角1(°): {canonical_id: WROT_pitch_angle_1, unit: deg, valid_range: [-5, 95]}
  48. 桨距角2(°): {canonical_id: WROT_pitch_angle_2, unit: deg, valid_range: [-5, 95]}
  49. 桨距角3(°): {canonical_id: WROT_pitch_angle_3, unit: deg, valid_range: [-5, 95]}
  50. 机舱位置(°): {canonical_id: WYAW_nacelle_position, unit: deg, valid_range: [0, 360]}
  51. 风向角(°): {canonical_id: WMET_wind_direction, unit: deg, valid_range: [0, 360], note: "对北风向/风向_超声另列;偏航须重构+坐标系核,勿直读"}
  52. # ---- 温度通道 (NBM/matched-load/cooling 候选; 死通道见 known_issues) ----
  53. 齿轮箱油温(℃): {canonical_id: WTRM_gbx_oil_temp, unit: degC, valid_range: [-50, 120]}
  54. 齿轮箱入口油温(℃): {canonical_id: WTRM_gbx_inlet_oil_temp, unit: degC, valid_range: [-50, 120]}
  55. 齿轮箱冷却水温度(℃): {canonical_id: WTRM_gbx_cool_water_temp, unit: degC, valid_range: [-50, 120]}
  56. 低速轴承温度(℃): {canonical_id: WTRM_lss_bearing_temp, unit: degC, valid_range: [-50, 120]}
  57. 高速轴承温度(℃): {canonical_id: WTRM_hss_bearing_temp, unit: degC, valid_range: [-50, 130]}
  58. 驱动端轴承温度(℃): {canonical_id: WGEN_de_bearing_temp, unit: degC, valid_range: [-50, 150]}
  59. 自由端轴承温度(℃): {canonical_id: WGEN_nde_bearing_temp, unit: degC, valid_range: [-50, 150]}
  60. 发电机定子U温度(℃): {canonical_id: WGEN_stator_u_temp, unit: degC, valid_range: [-50, 200]}
  61. 发电机定子V温度(℃): {canonical_id: WGEN_stator_v_temp, unit: degC, valid_range: [-50, 200]}
  62. 发电机定子W温度(℃): {canonical_id: WGEN_stator_w_temp, unit: degC, valid_range: [-50, 200]}
  63. 发电机滑环温度(℃): {canonical_id: WGEN_slipring_temp, unit: degC, valid_range: [-50, 200]}
  64. 发电机冷却水温度(℃): {canonical_id: WGEN_cool_water_temp, unit: degC, valid_range: [-50, 120]}
  65. 变流器冷却水温度(℃): {canonical_id: WCNV_cool_water_temp, unit: degC, valid_range: [-50, 120]}
  66. 轮毂温度(℃): {canonical_id: WROT_hub_temp, unit: degC, valid_range: [-50, 120]}
  67. 塔筒温度(℃): {canonical_id: WMET_ambient_temp, unit: degC, valid_range: [-45, 55], note: "med~18; NBM共模基线(amb),同岳林柏约定"}
  68. 舱外温度(℃): {canonical_id: WNAC_outdoor_temp, unit: degC, valid_range: [-45, 55], note: "med~12; amb备选; 见 -1 疑坏值少量"}
  69. 舱内温度(℃): {canonical_id: WNAC_indoor_temp, unit: degC, valid_range: [-45, 80]}
  70. 塔底柜温度(℃): {canonical_id: WNAC_tower_base_cab_temp, unit: degC, valid_range: [-45, 80]}
  71. # ---- 振动 (10min level 粗筛) ----
  72. 机舱振动有效值(g): {canonical_id: WNAC_vib_rms, unit: g, valid_range: [0, 5]}
  73. 机舱振动传感器X(g): {canonical_id: WNAC_vib_x, unit: g, valid_range: [-5, 5]}
  74. 机舱振动传感器Y(g): {canonical_id: WNAC_vib_y, unit: g, valid_range: [-5, 5]}
  75. cleaning:
  76. physical:
  77. - "温度类 <= -50 → NaN (坏值兜底; 未见数值哨兵-99/9999)"
  78. - "风速 > 45 → 尖峰剔"
  79. - "★『箱变油温』『环境温度』= 死通道(恒-0.1 / 全null) → 分析排除, 勿入 NBM/温度判别"
  80. semantic:
  81. - "★109列含 .1 后缀重复列名(发电机冷却水温度.1/齿轮箱冷却水温度.1/机舱位置.1/舱外温度.1/舱内温度.1/机舱柜温度.1/发电机滑环温度.1) → 读取用主列(无后缀), 勿position读"
  82. - "★台号双制式: 文件名F0350001004 vs 『风机名称』列裸整数4 → join键统一裸整数(文件名 F03500010NN 末两位去前导零→N)"
  83. - "重复时间戳(单台单月~148行 diff=0) → 派生10min前按 (台,时间) 去重或时均吸收"
  84. - "无可信独立限电码(『限功率运行』语义反, 见 known_issues) → 物理态派生: 发电=P>50 / 脱网停=P≈0&电网频率<10 / 有风停=P≈0&频率≥10&风≥3 / 低风待机=P≈0&频率≥10&风<3"
  85. traps:
  86. - "★★『限功率运行』=1 ≠ 限电(实为正常发电态; =0 才是停机) → 名实反, 绝不作限电信号 (第一样板级陷阱)"
  87. - "★ 混场: 肥城=上汽+海装, 本契约仅上汽; 海装另OEM不可混入同一 fleet 基线"
  88. - "★ 死通道: 箱变油温(恒-0.1)/环境温度(全null) → NBM/matched-load 前必剔 (F0810001022 冻结通道戒)"
  89. - "★ rated 2000 (上汽W2000) ≠ 岳林柏F079-2000 ≠ 盂县中车1500 → 参数per型/per-OEM"
  90. - "★ .1后缀=冗余传感器/导出artifact → 必name-based取主列"
  91. - "台号裸整数(SCADA『风机名称』列=4, 非文件名F035...) → 机号必从文件名取, 勿用列内裸整数当唯一ID(1-25与故障记录同制式可join)"