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