| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- # 数据契约 — 国电联合动力 GUP UP2000 2.0MW DFIG (阜山, 山东招远 / 国电招远)
- # schema_v2 SOP 标准件 (2026-07-17, legacy-completion onboard). data-first §1.2 实证 (A1/A5/A11/A20 冬夏池, ~36k行 + 全月抽样)。
- # 复用基 lineage = gup_up2000_2mw.yaml(旧阜山18台base) + gup_up2000_fengxiang.yaml(同OEM); 本场中文列名 + 独立实证 override。
- # ★★ 本场独有价值: 唯一真·多高度测风塔 (10/30/50/70m 全年实测 + 轮毂高层Oct2023起) → 绝对性能/达成率/NTF/Cp 可做 (区别所有 self_ref-only 场; 见 mast section + power-curve-ntf skill)。
- # ⚠ legacy 产物别扰: outputs/fushan/*.parquet (E映射/DEL/塔振 ad-hoc) 保留; 本契约只驱动 cleaned/turbine_10min.parquet + cleaned/mast.parquet。
- schema_version: 2
- meta:
- oem: 国电联合动力 GUP
- model: UP2000 2.0MW DFIG (geared)
- topology: dfig_geared
- rated_kw: 2080 # ✅实证: 功率设定plateau=2080000W(2080kW); 变频器有功 p99.9≈2081-2103kW, max~2160kW. 铭牌名义2000, 运行封顶/设定=2080
- source_farm: 阜山 (山东招远, 国电招远/国网)
- reuse_base: gup_up2000_2mw.yaml + gup_up2000_fengxiang.yaml (同OEM; 中文列名/单位/哨兵本场重验)
- n_machines: 18 # ✅实证: A1-A25 目录名义25台, 实际有数据=18台 (A1,A2,A3,A4,A5,A6,A7,A11,A12,A13,A15,A16,A17,A18,A19,A20,A22,A25; 缺A8,A9,A10,A14,A21,A23,A24). ON-1⑤ 台数双键: 目录名≠有数据台数
- layout:
- format: "SCADA_Minute_阜山[风场|风电场]_<tid>[号风机]_<YYYYMM|YYYYMMDD>.csv (GBK); 2表头行(行1=中文名/行2=英文SCADA码 UNIT.CI_*/SCADAUSE.CI_*) + rows: 时间,值..."
- encoding: GBK
- time_format: "YYYY-MM-DD HH:MM:SS"
- assemble: "scripts/fushan_assemble.py (per台per月 name-based concat; skiprows=[1] 用中文表头; tid=re _(A\\d+); 冬夏schema漂移 name-based 容差)"
- schema_drift: "主集(A1-A25目录 1-9月)=51信号; 后期月列数漂移(10月=50/11月=57/12月=62)但CORE(功率/风速/变桨/温度)全在 → name-based映射, 多出列(发电机空冷温度/高速轴刹车压力/电能质量/额外桨叶反馈)本cleaned不纳(记account, 需时另取)"
- sampling:
- turbine_10min_s: 600 # ✅实证: t.diff().median()=600s per文件 per月 (全月抽样, 单台=600s; 多台long格式全局diff=0是交织伪影, sampling真值=per台)
- mast_s: 300 # ✅实证: 测风塔 5-min (00:00/00:05/00:10)
- caveat: "10min turbine 覆盖 2023-01~2023-12(+2024-01首日); mast 覆盖 2023-01~2024-01(13月度文件)"
- # ---- 机组 SCADA 10-min (raw 中文列名; canonical 换算在 assembler: 功率/设定 /1000→kW, 风向1/2 *57.2958→deg; 余列已 canonical 单位) ----
- turbine_10min:
- sampling_s: 600
- required: [变频器有功, 风速1, 变桨轴1位置反馈]
- columns:
- 变频器有功:
- canonical_id: WAPC_active_power
- raw_unit: W # ✅实证 raw max ~2.16e6 = W (瓦特陷阱; 盲用差1000×)
- to_canonical: "/1000" # → kW (assembler 预换算)
- valid_range_canonical: [-150, 2200] # ✅实证(池36k): kW; 负端=停机辅助耗电 min -119kW; 上端 max~2161<2200
- observed_range: [-120, 2160]
- block_if_raw_exceeds: 50000 # raw>5e4 = 仍瓦特未换算 → BLOCK
- 功率设定:
- canonical_id: WAPC_setpoint
- raw_unit: W
- to_canonical: "/1000"
- valid_range_canonical: [0, 2200]
- observed_range: [0, 2080]
- semantic: "<2080kW = 限电/降功率标志 (设定枚举 {0,1829,2029,2030,2050,2080}kW; plateau 2080=额定)"
- 风速1:
- canonical_id: WMET_wind_speed_nacelle
- unit: m/s
- valid_range: [-2, 40]
- observed_range: [0, 22]
- self_ref_risk: true # ★ 机舱风自指; 但本场有真测风塔 → 绝对性能改用 mast (非 INSUFFICIENT)
- 风速2:
- canonical_id: WMET_wind_speed_nacelle2
- unit: m/s
- valid_range: [-2, 40]
- observed_range: [0, 23]
- self_ref_risk: true
- note: "第二机舱风速计; ✅实证 per台liveness: 16/18台活(med~5), A12死(med0.43 nuniq23), A13降级(med0.47) → 跨机死列判定按台, 非全局死"
- 风向1:
- canonical_id: WYAW_yaw_error
- raw_unit: rad # ✅实证 ±3.14 主体 = rad
- to_canonical: "*57.2958"
- frame: nacelle # nacelle-frame → 偏航不作地理扇区
- valid_range_canonical: [-180, 180]
- observed_range: [-180, 180]
- note: "★ raw min-4.71rad(>π, 同红阳)=wrap/量程artifact; *57.3后>180°者界外→NaN. 无-99哨兵. nacelle-frame不可作地理(伪地理三件套: 无独立地理列)"
- 风向2:
- canonical_id: WYAW_yaw_error_2
- raw_unit: rad
- to_canonical: "*57.2958"
- frame: nacelle
- valid_range_canonical: [-180, 180]
- observed_range: [-180, 180]
- note: "第二对风角; 与风向1交叉"
- 机舱位置:
- canonical_id: WYAW_nacelle_position
- frame: na
- unusable: true
- valid_range: [-360, 360]
- observed_range: [-6, 12]
- note: "★ 实证范围 -3.5~10.8 = 非0-360航向(编码器局部偏移/未标定) → 不可作地理heading/绝对偏航锚 (同旧阜山base)"
- 发电机转速(pcs):
- canonical_id: WGEN_generator_speed
- unit: rpm
- valid_range: [-60, 2000]
- observed_range: [-45, 1880]
- note: "权威发电机转速; 负端=停机传感器偏置 min-42"
- 发电机转速反馈:
- canonical_id: WGEN_speed_fb_scaled
- valid_range: [-60, 2000]
- observed_range: [-5, 200]
- note: "⚠标度异于pcs(p50~128 vs 1219, 比~9.5)→单位/标度待核; 用『发电机转速(pcs)』为权威转速"
- 叶轮转速1:
- canonical_id: WROT_rotor_speed
- unit: rpm
- valid_range: [-1, 25]
- observed_range: [0, 16]
- note: "-6.99坏值簇 <-1 → NaN; 近零偏置保留; rated~14rpm"
- 叶轮转速2:
- canonical_id: WROT_rotor_speed_2
- unit: rpm
- valid_range: [-1, 25]
- observed_range: [0, 16]
- 变桨轴1位置反馈:
- canonical_id: WROT_pitch_1
- raw_unit: deg # ✅实证 [-0.05,89.08]=度 (本场度, 同枫香; 异于红阳/旧阜山base的rad → 照搬差57×)
- valid_range: [-5, 95]
- observed_range: [-2, 90]
- 变桨轴2位置反馈: { canonical_id: WROT_pitch_2, raw_unit: deg, valid_range: [-5, 95], observed_range: [-2, 90] }
- 变桨轴3位置反馈: { canonical_id: WROT_pitch_3, raw_unit: deg, valid_range: [-5, 95], observed_range: [-2, 90] }
- 变桨轴1位置指令:
- canonical_id: WROT_pitch_demand_1
- raw_unit: deg
- valid_range: [-5, 95]
- observed_range: [-2, 90]
- note: "★集距(collective)铁证: 三轴指令极差 p50=p95=0 (广播单指令); 反馈三叶极差 p95=0.07°<<1° → 非IPC. per-blade反馈存在(3真传感器)→三叶不平衡诊断可做, 但控制=集距"
- 变桨轴2位置指令: { canonical_id: WROT_pitch_demand_2, raw_unit: deg, valid_range: [-5, 95], observed_range: [-2, 90] }
- 变桨轴3位置指令: { canonical_id: WROT_pitch_demand_3, raw_unit: deg, valid_range: [-5, 95], observed_range: [-2, 90] }
- 齿轮箱入口油温: { canonical_id: WGBX_oil_inlet_temp, unit: degC, valid_range: [-20, 90], observed_range: [5, 60] }
- 齿轮箱输入轴轴温: { canonical_id: WGBX_lss_shaft_temp, unit: degC, valid_range: [-20, 110], observed_range: [15, 85], note: "低速轴(输入轴)温" }
- 齿轮箱油槽温度: { canonical_id: WGBX_oil_sump_temp, unit: degC, valid_range: [-20, 90], observed_range: [15, 70], note: "NBM齿箱轴承冷浸参照候选(同浴)" }
- 齿轮箱输出轴轴温: { canonical_id: WGBX_hss_bearing_temp, unit: degC, valid_range: [-20, 110], observed_range: [15, 82], note: "输出轴≈高速轴承" }
- 齿箱润滑油内部油压:
- canonical_id: WGBX_oil_pressure
- raw_unit: Pa
- valid_range: [-500000, 2000000]
- observed_range: [-400000, 1400000]
- note: "raw~Pa (标称p50~5.9bar); 负值=停机; 非核心信号"
- 发电机轴承A温度: { canonical_id: WGEN_bearing_a, unit: degC, valid_range: [-20, 100], observed_range: [3, 75], note: "A/B配对差可做; A=DE还是NDE待坐实" }
- 发电机轴承B温度: { canonical_id: WGEN_bearing_b, unit: degC, valid_range: [-20, 100], observed_range: [1, 86] }
- 发电机定子绕组温度U1: { canonical_id: WGEN_winding_u1, unit: degC, valid_range: [-20, 155], observed_range: [10, 120], note: "全套U1/U2/V1/V2/W1/W2 → 三相不对称判据解锁; F级155; 无325哨兵" }
- 发电机定子绕组温度U2: { canonical_id: WGEN_winding_u2, unit: degC, valid_range: [-20, 155], observed_range: [10, 120] }
- 发电机定子绕组温度V1: { canonical_id: WGEN_winding_v1, unit: degC, valid_range: [-20, 155], observed_range: [10, 120] }
- 发电机定子绕组温度V2: { canonical_id: WGEN_winding_v2, unit: degC, valid_range: [-20, 155], observed_range: [10, 120] }
- 发电机定子绕组温度W1: { canonical_id: WGEN_winding_w1, unit: degC, valid_range: [-20, 155], observed_range: [10, 120] }
- 发电机定子绕组温度W2: { canonical_id: WGEN_winding_w2, unit: degC, valid_range: [-20, 155], observed_range: [10, 120] }
- 主轴齿箱侧温度: { canonical_id: WMBR_temp_gbx_side, unit: degC, valid_range: [-20, 90], observed_range: [8, 50], note: "主轴脂润滑无油浴 → NBM不配冷浸参照" }
- 主轴叶轮侧侧温度: { canonical_id: WMBR_temp_rotor_side, unit: degC, valid_range: [-20, 90], observed_range: [1, 40], note: "与齿箱侧配对差可做 (原始列名双'侧'非笔误)" }
- 机舱空气温度: { canonical_id: WNAC_air_temp, unit: degC, valid_range: [-40, 70], observed_range: [-9, 41] }
- 机舱柜温度: { canonical_id: WNAC_cabinet_temp, unit: degC, valid_range: [-40, 70], observed_range: [-3, 41] }
- 机舱外环境温度:
- canonical_id: WMET_ambient_temp
- unit: degC
- sentinel: [311.7] # ✅实证: 311.7 饱和哨兵 (p999=max=311.7) → NaN
- valid_range: [-40, 55]
- observed_range: [-27, 40]
- note: "环境温度; 311.7哨兵→NaN; 冬季实测低至-26℃"
- 塔底柜温度: { canonical_id: WTUR_tower_base_cabinet_temp, unit: degC, valid_range: [-40, 80], observed_range: [-2, 57] }
- 变桨轴1轮毂温度: { canonical_id: WROT_pitch_hub_temp_1, unit: degC, valid_range: [-40, 70], observed_range: [-4, 36] }
- 变桨轴2轮毂温度: { canonical_id: WROT_pitch_hub_temp_2, unit: degC, valid_range: [-40, 70], observed_range: [-4, 36] }
- 变桨轴3轮毂温度: { canonical_id: WROT_pitch_hub_temp_3, unit: degC, valid_range: [-40, 70], observed_range: [-4, 36] }
- 变频器转矩反馈: { canonical_id: WCNV_torque_fb, valid_range: [-2000, 15000], observed_range: [0, 11300], note: "发电转矩反馈(Nm级); 削峰/控制律参考" }
- 变频器转矩给定: { canonical_id: WCNV_torque_demand, valid_range: [-2000, 15000], observed_range: [0, 11300] }
- 变频器无功:
- canonical_id: WAPC_reactive_power
- raw_unit: var
- valid_range: [-1500000, 1500000]
- observed_range: [-620000, 580000]
- note: "无功功率 raw var (±~610kvar); A25台缺此列"
- 变频器无功给定反馈: { canonical_id: WAPC_reactive_setpoint, raw_unit: var, valid_range: [-1500000, 1500000], observed_range: [-620000, 580000] }
- 机舱前后振动加速度:
- canonical_id: WNAC_vib_foreaft_raw
- sentinel: [-1]
- valid_range: [30000, 50000]
- observed_range: [38000, 42000]
- note: "★raw counts (~39000偏置, 非物理m/s²; 勿入mean); -1哨兵→NaN; 振动统计须median. 秒级层另有真塔振(legacy fushan_wind用)"
- 机舱左右振动值:
- canonical_id: WNAC_vib_sidebyside
- dead_channel: true
- valid_range: [-1, 1]
- observed_range: [0, 0]
- note: "✅实证恒0 死通道 (弃, 勿当缺失填补)"
- 机舱X轴振动值: { canonical_id: WNAC_vib_x, valid_range: [-1, 1], observed_range: [-0.05, 0.05], note: "小幅g级; 少量-0.75离群" }
- 机舱Y轴振动值: { canonical_id: WNAC_vib_y, valid_range: [-1, 1], observed_range: [-0.05, 0.05] }
- 总电量:
- canonical_id: WTUR_total_energy
- observed_range: [0, 100000000]
- note: "累计发电量计数器 (kWh, ~24.9-37M区间, per台各自累积); 差分得区间发电; 非valid_range门(单调累积)"
- 发电量统计:
- canonical_id: WTUR_energy_stat
- observed_range: [0, 200000000000000]
- note: "累计发电量统计计数器 (~1e14; 与'发电量统计.1'重列同值); 累积量非门"
- 无功统计:
- canonical_id: WTUR_reactive_stat
- observed_range: [0, 10000000000000]
- note: "累计无功统计计数器 (~4e12; 50%liveness); 累积量非门"
- # ---- 测风塔 (国电招远阜山风场测风塔数据/, 13月度csv UTF-8-BOM, 5-min, 设备编号=1单塔) ----
- # ★★ 本场核心价值: 唯一真·多高度实测测风塔 → 绝对功率曲线/达成率/NTF/Cp 可做 (self_ref-only 场做不了)
- mast:
- sampling_s: 300
- required: [10米瞬时风速(m/s), 70米瞬时风速(m/s)]
- n_masts: 1 # ✅实证 设备编号=1 单塔 → 18台共用 → power-curve-ntf 空间代表性门必过后才 per-turbine 绝对裁决
- height_layers: "10/30/50/70m 全年实测(-99=0, 单调剪切 p50 3.8/4.5/5.1/5.7); 轮毂高层 -99至2023-09, Oct2023起活(51%)→Dec全活(0%-99)"
- columns:
- 10米瞬时风速(m/s): { canonical_id: WMET_ws_10m, unit: m/s, sentinel: [-99], valid_range: [0, 50], observed_range: [0, 25], frame: geographic }
- 10米瞬时风向(°): { canonical_id: WMET_wd_10m, unit: deg, sentinel: [-99], valid_range: [0, 360], observed_range: [0, 360], frame: geographic }
- 30米瞬时风速(m/s): { canonical_id: WMET_ws_30m, unit: m/s, sentinel: [-99], valid_range: [0, 50], observed_range: [0, 25], frame: geographic }
- 30米瞬时风向(°): { canonical_id: WMET_wd_30m, unit: deg, sentinel: [-99], valid_range: [0, 360], observed_range: [0, 360], frame: geographic }
- 50米瞬时风速(m/s): { canonical_id: WMET_ws_50m, unit: m/s, sentinel: [-99], valid_range: [0, 50], observed_range: [0, 25], frame: geographic }
- 50米瞬时风向(°): { canonical_id: WMET_wd_50m, unit: deg, sentinel: [-99], valid_range: [0, 360], observed_range: [0, 360], frame: geographic }
- 70米瞬时风速(m/s): { canonical_id: WMET_ws_70m, unit: m/s, sentinel: [-99], valid_range: [0, 50], observed_range: [0, 25], frame: geographic, note: "最高全年实测层; <90m轮毂 → shear外推补轮毂高" }
- 70米瞬时风向(°): { canonical_id: WMET_wd_70m, unit: deg, sentinel: [-99], valid_range: [0, 360], observed_range: [0, 360], frame: geographic }
- 轮毂高瞬时风速(m/s):
- canonical_id: WMET_ws_hub
- unit: m/s
- sentinel: [-99]
- valid_range: [0, 50]
- observed_range: [0, 25]
- frame: geographic
- note: "轮毂高层; -99(全NaN)至2023-09; Oct2023起活(51%)→2024-01全活. 与SCADA重叠活窗=Oct-Dec2023; 全年可 10/30/50/70m shear外推补"
- 轮毂高瞬时风向(°): { canonical_id: WMET_wd_hub, unit: deg, sentinel: [-99], valid_range: [0, 360], observed_range: [0, 360], frame: geographic }
- 瞬时温度(℃): { canonical_id: WMET_ambient_temp_mast, unit: degC, valid_range: [-40, 50], observed_range: [-20, 35] }
- 瞬时湿度(%): { canonical_id: WMET_humidity, unit: "%", valid_range: [0, 100], observed_range: [15, 100] }
- 瞬时气压(KPa):
- canonical_id: WMET_pressure
- unit: kPa
- valid_range: [80, 110]
- observed_range: [95, 102]
- note: "★×10污染子集 (~1005 KPa, 实为100.5) >110 → NaN; rho 计算前必过此门 (同旧阜山base rho污染教训)"
- cleaning:
- physical:
- - "功率/功率设定 raw W → /1000 kW (assembler预换算); raw>50000未换算=BLOCK"
- - "变桨=度(本场) → 勿套红阳/旧base的rad"
- - "对风 风向1/2 rad*57.3→deg; raw>π(max4.71)wrap artifact → *57.3后>180界外NaN; nacelle-frame不作地理"
- - "机舱外环境温度 311.7哨兵→NaN; 叶轮转速-6.99簇<-1→NaN; 前后振动-1哨兵→NaN"
- - "mast: -99哨兵→NaN (全高度层); 气压∉[80,110]→NaN (×10污染)"
- semantic:
- - "功率设定<2080kW = 限电/降功率标志 (非坏值)"
- - "机舱左右振动=死通道弃; 机舱位置非地理弃作heading; 发电机转速反馈标度待核用pcs"
- - "风速2 per台死列判定(A12死/A13降级), 非全局"
- - "n=18台(非目录名义25); 达成率/功率曲线分母按18台"
- traps:
- - "功率=瓦特: 盲用差1000× (同枫香/红阳/旧阜山)"
- - "★变桨单位: 阜山=度, 红阳/旧base=rad — 同OEM不同场单位变, 照搬差57×"
- - "采样混采名义: turbine=600s(真), mast=300s; 多台long格式全局t.diff=0是交织伪影(sampling真值per台)"
- - "轮毂高mast层 Jan-Sep全-99, 误当0/缺失填补=错; 真活窗Oct2023起"
- - "机舱外环境温度311.7 / 前后振动-1 / 叶轮转速-6.99 = 场内哨兵, 统计前必转NaN"
- - "★self_ref例外: 本场有真测风塔 → 绝对性能非天然INSUFFICIENT (区别所有self_ref-only场); 但单塔18台 → power-curve-ntf空间代表性门必过 + 结论带不确定度带"
|