SOC EKF 深度 — 状态方程 / OCV 模型 / 调参 / 收敛性

BMSL1别名 SOC EKF · Extended Kalman Filter · 卡尔曼滤波 SOC · SOC 估算数学 · SOC RC 模型 · 更新

本质与导读

本质 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 法只能离线的局限。

EKF 双闭环 — Predict / Update + 状态向量 + 量测方程


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 检查:

  1. Coulomb 积分独立追踪 SOC_C,与 EKF 输出 SOC_K 比较
  2. |SOC_C - SOC_K| > 10% → 阈值告警
  3. |SOC_C - SOC_K| > 20% → 强制限功率 + 报 DTC
  4. 充满静置 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 主控 MCUNXP S32K344,Cortex-M7 @160 MHz,lockstep ASIL DEKF 运行平台
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 msEKF 步长
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",这里讲"设计期怎么预防":

  1. OCV 表只测 25 ℃ — 低温 / 高温 OCV 偏 ±10-30 mV、量测方程系统性偏置 → 至少 5 个温度(-20 / 0 / 25 / 45 / 60 ℃)二维表 + 修正。
  2. LFP 用纯 EKF — 平台区 、SOC 盲区 ±20%(§9.3)→ 加 DVA / 周期强制满充静置 OCV 重置 / 平台区增大 转 Coulomb 主导。
  3. 用常数 强依赖温度(-20 ℃ 翻 2-3×)与 SOC,常数 让大电流 IR 压降算错、残差 系统性偏 → (SOC, T) 二维表。
  4. Q / R 调一次永不改 — 高动态、老化(极化加重)、化学差异下退化 → AEKF 在线自适应或至少按工况分档切 Q/R。
  5. EKF 输出直驱安全态 — 单点失效违反功能安全 → 必须 plausibility check 双轨(§7),EKF 永不单独驱安全态。
  6. 上电初值 / P0 设置不当 — 冷启动无静置 OCV 锚点时,若 SOC 初值拍死、 又给太小,EKF 过度自信、收敛慢甚至锁在错值 → 上次 SOC + 极化状态落 EEPROM 掉电保存,上电按不确定度放大 、让量测快速把状态拉回。
  7. 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,三轨融合是工程实战标准。

缩写表

只列本页用到的工业标准缩写;通用英语…

只列本页用到的工业标准缩写;通用英语 / 单位 / 月份 / 我们的 层/Lx tag 不列。覆盖不到的术语见正文 inline 注释。

缩写全称中文 / 备注
BMSBattery Management System电池管理系统
EVElectric Vehicle电动车
SOCState of Charge荷电状态(剩余电量比例)
OCVOpen Circuit Voltage开路电压(静置端电压)
EKFExtended Kalman Filter扩展卡尔曼滤波
UKFUnscented Kalman Filter无迹卡尔曼滤波
AEKFAdaptive EKF自适应 EKF(在线调 Q/R)
ECMEquivalent Circuit Model等效电路模型(R0 + RC 网络)
DVADifferential Voltage Analysis微分电压分析(LFP 找特征点)
HPPCHybrid Pulse Power Characterization混合脉冲功率标定(拟合 ECM 参数)
AFEAnalog Front End模拟前端(BMS cell 电压采集 IC)
TMETotal Measurement Error总测量误差(AFE 精度指标)
ADCAnalog-to-Digital Converter模数转换器
MCUMicrocontroller Unit微控制器(本页多指车规多核 MCU)
DTCDiagnostic Trouble Code诊断故障码(ISO 14229 / SAE J2012)
SGSafety Goal安全目标(ISO 26262-3)
LFP / NCM / NCALiFePO4 / Li(NiCoMn)O2 / Li(NiCoAl)O2三种主流正极化学

Cross-references