| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # 数据契约 — 湘电风能 XEMC XE72-2000 & XE82-2000 (骆驼沟风电场, 大唐2025科研)
- # schema: docs/OEM_KB §3. 校验器: scripts/validate_contract.py. oem-onboard skill 产出 2026-06-07 (第10家OEM).
- # 两机型共用同一 154 列 SCADA schema (ABB ACS800 变流器: INU/ISU/RMIO 温度=指纹); 仅转子/曲线/额定转速异.
- meta:
- oem: 湘电风能 XEMC
- model: XE72-2000 / XE82-2000 # 同契约两变体 (SCADA schema 一致)
- topology: geared_dfig # 有齿轮箱列(大河西可见)+发电机定子温度(DFIG/异步), 非直驱
- rated_kw: 2000
- variants:
- XE72-2000: {rotor_d_m: 70.65, swept_m2: 3918.3, hub_h_m: 65, rated_rpm: 22.45, cut_in_ms: 3.0, iec: IIB}
- XE82-2000: {rotor_d_m: 82.6, swept_m2: 5355, hub_h_m: 79.5, rated_rpm: 19.5, cut_in_ms: 3.0}
- converter: ABB ACS800 (INU/ISU/RMIO 温度列 = 指纹)
- source_farm: 骆驼沟 (河北承德丰宁, 海拔1750-2230m); 48台主力(坝头二期+骆驼沟二期, turbine_name 82-129) + 大河西074-081(独立regime,见下)
- model_assignment: "机型 per-turbine, 按 turbine_name join 机组信息_风电场_{72,82}.csv (★机型≠子阵: 坝头/骆驼沟二期两阵均混装72/82)"
- ground_truth:
- power_curve: "curv_power_hetong_{72,82}.csv (合同曲线, x=风速1-25 y=有功kW; 72@v13达2000 / 82@v16达2000)"
- status_enum: "configs/fault_dicts/xemc_xe2000_status_codes.csv (10态 0-9, cross-tab坐实)"
- event_codes: "风机故障代码及详细事件.xls (XE72型/XE82型 两sheet, 事件代码001-371, 表头在第3行)"
- spec_sheet: "风机参数.xls (XE72-2000 / XE82-2000)"
- turbine_info: "机组信息_风电场_{72,82}.csv (经纬度/轮毂/海拔/并网/标杆机)"
- met_mast: "测风塔数据.xls 3号塔@大河西村 — ⚠ 100%是2022年(机组2023), 零时间重叠 + 15-min + 远离主力阵. 仅气候态(风廓线/密度/风向参照), 不可逐时刻NTF (自由来流join不可用, 同finding89但塔救不了)"
- sampling: {default_s: 600, caveat: "10-min全年; ⚠混合日期格式(2023/1/1 0:00 vs 2023-01-01 00:00:00)需多格式兜底; 秒级Oct-Dec(33.9GB)+已清洗sec_scada_LTG_822.zip"}
- provenance: "oem-onboard 2026-06-07; survey 154列×3阵 + G-OEM 4台(72/82×两阵)全年实证 + 状态码cross-tab + 塔窗坐实"
- # 编码: gbk. raw 列名 = 中文无单位.
- turbine:
- required: [变频器电网侧有功功率, 风速]
- columns:
- 变频器电网侧有功功率:
- canonical_id: WAPC_active_power
- raw_unit: kW # ✓ 实测 max 2074-2148≈额定2000+裕量, 非瓦特(无1000×陷阱)
- valid_range: [-50, 2200] # 小负=寄生; 上限留裕量
- block_if_raw_exceeds: 50000 # 单位守卫: 若喂瓦特(~2e6)立即BLOCK
- note: "唯一真输出功率列(无干净'有功功率'). 发电机功率设定点是其设定镜像; 风机有功功率设定点(2240常数)=cap非输出"
- 风速:
- canonical_id: WMET_wind_speed_nacelle
- unit: m/s
- valid_range: [0, 40] # 实测尖峰到37-44(持续不可能) → 门40
- self_ref_risk: true # ★机舱风非自由来流. XE82低风段读高(v4比合同2.0x, v13收敛1.0)=自指, finding89族
- note: "塔在2022不可救(无重叠). 绝对功率曲线只可机群相对+合同比, 低风绝对值标INSUFFICIENT"
- 风向:
- canonical_id: WMET_wind_direction
- unit: deg
- frame: geographic_unverified # range 0-360, 分布真实 → 疑绝对风向(非nacelle相对: p50≠偏航对风角度映射). 待北偏移标定
- valid_range: [0, 360]
- note: "作扇区需先验北偏移; 偏航误差用 偏航对风角度 (直接量)"
- 偏航对风角度:
- canonical_id: WYAW_yaw_error
- unit: deg
- frame: nacelle # 真偏航误差(风-机舱失准): range±180, 中位-1~+2°, p5-p95±16-31°
- valid_range: [-180, 180]
- note: "偏航分析用此(观测级); 真零点回收需lidar(同findings87/88)"
- 轮毂角度:
- canonical_id: WYAW_nacelle_position
- unit: deg
- frame: unknown_wrapped # ⚠ range -327~327 (非0-360非累积) = 怪编码, 未解
- unusable: true
- note: "±327异常编码, 解码前勿用作机舱航向"
- 气压:
- canonical_id: WMET_pressure
- dead_channel: true # ★死值: nunique=2 {1.0:99.9%, 0.0}, 非真气压(塔实测793hPa@2000m)
- sentinel: [1.0, 0.0] # 必转NaN; 密度走ISA/塔气候态
- note: "raw 全=1.0 → 校验门BLOCK(残留哨兵), 清洗NaN后PASS (dogfood信号)"
- 叶片1变桨角度:
- canonical_id: WROT_pitch_angle_1
- unit: deg
- valid_range: [-4, 92] # ★负≈-1°是设定最小角(XEMC版DEC pitch-1): <-2°仅0.01%, 非坏值
- note: "仅叶片1/2有瞬时桨距(无叶片3变桨角度列); 叶片1/2/3总变桨角度是累积计数"
- 叶片2变桨角度:
- canonical_id: WROT_pitch_angle_2
- unit: deg
- valid_range: [-4, 92]
- 轮毂转速:
- canonical_id: WROT_rotor_speed
- unit: rpm
- valid_range: [-5, 30] # XE72额定~22.5 XE82~19.5; 小负=停机噪声(p1≈0)正常
- spike_below: -5
- 外界温度:
- canonical_id: WMET_ambient_temp
- unit: degC
- valid_range: [-45, 45] # 高原冬季 min-37 是真值, 无哨兵(<-50=0%)
- 发电机定子温度1:
- canonical_id: WGEN_stator_temp_1
- unit: degC
- valid_range: [-45, 130]
- 发电机轴承温度1:
- canonical_id: WGEN_bearing_temp_1
- unit: degC
- valid_range: [-45, 130]
- 机舱温度:
- canonical_id: WNAC_nacelle_temp
- unit: degC
- valid_range: [-45, 60]
- 有功功率限定值:
- canonical_id: WAPC_power_limit
- unit: kW
- valid_range: [0, 2200]
- semantic_ambiguous: true # ⚠ 部分机62-80% <1900: 不可直接判限电(C4教训), 限电用功率封顶法
- note: "082/109全=0(未报), 086/106有值; <2000≠必限电"
- 风机PLC功率限制设定值:
- canonical_id: WAPC_plc_power_limit
- unit: kW
- valid_range: [0, 2200]
- note: "名义2000(额定上限设定), 非动态限电"
- 总产生的有功电量:
- canonical_id: WTUR_total_active_energy
- unit: kWh # 累积计数器(单调增); 大河西无瞬时功率时可 diff×6 反推kW
- note: "counter, 非瞬时; 反推功率注意翻转/复位"
- 风机当前状态:
- canonical_id: WTUR_state
- unit: enum
- status_enum_ref: configs/fault_dicts/xemc_xe2000_status_codes.csv
- note: "6=正常发电(76.7%); 1/2/3=待机顺桨(非故障); 5=启动; 0=离线"
- cleaning:
- physical:
- - "气压 == 1.0 或 0.0 → NaN (死值占位, 非真气压; 不可用作密度)"
- - "风速 >40 → 尖峰剔 (持续不可能)"
- - "轮毂转速 / 风速 小负值(>-5) = 停机噪声, 保留; <-5 尖峰剔"
- semantic:
- - "变频器电网侧有功功率 小负 = 待机寄生功耗, 非坏值"
- - "叶片变桨角度 ≈-1° = 设定最小角(非坏值, 同DEC pitch-1)"
- - "风速 = 机舱风(self_ref), 勿作绝对功率曲线; 用合同曲线比 + 机群相对"
- - "风向 = 绝对(未标北偏移), 作扇区前必验; 偏航误差用 偏航对风角度"
- - "有功功率限定值 <2000 勿直接判限电 (C4教训, 用功率封顶法)"
- status_enum_ref: configs/fault_dicts/xemc_xe2000_status_codes.csv
- traps:
- - "机型≠子阵: 坝头二期/骆驼沟二期两阵均混装XE72+XE82, 必按turbine_name join机组信息定机型(配错合同曲线=假欠发)"
- - "气压死值=1.0/0.0(非-99/9999), nunique=2 揪出; 塔实测793hPa@2000m 反证"
- - "XE82机舱风低风段读高(v4比合同2.0x→v13收敛1.0)=自指(finding89族), 大转子更重; 绝对功率不可信"
- - "测风塔100%是2022(机组2023)零重叠 + 15-min + 在大河西远离主力阵 → 自由来流join不可用(塔救不了自指, 不同于阜山有重叠)"
- - "混合日期格式(2023/1/1 0:00 vs 2023-01-01 00:00:00): 坝头106全年时间只解出Jan = 漏11月! ingestion必多格式兜底+断言行数"
- - "大河西074-081独立regime: 不在机组信息 + 仅10-12月 + 半数列全空(无瞬时功率/转速/状态字, 有齿轮箱温度+时间戳秒) → 不同采集系统, 单独track, 功率只能电量diff反推"
- - "无叶片3变桨角度瞬时列(只1/2); 齿轮箱入口油温在主力阵全空(仅大河西有) → 主力阵无齿轮箱MSET"
- - "状态码两套: 风机当前状态(0-9状态机) vs 事件代码(001-371, XE72/XE82两sheet) — 勿混"
- # 大河西 074-081 独立子契约 (列子集不同, 仅10-12月)
- mast:
- required: []
- note: "3号测风塔 2022全年 15-min, 14列(TIME WS10/30/50/70/HUB DIR×5 TEMP PRESSURE RH). header在xls第3行(row idx2), data从row idx5. PRESSURE真实(778-805hPa). 仅气候态用."
- columns:
- PRESSURE:
- canonical_id: WMET_pressure_mast
- raw_unit: hPa
- valid_range: [700, 850] # 2000m海拔 ~793hPa
- WSHUB:
- canonical_id: WMET_wind_speed_mast_hub
- unit: m/s
- valid_range: [0, 40]
|