20180626 卡尔曼滤波算法计算SOC

      卡尔曼滤波算法包括线性卡尔曼滤波(KF),扩展卡尔曼(EKF),自适应卡尔曼(AEKF),以及无迹卡尔曼(UKF)等卡尔曼变形模式。线性卡尔曼滤波器针对线性系统,实际应用过程一般对非线性系统线性化,如对非线性离散系统的状态方程和观测方程进行一阶泰勒公式展开,即可得到线性化的系统方程,应用EKF估算所需变量。

    对锂离子电池建立一阶RC等效电路模型(即Thevenin模型),该模型而言,状态方程和观测方程如下:

                                                    

对上述方程进行线性离散化:

                                                  

利用k-1时刻的输入i(k-1)和矩阵A,B,估算出滤波算法中k时刻的先验估计值和协方差矩阵。注意先验计算中,不涉及k时刻的输出值y(k)。利用先验估计值,和k时刻的测量值及矩阵C,计算新息误差和卡尔曼增益得到后验估算。依据卡尔曼增益和新息修正k时刻的先验估计值和协方差矩阵,最终获得k时刻的估算值,以此往复迭代得到最优值。

计算步骤如下

1,初始化 x0,P0,Q0,R0

2,利用k-1时刻进行先验估计:

3,利用k时刻测量输出值和先验估计值进行后验估计,计算新息和卡尔曼增益:

4,依据新息和增益对估计值进行修正,获得所需k时刻的估计值。

5,上述过程表示k-1时刻到k时刻卡尔曼估算系统状态的整个过程,由k到k+1不断更新,迭代,得到最终估计值。

AEKF算法对电池的状态值SOC估算基本步骤由上述五个步骤组成,实际应用过程存在较多问题。

1,对于非线性系统电池系统,应用卡尔曼算法的系统矩阵A,B,C,D的确定依赖于搭建的电池模型,如果这四个参数不准确,则卡尔曼算法估算的SOC也会存在较大误差,目前用的较多的方法是在线最小二乘递推算法进行电池模型参数辨识获得A,B,C,D,但是这种数据拟合的方式会存在一些问题:发散导致计算值不准确,误差过大,A,B,C,D无实际物理意义。

2,卡尔曼算法中Q,R的确定无法明确,卡尔曼算法的理论限定是:系统噪声为高斯白噪声,且观测噪声和测量噪声之间不相关。这个在现实情况下较难实现。即使使用自适应方式调整修正QR,其初始值设定也会严重影响估算结果的准确性。对不同初始时刻的估算值SOC,Q,R的设定会影响最终结果的收敛性,设置的不合适,很难保证收敛。即,即使使用AEKF也难以保证这种算法对任意不同的SOC初始值,能保证快速的收敛到真实值,不足够稳定。R作为测量噪声协方差,其设定越小,系统收敛速度越快。

3,实际应用时,此算法需要定点化写入单片机,定点化也可能由于计算原因导致算式中各项式子的溢出。







你可能感兴趣的:(BMS)