基于Simulink风格的锂离子电池SOC估算与动态仿真系统
项目简介
本项目是一个基于MATLAB脚本开发的锂离子电池荷电状态(State of Charge, SOC)估算与仿真平台。该系统完整复现了电池管理系统(BMS)中核心算法的运行环境,采用高保真Thevenin一阶RC等效电路模型模拟电池的非线性动态特性。
项目的主要目的是通过对比“安时积分法”与“扩展卡尔曼滤波(EKF)算法”在动态工况下的表现,验证闭环估算算法在抑制初始误差和传感器噪声方面的鲁棒性。整个仿真过程包含工况生成、被控对象建模、信号加噪、算法执行及结果可视化,完全在一个MATLAB脚本中实现闭环验证。
功能特性
- 高保真电池建模:基于Thevenin一阶RC模型,模拟电池的欧姆内阻、极化内阻及极化电容随SOC变化的非线性特性。
- 双重SOC估算策略:
*
开环估算:基于安时积分法(Ah Counting),模拟传统电量计功能。
*
闭环估算:基于扩展卡尔曼滤波(EKF),利用电压反馈实时修正SOC,具有极强的收敛能力。
- 动态工况模拟:内置合成工况生成器,包含正弦波动、随机游走及大电流充放电脉冲,模拟急加速、制动能量回收及匀速行驶场景。
- 噪声干扰模拟:在仿真回路中分别对电流测量(输入)和电压测量(观测)注入高斯白噪声,以测试算法在非理想传感器条件下的性能。
- 自动化误差分析:自动计算并输出两种算法的均方根误差(RMSE),并生成收敛过程对比图。
系统要求
- MATLAB R2016b 或更高版本
- 无需额外工具箱(代码仅依赖基础MATLAB函数)
使用方法
- 下载本项目代码。
- 在MATLAB中打开主脚本文件。
- 点击“运行”(Run)。
- 控制台将实时显示仿真进度及最终的RMSE误差统计。
- 运行结束后,系统将自动弹出三张图表,分别展示工况电压响应、SOC估算曲线及EKF收敛误差分析。
技术实现细节
本项目在一个主函数中通过离散化迭代实现了完整的仿真闭环,主要包含以下五个核心模块:
1. 系统参数与初始化
系统定义了总仿真时间(1000秒)和采样步长(0.1秒)。设定电池容量为2Ah,并分别初始化了真实系统状态(SOC=80%)和估算算法初始状态(SOC=50%)。这种初始偏差的设置旨在直观展示EKF算法自动修正错误初值的能力。此外,在此阶段定义了卡尔曼滤波所需的协方差矩阵(P, Q, R)。
2. 动态工况生成
代码中包含一个专门的工况生成函数,用于产生随时间变化的电流负载。该剖面混合了基础正弦负载、随机积分(模仿随机驾驶行为)以及随机触发的大幅值充放电脉冲,确保测试工况覆盖了电池模型在不同倍率下的动态响应。
3. 被控对象仿真(虚拟电池)
在仿真循环中,代码构建了一个“真实”的电池对象:
- 非线性参数查询:实时根据当前的真实SOC,调用参数映射函数获取对应的内阻(R0, R1)和电容(C1)。
- 状态更新:利用离散化的状态方程更新真实SOC和极化电压(U_c1)。
- 输出计算:根据开路电压(OCV)、负载电流和极化电压计算端电压,并叠加高斯白噪声生成“测量电压”,模拟传感器采集过程。
4. BMS算法实现
系统并行运行两种估算算法:
- 安时积分法:仅依靠电流积分计算SOC。由于初始值被故意设错(设为0.5而实际为0.8),该方法的估算结果将始终保留初始偏差,且会随电流噪声积累漂移。
- 扩展卡尔曼滤波(EKF):
*
预测阶段:基于安时积分和RC模型方程,利用测量电流预测下一时刻的SOC和极化电压,同时更新状态协方差矩阵P。
*
更新阶段:计算模型预测电压,将其与实际测量电压进行比对得到“残差”。系统利用由雅可比矩阵计算出的卡尔曼增益(K),将残差加权反馈到状态变量中,从而修正SOC和极化电压。
5. 辅助函数库
代码尾部集成了所有必要的物理模型描述函数:
- 电池参数映射:描述R0, R1, C1随SOC变化的数学模型,模拟低SOC下内阻增加的特性。
- OCV曲线拟合:使用6阶多项式拟合典型的NMC锂电池开路电压曲线。
- 雅可比矩阵计算:对OCV多项式求导,为EKF提供电压对SOC的偏导数,确保线性化过程的准确性。
如果结果分析
仿真运行后,系统将展示以下可视化的分析结果:
- 电压响应图:展示真实电压、含噪声测量电压与EKF预测电压的拟合程度,验证模型的精度。
- SOC估算对比图:直观展示真实SOC轨迹。可以看到安时积分法与真实值保持恒定偏差(平行线),而EKF算法在仿真开始后迅速从错误的初始值(0.5)收敛至真实值(0.8)附近。
- 误差收敛分析图:绘制EKF的实时误差曲线与理论不确定性边界(基于P矩阵计算的标准差),用于验证滤波器参数(Q, R)设置的合理性。
获取代码
核心逻辑均包含在单一的 main.m 脚本中,涵盖了从模型定义到算法解算的全过程。