# 观澜 · 场配置模板 (复制成 <场名>.yaml 后再改) # # 约定 (2026-09-17 用户令 2「统一配置」): # · 场定义一律 **YAML**: configs/farms/<场名>.yaml (历史 .json 仍可加载, 但新场写 yaml) # · 必需键见 src/windscada/config.py::REQUIRED —— 缺任何一个都会在加载时**响亮报错** # · 路径写 **安装根相对** 形式 (data/… 、outputs/…); 不要写 C:\ / /Volumes/… 这类本机绝对路径 # · 内置场 rudong 不需要本文件 (零配置也能起); 本文件只在加新场时复制使用 # · 文件名以 _ 开头 = 模板, 不会被 available() 当成场 # # 另注意: configs/farms/ 下还有一类**同名但不同 schema** 的文件 (机型/场站物理约束 profile: # 顶层 meta + physical_constraints), 那是另一条分析链的配置, **不是场定义**, 两者别混 # (见 docs §11 与 configs/registry.yaml)。 name: <场站中文名> # 必填: 例 "如东海上风电场" raw_station: # 必填: 例 "如东" (扫描辨识首选; 可用 src_farm_names 给别名) n_turbines: 25 # 必填 turbines: "WTG{:02d}:1-25" # 必填: 生成机组号列表的写法 (或直接列 ["WTG01", ...]) rated_kw: 3000 # 必填: 单机额定功率 kW # 以下 3 个 "src_*" 与 store **必填** (REQUIRED 里的 src_10min/src_alarm/store); # 显式给了就以它为准, 不给则按 data/raw 扫描结果派生 —— 常规做法是**留空让扫描派生**。 src_10min: /scada_10min> src_1min: /scada_1min> src_alarm: /故障报警> src_workorder: /风机故障记录> src_oil: /油样报告> src_windcms: /windcms> # 振动线 CMS 原始导出 (可选) src_m5: /m5_cms_tcm> # 振动线 handoff (可选) store: outputs/<场名>/windscada # 必填: L0 标准仓 (parquet) 落点 contract: reference/<场名>/windscada_contract.yaml # 原始件里的**场站名写法** (台账/报警按这些别名把本场行筛出来; 集团导出件常与配置名不同) src_farm_names: [<别名1>, <别名2>]