4. 电池SOH与SOP估算:SOH定义与衰退机理、SOP峰值功率估算、基于模型的联合估算

各位工程师朋友,咱们今天聊聊电池管理系统里最让人头疼的两个参数——SOH和SOP。说实话,我刚入行那会儿,总觉得SOH就是个百分比,SOP就是个功率限值,没什么大不了的。直到有一次,一个储能项目因为SOP估算偏差过大,导致系统在峰值功率时直接触发过流保护,整个站都跳了……嗯,从那以后,我再也不敢小看这两个参数了。

4.1 SOH的定义与衰退机理

SOH,全称State of Health,中文叫健康状态。说白了,就是电池现在有多“老”。一个新电池SOH是100%,用到报废一般是80%或70%(看应用场景)。但问题来了——你怎么定义这个百分比?

我个人习惯用容量衰减来定义SOH:

SOH = C_current / C_rated × 100%

其中C_current是当前实际容量,C_rated是出厂额定容量。比如一块100Ah的电池,现在只能放出80Ah,那SOH就是80%。

但这里有个坑——容量测试本身就很麻烦。你想想看,要测真实容量,得先充满电,再以标准电流放空,整个过程好几个小时。在实际BMS里,我们不可能天天做这种测试。所以,SOH估算其实是个“间接测量”的问题。

核心观点:SOH不是直接测出来的,而是通过其他可测参数(内阻、电压、温度等)推算出来的。

4.2 衰退机理:电池为什么会老?

电池衰退的原因很多,我挑几个最常见的说说:

  • SEI膜增厚:这是锂离子电池最典型的衰退机制。每次充放电,SEI膜都会稍微变厚一点,消耗掉一部分活性锂。我见过一个项目,电池在高温下循环,SEI膜长得飞快,300次循环后容量就掉了15%。
  • 活性物质脱落:正极材料在反复膨胀收缩中会逐渐脱落,就像墙皮掉渣一样。这个在快充场景下尤其明显。
  • 电解液分解:高温、过压都会加速电解液分解,产生气体,导致内阻上升。
  • 锂枝晶生长:低温快充时,锂离子来不及嵌入负极,直接在表面析出形成枝晶。严重的话会刺穿隔膜,造成内短路——这是最危险的情况。

我曾经在一个项目中遇到过,电池在低温下大电流充电,结果SOH从95%直接掉到82%,拆开一看,负极表面全是锂枝晶。所以,低温快充一定要谨慎。

衰退因素 主要影响 典型场景
SEI膜增厚 容量下降、内阻上升 高温循环
活性物质脱落 容量下降 大倍率充放电
电解液分解 内阻上升、产气 过压、高温
锂枝晶生长 容量下降、安全风险 低温快充

4.3 SOP峰值功率估算

SOP,State of Power,即功率状态。它回答的问题是:在当前状态下,电池还能输出(或吸收)多少功率?

你想想看,一个SOH 80%的电池,在低温下能输出的功率,肯定比常温下小得多。SOP估算就是要实时给出这个限值,防止电池被“用伤”。

常用的SOP估算方法有三种:

  1. 基于电压限制:根据当前OCV和最小/最大允许电压,结合内阻,算出最大电流,再乘以电压得到功率。
  2. 基于电流限制:直接根据电池厂商给出的最大持续/峰值电流,结合当前SOC和温度查表。
  3. 基于SOC限制:防止过放或过充,在SOC接近边界时主动降功率。

实际工程中,我建议把这三种方法结合起来。比如:

P_max = min(P_voltage_limit, P_current_limit, P_soc_limit)

取三个限值的最小值,这样最安全。但要注意,这个“最小值”策略有时候太保守了。我记得有个项目,客户抱怨说电池明明还有电,但系统就是不给大功率输出。后来一查,是电压限制算得太严,稍微优化一下参数就好了。

小技巧:SOP估算的时间尺度很重要。短时峰值(比如10秒)和持续功率(比如30分钟)的限值完全不同。我一般会分三个时间窗口:10秒、30秒、持续。每个窗口用不同的内阻值。

4.4 基于模型的联合估算

前面说的SOH和SOP,其实不是孤立的。SOH影响内阻和容量,内阻又直接影响SOP。所以,把它们联合起来估算,效果会更好。

我常用的方法是建立一个等效电路模型(比如二阶RC模型),然后通过卡尔曼滤波同时估计SOC、SOH和SOP。具体流程是这样的:

  1. 在线参数辨识:用递推最小二乘法(RLS)实时更新模型参数(R0、R1、C1等)。
  2. SOH估算:根据辨识出的内阻和容量变化,更新SOH。
  3. SOP估算:用更新后的模型参数,结合当前SOC和温度,预测未来一段时间内的最大可用功率。

代码实现上,我习惯用Python做原型验证:

# 简化的联合估算伪代码
def joint_estimation(voltage, current, temperature):
    # 1. 更新模型参数
    R0, R1, C1 = rls_update(voltage, current)
    
    # 2. 更新SOH
    capacity_est = capacity_estimator(current, soc_change)
    soh = capacity_est / rated_capacity * 100
    
    # 3. 更新SOP
    v_min = 2.8  # 最低允许电压
    i_max = (ocv - v_min) / R0  # 基于电压限制
    p_max = i_max * v_min
    
    return soh, p_max

注意:联合估算虽然精度高,但计算量也大。在嵌入式MCU上实现时,要注意优化算法,避免跑飞。我曾经在STM32上实现过,采样频率100Hz,卡尔曼滤波跑一次大概要2ms,勉强够用。如果MCU性能不够,可以考虑降采样或者简化模型。

4.5 实际工程中的避坑指南

最后,分享几个我踩过的坑:

  • 内阻的温度补偿:内阻随温度变化很大,-20℃时的内阻可能是25℃时的3倍。如果不做温度补偿,SOP估算会严重偏大。
  • SOH的初始化:新电池的SOH不一定是100%。有些电池出厂时容量就比标称值高一点,这时候SOH初始值设为105%更合理。
  • 峰值功率的持续时间:很多工程师只算瞬时功率,忽略了热积累。我曾经遇到过,电池在10秒峰值功率下没问题,但连续3个峰值后温度飙升,直接触发降功率保护。

好了,关于SOH和SOP的估算,今天就聊到这里。下一章咱们会讲电池均衡策略,到时候再细聊。