sewind_w2000_135_xiaqiu.yaml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. # 数据契约 — 上海电气 SEWIND W2000/W2100N-135-90 齿箱DFIG (华电莱州夏邱 98MW, 山东莱州 / 华电)
  2. # schema_v2 SOP 标准件 (2026-07-18, 新场 onboard)。
  3. #
  4. # ★ 主分析层 = 嵌哈希目录 zip 内 GBK CSV (实时数据查询 (N).zip → <hash>/YYYYMMDD-..~YYYYMMDD-..csv 半月窗, 全49台一文件);
  5. # 契约验原始 CSV 列名 (单位嵌列名, 非归一化)。
  6. # ★ OEM 判定 = docx风机参数(上海电气 W2000-135-90/2000kW/49台/98MW) + 保护定值(上海电气 W2100N-135-90/额定2100kW)
  7. # + 合同(卖方 上海电气风电集团, 华电山东物资采购) + CMS季度报告抬头(上海电气) — 非猜, 四源坐实。
  8. # reuse: 上海电气 SEWIND W2000 家族 (库内 sewind_w2000_nanshu / sewind_w2500_146_dehui 语义层); 本场 135m 变体重验。
  9. schema_version: 2
  10. meta:
  11. oem: 上海电气 SEWIND
  12. model: W2000-135-90 (2MW 齿箱DFIG; 保护定值平台型号 W2100N-135-90)
  13. topology: dfig_geared # ✅三点支撑双馈异步变速变桨(保护定值); 齿箱杭齿/南高齿FD2400B ratio132.38; 发电机上海电机厂YFSKY500-4空-空冷; 变频器日风IDIF; 变桨WPPC-85-C
  14. rated_kw: 2100 # ⚠双值: 保护定值W2100N/额定2100kW + docx文'单机容量2.1MW' + SCADA有功plateau p99~2175/p999~2203 → 2100级; 但docx表'额定功率2000kW' + 98MW项目=49×2000kW铭牌。达成率分析须先确认参考额定(2000 vs 2100), 见 self_ref_note。
  15. rated_kw_note: "98MW项目铭牌口径=2000kW/台(49×2.0=98MW); 平台/保护定值口径=2100kW(W2100N); SCADA plateau物理口径~2100(p99=2175). 三口径均记, 勿单值定谳。"
  16. rotor_d_m: 135 # ✅docx+保护定值 风轮直径135m
  17. hub_height_m: 90 # ✅docx塔筒中心高度90m/保护定值轮毂中心高度90m
  18. source_farm: 华电莱州夏邱风电场(98MW, 山东省烟台市莱州市 夏邱镇/虎头崖镇/沙河镇, 华电)
  19. commissioned: "2020-12-31 全部并网"
  20. n_machines: 49 # ✅风机名称 A1(1#)..A49(46#) 全49台有数据 = docx49台 = 坐标表49行 = 功率曲线jpg
  21. gearbox: "杭齿S2100 / 南高齿FD2400B-01-00R2; 速比 132.69/132.38; 无齿箱温度通道入10min层(见 absent_channels_note)"
  22. absent_channels_note: "10min SCADA层无: 齿轮箱温度(油温/高低速轴承温 — 保护定值有阈但通道不在10min层, 仅30s层有) → 齿箱冷浸comp N/A(温度NBM冷浸仅可对发电机轴承但无油浴参照, 脂润滑不配); 无限电/限功率0/1旗标 → 限电剥离须功率-风约束推断; 无逐相绕组(仅定子UVW三相); 无齿箱双压dP。30s高频层(2、秒级SCADA 20列)另含 桨距角1/2/3 per叶 + 高速/低速轴承温 + 齿轮箱油温 + 舱外温度 → 三叶不平衡/齿箱热/齿箱冷浸comp 须走30s层。"
  23. secondary_layers:
  24. turbine_30s: "登记非清洗(GB级按需拉): 2、秒级SCADA高频数据/30s/实时数据查询 (1..6).zip; zip5正常zip, zip1-4/6=流式zip(无中央目录, python zipfile BadZipFile; 窗从local header读)。窗=2025-07-01~2025-09-30(6半月块), 30s采样(dt.median=30s实证)。20列schema=风机名称/时间/有功功率/机舱位置/桨距角1/2/3(★per叶)/发电机定子UVW温/发电机前后轴承温/发电机转速/高速轴承温/低速轴承温/舱内温/舱外温/10min平均风速/风轮转速/齿轮箱油温 — richer: per叶桨距+高低速轴承温+齿箱油温+舱外温; 缺电机温度/塔底柜/风向角/偏航位置/环境温度/风机状态。"
  25. event_fault: "7、机组状态、事件、故障数据: 故障记录_{2023,2024,2025}.csv (GBK). 列=风机名/状态码值/状态码描述/激活时间/复位时间; 逐文件验年 2023(1015条)/2024(5641)/2025-01~08-30(5723) 文件名年=内容年无跨年错配(memory event-layer-verify-year-first); 时间' YYYY-MM-DD HH:MM:SS:mmm'(前导空格+毫秒冒号)。未装配parquet(Phase-2 A_op/故障分型可建)。"
  26. layout:
  27. format: "嵌哈希目录 zip: 实时数据查询 (N).zip (N=1..40) → <hash>/YYYYMMDD-HH_MM_SS~YYYYMMDD-HH_MM_SS.csv (半月窗, 全49台); 22列单位嵌列名"
  28. encoding: gbk
  29. time_format: "YYYY-MM-DD HH:MM:SS"
  30. machine_token: "风机名称列内台号 A1(1#)..A49(46#) (A序号 + (原#号); # 号非连续, 见6机位坐标)"
  31. assemble: "outputs/xiaqiu/sop/assemble_xiaqiu.py (zipfile逐zip GBK内部csv → name-based → to_numeric → (风机名称,时间)concat+dedup跨月0915重叠 → 排序 raw parquet)"
  32. sampling:
  33. turbine_10min_s: 600 # ✅ t.diff().median() per台=600s (49台 min=median=max=600)
  34. window: "2024-01-01 23:50 ~ 2025-08-31 23:50 (约20月, 40半月块CSV, 连续无缺月; 4,023,831行/49台)"
  35. turbine_10min:
  36. sampling_s: 600
  37. required: ["有功功率(kW)", "10min平均风速(m/s)"]
  38. machine_col: 风机名称
  39. time_col: 时间
  40. columns:
  41. "有功功率(kW)":
  42. canonical_id: WAPC_active_power
  43. raw_unit: kW
  44. valid_range: [-150, 2450]
  45. observed_range: [-100, 2312] # ✅ p99~2175/p999~2203(rated~2100 plateau); 负=空转寄生真物理禁clip
  46. self_ref_note: "本场无测风塔(目录3标'无') → 机舱风self_ref → 绝对达成率/Cp INSUFFICIENT(机舱风铁律); 达成率参考额定须先定(2000 vs 2100)"
  47. "10min平均风速(m/s)":
  48. canonical_id: WMET_horWdSpd
  49. unit: m/s
  50. valid_range: [0, 40]
  51. observed_range: [0, 24.26]
  52. self_ref_risk: high
  53. note: "机舱风(10min平均) self_ref; 无测风塔不可解"
  54. "风轮转速(rpm)": {canonical_id: WROT_RotSpd, unit: rpm, valid_range: [-2, 20], observed_range: [0, 13.48],
  55. semantic: "★rotor侧(rated 12.77rpm 保护定值); vs 发电机转速高速轴"}
  56. "发电机转速(rpm)": {canonical_id: WGEN_Spd, unit: rpm, valid_range: [-2, 2000], observed_range: [0, 3264],
  57. semantic: "★高速轴p50=1048(齿箱DFIG, 速比132.38; rated~1690, 范围600-1800 docx); max3264/p999~2220=编码器过速尖峰→界外NaN"}
  58. # ---- 变桨 (★10min层=集距单列; per叶独立仅30s层有 桨距角1/2/3) ----
  59. "桨距角(°)": {canonical_id: WROT_PtAng, unit: deg, valid_range: [-5, 95], observed_range: [-128.9, 168.85],
  60. semantic: "★集距 collective 单列(below-rated p50~0封桨; above-rated~89顺桨) → 三叶不平衡 N/A(10min层); min-128.9/max168.85=界外尖峰→NaN"}
  61. # ---- 温度: 发电机(定子三相+前后轴承) + 变桨电机 + 塔底柜/舱内/环境; ⚠无齿箱温度入10min层 ----
  62. "发电机定子U温度(℃)": {canonical_id: WGEN_TmpStaU, unit: degC, valid_range: [-40, 200], observed_range: [-23.4, 203.8],
  63. semantic: "★定子三相U/V/W → 相间不平衡可做; 0值=停机冷态(发电态P>50过滤); 保护绕组max145/报警140"}
  64. "发电机定子V温度(℃)": {canonical_id: WGEN_TmpStaV, unit: degC, valid_range: [-40, 200], observed_range: [-27.4, 181.0]}
  65. "发电机定子W温度(℃)": {canonical_id: WGEN_TmpStaW, unit: degC, valid_range: [-40, 200], observed_range: [-169.4, 143.9]}
  66. "发电机前轴承温度(℃)": {canonical_id: WGEN_TmpBrgFront, unit: degC, valid_range: [-40, 130], observed_range: [-118.5, 150.0],
  67. semantic: "★发电机前/后轴承双端 → 配对差可做; 保护轴承max95/报警90; 负尖峰/150→界外NaN"}
  68. "发电机后轴承温度(℃)": {canonical_id: WGEN_TmpBrgRear, unit: degC, valid_range: [-40, 130], observed_range: [-192.0, 102.6]}
  69. "电机温度1(℃)": {canonical_id: WROT_TmpPtMotor1, unit: degC, valid_range: [-40, 150], observed_range: [-1.1, 134.2],
  70. semantic: "★变桨电机1/2/3温度(per叶变桨电机; 桨角本身10min层为集距单列)"}
  71. "电机温度2(℃)": {canonical_id: WROT_TmpPtMotor2, unit: degC, valid_range: [-40, 150], observed_range: [0, 133.9]}
  72. "电机温度3(℃)": {canonical_id: WROT_TmpPtMotor3, unit: degC, valid_range: [-40, 150], observed_range: [-0.6, 142.5]}
  73. "塔底柜温度(℃)": {canonical_id: WTOW_TmpTowerBaseCab, unit: degC, valid_range: [-40, 80], observed_range: [-9.1, 55.4]}
  74. "舱内温度(℃)": {canonical_id: WNAC_IntTmp, unit: degC, valid_range: [-40, 80], observed_range: [-303.63, 258.43],
  75. trap: "min-303/max258=传感尖峰→界外NaN(非物理)"}
  76. "环境温度(℃)": {canonical_id: WMET_EnvTmp, unit: degC, valid_range: [-40, 55], observed_range: [0, 44.47],
  77. liveness: "⚠partial: 死(0% non-NaN) 2024-01~2025-04-30, 2025-05-01起上线(zip33 4% → 2025-06-16起~98%); 全窗仅15.1% non-NaN → 温度NBM去季节仅2025夏后窗可用, 早期用舱内/塔底柜代参照"}
  78. # ---- 位置/风向 ----
  79. "机舱位置(°)": {canonical_id: WNAC_Dir, unit: deg, valid_range: [0, 360], observed_range: [0, 360],
  80. semantic: "机舱绝对方位角[0,360) → 扇区/风玫瑰可做(非扭角); 与风向角配出绝对风前过 pseudo-geo 三件套"}
  81. "风向角(°)": {canonical_id: WYAW_YawErr, unit: deg, valid_range: [-180, 180], observed_range: [-180.4, 180.0],
  82. semantic: "★机舱相对风向=对风误差(yaw error); p50=0 对中好; 静态/动态偏航可做; 非绝对地理风向(self_ref)"}
  83. "偏航位置(deg)": {canonical_id: WYAW_CableTwist, unit: deg, valid_range: [-720, 720], observed_range: [-327.66, 327.66],
  84. semantic: "解缆/扭缆位置(unwrap; 保护偏航绝对值max设定715deg)",
  85. liveness: "⚠partial: 同环境温度, 死 2024-01~2025-04-30, 2025-05起上线; 全窗15.1% non-NaN → 动态偏航/解缆分析仅2025夏后窗"}
  86. # ---- 状态码 (语义先验真) ----
  87. "风机状态": {canonical_id: WTUR_status, unit: code, valid_range: [0, 100], observed_range: [0, 51],
  88. semantic: "运行状态码(15枚举: 8最多~60%=发电/并网态, 3/10/11/6/2/1/5/51/9/14/4/7/0/12); 语义先验真; 事件层故障码(状态码值30150/301101/20008等 6位)另在目录7 故障记录csv 带状态码描述"}
  89. cleaning:
  90. physical:
  91. - "有功功率负值=空转寄生真物理禁clip; valid_range界外→NaN非clamp"
  92. - "无850哨兵/无明显离散哨兵族(扫全窗): 极端值(桨距-128.9/168.85, 发电机转速3264, 舱内±300, 轴承-192, 定子-169)均由valid_range界外→NaN统一捕获, 非discrete sentinel match"
  93. - "温度0值=停机冷态(发电态P>50过滤剔)"
  94. semantic:
  95. - "风速self_ref+无测风塔 → 绝对达成率/Cp INSUFFICIENT"
  96. - "机舱位置=方位角[0,360)→扇区(过pseudo-geo三件套); 风向角=对风误差[-180,180]非地理; 偏航位置=扭缆位置"
  97. - "环境温度/偏航位置 partial-liveness(2025-05起) → 下游按段切窗, 非死列(apply_contract_gate all-NaN判死不误伤)"
  98. derive:
  99. - "10min已是时均层(SEWIND原生); 嵌哈希zip逐zip GBK CSV concat+dedup(跨月0915重叠去49行)"
  100. traps:
  101. - "★**嵌哈希目录 zip**: 每zip内 <随机hash>SS/*.csv (如 SadehJuXUeQNuPEA0m4tagSS/); zipfile逐zip读内部csv, GBK; name-based禁positional"
  102. - "★**齿箱DFIG 2MW SEWIND W2000/W2100N**: 库复用sewind_w2000家族; 10min层缺齿箱温度(仅30s层有)"
  103. - "★**桨距角10min层=集距单列**(三叶不平衡须走30s层桨距角1/2/3); 定子三相U/V/W + 发电机前后轴承 配对差可做"
  104. - "★**rated 2000/2100 双口径**: docx表2000/docx文2.1MW/保护定值W2100N-2100/SCADA plateau~2100 — 达成率前须定参考额定"
  105. - "★**环境温度+偏航位置 partial-liveness 2025-05起**: 早期死列(0% non-NaN), 非坏 — 下游按段切窗; apply_contract_gate all-NaN判死用全窗non-NaN>0不误伤"
  106. - "无测风塔(目录3'无') → 机舱风self_ref → 绝对达成率INSUFFICIENT"
  107. - "流式30s zip(1-4/6)无中央目录 → python zipfile BadZipFile; 窗从local file header parse(huishan流式zip同族trap)"