shanghaielectric_w2000_pinglu.yaml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # 数据契约 — 上海电气 Shanghai Electric W2000-105-80 双馈2MW (平陆风电场, 中广核腾辉·山西运城)
  2. # schema: docs/OEM_KB §3. oem-onboard 2026-07-08 (风资源→设备映射 demo 场). OEM订正 2026-07-08 (见 oem_provenance).
  3. # ⚠ W2000 339列宽表, 但 G-OEM 实证多列结构性全空 (见 traps) → 契约只纳入实证填充列.
  4. meta:
  5. oem: 上海电气 Shanghai Electric (SEwind)
  6. oem_provenance: "★2026-07-08订正: 早稿误标'华锐Sinovel'(从W2000误猜)。两独立源收敛上海电气: ①信息表型号=W2000-105-80(W平台=上海电气; 华锐2MW=SL2000非W2000) ②CMS onse固件 model=SHE2.0MW(SHanghai Electric)。排除华锐=确定; SHE缩写=强推。"
  7. model: W2000-105-80 (双馈DFIG, rotor_d=105, hub=80m; 另有 W2000-99-80×1 混列; 设备固件报 SHE2.0MW)
  8. topology: DFIG_geared # 齿轮箱多点温 + 发电机转速高速 + 主轴转速独立
  9. rated_kw: 2000 # 有功 plateau p95≈1446(低风半月) max=2076 → 额定2000
  10. rotor_d_m: 105
  11. farm_code: "F008"
  12. source_farm: 平陆风电场 (山西运城, 中广核腾辉; 48台 nameplate, F0080001001-024=有SCADA数据24台)
  13. turbine_count: 24 # ⚠双键: 信息表48台 nameplate ≠ 24台有min/30秒 SCADA数据 (F008前缀001-024)
  14. source_root: "/Volumes/WINDDATA/DATA2/中广核/平陆风电场-山西-中广核/收资数据"
  15. data_layers:
  16. min_10min: "min/ 14 zip (13半月 2023-06~12-16 直挂 + 实时600秒一期.zip 嵌套26 zip=2023-12~2024-06续期). 真600s. 每zip 24台(F0080001001-024)成员CSV, GBK, 339列宽表"
  17. sec_30s: "30秒数据/ F008_实时数据查询_30秒_ 月度zip, 24台×6月(2024-01~06). 真30秒 → TI派生源(10min湍流列全空, 见traps)"
  18. cms_vibration: "CMS/ .onse振动波形 ×27347 (43G, 2024-04). 华锐/北京能高专有格式 → Phase-2 A映射富矿"
  19. fault: "fault/故障记录一期.zip csv (~23k行, 2023-05~2024-01) → B映射(风况→故障)语料"
  20. window:
  21. min: "2023-06-01 ~ 2024-06-01 (13直挂zip + 大zip嵌套续期)"
  22. sec_30s: "2024-01 ~ 2024-06"
  23. cms: "2024-04"
  24. fault: "2023-05 ~ 2024-01"
  25. overlap: "min∩30秒∩CMS = 2024-04 (映射三层对齐窗); min∩fault = 2023-06~2024-01"
  26. sampling: {min_s: 600, sec_s: 30, verified: "样本001 时间diff中位=600s (10:00实测)"}
  27. provenance: "oem-onboard 2026-07-08; G-OEM 样本 F0080001001 3成员6483行+跨期核; 编码gbk; 哨兵=空串(非数值)→NaN; 从zip读(cp437→gbk成员名)"
  28. turbine:
  29. required: [有功功率(kW), 10min滑动平均风速(m/s)]
  30. columns:
  31. # --- 功率/转矩 ---
  32. 有功功率(kW): {col_idx: 70, canonical_id: WAPC_active_power, unit: kW, valid_range: [-100, 2200]} # p95≈1446(低风半月) max2076 rated2000
  33. 无功功率(kVar): {col_idx: 71, canonical_id: WAPC_reactive_power, unit: kVar}
  34. 变流器实际转矩(NM): {col_idx: 46, canonical_id: WCNV_torque, unit: pct_suspect, valid_range: [0, 105], note: "⚠标签NM但实测max=100 → 疑归一化%非牛米; 用前核物理量纲, 勿当绝对转矩"}
  35. # --- 风况 W (映射自变量; 湍流/密度列全空见traps → W只剩风速+风向+舱外温) ---
  36. 瞬时风速(m/s): {col_idx: 47, canonical_id: WMET_wind_speed_instant, unit: m/s, valid_range: [0, 45], self_ref_risk: true}
  37. 10min滑动平均风速(m/s): {col_idx: 49, canonical_id: WMET_wind_speed_nacelle, unit: m/s, valid_range: [0, 45], self_ref_risk: true}
  38. 风向角(°): {col_idx: 50, canonical_id: WYAW_yaw_error, unit: deg, valid_range: [-30, 30], frame: relative_yaw_error, note: "★±18°=对风偏差相对量(self_ref), 非地理风向; 静态偏航绝对零位须独立量"}
  39. 机舱位置(°): {col_idx: 39, canonical_id: WNAC_position, unit: deg, valid_range: [0, 360], note: "heading 0-360 → 扇区分箱(结合风向偏差反推地理扇区)"}
  40. 舱外温度(℃): {col_idx: 52, canonical_id: WMET_ambient_temp, unit: degC, valid_range: [-40, 50], note: "NBM共模基线+密度/季节proxy(空气密度列全空)"}
  41. # --- 转速 ---
  42. 风轮转速(rpm): {col_idx: 2, canonical_id: WROT_rotor_speed, unit: rpm, valid_range: [-1, 20]}
  43. 发电机转速(rpm): {col_idx: 30, canonical_id: WGEN_speed, unit: rpm, valid_range: [-10, 2000]}
  44. # --- 桨距 (度, 三叶全实测; 无阜山rad陷阱) ---
  45. 桨距角(°): {col_idx: 3, canonical_id: WROT_pitch_angle, unit: deg, valid_range: [-5, 95]}
  46. 桨距角1(°): {col_idx: 4, canonical_id: WROT_pitch_angle_1, unit: deg, valid_range: [-5, 95]}
  47. 桨距角2(°): {col_idx: 5, canonical_id: WROT_pitch_angle_2, unit: deg, valid_range: [-5, 95]}
  48. 桨距角3(°): {col_idx: 6, canonical_id: WROT_pitch_angle_3, unit: deg, valid_range: [-5, 95]}
  49. # --- 健康 H: 温度 (主轴温度182列全空 → 不纳入) ---
  50. 低速轴承温度(℃): {col_idx: 23, canonical_id: WTRM_gbx_lss_bearing_temp, unit: degC, valid_range: [-40, 130]}
  51. 高速轴承温度(℃): {col_idx: 24, canonical_id: WTRM_gbx_hss_bearing_temp, unit: degC, valid_range: [-40, 130]}
  52. 齿轮箱油温(℃): {col_idx: 25, canonical_id: WTRM_gbx_oil_temp, unit: degC, valid_range: [-40, 120]}
  53. 齿轮箱入口油温(℃): {col_idx: 27, canonical_id: WTRM_gbx_oil_inlet_temp, unit: degC, valid_range: [-40, 120]}
  54. 齿轮箱冷却水温度(℃): {col_idx: 26, canonical_id: WTRM_gbx_coolant_temp, unit: degC, valid_range: [-40, 120]}
  55. 发电机定子U温度(℃): {col_idx: 31, canonical_id: WGEN_stator_u_temp, unit: degC, valid_range: [-40, 200]}
  56. 发电机定子V温度(℃): {col_idx: 32, canonical_id: WGEN_stator_v_temp, unit: degC, valid_range: [-40, 200]}
  57. 发电机定子W温度(℃): {col_idx: 33, canonical_id: WGEN_stator_w_temp, unit: degC, valid_range: [-40, 200]}
  58. 发电机前轴承温度(℃): {col_idx: 34, canonical_id: WGEN_de_bearing_temp, unit: degC, valid_range: [-40, 150]}
  59. 发电机后轴承温度(℃): {col_idx: 35, canonical_id: WGEN_nde_bearing_temp, unit: degC, valid_range: [-40, 150]}
  60. 发电机滑环温度(℃): {col_idx: 36, canonical_id: WGEN_slipring_temp, unit: degC, valid_range: [-40, 150]}
  61. 轮毂温度(℃): {col_idx: 22, canonical_id: WROT_hub_temp, unit: degC, valid_range: [-40, 80]}
  62. 舱内温度(℃): {col_idx: 53, canonical_id: WNAC_nacelle_temp, unit: degC, valid_range: [-40, 80]}
  63. # --- 健康 H: 振动 (10min=仅相对level-trend, 奈奎斯特禁ISO区界; CMS走onse Phase-2) ---
  64. 机舱X方向振动加速度(g): {col_idx: 55, canonical_id: WNAC_vib_x, unit: g, valid_range: [-5, 5], note: "10min level~0.02g, 仅相对趋势"}
  65. 机舱Y方向振动加速度(g): {col_idx: 56, canonical_id: WNAC_vib_y, unit: g, valid_range: [-5, 5]}
  66. 机舱振动有效值(g): {col_idx: 57, canonical_id: WNAC_vib_rms, unit: g, valid_range: [-5, 5]}
  67. # --- 限电/状态 (前提门剥离; 311限功率运行=唯一存活状态列) ---
  68. 限功率运行: {col_idx: 311, canonical_id: WSTA_generating_flag, role: state, valid_range: [0, 1], note: "🔴 名为'限功率'实为发电指示器(2026-07-08限电闸实证: flag=1⟺发电99.9% / flag=0⟺停机100% / 满发率随风速单调达额定=正常控制)。**非限电标志, 禁用于限电剥离**(否则剥掉62%正常发电=严重误诊)。真限电不可从此列确诊 → 限功率值列全空+无setpoint → 系统性限电INSUFFICIENT。详 outputs/pinglu/sop/限电闸_前提门_findings.md"}
  69. cleaning:
  70. physical:
  71. - "温度类 <= -50 → NaN (哨兵/坏值)"
  72. - "风速 > 45 → 尖峰剔; 有功 valid_range 界外→NaN(非clamp)"
  73. - "哨兵 = 空串(''), 非数值哨兵 → 直接 NaN (华锐空列=纯空串)"
  74. semantic:
  75. - "★停机态派生 (81机组停机状态列全空 → 物理派生): 发电=P>50&rotor>1 / 停机=|P|≤50&rotor≤1 / 待机=|P|≤50&rotor>1"
  76. - "★限电剥离: 限功率运行=1 段先过限电闸(task_7ee2b2ab)验真伪, 确诊限电段从性能/欠发/映射分析剥离(否则'低发台故障多'=假映射, 朗目山血泪)"
  77. - "★TI 派生: 10min湍流列全空 → 湍流强度须从30秒层(2024-01~06)按10min窗 std(风速)/mean(风速) 派生; 映射A的TI协变量仅2024上半窗可用"
  78. traps:
  79. - "🔴 339列宽表多列结构性全空 (跨2023-06~2024实证0填充): 湍流(6变体:超声/机械×实时/理论+湍流+湍流系数)/空气密度(3变体:实时/合同/标准)/主轴温度/环境温(148)/箱变环境温/停机状态/限功率值/转矩%(237)/风向平均值/风向机械 → 契约不纳入, 勿因列名存在就当有数据 (§1.1⑥ 语义字段必在所用层验证)"
  80. - "🔴 映射W向量受限: 10min层风况自变量只剩 {风速, 风向偏差(self_ref), 机舱位置扇区, 舱外温} → TI/密度/切变 缺 (TI靠30秒派生, 密度用舱外温proxy, 切变N/A单高度)"
  81. - "★ 桨距=度(-0.02~92.77)非rad → 无阜山rad陷阱; 华锐W2000度制"
  82. - "★ 风向角(50)=±18°对风偏差相对量(self_ref) 非地理风向; 机舱位置(39)=heading 0-360; 静态偏航绝对零位须独立量"
  83. - "★ 变流器实际转矩(46)标NM但max=100疑归一化% → 用前核量纲"
  84. - "★ 台数双键: 信息表48台nameplate(W2000-105-80×47 + W2000-99-80×1) ≠ 24台有SCADA(F0080001001-024); 混型号1台待识别"
  85. - "★ 成员名 cp437→gbk 恢复 (F008_F0080001001_600秒_...csv); 内部风机名列=' 1#风机'..' 24#风机'"
  86. - "🔴 风机名称值含不一致空格(前导/尾随) → 未strip则 nunique=28 假台(24真+4空格变体), 劈同台污染NBM基线 → onboard必 .str.strip() 归24 (机器名列值必规范化, 非只列名)"
  87. - "★ 直挂zip=24成员/台一文件; 大zip嵌套=1成员/24台拼一文件 → onboard按 风机名称 分台(非按成员); (1)后缀嵌套zip须(台,时间)去重(实测807重复行)"