锂离子电池二阶RC模型simulink模型可用来仿真电池端电压变化可以提供二阶模型进行卡尔曼滤波估计SOC的代码。锂离子电池建模这事吧说难不难说简单也得踩几个坑。今天咱们重点唠唠二阶RC模型在Simulink里怎么玩转顺带手把手教你怎么用这个模型搞卡尔曼滤波估计SOC。先别急着关页面保证不讲教科书那套废话。先看二阶RC模型长啥样说白了就是电池等效成电路一个理想电压源串联两个RC并联结构。数学表达式长得像这样% 模型参数示例 R0 0.01; % 欧姆欧姆内阻 R1 0.005; C1 1000; % 第一个极化环节 R2 0.008; C2 20000; % 第二个极化环节这俩RC环节专门抓电池的动态特性——特别是充放电时电压那个磨磨唧唧的变化过程。一阶模型抓快动态还行但涉及到温度变化或者大电流工况二阶明显更靠谱。Simulink建模实战打开Simulink别慌咱们分三步走拖个Current Source当负载电流输入两个RC分支直接用Simscape里的Electrical Components搭电压测量点记得加个Voltage Sensor关键在状态变量的处理。比如第一个RC环节的端电压V1得用积分器实现% 对应Simulink里的微分方程模块 dV1/dt (I*(R1) - V1)/(R1*C1);别傻乎乎用手算微分方程Simulink的Transfer Function模块直接拖进去改分子分母参数就行。实测时如果发现电压曲线像过山车大概率是RC时间常数设反了。锂离子电池二阶RC模型simulink模型可用来仿真电池端电压变化可以提供二阶模型进行卡尔曼滤波估计SOC的代码。卡尔曼滤波SOC估计的核心代码重头戏来了SOC估计本质上是个状态观测问题。先把模型离散化% 状态方程: x[k1] 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这些参数别指望理论计算能蒙对——电池这玩意儿玄学起来比女朋友还难搞。
锂离子电池二阶RC模型及Simulink模型:用于仿真电池端电压变化并实现卡尔曼滤波SOC估计的代码
锂离子电池二阶RC模型simulink模型可用来仿真电池端电压变化可以提供二阶模型进行卡尔曼滤波估计SOC的代码。锂离子电池建模这事吧说难不难说简单也得踩几个坑。今天咱们重点唠唠二阶RC模型在Simulink里怎么玩转顺带手把手教你怎么用这个模型搞卡尔曼滤波估计SOC。先别急着关页面保证不讲教科书那套废话。先看二阶RC模型长啥样说白了就是电池等效成电路一个理想电压源串联两个RC并联结构。数学表达式长得像这样% 模型参数示例 R0 0.01; % 欧姆欧姆内阻 R1 0.005; C1 1000; % 第一个极化环节 R2 0.008; C2 20000; % 第二个极化环节这俩RC环节专门抓电池的动态特性——特别是充放电时电压那个磨磨唧唧的变化过程。一阶模型抓快动态还行但涉及到温度变化或者大电流工况二阶明显更靠谱。Simulink建模实战打开Simulink别慌咱们分三步走拖个Current Source当负载电流输入两个RC分支直接用Simscape里的Electrical Components搭电压测量点记得加个Voltage Sensor关键在状态变量的处理。比如第一个RC环节的端电压V1得用积分器实现% 对应Simulink里的微分方程模块 dV1/dt (I*(R1) - V1)/(R1*C1);别傻乎乎用手算微分方程Simulink的Transfer Function模块直接拖进去改分子分母参数就行。实测时如果发现电压曲线像过山车大概率是RC时间常数设反了。锂离子电池二阶RC模型simulink模型可用来仿真电池端电压变化可以提供二阶模型进行卡尔曼滤波估计SOC的代码。卡尔曼滤波SOC估计的核心代码重头戏来了SOC估计本质上是个状态观测问题。先把模型离散化% 状态方程: x[k1] 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这些参数别指望理论计算能蒙对——电池这玩意儿玄学起来比女朋友还难搞。