等效电路模型详解:一阶RC、二阶RC模型与参数辨识

大家好,欢迎来到《电池状态联合估计实战》的第二讲。今天我们来聊聊等效电路模型,这是BMS算法工程师的看家本领。说白了,电池内部电化学反应太复杂,我们没法直接观测,那就用电阻电容搭个电路来模拟它。我个人习惯把这种模型叫做「电池的替身」——你想想看,替身演得好,估计才准。

核心观点:模型精度决定估计上限,参数辨识决定模型下限。两者缺一不可。

一阶RC模型:入门必备

一阶RC模型是最常用的折中方案。它用一个电阻R0描述欧姆内阻,一个RC网络描述极化效应。我在项目中遇到过不少新手,一上来就追求高阶模型,结果参数辨识搞不定,精度反而更差。其实对于大多数LFP电池,一阶RC已经够用了。

数学表达式很简单:

U_t = U_ocv - I*R0 - U_p
dU_p/dt = I/C_p - U_p/(R_p*C_p)

这里U_p是极化电压,R_p和C_p组成极化网络。嗯,这里要注意:离散化的时候,时间常数τ = R_p*C_p,采样周期Δt必须远小于τ,否则模型会失真。我吃过这个亏,当时采样周期设了1秒,τ只有0.5秒,结果估计值一直在震荡。

二阶RC模型:精度提升

二阶RC模型在一阶基础上多了一个RC网络。为什么要加?因为电池的极化效应其实分快慢两种:

  • 电化学极化:反应速度快,时间常数小(几秒到几十秒)
  • 浓度极化:反应速度慢,时间常数大(几十秒到几分钟)

一阶模型用一个RC网络去拟合两种极化,说白了就是「一个萝卜一个坑」,难免顾此失彼。二阶模型用两个RC网络分别拟合,精度自然更高。但代价也很明显——参数多了,辨识难度大了。

模型 参数数量 适用场景 我个人的建议
一阶RC 3个(R0, Rp, Cp) LFP电池、低倍率工况 新手首选,稳定可靠
二阶RC 5个(R0, Rp1, Cp1, Rp2, Cp2) NCM电池、高倍率工况 有经验后再上,注意辨识算法

参数辨识方法:最小二乘法

模型搭好了,参数怎么来?总不能手调吧。最小二乘法就是干这个的——让模型输出和真实测量值的误差平方和最小。

我给大家展示一下递推最小二乘法(RLS)的Python实现。这是我在项目中最常用的方法,在线实时更新参数,非常实用。

import numpy as np

class RLS:
    def __init__(self, n_params, lambda_forget=0.98):
        self.theta = np.zeros((n_params, 1))  # 参数向量
        self.P = np.eye(n_params) * 1000      # 协方差矩阵
        self.lambda_forget = lambda_forget    # 遗忘因子
    
    def update(self, phi, y):
        # phi: 观测向量, y: 测量值
        # 计算增益
        K = self.P @ phi / (self.lambda_forget + phi.T @ self.P @ phi)
        # 更新参数
        self.theta += K * (y - phi.T @ self.theta)
        # 更新协方差
        self.P = (self.P - K @ phi.T @ self.P) / self.lambda_forget
        return self.theta

避坑指南:我曾经把遗忘因子设成0.95,结果参数一直在抖动。后来发现对于电池这种慢时变系统,0.98~0.995更合适。另外,协方差矩阵P的初始值别设太小,否则收敛慢。

辨识流程:从数据到参数

完整的参数辨识流程是这样的:

  1. 数据采集:恒流充放电,记录电压、电流、温度
  2. 数据预处理:滤波、去噪、剔除异常点
  3. 模型离散化:把微分方程转成差分方程
  4. 构造观测向量:根据模型结构提取φ
  5. RLS迭代:在线或离线更新参数
  6. 参数验证:用另一组数据验证模型精度

这里我特别想强调数据预处理。有一次我在实验室做实验,采集到的电压数据里有个毛刺,结果辨识出来的R0直接翻了一倍。后来发现是接触电阻的问题。所以,数据质量比算法本身更重要——垃圾进,垃圾出。

知识体系结构图

下面这张图总结了本章的核心逻辑,我花了不少心思画的,大家仔细看看:

等效电路模型与参数辨识知识体系 模型选择 一阶RC模型(3参数) 二阶RC模型(5参数) 参数辨识:最小二乘法 递推最小二乘法(RLS) 遗忘因子λ 协方差矩阵P 观测向量φ 输出:R0, Rp, Cp 等参数

重要提醒:参数辨识不是一劳永逸的。电池老化、温度变化都会导致参数漂移。我建议在BMS中定期触发在线辨识,比如每100个循环重新辨识一次。另外,辨识出来的参数一定要做合理性校验——R0不可能为负,时间常数不可能超过1000秒。这些边界条件能帮你过滤掉90%的异常结果。

好了,这一讲就到这里。等效电路模型是BMS算法的基础,一阶RC和二阶RC各有适用场景。参数辨识方面,RLS是最经典的方法,但要注意遗忘因子和协方差矩阵的调参。下一讲我们会把这些模型和参数用到状态估计中,敬请期待。


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