基于 Matlab/simulink的锂电池建模与仿真——复现论文《基于二阶EKF的锂离子电池SOC估计的建模与仿真》的仿真部分

本文详细解析了如何使用Simulink实现论文中锂电池模型的建模仿真,涵盖模型分解、SOC-OCV LoopTable参数设置、RC参数计算的注意事项,并分享了电流生成器设置和仿真结果。特别强调了在复现过程中的细节调整,以帮助读者解决实际操作中的问题。


这篇“博客”讲的也是如何复现该论文的建模仿真部分,但是披露的细节比较少,这样导致复现出来的结果一直有偏差或者复现不出来,因此本文主要对在复现过程中的一些细节进行了再补充,希望对读者有帮助。

1. 模型分解

该模型整体由三部分构成——SOC计算模块、RC参数计算模块和电压计算模块,结构如图所示:模型整体架构

1.1 SOC计算模块

SOC计算模块

1.2 RC参数计算模块

RC电路参数计算模块

1.3 电压计算模块

电压计算模块

1.4 电流生成器——由Singal Builder模块生成

在这里插入图片描述
电流信号模块设定电流为 1.35A 的脉冲电流,通过放电10s,静置 40s 进行模型仿真验证。需要注意的细节就是:图中红色圆点可以通过shift+鼠标右键选中添加。

2. 建模细节详解

2.1 SOC-OCV :Loop Table参数设定


这是论文中给的关于SOC-OCV的计算公式,可知OCV=EMF+Vh。
在这里插入图片描述
这是论文中关于不同SOC时测得的等效电压OCV数值,只需要将EMF和Vh加起来就可以。因为SOC是电容量百分比,因此,在设定Lookup Table模块中SOC参数时,应该这样设定:[0 0.1 0.2 … 0.9 1 ]放在Breakpoints那一栏。具体如图所示。
在这里插入图片描述
注:在设定Lookup Table的Breakpoints数值参数时,一定要按照从小到大顺序放置,Table Data中的数值参数跟着这个顺序依次放置。

2.2 建立RC参数计算模块时的注意细节

在这个模块中,需要设定5个Lookup Table的参数。我们先看看论文中关于这个部分是如何讲解的。
在这里插入图片描述
1).这里是关于不同SOC点处等效阻抗参数辨识结果,其中R0=(Rd+Rc)/2;
(注释:这里欧姆电阻计算有问题,文中Rd指的是放电内阻,Rc指的是充电内阻,因此电池内阻和SOC拟合,这里应该是求两者的平均值。)
2).在Look Table的Breakpoints处放置的是SOC点:[0.1 0.2 … 0.8 0.9];
3).有电阻单位是毫欧姆,因此需要将单位进行换算到欧姆,可以加一个增益,增益参数设定为1/1000。

3.仿真结果

在这里插入图片描述
这是我复现的仿真结果。然后具体每个模块是怎么搭建的,大家可以根据论文中的相关公式自己一步一步推一遍。整体来说,只要电路模型建立出来以后,将每个部分单独抽取出来进行Simulink仿真建模难度不大,可能就是一些细节地方需要注意一点,比如单位换算和look up table的参数设定,R0和Rd、Rc之间的关系,以及OCV和EMF、Vh之间的关系。

<think>好的,用户想在Matlab/Simulink中实现锂电池建模仿真,但可能对具体步骤不太清楚。我需要结合提供的引用资料,整理出一个清晰的步骤指南。首先,根据引用3,用户提到基于等效电路模型,尤其是二阶RC模型,所以需要先解释模型结构。然后,参数辨识部分需要参考HPPC实验数据,用查表法处理SOC-OCV关系和RC参数。接下来,搭建Simulink模型,包括各个模块的连接,比如Signal Builder作为输入,Lookup Table模块,以及欧姆电阻和RC环节。之后是SOC估计,可能需要扩展卡尔曼滤波(EKF),如引用3中的二阶EKF方法。仿真验证部分需要导入实验数据,进行对比分析。此外,用户可能需要优化建议,比如在线参数更新或温度影响,这部分引用1和引用2提到均衡管理和性能评估,可以适当提及。还要注意用户可能遇到的困难,比如资料难找,所以步骤要详细,关键模块要具体。最后生成相关问题,覆盖模型选择、参数辨识、SOC估计方法、仿真验证和温度影响等方面,帮助用户深入理解。</think>在Matlab Simulink中实现锂电池建模仿真可分为以下步骤,结合等效电路模型和实验数据拟合方法[^3]: ### 一、建立等效电路模型 1. **选择二阶RC模型**:包含开路电压$U_{ocv}$、欧姆内阻$R_0$和两个RC环节(极化效应),数学表达式为: $$U_t = U_{ocv}(SOC) - I \cdot R_0 - U_{RC1} - U_{RC2}$$ 其中$U_{RC}$满足微分方程$\frac{dU_{RC}}{dt} = \frac{I}{C} - \frac{U_{RC}}{RC}$ 2. **搭建Simulink子模块**: ```matlab % 使用Simulink库中的电气元件搭建: - Voltage Sensor(电压传感器) - Controlled Current Source(受控电流源) - Resistor(欧姆电阻模块) - Parallel R-C Branches(RC网络) ``` ### 二、参数辨识 1. **HPPC实验数据处理**: - 通过脉冲放电实验获取不同SOC点的$R_0$、$R_1C_1$、$R_2C_2$参数 - 建立SOC-OCV对应表(使用1-D Lookup Table模块实现) 2. **参数表格导入**: ```matlab % 在MATLAB工作区定义变量: SOC_vector = [0:0.1:1]; % SOC采样点 OCV_table = [3.0,3.2,...,4.2]; % 实验测得OCV值 % 在Simulink中配置查表模块参数 ``` ### 三、构建完整仿真模型 1. **模型结构**: ``` [Signal Builder电流输入] → [SOC计算模块] → [OCV查表] ↓ [R0模块] → [RC网络1] → [RC网络2] → [电压合成输出] ``` 2. **关键模块配置**: - **SOC估算**:通过库仑计数法实现,公式: $$SOC(t) = SOC_0 - \frac{1}{Q_{nom}} \int_{0}^{t} I(\tau) d\tau$$ - **RC网络**:使用Transfer Function模块实现,传递函数为$\frac{1}{RCs + 1}$ ### 四、SOC估计扩展(进阶) 1. **集成扩展卡尔曼滤波**: - 在模型中加入EKF算法模块 - 状态方程包含SOC和极化电压状态变量 ```matlab % 示例状态方程代码框架 function dx = batteryStateFcn(x,u) dx = [ -u/(Q_nom); -x(2)/(R1*C1) + u/C1; -x(3)/(R2*C2) + u/C2 ]; end ``` ### 五、仿真验证 1. **测试案例设置**: - 使用UDDS或FUDS标准工况电流输入 - 对比仿真电压实际测量电压曲线 ```matlab % 导入实验数据对比 simout = sim('battery_model.slx'); plot(simout.Voltage,'r'); hold on; plot(experiment_data.Voltage,'b--'); ``` ### 优化建议 1. **在线参数更新**:可添加自适应模块实现动态参数调整[^1] 2. **温度补偿**:增加温度-参数关系查表模块(引用电池均衡管理技术[^2])
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值