锂离子电池二阶RC模型;simulink模型;可用来仿真电池端电压变化,可以提供二阶模型进行卡尔曼滤波估计SOC的代码。

锂离子电池建模这事吧,说难不难,说简单也得踩几个坑。今天咱们重点唠唠二阶RC模型在Simulink里怎么玩转,顺带手把手教你怎么用这个模型搞卡尔曼滤波估计SOC。先别急着关页面,保证不讲教科书那套废话。

先看二阶RC模型长啥样

说白了就是电池等效成电路:一个理想电压源串联两个RC并联结构。数学表达式长得像这样:

% 模型参数示例
R0 = 0.01;   % 欧姆,欧姆内阻
R1 = 0.005;  C1 = 1000;  % 第一个极化环节
R2 = 0.008;  C2 = 20000; % 第二个极化环节

这俩RC环节专门抓电池的动态特性——特别是充放电时电压那个磨磨唧唧的变化过程。一阶模型抓快动态还行,但涉及到温度变化或者大电流工况,二阶明显更靠谱。

Simulink建模实战

打开Simulink别慌,咱们分三步走:

  1. 拖个Current Source当负载电流输入
  2. 两个RC分支直接用Simscape里的Electrical Components搭
  3. 电压测量点记得加个Voltage Sensor

关键在状态变量的处理。比如第一个RC环节的端电压V1得用积分器实现:

% 对应Simulink里的微分方程模块
dV1/dt = (I*(R1) - V1)/(R1*C1);

别傻乎乎用手算微分方程,Simulink的Transfer Function模块直接拖进去改分子分母参数就行。实测时如果发现电压曲线像过山车,大概率是RC时间常数设反了。

锂离子电池二阶RC模型;simulink模型;可用来仿真电池端电压变化,可以提供二阶模型进行卡尔曼滤波估计SOC的代码。

卡尔曼滤波SOC估计的核心代码

重头戏来了!SOC估计本质上是个状态观测问题。先把模型离散化:

% 状态方程: x[k+1] = A*x[k] + B*u[k] + w
A = [1 0 0; 
     0 exp(-Ts/(R1*C1)) 0; 
     0 0 exp(-Ts/(R2*C2))];
B = [Ts/(3600*Qn); 
     R1*(1-exp(-Ts/(R1*C1))); 
     R2*(1-exp(-Ts/(R2*C2)))];

Qn是电池额定容量,Ts是采样时间。注意这里把SOC、V1、V2都作为状态量。测量方程简单粗暴:

Voltage = OCV(SOC) - I*R0 - V1 - V2;  % OCV用查表法实现

卡尔曼滤波主循环这么写:

for k = 2:length(t)
    % 预测步骤
    x_pre = A * x_est(:,k-1) + B * I(k-1);
    P_pre = A * P_est(:,:,k-1) * A' + Q;
    
    % 更新步骤
    K = P_pre * H' / (H * P_pre * H' + R);
    x_est(:,k) = x_pre + K * (V_meas(k) - (OCV_lut(x_pre(1)) - I(k)*R0 - x_pre(2) - x_pre(3)));
    P_est(:,:,k) = (eye(3) - K*H) * P_pre;
end

这里埋了个坑:OCV-SOC曲线必须提前标定好,用polyfit搞个5次多项式或者插值表都行。实测时如果SOC估计飘得亲妈不认,先检查OCV标定准不准。

仿真结果怎么看

拿个UDDS工况电流怼进模型,端电压曲线和SOC估计误差应该控制在2%以内。如果卡尔曼滤波收敛慢,试着把过程噪声协方差Q调大点;要是曲线抖得像帕金森,就把测量噪声R加大。

最后说句实在的,模型参数辨识才是真·头疼环节。建议先用HPPC实验测出R0、R1、R2这些参数,别指望理论计算能蒙对——电池这玩意儿,玄学起来比女朋友还难搞。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐