SOC EKF 深度 — 状态方程 / OCV 模型 / 调参 / 收敛性
本质与导读
本质 Coulomb counting 会累积电流采样误差、OCV 法准却需静置 30+ min,EKF (Extended Kalman Filter) 把两者融合——Coulomb 沿时间积分预测、V_terminal 经 OCV 模型反向校正——在动态工况下做到 ±1-2% SOC。但 LFP 的 OCV 平台坡度比 NCM 最平区段还低约一个数量级(~10×,§3.1 量化),叠加 2 mV 级 AFE 量测噪声后,EKF 在 30-70% SOC 的 SOC 盲区可达 ±20%(§9 复算),几乎瞎走,必须叠加 OCV 校准 + 多模型 fallback + plausibility check。
主线坐标:第 2 站 · BMS · ↑ 全景主线
1. EKF 双闭环
EKF 在 BMS 中每 100ms 跑一次,核心是两个步骤交替:Predict 用动力学模型 + 当前电流积分,把状态推到下一时刻;Update 用端电压量测反向修正预测,得到下一步初值。这种交替让动态条件下的估计能从测量误差中收敛,同时避免静态 OCV 法只能离线的局限。
2. 状态向量与系统方程
2.1 为什么 3 阶
最常用是 3 阶状态向量:
其中 是两个 RC 极化电压,代表 Li-ion 电极极化 (Activation polarization) + 浓差极化 (Concentration polarization) 的两个时间尺度:
- 10s — fast (双电层 + Faradaic)
- 1000s — slow (浓差 + SEI)
2 阶简化 (只 1 个 RC) 在低动态够用;4 阶在大功率快充 / 弱化锂电池 (老化) 时更准。EV BMS 99% 用 3 阶。
2.2 状态方程
状态方程把"当前 SOC + 极化电压" 一步推到下一时刻 — SOC 用 Coulomb 积分,RC 极化电压用 RC 衰减 + 当前电流激励叠加,这两项后面构成 Predict 步骤的核心:
参数:
- :库仑效率 (放电 1.0,充电 0.99)
- :额定容量 (Ah)
- 和 :实验拟合,SOC + 温度依赖
2.3 量测方程
量测方程把状态映射成端电压 — 它由开路电压 + 欧姆压降 + 两个极化电压组成。这是 Update 步骤的核心,OCV(SOC) 是非线性项,它在 LFP 平台区斜率 → 0 直接决定 EKF 是否能锁住:
是欧姆内阻——量级强依赖电芯尺寸:大容量 EV 方壳 / 软包电芯(50-150 Ah)约 0.5-2 mΩ,21700 类小圆柱(~5 Ah)约 15-25 mΩ,25 ℃ 值随温度下降显著上升(-20 ℃ 常翻 2-3×)。OCV 是查表函数,温度修正:同 SOC 不同温度 OCV 偏 ±10-30 mV(对应熵系数 ±0.3-0.6 mV/℃ × ΔT)。
3. OCV-SOC 查表 + 温度补偿
OCV (Open Circuit Voltage) 是 EKF 量测方程的核心 — 准 OCV 表准 SOC。
实验测法:
- 离线测试 25℃ 标定 OCV(SOC) 表(典型 21 点,0% → 100% SOC,每 5%)
- 充放电倍率 < C/20 → 平衡后端电压 = OCV
- -20℃ / 0℃ / 25℃ / 45℃ / 60℃ 测 5 个温度 → 二维表
温度修正:
在 SOC 0-100% 间是非线性的 (-1 to +1 mV/℃)。
3.1 LFP 平台坡度问题
NCM 的 OCV-SOC 曲线全程单调,最平区段斜率仍有 ~1-2 mV / %SOC(等价 0.1-0.2 V per 单位 SOC),EKF 可以从 V_terminal 反推 SOC 误差 < 1%。
LFP 在 30-70% SOC 区间OCV 平台:
- 斜率 ~0.1 mV / %SOC(比 NCM 最平段低约一个数量级)
- 端电压量测最小可分辨 SOC = 噪声 / 斜率:即便用 12-bit @ 5V ADC 量化 1.2 mV,或车规 AFE(ADBMS6830 total measurement error < 2 mV)的 2 mV 噪底,2 mV ÷ 0.1 mV/%SOC = 20% SOC 盲区 → SOC 估计直接漂 ±20%(§9 逐步复算)!
LFP 工程对策:
- 充满 + 静置 30+ min 强制 OCV 重置(每周至少 1 次)
- 多模型 fallback:EKF + Coulomb + DVA (Differential Voltage Analysis)
- 提高 ADC 精度到 16-bit + 限制 EKF 在平台区"信任电流积分"(R 调大)
4. EKF 算法步骤
4.1 Predict
Predict 步骤把上一时刻的最佳估计 用状态方程推到当前先验 ,同时把不确定性 P 沿模型方向膨胀(加过程噪声 Q):
是状态雅各比 。
4.2 Update
Update 用端电压量测 校正先验 — 计算量测残差 ,通过 Kalman 增益 把残差按 "model 不确定 / 测量不确定" 比例分配回状态,得到后验:
是量测雅各比 ,关键在 → LFP 平台区 H 几乎 = 0 → K 几乎 = 0 → EKF "失效"。
4.3 计算量
3 阶 EKF / 100ms / 96 cell pack: ~1000 次浮点乘法 / cell / 周期 → 总 100k flop/cycle → MCU 主流 @ 100 MHz 占 1-2% CPU。实战瓶颈不在算力,在调参。
5. Q / R 调参 — 决定 EKF 性格
5.1 Q (Process Noise)
是 3×3 对角矩阵,代表"我对 model 的不信任程度":
- (SOC 过程噪声) — 大 → EKF 相信电压量测多,反应快
- (RC 过程噪声) — 通常 < Q[0,0]
5.2 R (Measurement Noise)
是标量(单量测),代表"我对端电压量测的不信任程度":
- 大 → 不信电压 → 偏向 Coulomb counting
- 小 → 信电压 → 偏向 OCV 查表
5.3 工程调参
实战经验(注意量纲: 是状态协方差、SOC 项量纲 ; 是端电压量测方差、量纲 ):
- 初值 (SOC std ≈ 0.1% / step)、(端电压 std ≈ 32 mV——偏保守、刻意"不信电压"的松起点;若对应 2-5 mV TME 的车规 AFE,收敛后可收到 )
- 高动态(加速 / 制动)时临时增大 → 加快响应
- LFP 平台区临时增大 → 切换到 Coulomb 主导
- 充满 + 静置 → 减小 → 拉回 OCV 锚定
自适应 EKF (AEKF) 实时调 Q / R,Tesla 在用,代价复杂度 + 测试覆盖率涨。
6. EKF 不收敛的 4 种原因
EKF 不收敛是 BMS 工程师反复 debug 的痛点。下表是 4 个真实碰到的根因 + 修法:
| 不收敛现象 | 物理根因 | 修法 |
|---|---|---|
| SOC 卡在初值 | 太小,K 收不到误差 | 增大 10× |
| SOC 大幅振荡 | 太大 + ADC 噪声 | 减小 ,加 ADC 滤波 |
| LFP 平台区漂 | OCV 斜率 → 0 | 切 Coulomb / DVA fallback |
| 大电流误差不收 | 没 SOC 修正 | 也建二维表 |
7. 安全边界 — plausibility check
EKF 输出不是 BMS 最终 SOC — BMS 还要做 plausibility 检查:
- Coulomb 积分独立追踪 SOC_C,与 EKF 输出 SOC_K 比较
- |SOC_C - SOC_K| > 10% → 阈值告警
- |SOC_C - SOC_K| > 20% → 强制限功率 + 报 DTC
- 充满静置 OCV 后两路同步重置
这种双轨 + 偏离阈值 是功能安全 SG-V+ / V- 的必要条件 — 单一 EKF 输出永远不能直接驱安全态。
8. EKF vs 其它方法
EKF 不是唯一 SOC 方法,实际工程中主流 BMS 都用 EKF + 其它方法 ensemble:
- Coulomb Counting — 简单,短期准,长期累积误差,辅助轨
- OCV-look-up — 静置准,运行无用
- EKF — 动态稳态 ±1-2%,主流主轨
- UKF (Unscented KF) — EKF 非线性近似,稍准但复杂
- Sliding Mode Observer — 鲁棒性好,过冲
- Neural Network / RL — Tesla / 比亚迪研究,需大量训练数据 + 在线学习风险
EV BMS 主流:EKF (主) + Coulomb (验证) + OCV (重置) 三轨融合。
9. 端到端 worked design — 100 Ah NMC pack 上的 3 阶 EKF
把前面的方程落到一套真实器件上走一遍,所有数字可复算。这套配置正是主流 EV pack 的落地形态:车规 MCU 跑 EKF、BMS AFE 供高精度 cell 电压、pack 端 shunt 供主电流,电芯用 HPPC 典型量级参数。
9.1 器件与电芯参数
先把被估对象和量测链路固定下来(器件取自本 wiki 已核页,电芯参数是 100 Ah NMC 方壳的 HPPC 典型量级):
| 部件 / 参数 | 取值 | 说明 |
|---|---|---|
| BMS 主控 MCU | NXP S32K344,Cortex-M7 @160 MHz,lockstep ASIL D | EKF 运行平台 |
| AFE(电压) | ADI ADBMS6830,C-ADC 每 1 ms,TME < 2 mV,16S/颗 | 供 |
| pack 电流 | shunt + ADBMS2950 过流 ADC,与电压同步采 | 供 |
| 电芯 | 100 Ah NMC 方壳 | 示例被估对象 |
| 100 Ah ≈ 360 kC | 额定容量 | |
| 1 mΩ @25 ℃ | 欧姆内阻 | |
| 快极化 RC | = 0.5 mΩ,时间常数 10 s | ≈ 20 kF |
| 慢极化 RC | = 0.8 mΩ,时间常数 1000 s | ≈ 1.25 MF |
| 100 ms | EKF 步长 | |
| 1.0 放 / 0.99 充 | 库仑效率 |
约定 为放电(与 §2 一致),。
9.2 离散状态方程系数(F 雅可比)
把 §2.2 的三条离散方程在工作点线性化,得对角的状态雅可比 ——因 SOC 不依赖极化电压、极化电压也不依赖 SOC:
代入 s、时间常数 s / s 即得上面两个衰减因子(、)。库仑项每步系数 (每步, 单位 A):自检一下量级——100 A 放电 1 h = 36000 步, = 100% SOC,正好把 100 Ah 电芯放空,量级无误。
9.3 量测雅可比 H 与 LFP 平台盲区
量测方程 对状态求偏导,量测雅可比只有第一项随工作点变:
关键就是 。用 §3.1 的斜率代入,并配 ADBMS6830 的 2 mV 噪底,直接算出"电压最小可分辨的 SOC 步长" = 噪声 ÷ 斜率:
- NMC 最平区段 1.5 mV/%SOC → 2 mV ÷ 1.5 mV/%SOC ≈ 1.3% SOC(可观,EKF 正常锁住)
- LFP 平台 0.1 mV/%SOC → 2 mV ÷ 0.1 mV/%SOC = 20% SOC(盲区,与本页反复强调的 ±20% 一致)
- 电压对 SOC 的"信息量" ,NMC:LFP → 平台区可观性弱约 200×
直接让 Kalman 增益中 SOC 对应的分量 ——EKF 对 SOC 的校正能力塌陷,只能"信电流"裸奔 Coulomb,这就是 §3.1 / §6 那条命门的定量根源。
9.4 计算预算(S32K344 @160 MHz)
3 阶 EKF 单 cell 每周期约 次浮点乘加(Predict 的 约 次、Update 的标量量测更新数百次,取上界),96-cell pack 逐 cell 跑:
- 总量 flop / 周期
- S32K344 Cortex-M7 单精度 FPU,保守按 1 flop/cycle 有效: ms
- 占 100 ms 周期 ≈ 0.6% CPU(M7 双发射 + FPU 流水实际更低)
96 cell 的 per-cell EKF 在单颗车规 MCU 上算力充裕——瓶颈在调参 / 参数标定,不在 flop(呼应 §4.3)。
9.5 plausibility 双轨预算
§7 的双轨阈值不是拍脑袋,而是从两个方向夹出来的:既要"正常电流 offset 的慢漂移不误报",又要"EKF 卡死的平台盲区能被抓住"。以本例算:
- 独立 Coulomb 轨:shunt 电流 offset 50 mA(未校零)在 100 Ah 上 → 漂移 /h = 0.05%/h → 连续 ~200 h(8 天+)才累积 10%,才碰 §7 的 10% 告警门 → 正常 offset 不会误报
- EKF 轨:若 LFP 平台把 EKF 锁在初值、真实 SOC 已走 20%(§9.3 盲区),两轨偏离越 10% 先报警、越 20% 强制限功率 + 报 DTC → 失效能被抓
两个数(慢漂 ~200 h 到 10% vs 盲区 20% 越门)正好把 10%/20% 阈值卡在"不误报、又抓得住"的窗口里。
10. 工程 Gotcha 与工作极限 Corner
10.1 Gotcha(反复翻车的 7 处)
EKF 失效在 BMS 实战里多数不是数学问题,而是输入数据 + 调参 + fallback 缺失。下面 7 处与 §6 的不收敛根因互补——§6 讲"卡住 / 振荡时怎么 debug",这里讲"设计期怎么预防":
- OCV 表只测 25 ℃ — 低温 / 高温 OCV 偏 ±10-30 mV、量测方程系统性偏置 → 至少 5 个温度(-20 / 0 / 25 / 45 / 60 ℃)二维表 + 修正。
- LFP 用纯 EKF — 平台区 、SOC 盲区 ±20%(§9.3)→ 加 DVA / 周期强制满充静置 OCV 重置 / 平台区增大 转 Coulomb 主导。
- 用常数 — 强依赖温度(-20 ℃ 翻 2-3×)与 SOC,常数 让大电流 IR 压降算错、残差 系统性偏 → (SOC, T) 二维表。
- Q / R 调一次永不改 — 高动态、老化(极化加重)、化学差异下退化 → AEKF 在线自适应或至少按工况分档切 Q/R。
- EKF 输出直驱安全态 — 单点失效违反功能安全 → 必须 plausibility check 双轨(§7),EKF 永不单独驱安全态。
- 上电初值 / P0 设置不当 — 冷启动无静置 OCV 锚点时,若 SOC 初值拍死、 又给太小,EKF 过度自信、收敛慢甚至锁在错值 → 上次 SOC + 极化状态落 EEPROM 掉电保存,上电按不确定度放大 、让量测快速把状态拉回。
- V 与 I 采样不同步 — 端电压和主电流不在同一时刻采, 压降项与极化项带相位差,污染量测残差与在线内阻辨识 → V/I 同步采样(ADBMS6830 C-ADC 逐 cell 同步 / IBS 同步通道),大电流暂态下尤其致命。
10.2 工作极限 Corner(C1-C3)
三个把 EKF 推到边界的工况,每个都对应上文一条量化约束:
C1 — LFP 平台 × 低温双杀:平台区 已让电压对 SOC 失观(§9.3 的 20% 盲区),再叠加低温大 把端电压进一步与 SOC 解耦——此时电压残差几乎全被 IR 压降和极化占据。对策:平台区信电流(增大 、Coulomb 主导)+ 只在满充 / 放空两端陡区强制 OCV 重置;验收必须覆盖"低温 + 平台段"整段,而非常温单点。
C2 — 大倍率暂态(快充 / 急加速 > 3C):3 阶双 RC 的时间常数谱(~15 s / ~300 s)描述不了 >3C 的快极化与扩散前沿,模型失配使残差 系统性偏、EKF 把模型误差误当量测噪声 → 4 阶(加一条快 RC)或高动态段临时增大 ;老化(弱化)电芯极化更重,同一套参数进一步失配。
C3 — 近似恒流巡航(高速,激励不足):长时间恒流下 SOC 缓变、激励贫乏(persistent excitation 不足), / 时间常数的在线可辨识性下降(可观性退化),硬做在线辨识会把噪声当参数漂移 → 参数用预标定二维表锁住,只在有激励的变速 / 起停段才更新;状态估计照跑,参数辨识"择机"。
核心要点
- EKF = Coulomb (model) + OCV (measurement) 双信源融合 — 动态稳态 ±1-2%。
- 状态向量 3 阶 (SOC + 2 RC 极化) 是主流, + 。
- OCV-SOC 查表必带温度修正 + R0(SOC, T) 二维表。
- LFP 平台区是 EKF 命门(OCV 斜率 → 0),必加 DVA / Coulomb fallback。
- worked design(§9):100 Ah NMC + ADBMS6830(TME < 2 mV)+ S32K344,LFP 平台盲区 = 2 mV ÷ 0.1 mV/%SOC = 20% SOC;96-cell 逐 cell EKF 仅占该 MCU ~0.6% CPU → 瓶颈在调参不在算力。
- Q / R 调参决定 EKF "性格" — 大 Q 信电压 / 大 R 信电流;自适应 AEKF 动态切。
- 不收敛 4 种工程根因:Q 太小 / Q 太大 / LFP 平台 / R0 没 SOC 修正。
- EKF 不能直驱安全态 — 必须 plausibility check + Coulomb 双轨。
- 主流 BMS 主轨 EKF + 辅 Coulomb + 校 OCV,三轨融合是工程实战标准。
缩写表
只列本页用到的工业标准缩写;通用英语…
只列本页用到的工业标准缩写;通用英语 / 单位 / 月份 / 我们的
层/Lxtag 不列。覆盖不到的术语见正文 inline 注释。
| 缩写 | 全称 | 中文 / 备注 |
|---|---|---|
| BMS | Battery Management System | 电池管理系统 |
| EV | Electric Vehicle | 电动车 |
| SOC | State of Charge | 荷电状态(剩余电量比例) |
| OCV | Open Circuit Voltage | 开路电压(静置端电压) |
| EKF | Extended Kalman Filter | 扩展卡尔曼滤波 |
| UKF | Unscented Kalman Filter | 无迹卡尔曼滤波 |
| AEKF | Adaptive EKF | 自适应 EKF(在线调 Q/R) |
| ECM | Equivalent Circuit Model | 等效电路模型(R0 + RC 网络) |
| DVA | Differential Voltage Analysis | 微分电压分析(LFP 找特征点) |
| HPPC | Hybrid Pulse Power Characterization | 混合脉冲功率标定(拟合 ECM 参数) |
| AFE | Analog Front End | 模拟前端(BMS cell 电压采集 IC) |
| TME | Total Measurement Error | 总测量误差(AFE 精度指标) |
| ADC | Analog-to-Digital Converter | 模数转换器 |
| MCU | Microcontroller Unit | 微控制器(本页多指车规多核 MCU) |
| DTC | Diagnostic Trouble Code | 诊断故障码(ISO 14229 / SAE J2012) |
| SG | Safety Goal | 安全目标(ISO 26262-3) |
| LFP / NCM / NCA | LiFePO4 / Li(NiCoMn)O2 / Li(NiCoAl)O2 | 三种主流正极化学 |
Cross-references
- ← 索引
- SOC 估算总览 — 上位 hub
- BMS overview
- BMS 功能安全 — plausibility check 在 SG 中的角色
- ADI ADBMS6830 BMS AFE 工程化 — §9 worked design 的 cell 电压量测源(TME < 2 mV / 双 ADC)
- 12V 辅助电池监测 — 同源 SOC/SOH/SOF 算法在低压侧的落地(Coulomb + OCV + Kalman)
- Cell balancing
- OCV / DVA / ICA