| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- # 数据契约 — 上海电气 SEWIND W2000-93-80 齿箱DFIG (华电莱州金城 ~38MW, 山东莱州 / 华电山东新能源莱州风力分公司)
- # schema_v2 SOP 标准件 (2026-07-18, 新场 onboard)。
- #
- # ★ 主分析层 = 双格式月份 (10min):
- # - zip 月 (10月, 1-9月): {A1-A10, A11-A24}/实时数据查询.zip → <hash>SS/F0950001XXX.csv (全月单台, GBK)
- # - 直存月 (11月, 12月): 月目录直存 F0950001XXX.csv (GBK, 全月单台)
- # 契约验原始 CSV 列名 (单位嵌列名, 非归一化); ★104列表头含18个重复列名(pandas .1后缀=100%字节相同冗余导出→清洗丢弃)。
- # ★ OEM 判定 = 台账.doc (上海电气 W2000-93-80/发电机YFSSYG500-4额定2100kW/齿箱南高齿FL2000HO-128) — 非猜, 台账坐实。
- # 同 OEM 家族 库内 sewind_w2000_135_xiaqiu / sewind_w2000_nanshu / sewind_w2500_146_dehui (135m/93m 变体, 本93m重验)。
- schema_version: 2
- meta:
- oem: 上海电气 SEWIND
- model: W2000-93-80 (2MW 齿箱DFIG; 台账封面'金城风电场(W2000-93-80)风电机主要技术参数')
- topology: dfig_geared # ✅双馈异步变速变桨(转子额定电流534A=绕线双馈); 齿箱南高齿FL2000HO-128 传动比~118.6(输入13.7rpm); 发电机上海电机厂YFSSYG500-4空-空冷; 偏航南高齿FDX206B 0.7°/s
- rated_kw: 2100 # ⚠双口径: 型号W2000=铭牌2000kW; 但台账发电机YFSSYG500-4额定功率2100kW + SCADA有功plateau(风≥12) p50=2095/p99=2121/max=2146 → 物理plateau~2100级(发电机平台口径)。达成率分析须先定参考额定(2000铭牌 vs 2100平台), 见 rated_kw_note + self_ref_note。
- rated_kw_note: "型号名W2000=2000kW铭牌口径; 台账发电机(YFSSYG500-4)额定功率=2100kW平台口径; SCADA高风plateau实测~2100(p99=2121,max=2146,均<2100级封顶). 三口径记全(≈xiaqiu W2000-135-90同族2000/2100双口径), 勿单值定谳。"
- rotor_d_m: 93 # ✅型号 W2000-93-80 → 叶轮直径93m
- hub_height_m: 80 # ✅型号 W2000-93-80 → 轮毂中心高度80m
- source_farm: 华电莱州金城风电场(山东省烟台市莱州市, 华电山东新能源有限公司莱州风力分公司); 19台×~2.0MW(铭牌)≈38MW
- commissioned: null # 台账未见明确并网日; SCADA全窗=2025全年(2025-01-01~2025-12-31)
- n_machines: 19 # ✅台数双键: 5机型参数台账.doc 19份(A1-A16,A21,A23,A24) = SCADA turbine CSV 19个(F0950001{101-108,201-208,305,307,308}) = disk_manifest枚举。★两套编号并存: 台账用A号(A1-A16,A21,A23,A24); SCADA风机名称内'XXX(N)'的N=另一原始号{1-10,12,13,14,15,18,19,21,23,24}; 两集合基数均19但N号≠A号(非1:1按号对应, 同19台物理机两套命名约定)。canonical台身份=F095文件stem。
- gearbox: "南高齿 FL2000HO-128; 传动比~118.6(台账'118:6', 输入转速13.7r/min); 齿箱温度通道★入10min层(油温/润滑油温/冷却水温/高速+低速轴承温均活) → 齿箱热NBM+冷浸comp 可10min层直做(区别xiaqiu缺齿箱温度)"
- generator: "上海电气 YFSSYG500-4; 额定功率2100kW; 额定转速1800rpm; 4极; 433/690V; 转子额定电流534A(绕线双馈); 定子额定电流1459A"
- dup_columns_note: "★104列表头含18个重复列名(电容电压1/2/3, 电容柜温度1/2/3, 电机温度1/2/3, 轴柜温度1/2/3, 轮毂温度, 机舱位置, 扭缆位置, 发电机转速, 变流器冷却水温度) — 每列出现2次, pandas读为 name + name.1; 实测 base vs .1 = 100%字节相同(冗余导出) → 清洗丢弃全部 .1 列(assemble_jincheng.py保留, cleaning丢弃), 契约只映射base实例。"
- dead_channels_note: "★10min层表头有列但0%活(全窗全NaN, 非本场信号): 风轮转速(rpm)[仅发电机转速活] / 桨距角(°)[集距列死, 但桨距角1/2/3 per叶活] / 瞬时风速(m/s) / 风向角(°)[仅60秒平均风向角活] / TBK(゜C) / 机舱振动有效值(g)[仅传感器X/Y活] / 风机状态[状态码死→事件层故障记录csv代] / 齿轮箱入口油温(℃)[全0] / 自动启动状态[全0] / 功率因数设定值[全0] / 冷却风扇出口温度(℃)[全0] / 变流器实际转矩(℃)[全0, 疑列名误(单位℃却名转矩)]。表头有列≠有活信号(memory channel-header-not-liveness): 死列不映射, 不作分析。"
- secondary_layers:
- turbine_30s: "登记非清洗: 2、秒级SCADA高频数据/30s数据/{N}月份/ (同10min双格式: zip月{A1-A10,A11-A24}/实时数据查询.zip + 直存月); 采样30s(待装配实证)。按需拉。"
- mast_15min: "★3、测风塔数据/测风塔数据/气象实测YYYY-MM-DD_*.csv (utf-8-sig, 非gbk): 单测风塔6高度(平均/最大/极大 风速1-6 + 平均风向1-6 + 气温/湿度/气压/空气密度); 实测风速1-5活(100%, 剪切廓线p50随高↑: 高1=2.47→高4/5=5.09), 高6死(全0)。采样900s(15-min)。窗=2025-04-18~2026-02-01(缺2025-05, 约9.5月); 21125行。★self_ref解: 有独立测风塔 → 绝对功率曲线/达成率可做(区别xiaqiu无塔INSUFFICIENT), 但单塔19台须过 power-curve-ntf 空间代表性门 + 结论带不确定度带 + 与SCADA 600s重采样对齐 + mast风向可解绝对偏航(vs机舱位置)。"
- event_fault: "7、机组状态、事件、故障数据: 故障记录_20250101_20251031.csv (GBK, 全场; 列=风机名/状态类型/状态码/状态码描述/激活时间/复位时间; 风机名='XXX(N)'式, 时间' YYYY-MM-DD HH:MM:SS.mmm'前导空格+毫秒点) + 事件记录/事件记录_XXX(N).csv per台19份。状态码6位带中文(910012=备用/60006=偏航齿轮润滑等)。窗2025-01-01~2025-10-31(文件名年=内容年, memory event-layer-verify-year-first)。未装配parquet(Phase-2 A_op/故障分型可建)。"
- layout:
- format: "双格式月份: (a) zip月 {A1-A10,A11-A24}/实时数据查询.zip → <hash>SS/F0950001XXX.csv (全月单台); (b) 直存月(11/12月) F0950001XXX.csv。104列单位嵌列名(含18重复→.1)"
- encoding: gbk # ★SCADA=gbk; 测风塔层=utf-8-sig(不同!)
- time_format: "YYYY-MM-DD HH:MM:SS"
- machine_col: 风机名称 # ★assemble_jincheng.py 已就地把首列覆写为文件stem F0950001XXX(权威台身份); 原CSV内' XXX(N)'值存 风机名称_raw(供事件层join)
- machine_token: "F0950001XXX (F095=场码, XXX=集电线路+机位: 101-108线1 / 201-208线2 / 305,307,308线3 = 19台)"
- assemble: "outputs/jincheng/sop/assemble_jincheng.py (zip+直存双格式逐CSV GBK → name-based to_numeric → 风机名称=文件stem, 风机名称_raw=内嵌'XXX(N)' → (风机名称,时间)concat+dedup(0重叠) → 排序 raw parquet 998,640行/19台/104列)"
- sampling:
- turbine_10min_s: 600 # ✅ t.diff().median() per台=600s (19台 min=median=max=600)
- window: "2025-01-01 00:00 ~ 2025-12-31 23:50 (12月完整2025全年, 无缺月; 998,640行/19台)"
- turbine_10min:
- sampling_s: 600
- required: ["有功功率(kW)", "10分钟平均风速(m/s)"]
- machine_col: 风机名称
- time_col: 时间
- columns:
- # ---- 功率/风/功率因数 ----
- "有功功率(kW)":
- canonical_id: WAPC_active_power
- raw_unit: kW
- valid_range: [-150, 2450]
- observed_range: [-25, 2147] # ✅plateau(风≥12)p50=2095/p99=2121; 负-25=空转寄生真物理禁clip; 850(277行)实测=真值(风7.6m/s/电流658A/转速1610物理一致, 非哨兵)
- self_ref_note: "本场有测风塔(6高度, 风速1-5活) → 绝对达成率/功率曲线可做(区别xiaqiu无塔INSUFFICIENT), 但须过 power-curve-ntf 单塔空间代表性门 + 结论带不确定度 + mast窗2025-04~2026-01(缺05)。达成率参考额定须先定(2000铭牌 vs 2100平台)。"
- "无功功率(kVar)": {canonical_id: WAPC_reactive_power, raw_unit: kVar, valid_range: [-2200, 2200], observed_range: [-2045, 1391],
- semantic: "无功=园区AVC调度量(memory reactive-attribution-dispatch-ceiling); fleet-relative离群封顶【参考】除非有Q-setpoint日志"}
- "10分钟平均风速(m/s)":
- canonical_id: WMET_horWdSpd
- unit: m/s
- valid_range: [0, 40]
- observed_range: [0, 49.2]
- self_ref_risk: high
- note: "机舱风(10min平均) self_ref; ★本场有独立测风塔 → 可用mast风解 self_ref(区别xiaqiu); 但单塔空间代表性须过门"
- "30秒平均风速(m/s)": {canonical_id: WMET_horWdSpd_30s, unit: m/s, valid_range: [0, 40], observed_range: [0, 49.2],
- semantic: "机舱风30s平均值口径(非30s采样, 10min行内快照); self_ref同上"}
- "功率因数": {canonical_id: WAPC_PowerFactor, unit: none, valid_range: [-1, 1], observed_range: [-1, 1], semantic: "p50=-0.99(容性/感性约定)"}
- # ---- 转速 (★仅发电机转速活; 风轮转速列死) ----
- "发电机转速(rpm)": {canonical_id: WGEN_Spd, unit: rpm, valid_range: [-2, 2200], observed_range: [0, 2027],
- semantic: "★高速轴 p50=1121(齿箱DFIG 传动比~118.6, rated1800台账); zero10.6%=停机; 风轮转速(rpm)列死(0%活)→无rotor侧"}
- # ---- 变桨: ★10min层 per叶桨距角1/2/3 活(集距列死) → 三叶不平衡可10min层直做 ----
- "桨距角1(°)": {canonical_id: WROT_PtAngBlade1, unit: deg, valid_range: [-5, 95], observed_range: [0, 95.51],
- semantic: "★per叶独立桨距(桨距角(°)集距列死) → 三叶不平衡/静态零位可10min层做; below-rated p50~0.54封桨/zero38.4%; 与桨叶N冗余编码器1角度 双通道"}
- "桨距角2(°)": {canonical_id: WROT_PtAngBlade2, unit: deg, valid_range: [-5, 95], observed_range: [-2.24, 95.51],
- trap: "max248.17界外尖峰→NaN"}
- "桨距角3(°)": {canonical_id: WROT_PtAngBlade3, unit: deg, valid_range: [-5, 95], observed_range: [0, 95.51],
- trap: "min-208.45/max229.53界外尖峰→NaN"}
- "桨叶1冗余编码器1角度(°)": {canonical_id: WROT_PtAngBlade1_redEnc, unit: deg, valid_range: [-5, 95], observed_range: [0, 95.51],
- semantic: "★桨距冗余编码器(per叶第二桨角源) → 与桨距角N交叉核/编码器一致性; below-rated p50~0.08"}
- "桨叶2冗余编码器1角度(°)": {canonical_id: WROT_PtAngBlade2_redEnc, unit: deg, valid_range: [-5, 95], observed_range: [0, 95.51], trap: "界外尖峰→NaN"}
- "桨叶3冗余编码器1角度(°)": {canonical_id: WROT_PtAngBlade3_redEnc, unit: deg, valid_range: [-5, 95], observed_range: [0, 95.51], trap: "min-206.69界外尖峰→NaN"}
- # ---- 温度: 齿轮箱(★入10min层) ----
- "齿轮箱油温(℃)": {canonical_id: WGDT_TmpOil, unit: degC, valid_range: [-40, 120], observed_range: [-0.1, 81.1],
- semantic: "★齿箱油温(区别xiaqiu缺); 冷浸comp参照油温(SOP §4.6c反-环温/调节故障判别, 勿油温自参照)"}
- "齿轮箱润滑油温度(℃)": {canonical_id: WGDT_TmpLubOil, unit: degC, valid_range: [-40, 120], observed_range: [-0.1, 78.5], semantic: "润滑油温(vs油温双测)"}
- "齿轮箱冷却水温度(℃)": {canonical_id: WGDT_TmpCoolWater, unit: degC, valid_range: [-40, 100], observed_range: [-3.5, 73.8]}
- "高速轴承温度(℃)": {canonical_id: WGDT_TmpBrgHSS, unit: degC, valid_range: [-40, 150], observed_range: [-0.1, 90.6],
- semantic: "★齿箱高速轴承(HSS) → 齿箱热NBM候选; 冷浸comp=齿箱轴承温∧齿箱油温(同浴铁证, memory thermal cold-soak)"}
- "低速轴承温度(℃)": {canonical_id: WGDT_TmpBrgLSS, unit: degC, valid_range: [-40, 150], observed_range: [-0.1, 106.2], semantic: "★齿箱低速轴承(LSS)"}
- "主轴温度": {canonical_id: WMAIN_TmpShaft, unit: degC, valid_range: [-40, 150], observed_range: [-15, 139],
- semantic: "★主轴/主轴承温(脂润滑无油浴 → 冷浸comp不配, memory cold-soak弱参照产假sensor_suspect); uniq仅107=低分辨率"}
- # ---- 温度: 发电机(DFIG 定子三相 + 双端轴承 + 滑环) ----
- "发电机定子U温度(℃)": {canonical_id: WGEN_TmpStaU, unit: degC, valid_range: [-40, 200], observed_range: [-0.1, 181.5],
- semantic: "★定子三相U/V/W → 相间不平衡可做; 0值=停机冷态(发电态P>50过滤)"}
- "发电机定子V温度(℃)": {canonical_id: WGEN_TmpStaV, unit: degC, valid_range: [-40, 200], observed_range: [-0.1, 130.2]}
- "发电机定子W温度(℃)": {canonical_id: WGEN_TmpStaW, unit: degC, valid_range: [-40, 200], observed_range: [-198.3, 143.9],
- trap: "min-198.3/max319.9界外尖峰→NaN(实测max319非物理)"}
- "驱动端轴承温度(℃)": {canonical_id: WGEN_TmpBrgDE, unit: degC, valid_range: [-40, 150], observed_range: [-0.1, 90.2],
- semantic: "★发电机驱动端(DE)/自由端(NDE)双端 → 配对差可做; 冷浸comp不配(热汇=发电机冷却系统非油浴)"}
- "自由端轴承温度(℃)": {canonical_id: WGEN_TmpBrgNDE, unit: degC, valid_range: [-40, 150], observed_range: [-0.1, 95.0]}
- "发电机滑环温度(℃)": {canonical_id: WGEN_TmpSlipRing, unit: degC, valid_range: [-40, 150], observed_range: [-29.1, 89.9], semantic: "★滑环温(绕线双馈碳刷/滑环) → DFIG特有"}
- "发电机冷却水温度(℃)": {canonical_id: WGEN_TmpCoolWater, unit: degC, valid_range: [-40, 120], observed_range: [-2.8, 91.8]}
- # ---- 温度: 变桨系统(per叶电机/轴柜/电容) + 轮毂 ----
- "电机温度1(℃)": {canonical_id: WROT_TmpPtMotor1, unit: degC, valid_range: [-40, 150], observed_range: [-4.1, 108.5],
- semantic: "★变桨电机per叶温度1/2/3; min-111界外尖峰→NaN", trap: "min-111.06界外→NaN"}
- "电机温度2(℃)": {canonical_id: WROT_TmpPtMotor2, unit: degC, valid_range: [-40, 150], observed_range: [-4.1, 128.6], trap: "min-113.36界外→NaN"}
- "电机温度3(℃)": {canonical_id: WROT_TmpPtMotor3, unit: degC, valid_range: [-40, 150], observed_range: [-4.1, 129.4]}
- "轴柜温度1(℃)": {canonical_id: WROT_TmpPtAxisCab1, unit: degC, valid_range: [-40, 120], observed_range: [-40, 107.4],
- semantic: "★变桨轴柜per叶温度; -145族界外尖峰(3867行<-40)→NaN", trap: "min-151/-145族界外→NaN"}
- "轴柜温度2(℃)": {canonical_id: WROT_TmpPtAxisCab2, unit: degC, valid_range: [-40, 120], observed_range: [-40, 66.7], trap: "-50界外→NaN"}
- "轴柜温度3(℃)": {canonical_id: WROT_TmpPtAxisCab3, unit: degC, valid_range: [-40, 120], observed_range: [-40, 63.2], trap: "-50界外→NaN"}
- "电容电压1(V)": {canonical_id: WROT_PtCapVolt1, unit: V, valid_range: [0, 600], observed_range: [0, 489],
- semantic: "★变桨后备电容电压per叶(顺桨后备电源); 0=充放态"}
- "电容电压2(V)": {canonical_id: WROT_PtCapVolt2, unit: V, valid_range: [0, 600], observed_range: [0, 450]}
- "电容电压3(V)": {canonical_id: WROT_PtCapVolt3, unit: V, valid_range: [0, 600], observed_range: [0, 521]}
- "电容柜温度1(℃)": {canonical_id: WROT_TmpPtCapCab1, unit: degC, valid_range: [-40, 100], observed_range: [0, 76.9]}
- "电容柜温度2(℃)": {canonical_id: WROT_TmpPtCapCab2, unit: degC, valid_range: [-40, 100], observed_range: [-0.7, 69.3]}
- "电容柜温度3(℃)": {canonical_id: WROT_TmpPtCapCab3, unit: degC, valid_range: [-40, 100], observed_range: [0, 76.0]}
- "轮毂温度(℃)": {canonical_id: WROT_TmpHub, unit: degC, valid_range: [-40, 80], observed_range: [-40, 57.2], trap: "-50界外→NaN"}
- # ---- 温度: 机舱/塔/柜/箱变/环境 ----
- "塔底柜温度(℃)": {canonical_id: WTOW_TmpTowerBaseCab, unit: degC, valid_range: [-40, 80], observed_range: [-2.7, 49.9]}
- "机舱柜温度(℃)": {canonical_id: WNAC_TmpCab, unit: degC, valid_range: [-40, 80], observed_range: [-0.1, 51.9]}
- "舱内温度(℃)": {canonical_id: WNAC_IntTmp, unit: degC, valid_range: [-40, 80], observed_range: [-1.4, 48.4]}
- "舱外温度(℃)": {canonical_id: WMET_EnvTmp, unit: degC, valid_range: [-40, 60], observed_range: [-201, 45.7],
- semantic: "★舱外温度=环境温度代理(温度NBM去季节参照); min-201界外尖峰(36行<-40)→NaN", trap: "min-201界外→NaN"}
- "箱变油温(℃)": {canonical_id: WTRM_TmpOil, unit: degC, valid_range: [-40, 120], observed_range: [0, 100],
- semantic: "★箱变(变压器)油温; zero36.7%(停机)/max292界外尖峰→NaN", trap: "max292界外→NaN"}
- "塔筒温度(℃)": {canonical_id: WTOW_TmpTower, unit: degC, valid_range: [-40, 60], observed_range: [-6.9, 46.3]}
- "变流器冷却水温度(℃)": {canonical_id: WCNV_TmpCoolWater, unit: degC, valid_range: [0, 80], observed_range: [0, 55], semantic: "uniq仅56=低分辨率(疑整数量化)"}
- # ---- 电网 (DFIG 三相电压/电流 + 频率) ----
- "电网A相电压(V)": {canonical_id: WGRD_VoltA, unit: V, valid_range: [0, 500], observed_range: [0, 426.7]}
- "电网B相电压(V)": {canonical_id: WGRD_VoltB, unit: V, valid_range: [0, 500], observed_range: [0, 422.0]}
- "电网C相电压(V)": {canonical_id: WGRD_VoltC, unit: V, valid_range: [0, 500], observed_range: [0, 424.4]}
- "电网A相电流(A)": {canonical_id: WGRD_CurA, unit: A, valid_range: [0, 2000], observed_range: [0, 1759],
- semantic: "zero~20%=停机; 850(210行)=物理值非哨兵(与有功850不同行)"}
- "电网B相电流(A)": {canonical_id: WGRD_CurB, unit: A, valid_range: [0, 2000], observed_range: [0, 1740]}
- "电网C相电流(A)": {canonical_id: WGRD_CurC, unit: A, valid_range: [0, 2000], observed_range: [0, 1770]}
- "电网频率(Hz)": {canonical_id: WGRD_Freq, unit: Hz, valid_range: [0, 55], observed_range: [0, 50.69]}
- # ---- 位置/风向/振动/液压 ----
- "机舱位置(°)": {canonical_id: WNAC_Dir, unit: deg, valid_range: [0, 360], observed_range: [0, 360],
- semantic: "机舱绝对方位角[0,360)→扇区/风玫瑰; 450行>360(max647)=编码器尖峰→NaN; 与mast风向配可解绝对偏航"}
- "扭缆位置(°)": {canonical_id: WYAW_CableTwist, unit: deg, valid_range: [-720, 720], observed_range: [-720, 720],
- semantic: "解缆/扭缆位置(unwrap); ±3169界外尖峰→NaN; -99(83行)/-273(52行)离散哨兵→界外NaN", trap: "±3169界外+(-99/-273哨兵)→NaN"}
- "60秒平均风向角(°)": {canonical_id: WMET_WdDir_60s, unit: deg, valid_range: [-360, 720], observed_range: [-268.7, 662.9],
- semantic: "★60s平均风向(机舱相对/带wrap, ~5%在[0,360]外); self_ref非地理 → 绝对风玫瑰用前过 pseudo-geo三件套(memory pseudo-geo); mast有独立地理风向"}
- "机舱振动传感器X(g)": {canonical_id: WNAC_VibX, unit: g, valid_range: [-50, 50], observed_range: [-50, 50],
- semantic: "机舱振动X(前后/左右待定); ±50.4界外→NaN(疑量程饱和)"}
- "机舱振动传感器Y(g)": {canonical_id: WNAC_VibY, unit: g, valid_range: [-50, 50], observed_range: [-50, 50]}
- "液压系统压力(bar)": {canonical_id: WHYD_Press, unit: bar, valid_range: [0, 250], observed_range: [0, 186],
- semantic: "液压压力 p50=150; 负值(-62/-63族633行)界外→NaN(哨兵/传感故障)", trap: "负压界外→NaN"}
- # ---- 状态旗标 (0/1, 语义先验; 事件层故障码另在目录7) ----
- "限功率运行": {canonical_id: WTUR_CurtailFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1],
- semantic: "★限功率/降功率运行旗标(xiaqiu无此旗标=优势); 实测1=68%/0=32% → 语义歧义(1可能=限功率功能启用非实时受限, 或=正常); ★禁裸信1=受限(68%受限不合理); curtailment-screen须旗标+功率-风约束+状态码三证交叉定语义, 勿onboard裸采"}
- "故障状态": {canonical_id: WTUR_FaultFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1], semantic: "1=故障(1.3%); 事件层故障记录csv带6位状态码+描述"}
- "服务模式状态": {canonical_id: WTUR_ServiceFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1], semantic: "1=服务/维护模式(1.6%)"}
- "刹车激活状态": {canonical_id: WTUR_BrakeFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1]}
- "报警状态": {canonical_id: WTUR_AlarmFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1],
- semantic: "★语义反相: 1=99.9%/0=0.1% → 1疑=正常无报警(非1=报警); 用前必先验核实符号(memory alarm-same-sensor)"}
- "偏航解缆状态": {canonical_id: WYAW_UnwindFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1]}
- "偏航激活状态": {canonical_id: WYAW_ActiveFlag, unit: flag, valid_range: [0, 1], observed_range: [0, 1], semantic: "1=偏航电机动作中(3.6%) → 动态偏航次数/磨损剂量代理"}
- "有功设定值": {canonical_id: WAPC_SetpointPct, unit: pct, valid_range: [0, 100], observed_range: [0, 100], semantic: "有功设定(0或100二值; 0=85%/100=13%); 与限功率运行交叉核降功率"}
- # ---- 可用率/发电量: 报表口径, ★energy counters污染 (勿作物理) ----
- report_channels_note: >
- 日/月/年可利用率(%) + 日/月/年发电量(kW·h) = 报表口径累积量, 非物理测点。★发电量counters污染:
- 日发电量 max=591,450,230(11位尖峰) / 月发电量 min=-305,902(负) / 850·9999·32767·32768哨兵均出现在发电量列 →
- 仅作可用率A_op交叉参考, 禁作能量物理复算(用有功功率积分自算发电量替代)。可利用率(%)可作停机/A_op粗核。
- cleaning:
- physical:
- - "有功功率负值(-25)=空转寄生真物理禁clip; valid_range界外→NaN非clamp"
- - "★850非哨兵: 有功功率850(277行)实测真值(风7.6/电流658/转速1610物理一致), 电网电流850(210行)与有功850不同行(both-same-row=0=非frozen frame) → 物理层850保留不clip; 哨兵850仅污染发电量counters(报表口径, 已隔离)"
- - "离散哨兵: 扭缆位置 -99(83)/-273(52) → valid_range[-720,720]界外NaN捕获; 无850/9999/int16哨兵入物理温度/功率列(仅发电量counters有)"
- - "界外尖峰(桨距±208/248, 定子W-198/319, 电机温度-111/-113, 轴柜-151/-145族, 舱外-201, 箱变292, 扭缆±3169, 机舱位置>360, 液压负压) 均由 valid_range 界外→NaN 统一捕获, 非discrete sentinel"
- - "温度0值=停机冷态(发电态P>50过滤剔)"
- semantic:
- - "★self_ref可解: 有独立测风塔(6高度) → 绝对达成率/功率曲线可做(过power-curve-ntf单塔空间代表性门+不确定度), 区别xiaqiu无塔INSUFFICIENT; 参考额定先定(2000铭牌vs2100平台)"
- - "机舱位置=方位角[0,360)→扇区(过pseudo-geo三件套); 60秒平均风向角=机舱相对带wrap非地理; 扭缆位置=扭缆量"
- - "限功率运行旗标语义歧义(1=68%)→curtailment-screen三证定语义勿裸采; 报警状态疑反相(1=正常)→用前核符号"
- - "★18个.1重复列=100%字节相同冗余 → 清洗丢弃(cleaning drop 全 .1 列); 12个死列(风轮转速/桨距集距/瞬时风速/风向角/TBK/振动有效值/风机状态/齿箱入口油温/自动启动/功率因数设定值/冷却风扇出口/变流器实际转矩)不映射"
- - "全19台主通道(桨距1/2/3, 齿箱/发电机/主轴温度, 限功率) 97.6-98.6%活, 0台死列, 无partial-liveness切窗(区别xiaqiu环境温度/偏航2025-05起)"
- derive:
- - "10min已是时均层(SEWIND原生); zip+直存双格式逐CSV GBK concat+dedup(0重叠, 各月不交叠)"
- traps:
- - "★**双格式月份**: zip月{A1-A10,A11-A24}/实时数据查询.zip(内<hash>SS/F095XXX.csv 全月单台) + 直存月(11/12月)F095XXX.csv; assemble须两路都走"
- - "★**104列表头18重复列名** → pandas .1后缀; 实测base vs .1=100%字节相同 → 清洗丢.1, 契约只映base"
- - "★**风机名称内'XXX(N)' vs 台账A号 两套编号**: N号{1-10,12-15,18,19,21,23,24}≠A号{1-16,21,23,24}(基数均19但非1:1); canonical台身份=F095文件stem; 事件层用'XXX(N)'式 → join须用风机名称_raw"
- - "★**测风塔层=utf-8-sig非gbk** + 900s(15-min)非600s + 6高度(高6死) + 窗2025-04~2026-01(缺05) → 与SCADA对齐须重采样"
- - "★**齿箱温度入10min层**(区别xiaqiu缺): 齿箱油温/润滑油温/高速+低速轴承温均活 → 齿箱热NBM+冷浸comp可10min直做"
- - "★**per叶桨距角1/2/3活**(集距列死): 三叶不平衡可10min层做(区别xiaqiu须走30s层)"
- - "★**发电量counters污染**(591M/负/850/9999/int16哨兵): 报表口径, 禁物理复算, 用有功积分替代"
- - "★**限功率运行旗标语义歧义**(1=68%不合理受限): 禁裸信, curtailment-screen三证定语义"
- - "rated双口径 2000(铭牌型号W2000) vs 2100(台账发电机YFSSYG500-4/plateau): 达成率前须定参考额定"
|