主要内容

退化电池系统的非线性状态估计

这个例子展示了如何在Simulink™中使用Unscented卡尔曼滤波器估计非线性系统的状态。金宝app该实例还说明了如何开发一个基于事件的卡尔曼滤波器来更新系统参数,以获得更准确的状态估计。本示例还需要Simscape™和statflow®。

概述

考虑一个电池模型,其等效电路为[1]

模型由一个电压源组成$E_m$,一个串联电阻器R_0美元和一个单一的钢筋混凝土块与组件R_1美元$C_1$. 蓄电池在充电和放电循环之间交替。在本例中,您将使用测量的电池电流、电压和温度来估计电池模型的荷电状态(SOC)。假设电池是一个非线性系统,并使用无迹卡尔曼滤波器估计SOC。电池的容量随着每次放电-充电循环而降低,从而导致SOC估计不准确。当电池在充电和放电之间转换时,使用基于事件的线性卡尔曼滤波器来估计电池容量。然后使用估计容量指示电池的健康状况。

Simu金宝applink模型包含三个主要组件:电池模型、无迹卡尔曼滤波块和基于事件的卡尔曼滤波块。

开放式系统(“BatteryExampleUKF /”

电池模型

利用Simscape软件实现了具有热效应的电池模型。

电池模型的状态转移方程为:

$ $ \压裂{d} {dt} \离开(& # xA; \开始{数组}{cc} & # xA;SOC \ \ & # xA;U_ {1} & # xA; \结束数组{}\右)= \左(& # xA; \开始{数组}{cc} & # xA;0 xA \ \ & #;- \压裂{1}{R_1 (SOC T_b) * c₁(SOC T_b)} U_1& # xA; \结束数组{}\右)+ \左(& # xA; \开始{数组}{cc} & # xA;- - - - - - \压裂{1}{3600 * C_q} \ \ & # xA;\压裂{1}{c₁(SOC T_b)} \结束数组{}\右)我# xA; + w # xA; $ $

在哪里$R_1(SOC,T_b)$$ c₁(SOC, T_b)美元是RC块中与热和soc相关的电阻和电容,U_1美元美元电容两端的电压是多少$C_1$我美元是输入电流,$T_b$为电池温度,$Cq$是电池容量(单位:Ah),和W美元是过程噪音。

电池放电时输入电流随机产生脉冲,充电时输入电流恒定。

测量方程为:

数组$ $ \开始{}{你}& # xA; E = E_m (SOC T_b) - U_1 IR_0 (SOC T_b) + v # xA; \{数组}$ $

在哪里$E$是测量的输出电压,T_b R_0美元(SOC)美元为串联电阻器,T_b E_m美元= E_m (SOC)美元来自电压源的电动势,和五美元是测量噪声。

在模型中,R_0 R_1, c₁$美元$E_m$是依赖于SOC和电池温度的2D查询表。用实验数据[1]确定了查询表中的参数。

估计电荷状态(SOC)

要使用Unscented卡尔曼滤波器块,您可以使用Matlab或Simulink函数指定测量和状态转移函数。金宝app这个例子演示了Simulink函数的使用。金宝app由于无迹卡尔曼滤波器是离散时间滤波器,因此首先对状态方程进行离散。在本例中,采用欧拉离散法。让采样时间保持不变Ts美元美元.对于一般的非线性系统$\dot{x}=f(x,u)$时,系统可离散为:

$x_{T} +1} = x_{T} + f(x_{T},u_{T})*Ts$

非线性电池系统的状态向量为:

$ $ x_T = \离开(\{数组}{cc}开始SOC_T \ \ U_ {1 _t} \结束数组{}\右)$ $

应用Euler离散化可得出以下方程式:

$$
\左(&35;355;;xA;左(&355;#;xA;;\be开始{{{阵列阵列}{0 0 0 0 0 0 0 0 0}左(&355;; xA;\be上周上周上周上周上周上周上周的一个学校学校学校学校及以及以及以及目前的左({{{}}}}}}}以及以及以及以及目前目前目前的左({{{{{{{{{{}}}}}}}}}}}}}左({{{{{{{{{{{{}}}}}}}}}}}学校学校学校学校学校学校学校学校以及以及以及以及以及以及以及以及以及以及目前目前目前目前目前目前目前目前目前目前的左({{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}学校学校学校学校学校学校学校#xA;\begin{array}{cc}
;-\frac{1}{3600*C{q}I\\
;\frac{1}{R{U 1(SOC_T,T_b)*C_1(SOC U T,T_b)}U 1+\frac{C_1(SOC U T,T,T_}I{xAW_T
$$

离散状态转移方程在Simulink函数中实现,名为金宝app电池状态.功能输入x是状态向量和函数输出xNext为下一步的状态向量,使用离散的状态转移方程计算得到。在函数中,需要指定的信号维数和数据类型xxNext.在本例中,信号维数为xxNext为2,且数据类型为double。额外的输入电池状态为温度、估计容量和电流。注意,附加的输入是状态转移方程的输入,Unscented卡尔曼滤波块不需要这些输入。

类似地,测量函数也在名为的Simulink函数中实现金宝app电池测量

配置Unscented卡尔曼滤波块参数如下:

系统模型选项卡上,指定块参数,如图所示:

您可以指定以下参数:

  • 状态转换中的功能:电池状态

先前定义的用于实现离散化状态转换金宝app方程的simulink函数的名称。

  • 过程噪声:添加剂时不变协方差$\left[\begin{array}{cc} 2e-8 &};}0 \\ 0 &3 e \结束数组{}\]美元添加剂意味着噪声项直接加到最终信号中。

SOC和U_1美元根据电池系统的动态特性进行估计。该电池的标称容量为30 Ah,以平均15A的电流幅值进行放电或充电循环。因此,一次放电或充电过程大约需要2小时(7200秒)。最大变化是100%的SOC和大约4伏特U_1美元

SOC中每一步的最大变化和U_1美元马克斯(| dSOC |) \大约\压裂{100 \ %}{3600 * 2}* Ts美元$max(| dU|1 |)\approx\frac{4}{3600*2}*Ts$哪里T_s美元为滤波器的采样时间。在这个例子中,T_s美元设置为1秒。

因此,过程噪声W美元是:

$$W=\left[\begin{array}{cc}(max(| dSOC})^2和38;0\\0和38;(max(| dU|u 1 |)^2\end{array}\right]\about\left[\begin array}{cc}2e-8和38;0\\0和38;3e-7\end{array}\right]$$

  • 初始状态$$\left(\begin{array}{cc}1\\0\end{array}\right)$$

假设SOC的初始值为100%(电池充满电),而U_1美元设为0,因为我们没有任何的先验信息U_1美元

  • 最初的协方差

初始协方差表明初始猜测的准确性和可靠性。假设SOC的最大初始估计误差为10%,对于SOC的最大初始估计误差为1VU_1美元.初始协方差矩阵设置为$$\left[\begin{array}{cc}0.01&;0\\0&;1\end{array}\right]$$

  • 无迹变换参数:根据[2]指定

-α:1。确定x周围sigma点的分布。将Alpha设为1以获得更大的分布。-β:2。用于包含关于分布的先验知识。Beta的标称值是2。卡帕:0。中等尺度参数。Kappa的标称值是0。
  • 测量功能:电池测量

前面定义的实现度量功能的Simu金宝applink函数的名称。

  • 测量噪声:添加剂,时不变协方差为1e-3。

测量噪声V是根据测量设备的精度估计的。用于电池电压测量的电压表的精度约为1%。电池电压约为4V。同样,我们有$max(dE_m) \约4*1\% = 0.04$.因此,$V = (max(dE_m))^2 \约1e-3$

  • 采样时间$Ts$

估计电池退化

电池退化是通过降低容量来建模的$Cq$。在本例中,将电池容量设置为每放电-充电循环减少1 Ah,以说明退化的影响。由于容量的退化率事先未知,请设置C_q美元美元要随机行走:

$C_{q_{k+1}} = C_{q_k} + W_{C_q}$

在哪里k美元是放电充电循环次数,以及美元W_ {C_q} $是过程噪音。

电池配置为在容量为30%时自动充电,在容量为90%时切换为放电。使用此信息通过积分电流来测量电池容量我美元在充电或放电循环中(库仑计数)。

测量方程$Cq$是:

$$C{q{k}^{Measured}=C{q{k}+V{C{q}=&xA\frac{\int{t{k-1}}{t{k}{I}dt}{(\Delta SOC){nominal}}}&=\frac{\int{t{k-1}}{t{I}dt}{0.9-0.3}=&xA\frac{\int{t{k-1}}{t{k}{I}dt}{0.6}$$

在哪里美元V_ {C_q} $是测量噪声。

电池退化的状态转移和测量方程可表示为以下状态空间形式:

$$C{q{k+1}}=A{C{q}C{q{k}+W{C}$$

$ $ C_ {q_k} ^{测量}= C_ {C_q} C_ {q_k} + V_ {C_q} $ $

在哪里$A_{C_q}$美元C_ {C_q} $等于1。

对于上述线性系统,使用卡尔曼滤波器估计电池容量。估计$Cq$利用线性卡尔曼滤波方法改进SOC估计。在算例中,采用基于事件的线性卡尔曼滤波器进行估计$Cq$.自$Cq$,线性卡尔曼滤波器仅在充电或放电结束时启用。

按如下方式配置块参数:

模型参数标签,指定工厂型号和噪声特性:

  • 模型来源:输入端口

为了实现基于事件的卡尔曼滤波器,状态方程仅在事件发生时启用。换句话说,状态方程也是基于事件的。对于线性系统$x_{t+1} = Ax_t + Bu_t + w_t$,设置状态方程为

$$x{t+1}=\left\{\begin{array}{cc}Ax\u t+Bu\u t+w\u t,t=t{enabled}\\x\u t,t\neq t{enabled}\end{array}\right$$

  • 一个左$ $ \ \{\{数组}{cc}开始现代{C_q}, t = t_{启用}\ \ 1识别,t \ neq t_{启用}\结束数组{}\识别正确的。$$.在这个例子中,美元现代{C_q} = 1美元.因此,一美元$始终等于1。

  • C: 1、从$C{q{k}{Measured}=C{q}+V{C{q}=\frac{\int{t{k-1}}{t{k}{I}dt}{0.6}$

  • 初步估计源对话框.中指定初始状态初始状态x [0]

  • 初始状态x [0]:30.这是蓄电池的标称容量(30Ah)。

  • $$\left\{\begin{array}{cc}1,t=t{enabled}\\0,t\neq t{enabled}\end{array}\right$$

这是过程噪声的协方差美元W_ {C_q} $.由于容量的降解率约为每放电-充电循环1 Ah,因此将过程噪声设置为1。

  • R: 0.1。这是测量噪声的协方差美元V_ {C_q} $.假设容量测量误差小于1%。当电池容量为30 Ah时,测量噪声$V_{C_q} \约(0.3)^2 \约0.1$

  • 采样时间:Ts。

选择权选项卡,添加一个输入端口启用控制测量更新。启用端口用于更新充电或放电事件的电池容量估计值,而不是持续更新。

请注意,设置启用为0不会禁用使用状态方程的预测。因此,状态方程也配置为基于事件的。通过为卡尔曼滤波块设置一个基于事件的A和Q,使用状态方程的预测是禁用的启用设置为0。

后果

为了模拟系统,加载存储在文件中的电池参数BatteryParameters.mat。该文件包含电池参数,包括美元$ E_m (SOC, T)美元$ R_0 (SOC, T)美元$ R_1 (SOC, T)

负载BatteryParameters.mat

模拟系统。

sim卡(“BatteryExampleUKF”

在每一个时间步骤,Unscented卡尔曼滤波器提供基于电压测量的SOC估计$E_m$.绘制真实SOC,估计SOC,以及它们之间的差异。

%同步两个时间序列[RealSOC,EstimatedSOC]=同步(RealSOC,EstimatedSOC,“交叉口”);图;次要情节(2,1,1)情节(100 * RealSOC,“b”“线宽”, 1.5);持有情节(100 * EstimatedSOC,“r——”“线宽”1);标题(“充电状态”);包含(“时间(s)”);ylabel (“SOC(%)”);传奇(“实际的”“UKF估计”“位置”“最佳”“定位”“水平”); 轴牢固的subplot(2,1,2) DiffSOC = 100*(RealSOC - EstimatedSOC);情节(DiffSOC。时间,DiffSOC。数据,“线宽”,1.5);xlabel(‘时间’);ylabel (' \δSOC (%) '“口译员”“特克斯”);传奇(“实际SOC和估计SOC之间的差异”“位置”“最佳”)轴心牢固的

经过初始估计误差后,SOC快速收敛到实际SOC,最终估计误差在0.5%以内,因此,无迹卡尔曼滤波器能够准确估计SOC。

在每次充放电过渡时,对电池容量进行估计,以改进SOC估计。电池系统输出指示信号,以告知电池在什么过程中。指示灯信号中放电过程用-1表示,充电过程用1表示。在这个例子中,指示器信号的变化被用来决定何时启用或禁用卡尔曼滤波器进行容量估计。我们绘制真实的和估计的容量以及充放电指示信号。

图;次要情节(2,1,1);情节(RealCapacity“b”“线宽”, 1.5);持有情节(EstimatedCapacity“r——”“线宽”,1.5);xlabel(“时间(s)”);ylabel (的能力(啊));传奇(“实际的”“KF估计”“位置”“最佳”); 子批次(2,1,2);绘图(DischargeChargeIndicator.Time、DischargeChargeIndicator.Data、,“b”“线宽”,1.5);xlabel(‘时间’);ylabel (“允许信号”);

一般来说,卡尔曼滤波器能够跟踪实际容量。估计容量和实际容量之间存在半周期延迟。这是因为当一个完全放电-充电循环结束时,蓄电池容量会下降。而库仑计数给出了最后一次放电或充电循环的容量测量值。

总结

此示例演示如何使用Unscented Kalman滤波器块对锂电池执行非线性状态估计。此外,还说明了开发用于电池容量估计的基于事件的卡尔曼滤波器的步骤。新估计的容量用于改进Unscented卡尔曼滤波器的SOC估计。

参考

[1] Huria,Tarun,et al.“用于高功率锂电池组表征和模拟的具有热依赖性的高保真电气模型”,《电动汽车会议》(IEVC),2012年IEEE国际会议。IEEE,2012年。

Wan, Eric A.和Rudolph Van Der Merwe。"用于非线性估计的无迹卡尔曼滤波器"信号处理、通信和控制的自适应系统研讨会2000。AS-SPCC。IEEE 2000。Ieee 2000。

另请参阅

||

相关的话题