多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

电池健康状态估计(二)

电池健康状态估计(二) 如果第一篇解决的是“为什么要估SOH、哪些参数代表SOH、滤波器能不能估参数”详细的介绍在电池健康状态估计一-CSDN博客上个博客介绍。那么本篇集中解决一个更具体的问题怎样在线估计电芯总容量Q。因为容量估计看似只是一个简单的线性回归真正做起来却存在一个关键陷阱——回归的自变量和因变量都带噪声因此普通最小二乘会产生系统性偏差。1.从SOC方程推导容量估计的线性关系容量估计的起点仍然是库仑计数。考虑两个时刻t1与t2如果忽略或已补偿自放电并把库仑效率η考虑进去则这段时间内流过电芯的累计电荷与SOC变化满足近似关系∫[t1→t2] η·I(t) dt -Q · [ z(t2) - z(t1) ]为了写成回归形式可以定义 y 为这段时间的累计安时量x 为SOC变化量符号可根据充放电约定调整就得到一个通过原点的线性关系y Q · x从表面看Q就是一条直线的斜率。收集多个数据段(xi,yi)做线性拟合即可。问题在于yi来自电流积分包含电流传感器噪声和偏置xi来自两个SOC估计之差本身也包含SOC估计误差。于是x和y都不是真值。2.普通最小二乘OLS在容量估计里会产生偏差普通最小二乘OLS解决的是“在给定x的情况下让y方向残差平方和最小”。几何上它只允许数据点沿竖直方向移动到拟合直线上。对于很多实验这样的假设是合理的比如自变量是高精度控制输入只有输出测量有噪声。容量估计却不同。xΔSOC来自估计器绝不是无噪声量。一个SOC估计器可能有1%甚至更大的误差两个时刻做差后误差还会叠加。当x也有误差时OLS得到的斜率通常会产生“衰减偏差”bias toward zero等现象取决于模型与误差结构。长期使用这种偏差容量会进一步影响SOC积分比例和能量估计。普通最小二乘可以作为基准但不应该被视为最终正确答案。尤其是当SOC变化量较小、SOC估计噪声占比高时OLS偏差会更加明显。3.加权普通最小二乘WLS先建立一个基准不同数据段的质量并不相同。例如一个SOC跨度30%的长数据段SOC差分相对于噪声通常更可靠而SOC只变化2%的短数据段即使端点SOC各有0.5%误差差分的相对误差就可能非常大。电流积分的不确定度也会随时间、传感器规格和采样条件变化。于是“所有点权重一样”的回归也不合理。加权最小二乘WLS通过为每个数据点设置权重让不确定度小的数据对结果贡献更大。常见思想是权重与测量方差的倒数成正比wi ∝ 1 / σi²结构简单可以通过几个递推累加量在线计算适合嵌入式系统还可以加入遗忘因子追踪慢慢变化的容量。但它仍然继承了OLS的根本假设把x当作无误差量。因此在容量估计问题里WLS依然是“方便但有偏”的基线算法。4.最小二乘TLS与加权TLS同时承认x、y都有误差最小二乘TLS把模型改写成真实关系不是 y-ΔyQx而是 (y-Δy)Q(x-Δx)。也就是说需要同时寻找x方向和y方向的小修正使修正后的数据最接近一条满足容量斜率Q的直线。几何上不再只最小化垂直距离而是考虑点到直线的“联合误差”。(yi - Δyi) Q · (xi - Δxi)当x、y误差方差不同、每个数据点的噪声水平也不同就需要进一步使用加权总最小二乘WTLS。WTLS的目标不是让所有方向的误差同等重要而是根据ΔSOC误差和累计Ah误差的统计量进行归一化。这样得到的容量估计可以在理论上消除普通最小二乘由于x噪声引起的偏差并给出更合理的误差界。5.SOH估计模块的完整工程框架在量产BMS里SOH估计通常不是一个单函数而是一套由数据采集、数据资格判断、状态估计、参数估计、置信度管理和持久化存储组成的慢任务。一个实用流程可以这样理解首先高频采集V/I/T并运行SOC估计随后在后台判断是否形成了适合健康学习的数据窗口如果窗口满足SOC跨度、温度、传感器有效性等条件就计算ΔSOC和累计Ah更新Q估计同时可以从电流脉冲或动态数据更新R0/ESR最后对新参数进行可信度检查和速率限制确认后再写入长期SOH状态。容量和内阻更新之后还会反过来影响BMS其他算法。新的Q用于SOC积分、剩余能量估计和均衡容量换算新的R0用于端电压预测、峰值功率限值和发热估算。SOH因此是一个“慢速自校正环”它逐步修正BMS内部模型让模型随电池年龄一起变化。存储策略也需要考虑。由于SOH变化慢不应每个采样周期写Flash否则会带来无意义的擦写次数。通常可以在参数变化超过阈值、车辆下电、关键标定事件完成后保存同时配合CRC、双备份或版本管理避免掉电导致健康参数损坏。
返回列表