第1章:状态估计算法入门

大家好,我是老张。在储能行业摸爬滚打了十几年,今天咱们来聊聊状态估计算法。说白了,这就是BMS的大脑——你得知道电池还剩多少电(SOC)、电池健康程度如何(SOH)、以及还能输出多大功率(SOP)。

这三个参数,缺一个都不行。我刚开始做项目时,就吃过SOC不准的亏——明明显示还有20%电量,结果系统突然就停机了。嗯,从那以后,我对状态估计算法就格外上心。

4.1 SOC估算方法

SOC,全称State of Charge,就是电池的荷电状态。你可以把它理解成手机上的电量百分比。但实际做起来,远没手机那么准。

4.1.1 安时积分法

这是最基础的方法,也是我入行时第一个学会的。原理很简单:

SOC(t) = SOC(0) - (1/Qn) * ∫η*I(t)dt

其中:

  • SOC(0) 是初始电量
  • Qn 是额定容量
  • η 是库仑效率
  • I(t) 是电流(放电为正)

说白了,就是不断累加电流,算出用了多少电。但这里有个坑——初始SOC怎么定?

⚠️ 我曾经踩过的坑: 安时积分法最大的问题是误差会累积。电流传感器有零点漂移,积分时间一长,误差就像滚雪球。有一次项目调试,跑了三天,SOC误差直接飙到15%。后来我学乖了,必须配合开路电压法定期校准。

安时积分法的优缺点很明显:

优点 缺点
实现简单,计算量小 误差会累积,需要定期校准
适合短时间估算 对电流采样精度要求高
实时性好 无法修正初始误差

4.1.2 卡尔曼滤波法

卡尔曼滤波,听起来高大上,其实核心思想就一句话:用模型预测,用测量修正。我刚开始学的时候也觉得难,后来发现就是个“预测-校正”的循环。

基本流程是这样的:

  1. 预测阶段:根据上一时刻的状态,预测当前时刻的状态
  2. 校正阶段:用当前测量值,修正预测值
  3. 更新阶段:更新协方差矩阵,准备下一轮
// 简化版卡尔曼滤波SOC估算
// 状态方程:SOC(k) = SOC(k-1) - (Δt/Qn)*I(k-1) + w(k-1)
// 观测方程:V(k) = OCV(SOC(k)) - R*I(k) + v(k)

// 预测
x_pred = x_est + (-dt/Qn) * I_meas;
P_pred = P_est + Q;

// 校正
K = P_pred * H' / (H * P_pred * H' + R);
x_est = x_pred + K * (V_meas - H * x_pred);
P_est = (1 - K * H) * P_pred;
💡 我的经验: 卡尔曼滤波的Q和R参数调起来很费劲。我建议先用仿真数据跑一遍,看看收敛速度。Q设大了,响应快但噪声大;Q设小了,平滑但滞后。这个平衡点,得根据实际电池特性来调。

卡尔曼滤波的好处是能自动修正误差,不像安时积分法那样越跑越偏。但计算量确实大,对MCU性能有要求。我做过一个项目,用STM32F4跑扩展卡尔曼滤波,CPU占用率直接飙到40%。

4.2 SOH估算方法

SOH,State of Health,就是电池的健康度。新电池SOH是100%,用到一定程度就该换了。怎么定义“一定程度”?业内一般以容量衰减到80%为界。

SOH估算主要有三种方法:

  • 容量法:直接测当前最大可用容量,除以额定容量
  • 内阻法:通过内阻变化来推算SOH
  • 循环次数法:根据充放电循环次数估算

我个人最常用的是容量法,因为它最直观。但容量法有个问题——你得把电池充满再放空,这在运行中很难做到。所以实际项目中,我一般用内阻法做在线估算,再用容量法定期校准。

🔑 关键点: SOH估算不能只看单一参数。我见过一个案例,内阻法显示SOH还有90%,但实际容量已经掉到75%了。原因是电池微短路导致内阻变化不明显。所以,多参数融合才是正道。

4.3 SOP估算方法

SOP,State of Power,就是电池能输出的最大功率。这个参数对储能系统特别重要——你想想看,电网调度突然要你充放电,你得知道能不能扛得住。

SOP估算的核心约束有三个:

  1. 电压约束:不能超过充放电截止电压
  2. 电流约束:不能超过最大允许电流
  3. SOC约束:不能过充过放

实际计算时,我会用查表法加实时修正。先根据当前SOC和温度,查表得到基础SOP值,再根据电压和电流限制做动态调整。

// SOP估算简化示例
float calc_SOP(float soc, float temp, float v_cell, float i_now) {
    // 查表得到基础SOP
    float sop_base = lookup_SOP_table(soc, temp);
    
    // 电压限制
    float sop_v_limit = (v_max - v_cell) * i_max;
    
    // 电流限制
    float sop_i_limit = v_cell * i_max;
    
    // SOC限制
    float sop_soc_limit = (soc - soc_min) / (soc_max - soc_min) * sop_base;
    
    // 取最小值
    return min(sop_base, min(sop_v_limit, min(sop_i_limit, sop_soc_limit)));
}
⚠️ 注意: SOP估算一定要留余量。我曾经遇到过,理论计算能输出100kW,实际一拉负载,电压直接掉到保护值以下。后来我加了20%的安全系数,再也没出过问题。

知识体系总览

说了这么多,咱们用一张图来总结一下状态估计算法的整体结构:

状态估计算法知识体系 SOC估算 SOH估算 SOP估算 安时积分法 卡尔曼滤波法 开路电压法(辅助) 容量法 内阻法 循环次数法 电压约束法 电流约束法 SOC约束法 核心原则:多参数融合 + 实时修正 + 安全余量 单一方法不可靠,组合使用才是工程正道

这张图把咱们今天讲的内容串起来了。SOC、SOH、SOP三者相互关联——SOC不准,SOH就估不准;SOH下降,SOP就得跟着降。做系统设计时,一定要把它们当成一个整体来考虑。

📌 我的建议: 刚开始做状态估算时,别追求一步到位。先用安时积分法搭个基础版本,跑通了再上卡尔曼滤波。SOH和SOP也是,先做离线标定,再逐步过渡到在线估算。工程嘛,稳扎稳打最重要。

好了,这一章就聊到这儿。状态估计算法是个大话题,后面咱们还会深入每个方法的细节。记住一句话:没有完美的算法,只有适合工程的方法。


公众号:蓝海资料掘金营,微信deep3321