基于自适应卡尔曼滤波的锂离子电池SOC估算仿真系统
该项目是一个在MATLAB环境下开发的锂电池状态监测与荷电状态(SOC)估算仿真系统。针对传统扩展卡尔曼滤波(EKF)在噪声统计特性未知或传感器环境剧烈变化时精度下降的痛点,系统引入了萨奇(Sage-Husa)自适应算法,能够在线动态更新噪声协方差,确保在复杂工况下依然具有高精度的估算能力和快速收敛特性。
项目核心功能
1. 高精度等效电路建模
系统采用了二阶RC(Resistance-Capacitance)等效电路模型。相比于一阶模型,二阶模型增加了一个RC环节,能够更细腻地模拟电池的浓差极化和欧姆极化特性。模型通过离散化状态方程,将SOC、一阶极化电压和二阶极化电压作为系统状态变量。
2. 萨奇(Sage-Husa)自适应算法
程序内置了改进的自适应滤波逻辑,核心优势在于:
- 动态噪声修正:实时监测测量残差(创新过程),依据遗忘因子动态调整过程噪声协方差Q和测量噪声协方差R。
- 抗干扰性:有效抵消传感器随机噪声和建模忽略的非线性误差。
- 收敛性能:在初始SOC设定存在较大偏差(如真实值0.8,初始估算值0.65)的情况下,算法能迅速修正估算轨迹,实现对真实值的精准跟踪。
3. 多样化电流工况模拟
系统通过数学构造了一个复杂的电流输入环境,包含正弦波动、随机噪声以及大倍率充放电脉冲。这种复合工况模拟了电动汽车在实际行驶中的加速、减速及制动能量回收过程,验证了算法在非线性负载下的鲁棒性。
4. OCV-SOC 映射与线性化
利用七项多项式拟合曲线来描述开路电压(OCV)与SOC之间的非线性关系。在卡尔曼预测步骤中,程序通过对多项式求导实时计算H矩阵(观测矩阵),完成非线性系统的线性化处理。
内部实现逻辑说明
第一阶段:系统初始化
- 定义电池物理参数:额定容量(3.2Ah)、欧姆内阻(0.045Ω)以及RC支路参数(R1, C1, R2, C2)。
- 设定仿真步长(1s)与总时长(10000s)。
- 配置滤波器初始状态:设定P、Q、R的初始经验值,并故意设置SOC初值偏差以测试收敛速度。
第二阶段:工况数据生成
- 生成复合电流序列。电流由
1.5 * sin(2*pi*0.001*t) 基础波动加上 0.5 * randn 的随机干扰组成,并在特定时间段嵌入 3A 放电和 -2A 充电脉冲。
第三阶段:模型离散化
- 利用指数函数对RC电路进行零阶保持器离散化,生成状态转移矩阵A和输入控制矩阵B。其中,SOC状态遵循安时积分法原理,极化电压状态遵循RC衰减原理。
第四阶段:循环仿真与滤波迭代
- 真实系统模拟:根据状态方程计算真实的SOC和端电压,并加入随机测量噪声,模拟传感器采集到的含噪信号。
- 预测步骤:利用上一时刻的最优估算值结合电流输入,预测当前时刻的三个状态量及预测协方差P。
- 自适应更新:计算端电压预测残差。依据Sage-Husa公式,通过遗忘因子(0.95)动态加权更新测量噪声协方差R和过程噪声协方差Q,并设置下限阈值防止矩阵失定。
- 校正步骤:根据最新的R更新卡尔曼增益K,并利用残差修正预测值,最终输出当前最优SOC。
第五阶段:结果后处理与可视化
- 计算全过程的SOC误差百分比。
- 计算平均绝对误差和均方根误差(RMSE)。
- 绘制四维图表:SOC对比曲线、误差波动曲线、端电压局部跟踪曲线以及Q和R参数的自适应演变过程图。
关键函数与算法细节分析
- 多项式求值与求导(内部实现):为了提高运行效率,系统内置了多项式处理算法,通过
polyval 计算当前SOC下的开路电压,通过 polyder 计算开路电压对SOC的偏导数(即H矩阵的首元素),这是解决非线性问题的关键。 - 协方差半正定保护:在自适应更新Q和R的过程中,由于减法运算可能导致协方差矩阵失去正定性,代码中加入了硬性阈值判断(如 R < 0.0001, Q_ii < 1e-10),确保了数值计算的稳定性。
- 数据保存与追踪:程序全程记录了Q和R的演化记录,用户可以清晰地观察到滤波器是如何在工况剧烈变化时调整自身参数以适应噪声环境的。
系统要求
- 软件版本:MATLAB R2016b 或更高版本。
- 工具箱需求:基础MATLAB环境即可,无需安装额外的控制系统或电池建模工具箱。
使用方法
- 启动MATLAB软件。
- 将提供的仿真脚本文件放置在当前工作路径下。
- 点击运行该脚本。
- 程序将自动执行仿真,并在命令行打印平均误差和RMSE统计信息,同时弹出详细的可视化图表进行性能评估。