做电池管理系统(BMS)算法这些年,SOC估计一直是块硬骨头。早几年大家普遍用安时积分加开路电压校正,简单但误差会累积,尤其大倍率充放电或温度波动时,估算值经常被现场数据“打脸”。后来扩展卡尔曼滤波(EKF)普及了一阵子,解决了一部分非线性问题,但遇到强非线性工况,一阶线性化带来的截断误差依然明显。
所以当“自适应迭代无迹卡尔曼滤波(AIUKF)结合递推最小二乘法(RLS)在线辨识电池参数”这套思路进入视野时,我第一反应是:这才是工程上真正值得投入的方向。它本质上是把“模型参数在线更新”和“状态估计精度提升”两条线拧成一股绳,让SOC估算不再依赖出厂标定的固定参数表,而是随着电池老化、温度变化、工况切换实时修正。
这篇文章不打算堆公式,重点讲清楚这套算法体系到底怎么搭、每一步为什么这么走、仿真和实测中真正卡人的细节在哪。无论你是刚接触SOC估计的研究生,还是在车企或储能厂做BMS策略的工程师,这篇内容应该都能给你一些可落地的参考。
1. 为什么要用自适应迭代无迹卡尔曼滤波:从EKF到UKF再到AIUKF的演进逻辑
1.1 EKF的先天不足与UKF的改进思路
先聊一个很实际的问题:既然EKF已经在很多BMS项目里跑得好好的,为什么还要折腾UKF?
EKF的核心思路是把非线性函数在当前状态附近做泰勒展开,只保留一阶项。这意味着系统越接近线性,EKF精度越高;一旦电池的OCV-SOC曲线出现明显的平台区(比如磷酸铁锂在中段SOC几乎是一条平线),或者极化电压在大电流激励下快速变化,一阶线性化就会丢掉大量高阶信息。我见过不少项目在磷酸铁锂电芯上直接用EKF做SOC估计,结果在SOC 30%-70%区间出现1.5%以上的波动,这就是线性化误差的直接体现。
UKF的思路则完全不同。它不再去算雅可比矩阵,而是选取一组带权重的Sigma点,让这些点经过非线性函数传播后,用统计的方法逼近状态的后验均值和协方差。对于电池这种强非线性系统,UKF的理论精度至少能比EKF高一阶。换句话说,UKF不需要你对系统模型做大幅简化,只要过程噪声和观测噪声的统计特性大致合理,它就能“硬扛”过非线性段。
1.2 “自适应”和“迭代”到底改了什么
UKF也不是万能的。标准UKF有俩最让人头疼的前提:一是系统噪声的统计特性(Q和R矩阵)得事先知道,二是每步测量更新只做一次。实际电池工况里,电流传感器噪声、温度引起的模型偏差、老化带来的参数漂移,都让Q和R变成“时变量”。固定一组Q/R参数跑全生命周期,效果往往前三个月还行,越往后越飘。
自适应(Adaptive)解决的就是Q/R实时匹配问题。常见做法是基于新息序列(innovation sequence)在线调整噪声协方差。具体来说,如果滤波器估计的残差持续大于理论预测值,说明Q给得太小、模型太“自信”,这时候要适当放大过程噪声;反过来,如果残差一直很小,可能是R给得偏大,滤波器反应迟钝,需要收缩观测噪声。这种自适应策略能让滤波器在电池老化、温度突变等场景下自动调整置信度,而不是傻傻地相信一组固定参数。
迭代(Iterative)解决的是测量更新精度问题。标准UKF的测量更新只做一次,从预测值直接跳到后验值。但在强非线性情况下,一步更新往往不够,特别是当观测方程在某个局部区域特别“弯曲”时。迭代UKF的做法是在测量更新步骤里反复用“更新后的状态再算一次观测预测”,直到状态修正量小于某个阈值或达到设定次数。这相当于在每一步里多做了几次局部逼近,代价是计算量线性增加,但对SOC估计精度的提升非常可观。
1.3 我在方案选型时的实际考量
当初在方案选型阶段,我也对比过粒子滤波(PF)。PF在理论上对非线性非高斯系统有更强的表达能力,但计算量感人——在车规级MCU上跑粒子滤波,除非用几百个粒子并且做大量优化,否则实时性很难保证。而AIUKF本身只是UKF的改进,计算量大概是标准UKF的1.5到2倍,在主流BMS芯片上完全能接受。
另外还有一个工程上的现实问题:粒子滤波需要设计提议分布,如果提议分布选得不好,粒子退化会很严重,重采样又带来额外方差。相比之下,AIUKF的工程可预期性好很多——你至少知道问题可能出在噪声协方差上,而不是像粒子滤波那样还得怀疑粒子分布本身。
所以我的结论很明确:在锂离子电池SOC估计这个场景,AIUKF是精度、计算量、工程可实现性三者最均衡的方案。它既不像EKF那样在非线性段“露怯”,也不像PF那样让人为实时性发愁。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 电池建模与参数辨识:递推最小二乘法(RLS)是AIUKF的地基
2.1 等效电路模型的选型与离散化
任何滤波算法都离不开模型,SOC估计领域最常用的是戴维南(Thevenin)模型:一个理想电压源(OCV)串联欧姆内阻R0,再并联一个或两个RC网络来模拟极化效应。
一阶RC模型足够覆盖大多数动态工况,但如果你要处理非常宽的频率范围(比如同时有低频的SOC变化和高频的电流纹波),二阶RC会更稳妥。代价是待辨识参数从3个(R0, R1, C1)增加到5个(R0, R1, C1, R2, C2),参数辨识的收敛速度和唯一性会变差。我的经验是:乘用车动态工况用一阶RC就够,储能或大型商用车这种电流变化相对平缓的场景,一阶RC更是绰绰有余。
模型离散化时需要注意采样时间的选择。BMS的电流电压采样频率通常在1Hz到10Hz之间,但RLS对数据速率有一定要求——太慢(比如0.1Hz)会导致参数更新跟不上工况变化,太快(比如100Hz)则数据相关性过高,容易造成信息冗余和数值病态。我建议采样周期选在0.1s到1s之间,既保证实时性又避免矩阵求逆时出现奇异。
2.2 遗忘因子递推最小二乘法(FF-RLS)的数学本质
递推最小二乘法的核心思想是:每来一组新数
