自适应调整遗忘因子
基于二阶RC等效电路模型的AFFRLS+EKF的联合SOC估计 具体思路:采用自适应遗忘因子最小二乘法估计电池参数,并将辨识结果导入到扩展卡尔曼滤波EKF算法中,实现AFFRLS+EKF的联合估计,基于动态工况 能保证运行,simulink模型和仿真结果可见展示图片,估计效果能完全跟随soc的变化 内容:simulink模型、电池数据、参考文献,详细遗忘因子最小二乘法、EKF估计电池soc原理
搞电池管理的兄弟都知道,SOC(State of Charge)估计就像给手机电量显示做加强版。今天咱们来唠唠基于二阶RC等效电路模型的联合估计算法,这玩意儿用自适应遗忘因子最小二乘法(AFFRLS)和扩展卡尔曼滤波(EKF)双剑合璧,效果直接看动态工况下的曲线跟踪,那叫一个丝滑。
先甩张Simulink模型结构图(假装有图)。模型分三块:电池参数辨识模块实时输出RC参数,EKF核心处理模块拿着这些参数算SOC,中间用MATLAB Function桥接数据流。重点是这个参数辨识模块,咱们直接上硬核代码:
function [R0, R1, C1, R2, C2, lambda] = AFFRLS_estimator(U, I, Ts) persistent P theta lambda_prev if isempty(P) P = 1000*eye(5); theta = [0.1; 0.05; 1000; 0.02; 2000]; lambda_prev = 0.98; end phi = [-I, -theta(2), -theta(3)*I, -theta(4), -theta(5)*I]; epsilon = U - phi*theta; lambda = lambda_prev + 0.001*(1 - abs(epsilon)/0.5); lambda = max(0.95, min(lambda, 0.999)); K = P*phi'/(lambda + phi*P*phi'); theta = theta + K*epsilon; P = (P - K*phi*P)/lambda; R0 = theta(1); R1 = theta(2); C1 = theta(3); R2 = theta(4); C2 = theta(5); lambda_prev = lambda; end这段代码的精髓在lambda的动态调整——当预测电压和实测电压误差大时,自动降低遗忘因子(相当于给旧数据打骨折),强迫算法快速追踪新变化。看第12行的调整公式,0.5这个阈值参数要是调得太激进,参数估计会跟蹦迪似的乱抖,建议根据电池类型微调。
基于二阶RC等效电路模型的AFFRLS+EKF的联合SOC估计 具体思路:采用自适应遗忘因子最小二乘法估计电池参数,并将辨识结果导入到扩展卡尔曼滤波EKF算法中,实现AFFRLS+EKF的联合估计,基于动态工况 能保证运行,simulink模型和仿真结果可见展示图片,估计效果能完全跟随soc的变化 内容:simulink模型、电池数据、参考文献,详细遗忘因子最小二乘法、EKF估计电池soc原理
转场到EKF部分,状态方程直接把辨识出来的RC参数带进去玩真的:
function [SOC, V1, V2] = EKF_update(SOC_prev, V1_prev, V2_prev, I, R1, C1, R2, C2, Q) # 状态预测 A = [1 0 0; 0 exp(-1/(R1*C1)) 0; 0 0 exp(-1/(R2*C2))]; B = [-1/(Q*3600); R1*(1-exp(-1/(R1*C1))); R2*(1-exp(-1/(R2*C2)))]; x_hat = A*[SOC_prev; V1_prev; V2_prev] + B*I; # 协方差预测 P_hat = A*P_prev*A' + Q; # 卡尔曼增益 C = [OCV_SOC(x_hat(1)), -1, -1]; # OCV-SOC曲线查表 K = P_hat*C'/(C*P_hat*C' + R); # 状态更新 x = x_hat + K*(V_measured - C*x_hat); P = (eye(3) - K*C)*P_hat; end注意第7行的状态转移矩阵A,这里用指数函数处理RC环节的瞬态响应,比传统的欧拉离散化更准确。有个坑是OCV-SOC曲线得用实测数据拟合,别直接拿厂家给的标称曲线,否则低SOC区能给你偏出5%以上。
实测效果方面(继续假装有图),在UDDS动态工况下,估计误差能压在1%以内,甚至在SOC拐点处也能紧紧咬住参考曲线。不过要当心参数初始值的设置,曾经有个案例因为R0初值设成0.5欧姆(实际电池只有0.1欧姆),导致前30秒SOC估计直接飙到120%,画面太美不敢看。
最后安利下牛津大学的电池老化数据集,里面包含不同SOH下的HPPC测试数据,拿来调参比自建试验台省事多了。至于遗忘因子到底该不该加个低通滤波,这事在IEEE论文里吵了十年也没结论——要我说,工程上能跑出好曲线就是真理,管他黑猫白猫呢。
