%% 基于一阶RC等效电路模型实现不同倍率下电模型参数辨识
clear
clc
%% 载入实验数据
% 导入hppc实验数据
load('hppc_pulse_25deg')
temp = hppc_pulse_25deg;
% 导入电池ocv_soc
load('ocv_soc')
% 电池在不同温度点下的容量分别为
capacity = [7.8983 8.3174 8.6708 8.611];
% 当前实验温度下电池容量
Cn = capacity(3);
% 当前温度下电池ocv
ocv = ocv_soc(3,:);
SOC = [1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0];
% 选择辨识倍率片段
pulse = temp.pulse_1C;
%% 迭代辨识电模型参数
para = zeros(3,9); %电模型参数矩阵
for k = 1:9
% 提取不同SOC下的脉冲片段
pulse_part = pulse(1+621*(k-1):621+621*(k-1),:);
I = pulse_part(:,2); %电流,规定电流方向为放电为负,充电为正
V = pulse_part(:,3); %电池端电压
soc = pulse_part(:,4); %电池SOC
L_data = length(I); %数据长度
%平滑插值获取OCV
Uocv = spline(SOC,ocv,soc);
Ud = V-Uocv; %将端电压和开路电压的差值视为一个新变量
% RLS参数初始化
u = 0.99; %遗忘因子
Phi = zeros(1,3); %数据向量
thita = zeros(3,1); %参数向量
P = 1e6*eye(3); %协方差矩阵
K = zeros(3,1); %增益矩阵
% RLS递推过程
for k1 = 2:L_data
Phi = [-1*Ud(k1-1) I(k1,:) I(k1-1,:)];
K = P*Phi'/(Phi*P*Phi'+u);
thita = thita+K*(Ud(k1)-Phi*thita);
P = (eye(3)-K*Phi)*P/u;
end
c1 = thita(1);
c2 = thita(2);
c3 = thita(3);
% 手动推导电模型参数计算公式
R0 = (c2-c3)/(1-c1);
R1 = (c2+c3)/(1+c1)-R0;
C1 = ((1-c1)/(2*c1+2))/R1;
para(:,k) = [R0 R1 C1]';
end
参数辨识结果
基于遗忘因子递推最小二乘法辨识的一阶RC等效电路模型参数如下表所示:
图2 25度一阶RC等效电路模型辨识结果
图3 25度不同倍率下的欧姆内阻R0
图4 25度不同倍率下的极化内阻R1
图5 25度不同倍率下的极化电容C1
更多内容请关注【Future Car】。