核心内容摘要
跨越国界的视觉盛宴:深度解析“91亚色欧美精彩合集”的独特魅力
电池soc估计算法的GUI仿真平台 以及基于matlab设计写的目前初始版本可以使用两种算法EKFAEKF算法。
该平台可以实现导入数据在线调参仿真出图等功能。
该方法是基于FFRLS算法进行二阶RC模型的参数辩识。
搞电池SOC估计的朋友应该都懂调参是个玄学。
为了验证EKF和AEKF算法的效果我折腾了个MATLAB GUI仿真平台。
这个工具最大的爽点就是能实时改参数看波形不用每次改个噪声协方差都要重新跑实验数据。
先看核心功能布局左边是参数调节面板中间是SOC-电压曲线对比区右边藏着数据导入和算法切换按钮。
重点说几个硬核功能二阶RC模型参数辨识用的是带遗忘因子的递推最小二乘法FFRLS。
这里有个小技巧——在数据预处理阶段要特别注意电流突变的处理function [R0, R1, R2, C1, C2] FFRLS_identify(current, voltage, Ts) lambda
98; % 遗忘因子 theta zeros(5,
; % 参数矩阵 P 1e4*eye(
; % 协方差初始化 for k3:length(current) phi [-voltage(k-
; -voltage(k-
; current(k); current(k-
; current(k-
]; K P*phi/(lambda phi*P*phi); theta theta K*(voltage(k) - phi*theta); P (P - K*phi*P)/lambda; end % 参数转换物理量部分省略... end这段代码里有个魔鬼细节lambda取值直接影响参数跟踪速度。
实测发现当工况剧烈变化时lambda
95~
98比较合适但静态数据时要调到
99以上防止震荡。
EKF/AEKF切换按钮背后藏着状态估计器的动态重构机制。
AEKF比标准EKF多了噪声协方差的在线调整function Q_adapted adapt_Q(innov, Q_base) % 创新量自适应调节 gamma
9; R_adapt mean(innov.^
; Q_adapted Q_base * (1 gamma*(R_adapt - mean(Q_base))); end这个自适应逻辑能让算法在电池老化时保持估计稳定性实测某三元电池循环500次后AEKF的SOC误差比EKF降低了
2%。
在线调参功能实现起来比想象中麻烦——需要实时更新Simulink模型参数。
这里用到了MATLAB的set_param函数黑魔法function update_EKF_params(hObject, event) Q_new str2double(get(handles.Q_edit,String)); set_param(Battery_Model/EKF, Q, mat2str(Q_new)); % 触发模型重新编译 set_param(Battery_Model, SimulationCommand,update); end注意这里必须用mat2str做格式转换直接传数值会报类型错误。
有个坑是参数修改后要手动触发模型更新否则不生效。
电池soc估计算法的GUI仿真平台 以及基于matlab设计写的目前初始版本可以使用两种算法EKFAEKF算法。
该平台可以实现导入数据在线调参仿真出图等功能。
该方法是基于FFRLS算法进行二阶RC模型的参数辩识。
实测对比发现在-20℃低温工况下AEKF的收敛速度比EKF快约15秒。
但代价是计算量增加了18%i
H处理器上单次迭代耗时从
12ms升到
14ms。
平台里特意加了执行时间统计功能方便做算法复杂度评估。
最后提个数据导入的坑CSV文件里的时间戳必须严格等间隔。
处理真实数据时建议先做个时基对齐raw_data readtable(battery_log.csv); fixed_time (0:height(raw_data)-
*mean(diff(raw_data.Time));用平均时间间隔重设时基比插值法更稳定特别是当数据存在丢失时。
这个平台还在持续迭代下一步打算加入神经网络补偿模块。
代码已经开源在Github欢迎来提issue互相伤害手动狗头。