EMS 知识库
首页 / knowledge

EMS 知识库

AlphaESS Platform EMS 3.6 储能管理系统固件 · 应用层代码知识库 建立日期:2026-10-15 | 需求号:REQ-001 | 源码基准:V0.11.676(git 04e72700)


一、这是什么

把 EMS 固件应用层源码逐文件读懂后的结构化知识库,目标只有两个:

  1. 你说功能,我给出函数 —— 「削峰填谷在哪实现的」→ 直接给到 logic/logic.c 的哪个函数、第几行。
  2. 现场出故障,快速定位 —— 「报故障码 X / 现象 Y」→ 给可能原因、对应函数、排查步骤。

二、目录结构

docs/knowledge/
├── README.md            ← 本文件:知识库总入口
├── 基准版本.md           源码版本与覆盖边界(含哈希锁定)
├── 基准哈希.tsv          191 个源文件的逐文件 SHA256
├── 代码解析/             逐文件解析 + 检索索引
│   ├── README.md         191 份文档的索引与项目概况(含 uCOS-II 任务模型表)
│   ├── common/ data/ hmi/ logic/ midware/ net/ user/
│   │                     镜像源码目录结构,每个 X.c/.h 对应一份 X.c/.h.md
│   └── 索引/             反查层
│       ├── README.md     检索入口 + 顶层路由表
│       ├── 功能索引/      7 份:「你会怎么问」→ 入口函数 → 源文件
│       ├── 函数索引.tsv    2364 条:函数名 / 源文件 / 行号 / 模块
│       ├── 类型与宏索引.tsv 2787 条:名称 / 种类 / 源文件 / 行号
│       ├── 全局变量索引.tsv 505 条:变量名 / 源文件 / 行号 / 声明
│       └── 工具/         查找.js(检索)· 生成索引.js(重建 TSV)· 生成功能定位.js(重建定位表)
└── 故障速查/             ⭐ 现场排查入口 ← 报故障时从这里开始
    ├── README.md         怎么用这个库 + 故障码分区分区速查
    ├── 现场排查SOP.md      ⭐ 手上只有设备和报错时的第 0~5 步
    ├── EMS故障分册.md     E0001~E0094 逐条:触发条件/置位函数/排查方向
    ├── 故障码总表.md      全部 336 个故障码(由 TSV 自动渲染,勿手改)
    ├── 故障码表.tsv       机器可读全量表(11 组 / 336 条)
    └── 工具/            生成故障码表.js · 渲染总表.js

三、怎么用(最快路径)

3.0 现场报故障 → 走这里

打开 故障速查/现场排查SOP.md,按第 0~5 步走。 一句话版:先用故障码的数值判断是谁报的(E0001~E0094 是 EMS 自己,E100000 起是逆变器,E60000 起是 BMS,E200000 起是充电桩), 再读 Modbus 寄存器 0x0701(高 16 位)/ 0x0702(低 16 位) 拿完整故障位图 —— 不要只盯一个码。

3.1 一条命令检索

在 docs/knowledge/代码解析/索引/ 目录下:

node 工具/查找.js -F 电池加热       # ⭐功能 → 函数:直接给 定义文件:行号(推荐首选)
node 工具/查找.js 削峰填谷          # 综合查:功能定位 + 功能索引 + 函数 + 类型宏 + 全局变量
node 工具/查找.js -f bat_heat       # 只查函数名,直接给 文件:行号
node 工具/查找.js -g 并机地址        # 只查功能反查表(口语问法也能命中)
node 工具/查找.js -t SOC_CALIBRATION # 只查类型 / 宏
node 工具/查找.js -v g_t_logic_info  # 只查全局变量
node 工具/查找.js -d 故障码          # 全文搜**整个知识库**(含 故障速查/)
node 工具/查找.js -p midware/bms/bms.c   # 由源文件路径反查分析文档

关键词不区分大小写,空格分隔表示与。

3.2 源码变动后重建索引

cd docs/knowledge/代码解析/索引
node 工具/生成索引.js                 # 默认读 <仓库根>/platform-ems-3-6-plain
EMS_SRC=/别的/源码树 node 工具/生成索引.js   # 换源码树

3.3 查源码原文

按 TSV 里给的行号,去 platform-ems-3-6-plain/<源文件> 对号入座。


四、覆盖边界(这条必须知道,否则会问出答不了的问题)

源码树共 454 个 .c/.h;排除底层后应用层 279 个;其中已文档化 191 个。

类别数量状态
已文档化应用层191✅ 有逐文件解析 + 进索引
hmi/ui/ 菜单界面77⛔ 未纳入(本轮决定,文档备份在 _excluded_hmi_ui_docs/,后续单独补)
芯片驱动(W5500 / WM6232PU)6⛔ 不纳入(底层芯片驱动)
芯片启动/中断(gd32f4xx_it、system_gd32f4xx 等)5⛔ 不纳入(底层)
底层 RTOS / 标准库 / 硬件抽象175⛔ 不纳入(UCOSII/ HALLIB/ hardware/ system/)

191 + 88 = 279 ✔ 账对得上,逐文件清单见 基准版本.md。

因此现在答不了的问题:任何关于「界面上怎么操作」「某个菜单页读数不对」的问题 —— 那属于 hmi/ui/,等 K4 批次补。


五、维护规则

  1. 源码只读不改:知识库过程一律不改 platform-ems-3-6-plain 下任何 .c/.h。
  2. 源码更新后必做两件事:重跑 生成索引.js(重建 TSV)+ 更新 基准版本.md 的哈希。
  3. 改动要留痕:本知识库的任何增删改,都必须写入 docs/变更日志.md(需求号 REQ-001)。
  4. 文档与源码版本绑定:基准版本.md 记录了源码 commit 与 191 文件哈希,任何解析文档若与源码对不上,以哈希为准判断谁过期了。