EKF:基于MATLAB/Similink的扩展卡尔曼滤波器EKF的锂电池SoC计算仿真模型
EKF基于MATLAB/Similink的扩展卡尔曼滤波器EKF的锂电池SoC计算仿真模型。最近在搞锂电池SoC估算的项目发现扩展卡尔曼滤波EKF真是个好东西。传统安时积分法误差会越攒越大开路电压法又不能实时测量EKF刚好能把这两玩意儿揉在一起用。今天咱们就扒一扒怎么用MATLAB/Simulink搭这个模型手把手教你们调参避坑。先说说电池模型怎么选。二阶RC等效电路模型现在最常用毕竟能兼顾精度和计算量。用Simulink搭出来大概长这样% 电池模型参数定义 R0 0.01; % 欧姆内阻 Rp1 0.005; % 极化电阻1 Cp1 2000; % 极化电容1 Rp2 0.008; % 极化电阻2 Cp2 1500; % 极化电容2这里注意RC环节的时间常数要和电池实际特性匹配别随便拍脑袋填数值。建议先用HPPC测试拿真实数据拟合参数直接上仿真容易翻车。状态方程是EKF的核心这里SoC作为隐藏状态必须和非线性观测量联动function [x_k, F_k] stateFcn(x_prev, I, deltaT, Cn) x_k x_prev - (deltaT/Cn)*I; % SoC状态递推 F_k 1; % 状态转移矩阵雅可比 end这个函数里deltaT是采样时间Cn为额定容量。雅可比矩阵求导的时候得特别注意单位统一上次我忘了把分钟转秒结果SoC曲线直接飞了。EKF基于MATLAB/Similink的扩展卡尔曼滤波器EKF的锂电池SoC计算仿真模型。观测方程得处理端电压的非线性关系这里用三元锂的OCV-SoC曲线举例function [V_est, H_k] measFcn(x_k, I, R0, Rp1, Cp1, Rp2, Cp2) ocv 3.7 0.6*x_k - 0.2*exp(-15*x_k); % 典型OCV拟合公式 V_est ocv - I*(R0 Rp1/(1Rp1*Cp1) Rp2/(1Rp2*Cp2)); H_k 0.6 3*exp(-15*x_k); % 对SoC求导得到观测矩阵 end注意指数项是为了模拟SoC在两端时OCV的陡变特性实测数据记得做三次样条插值更准。过程噪声Q和观测噪声R的设置很玄学建议从1e-6开始试调大了容易震荡小了收敛慢。最后上Simulink模型结构别直接拖官方EKF模块自己搭更灵活电池物理模型子系统电流电压传感器加噪声EKF算法封装成MATLAB Function实时SoC显示模块跑出来的效果如果像心电图似的乱跳八成是雅可比矩阵算错了。有一次我把Rp1和Rp2搞反了结果SoC估计值比真实值超前了20%调了两天最后发现是观测方程里电阻位置写反了。实测数据对比时记得用0.2C以下电流验证大电流工况下模型误差会明显暴露。建议把安时积分结果和EKF输出画在同一张图上误差超过5%就该检查模型参数了。代码打包的时候别忘做温度补偿的接口实际应用中电池温度变化对参数影响比仿真大得多。下次有机会再聊聊怎么把自适应EKF和神经网络结合那才是真·工业级解决方案。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2441690.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!