基于双卡尔曼算法的锂离子电池SOC和SOH的联合在线估计,采用带遗忘因子递推最小二乘法(FFRLS)进行参数辨识(含MATLAB代码)

一、电池等效电路模型的选择

等效电路模型考虑到计算精度和时间复杂度,选取二阶RC等效电路模型。电路图如下所示:

二、模型的参数辨识

       模型的参数辨识方法采用在线参数辨识的带遗忘因子递推最小二乘法(FFRLS),该算法是从最小二乘法经过优化得到的,优化流程如下所示:

       具体应用流程略(可参考其他资料,有详细的推导过程),电池不同工况的放电数据可通过开源数据集获取也可通过实验获取(最终整理需要得到4个参数:电池端电压,电池电流,电池参考的RSOC值,数据采样时间)。注意遗忘因子ff取值需要非常靠近1(例如0.99999),取得小可能导致估计产生较大的误差,也可以通过不断的调整改善参数估计的效果。以下是FFRLS方法实现参数辨识方法的MATLAB代码(此处包装成函数形式,方便之后的算法调用),可直接通过代码来单独验证参数辨识的精确度(需要注意的是此时必须保证精确度较高后续的电池状态估计才会比较准确,即端电压误差最好在电池最大电压的1%以下,误差小的话估计效果才好,此时后续的SOC估计才有意义),同时也可通过搭建Simulink模型来通过输入参数得到模拟端电压,思路同理。

% 传入参数在调用函数的代码中会有解释
function [R0, R1, R2, C1, C2, error_U, V1] = FFRLS(Vot, Cur, RSOC, Ts, p, ff, c0)

%% 变量初始化(可根据实际情况进行调整)
p0 = 10^(-1) * eye(5, 5);

T = length(Vot);
R0 = zeros(1, T); R1 = zeros(1, T); R2 = zeros(1, T); C1 = zeros(1, T); C2 = zeros(1, T);
c = zeros(5, T);
error = zeros(1, T);
error_U = zeros(1, T);
V1 = zeros(1, T);
c(:, 1) = c0;
c(:, 2) = c(:, 1);
U1 = 0; U2 = 0;

%% 带遗忘因子递推最小二乘法
for k = 3:T
    Uoc1 = OCV_SOC_Func(k - 1, p, RSOC); Uoc2 = OCV_SOC_Func(k - 2, p, RSOC); Uoc = OCV_SOC_Func(k, p, RSOC);
   
    h = [(Uoc1 - Vot(k - 1)), (Uoc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值