Relax, estimate, and track: a simple battery state-of-charge and state-of-health estimation method

Shida Jianga, Junzhe Shia, Scott Mouraa
Abstract

Battery management is a critical component of ubiquitous battery-powered energy systems, in which battery state-of-charge (SOC) and state-of-health (SOH) estimations are of crucial importance. Conventional SOC and SOH estimation methods, especially model-based methods, often lack accurate modeling of the open circuit voltage (OCV), have relatively high computational complexity, and lack theoretical analysis. This study introduces a simple SOC and SOH estimation method that overcomes all these weaknesses. The key idea of the proposed method is to momentarily set the cell’s current to zero for a few minutes during the charging, perform SOC and SOH estimation based on the measured data, and continue tracking the cell’s SOC afterward. The method is based on rigorous theoretical analysis, requires no hyperparameter fine-tuning, and is hundreds of times faster than conventional model-based methods. The method is validated on six batteries charged at different C rates and temperatures, realizing fast and accurate estimations under various conditions, with a SOH root mean square error (RMSE) of around 3% and a SOC RMSE of around 1.5%.

keywords:
Battery management system, state-of-charge, state-of-health, electric vehicle
\affiliation

organization=Department of Civil and Environmental Engineering,addressline=University of California, Berkeley, city=Berkeley, postcode=94720, state=CA, country=USA

1 Introduction

Battery management is crucial for the operational efficiency, safety, reliability, and cost-effectiveness of ubiquitous battery-powered energy systems, such as electrified vehicles and smart grids with renewables [1]. Among different goals of battery management systems (BMS), battery state-of-charge (SOC) and state-of-health (SOH) estimation are of crucial importance and are directly related to accurate and efficient monitoring of the state information of power batteries [2].

Battery SOC describes the actual energy level available at the battery and is defined as the ratio of the present available capacity to the present maximum capacity. On the other hand, battery SOH reflects the aging state of the battery and is defined as the ratio of the present maximum cell capacity (or present cell resistance) to its initial value [3]. Considering that the battery’s internal resistance also changes as the battery is charged or discharged, we used the capacity version of the SOH definition in this paper. Namely, an 80% SOH means that the cell’s maximum capacity has decreased by 20%. The main difference between the SOC and the SOH is that SOC indicates the instant status of the battery, while SOH indicates the long-term dynamic status of the battery [4].

Many different methods have been proposed for SOC and SOH estimation. In general, these methods can be divided into three categories: direct measurement-based methods, model-based methods, and data-driven methods. Direct measurement-based methods estimate the SOC and SOH through directly measurable features like voltage, current, and resistance. These methods generally have low computational complexity. However, they either have low accuracy (e.g., resistance method) or can be only used offline (e.g., ampere-hour counting method and impedance method) [5]. The only exceptions are the differential voltage method and its variant incremental capacity method, using which many studies got pretty good SOC and SOH estimation results [6, 7, 8]. The “differential voltage” stands for the derivative of the terminal voltage with respect to the capacity, and the “incremental capacity” stands for the derivative of capacity with respect to the terminal voltage. These two methods estimate the SOC and SOH by extracting related features from the differential voltage or incremental capacity curves. The limitation of these two methods is that they require precise voltage measurement, and they only work when the current is constant and is lower than a specific value [9].

On the other hand, data-driven methods estimate the battery SOC and SOH by training a black-box model with a large dataset [10]. The input of the data-driven methods is usually health indicators derived from capacity, resistance, voltage, current, and temperature data [11]. The benefits of data-driven methods are that they do not need physical-based models and can have high accuracy [12]. The disadvantages are that they need high computational effort and are sensitive to the quantity and quality of training data [3].

Meanwhile, model-based methods estimate the SOC and SOH by first building a battery model to fit the raw data, and then, they use some model parameters to calculate the SOC and SOH indirectly. The battery model can either be a pure mathematical model or a battery equivalent circuit model (ECM) [4], whose purpose is to model the battery’s voltage response to any input current. In model-based methods, SOC is usually estimated based on the state-space function and the SOC-OCV correlation. At the same time, SOH estimation can be done by using another filter or by calculating the derivative of SOC [13, 14, 15]. In general, the accuracy of model-based methods depends on the model’s accuracy. With the help of adaptive filter algorithms such as a nonlinear Kalman filter (KF), model-based methods can usually achieve good accuracy compared to other methods [16]. The drawback is that the imperfection of the models often results in bias in the estimation, producing unexpected estimation errors.

However, although hundreds of different methods have been proposed for battery SOC and SOH estimation, we noticed that the existing methods have some common weaknesses. The first weakness is that, although the OCV-SOC correlation is widely used in SOC and SOH estimation, such correlation is also affected by temperature [17, 18, 19] and SOH [20, 21]. Yet, such influence (especially the effect of SOH) is constantly ignored in most studies. Such a simplification can be problematic because the OCV-SOC correlation function stored in the BMS will become increasingly inaccurate as the cell ages, making the SOC and SOH estimation results unreliable. Unfortunately, to the best of our knowledge, so far, only a few papers considered the effect of SOH when using the OCV-SOC correlation to estimate the SOC [22, 23, 24, 25]. Worse still, in [22], the authors only showed the correlation between some parameters and SOH, yet no SOH estimation method was proposed or validated; in [23], the primary focus was only SOC and OCV, and the SOH estimation result was not detailed; in [24], although a SOH estimation method was proposed, the method requires to fit the present OCV curve in an extensive SOC range (from 10% to 90%), which is hardly accessible in most applications; and in [25], the proposed method required fine-tuning some hyperparameters and was only validated at 100% and 96% SOH, so its effectiveness still requires further investigation. In summary, while many papers used the OCV-SOC correlation to estimate the SOC and SOH, few have developed an effective way to integrate the effect of battery aging on OCV into their method.

Another weakness of the existing battery SOC and SOH estimation methods is that little attention has been paid to reducing their computational complexity. In most studies, estimation accuracy is set to be the only metric used to measure how good or bad a method is. However, for state estimation of the battery pack, the computational complexity can also be an essential and practical factor to consider [26]. For example, in a Tesla Model S, there are 96 series-connected battery modules, so the workload and computational cost can be very high if we adopt a complex filter-based method for each module [27]. To solve such a problem, we noticed that some studies proposed to use a simple method first to identify the “weakest” cell in the battery pack (i.e., the cell that has the lowest voltage or some other apparent characteristics that make it more likely to have the lowest SOC or SOH) and then use another complex method to estimate the state of those weakest cells [27, 28, 29, 30]. While this idea can partially solve the question, the method may not capture the weakest cell correctly, which could make the estimation too optimistic.

Furthermore, most SOC and SOH estimation methods so far only use experimental data for validation and do limited theoretical analysis. While empirical data may be enough to verify the method’s effectiveness in one specific setting, such effectiveness can no longer be guaranteed once any setting (e.g., the sampling frequency of the voltmeter, the parameters of the ECM) changes. In the worst case, the algorithm may not even converge when the initial value is not accurate enough or when the measurement is not precise enough [10]. For example, the differential voltage method often uses a filter to reduce voltage measurement noise. However, in most papers that use this method so far, the noise filtering algorithm is only proposed empirically [6, 7, 8], so it may not work well when the precision of the voltmeter is lower. For another example, the extended Kalman filter (EKF) and unscented Kalman filter (UKF) are often used for SOC and SOH estimation. However, since no theoretical analysis is done to guarantee their convergence in SOH estimation [31], it is unclear whether the method can always yield satisfactory results as the battery ages.

In this paper, we proposed a novel model-based SOC and SOH estimation method that addresses all three weaknesses described above. The main contributions of this paper are:

  • 1.

    We proposed a SOC and SOH estimation method that can be easily implemented without any sophisticated device. Additionally, the estimation accuracy of the proposed method is pretty high, with a SOH root mean square error (RMSE) of around 3% and a SOC RMSE of around 1.5%.

  • 2.

    To implement the method, the battery pack only needs to relax for one to four minutes during the charging process, which will not cause a significant delay. Besides, the computational complexity of our method is extremely low, making it suitable for online applications such as electric vehicles.

  • 3.

    The proposed method has no hyperparameter and does not require initialization. The noise tolerance and the convergence of the method are guaranteed by detailed theoretical analysis.

The paper is organized as follows. Section 2 introduces the definition of OCV, SOC, and SOH used in the paper. Section 3 presents the details of our SOC and SOH estimation method. Section 4 provides the theoretical basis of our method. Section 5 presents the experimental results and compares our method against UKF. A detailed analysis of the estimation error is also given in Section 5. Finally, in Section 6, we discuss the conclusion drawn from the study.

2 SOC, SOH, and OCV

2.1 Definition of SOC and SOH

The battery SOC is defined as:

SOC=QrQ𝑆𝑂𝐶subscript𝑄𝑟𝑄SOC=\frac{Q_{r}}{Q}italic_S italic_O italic_C = divide start_ARG italic_Q start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_Q end_ARG (1)

where Q𝑄Qitalic_Q is the present maximum capacity of the battery, and Qrsubscript𝑄𝑟Q_{r}italic_Q start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT is the remaining capacity of the battery.

The derivative form of (1), which is often used for SOC estimation, is:

dSOCdt=IQ𝑑𝑆𝑂𝐶𝑑𝑡𝐼𝑄\frac{dSOC}{dt}=\frac{I}{Q}divide start_ARG italic_d italic_S italic_O italic_C end_ARG start_ARG italic_d italic_t end_ARG = divide start_ARG italic_I end_ARG start_ARG italic_Q end_ARG (2)

On the other hand, the battery SOH is defined as:

SOH=QQ0×100%𝑆𝑂𝐻𝑄subscript𝑄0percent100SOH=\frac{Q}{Q_{0}}\times 100\%italic_S italic_O italic_H = divide start_ARG italic_Q end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG × 100 % (3)

where Q0subscript𝑄0Q_{0}italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is the maximum capacity of a new cell.

It is worth mentioning that a cell’s capacity varies at different C rates. For the rigor of the definition, all the “capacity” above refers to the charge capacity (calculated by Coulomb counting) when the C rate is 0.1 C.

2.2 OCV model

In this study, the OCV curves were fitted by a ninth-order polynomial function due to its simplicity and low RMS error [32].

OCV=f(SOC,SOH,T)=i=09ai(SOH,T)SOCi𝑂𝐶𝑉𝑓𝑆𝑂𝐶𝑆𝑂𝐻𝑇superscriptsubscript𝑖09subscript𝑎𝑖𝑆𝑂𝐻𝑇𝑆𝑂superscript𝐶𝑖OCV=f(SOC,SOH,T)=\sum_{i=0}^{9}a_{i}(SOH,T)SOC^{i}italic_O italic_C italic_V = italic_f ( italic_S italic_O italic_C , italic_S italic_O italic_H , italic_T ) = ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 9 end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_S italic_O italic_H , italic_T ) italic_S italic_O italic_C start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT (4)

where ai,i=0,1,,9formulae-sequencesubscript𝑎𝑖𝑖019a_{i},i=0,1,...,9italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , italic_i = 0 , 1 , … , 9 are coefficients related to SOH and temperature (denoted by T𝑇Titalic_T in the equation). These coefficients can be determined by fitting the OCV curve of the battery.

There are generally two ways to acquire the OCV curve in experiments. The first is the slow-current OCV test, and the second is the incremental OCV test. In a slow-current OCV test, the cell is fully discharged and then fully charged at a constant current that is lower or equal to 0.1 C. On the other hand, in an incremental capacity test, the cell is usually charged and discharged with a higher C rate (e.g., 0.5 C). Whenever the SOC rises or drops by a certain percentage (e.g., 10%), the cell is open-circuited for some time (e.g., two hours) [33]. Compared with the low-current OCV test, the incremental capacity test can describe the battery behavior better [33] and make model-based SOC estimation more accurate [34]. As a result, in this study, incremental OCV tests are used to acquire the OCV-SOC curve. The OCV curve acquired from fitting the experimental data at 25C is presented in Figure 1.

Refer to caption
Figure 1: The fitted OCV curve at 25C

Note that the OCV curve in Figure 1 is only used in the theoretical analysis in Section 4.2 and never used in the experimental validation in Section 5. In the experimental validation, when the estimation is validated on a particular cell, that cell’s OCV data will be excluded when fitting the OCV curve. The purpose is to separate the data used for fitting the OCV curve and the data used for experimental validation.

3 Methodology

3.1 ECM model and parameter estimation

Since the SOH changes much more slowly than SOC, it can be considered constant during a single cycle. With this simplification and the definition of SOH in (3), when the temperature is constant, (2) can be rewritten as follows:

SOH=IQ0dtdSOC=IQ0OCVSOCdtdOCV𝑆𝑂𝐻𝐼subscript𝑄0𝑑𝑡𝑑𝑆𝑂𝐶𝐼subscript𝑄0𝑂𝐶𝑉𝑆𝑂𝐶𝑑𝑡𝑑𝑂𝐶𝑉SOH=\frac{I}{Q_{0}}\frac{dt}{dSOC}=\frac{I}{Q_{0}}\frac{\partial OCV}{\partial SOC% }\frac{dt}{dOCV}italic_S italic_O italic_H = divide start_ARG italic_I end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG divide start_ARG italic_d italic_t end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG = divide start_ARG italic_I end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG divide start_ARG italic_d italic_t end_ARG start_ARG italic_d italic_O italic_C italic_V end_ARG (5)

(4) and (5) are two independent equations about SOC and SOH. With these two equations, we can solve the value of SOC and SOH once we know the values of OCV𝑂𝐶𝑉OCVitalic_O italic_C italic_V and dOCV/dt𝑑𝑂𝐶𝑉𝑑𝑡dOCV/dtitalic_d italic_O italic_C italic_V / italic_d italic_t. However, OCV𝑂𝐶𝑉OCVitalic_O italic_C italic_V is not directly measurable unless the battery is idle for hours, so an ECM is required to estimate this parameter. The ECM used in this paper is presented in Figure 2. Despite the OCV, it consists of a resistor and an RC pair (a resistor and a capacitor connected in parallel).

Refer to caption
Figure 2: Battery equivalent circuit model

If we select SOC and capacitor voltage (Ucsubscript𝑈𝑐U_{c}italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT) as the states, current (I𝐼Iitalic_I) as the input, and terminal voltage (Utersubscript𝑈𝑡𝑒𝑟U_{ter}italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT) as the output, the state-space function of the model can be written as

[SOC˙U˙c]=[0001R2C][SOCUc]+[1Q1C]Imatrix˙𝑆𝑂𝐶subscript˙𝑈𝑐matrix0001subscript𝑅2𝐶matrix𝑆𝑂𝐶subscript𝑈𝑐matrix1𝑄1𝐶𝐼\begin{bmatrix}\dot{SOC}\\ {\dot{U}_{c}}\end{bmatrix}=\begin{bmatrix}0&0\\ 0&\frac{-1}{R_{2}C}\end{bmatrix}\begin{bmatrix}SOC\\ U_{c}\end{bmatrix}+\begin{bmatrix}\frac{1}{Q}\\ \frac{1}{C}\end{bmatrix}I[ start_ARG start_ROW start_CELL over˙ start_ARG italic_S italic_O italic_C end_ARG end_CELL end_ROW start_ROW start_CELL over˙ start_ARG italic_U end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] = [ start_ARG start_ROW start_CELL 0 end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL divide start_ARG - 1 end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_CELL end_ROW end_ARG ] [ start_ARG start_ROW start_CELL italic_S italic_O italic_C end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] + [ start_ARG start_ROW start_CELL divide start_ARG 1 end_ARG start_ARG italic_Q end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG 1 end_ARG start_ARG italic_C end_ARG end_CELL end_ROW end_ARG ] italic_I (6)
Uter=OCV(SOC,SOH,T)+Uc+R1Isubscript𝑈𝑡𝑒𝑟𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂𝐻𝑇subscript𝑈𝑐subscript𝑅1𝐼U_{ter}=OCV(SOC,SOH,T)+U_{c}+R_{1}Iitalic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT = italic_O italic_C italic_V ( italic_S italic_O italic_C , italic_S italic_O italic_H , italic_T ) + italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_I (7)

where R1subscript𝑅1R_{1}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, R2subscript𝑅2R_{2}italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, and C𝐶Citalic_C are the ECM parameters shown in Figure 2.

Suppose that at time t0subscript𝑡0t_{0}italic_t start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, the current suddenly drops to zero, then the output function becomes

Uter(t0+Δt)=OCV(SOC,SOH,T)+Uc(t0)eΔtRC,Δt>0formulae-sequencesubscript𝑈𝑡𝑒𝑟subscript𝑡0Δ𝑡𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂𝐻𝑇subscript𝑈𝑐subscript𝑡0superscript𝑒Δ𝑡𝑅𝐶Δ𝑡0U_{ter}(t_{0}+\Delta t)=OCV(SOC,SOH,T)+U_{c}(t_{0})e^{-\frac{\Delta t}{RC}},% \Delta t>0italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT ( italic_t start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + roman_Δ italic_t ) = italic_O italic_C italic_V ( italic_S italic_O italic_C , italic_S italic_O italic_H , italic_T ) + italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ( italic_t start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_e start_POSTSUPERSCRIPT - divide start_ARG roman_Δ italic_t end_ARG start_ARG italic_R italic_C end_ARG end_POSTSUPERSCRIPT , roman_Δ italic_t > 0 (8)

If the current before t0subscript𝑡0t_{0}italic_t start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT was constant (denoted as I0subscript𝐼0I_{0}italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT) and the capacitor had already reached steady-state, then

Uc(t0)=I0R2subscript𝑈𝑐subscript𝑡0subscript𝐼0subscript𝑅2U_{c}(t_{0})=I_{0}R_{2}italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ( italic_t start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) = italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT (9)

As for the parameter R1subscript𝑅1R_{1}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, its value can be estimated by using the equation below

R1=ΔU/I0subscript𝑅1Δ𝑈subscript𝐼0R_{1}=-\Delta U/I_{0}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = - roman_Δ italic_U / italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT (10)

where ΔUΔ𝑈\Delta Uroman_Δ italic_U is the sudden change in voltage after the current becomes zero.

Given (8), (9), and (10), all the parameters in the ECM can be estimated based on the measurement data. Namely, R1subscript𝑅1R_{1}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT can be directly calculated by (10), and the other three parameters can be estimated using algorithms like regression analysis or parameter observer. However, these algorithms are quite complex (if we want them to be robust to noise) and unsuitable for cell-level or module-level estimation in a large battery pack with thousands of cells and around a hundred modules. Consequently, a more straightforward parameter estimation method is used in this paper to estimate the other three ECM parameters, which is to determine the three parameters by using three data points. Namely, given three pairs of time and terminal voltage data (x1,y1)subscript𝑥1subscript𝑦1(x_{1},y_{1})( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ), (x2,y2)subscript𝑥2subscript𝑦2(x_{2},y_{2})( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ), and (x3,y3)subscript𝑥3subscript𝑦3(x_{3},y_{3})( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ), the parameters can be determined by solving the following function set

{y1=OCV+I0R2ex1R2Cy2=OCV+I0R2ex2R2Cy3=OCV+I0R2ex3R2Ccasessubscript𝑦1𝑂𝐶𝑉subscript𝐼0subscript𝑅2superscript𝑒subscript𝑥1subscript𝑅2𝐶otherwisesubscript𝑦2𝑂𝐶𝑉subscript𝐼0subscript𝑅2superscript𝑒subscript𝑥2subscript𝑅2𝐶otherwisesubscript𝑦3𝑂𝐶𝑉subscript𝐼0subscript𝑅2superscript𝑒subscript𝑥3subscript𝑅2𝐶otherwise\begin{cases}y_{1}=OCV+I_{0}R_{2}e^{-\frac{x_{1}}{R_{2}C}}\\ y_{2}=OCV+I_{0}R_{2}e^{-\frac{x_{2}}{R_{2}C}}\\ y_{3}=OCV+I_{0}R_{2}e^{-\frac{x_{3}}{R_{2}C}}\end{cases}{ start_ROW start_CELL italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = italic_O italic_C italic_V + italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT - divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_O italic_C italic_V + italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT - divide start_ARG italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_y start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = italic_O italic_C italic_V + italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT - divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_CELL start_CELL end_CELL end_ROW (11)

where x1,x2,x3subscript𝑥1subscript𝑥2subscript𝑥3x_{1},x_{2},x_{3}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT are counted after the relaxation starts.

To improve the noise tolerance of the method, the selection of the three points must be optimized. Otherwise, a small noise in the measurement can make the parameter inaccurate. For this purpose, the general rule of thumb is to select a small x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, a big x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT, and select x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG. The theoretical analysis behind this rule is illustrated in Section 4.1. Following this rule, if we denote x3x2=x2x1=xdsubscript𝑥3subscript𝑥2subscript𝑥2subscript𝑥1subscript𝑥𝑑x_{3}-x_{2}=x_{2}-x_{1}=x_{d}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT, then (11) can be rewritten as:

{R2=(y1y2)exd/τI0(exd/τ1)C=τR2OCV=y1(y1y2)exd/τexd/τ1casessubscript𝑅2subscript𝑦1subscript𝑦2superscript𝑒subscript𝑥𝑑𝜏subscript𝐼0superscript𝑒subscript𝑥𝑑𝜏1otherwise𝐶𝜏subscript𝑅2otherwise𝑂𝐶𝑉subscript𝑦1subscript𝑦1subscript𝑦2superscript𝑒subscript𝑥𝑑𝜏superscript𝑒subscript𝑥𝑑𝜏1otherwise\begin{cases}R_{2}=\frac{(y_{1}-y_{2})e^{x_{d}/\tau}}{I_{0}(e^{x_{d}/\tau}-1)}% \\ C=\frac{\tau}{R_{2}}\\ OCV=y_{1}-\frac{(y_{1}-y_{2})e^{x_{d}/\tau}}{e^{x_{d}/\tau}-1}\end{cases}{ start_ROW start_CELL italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG ( italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) italic_e start_POSTSUPERSCRIPT italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT / italic_τ end_POSTSUPERSCRIPT end_ARG start_ARG italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_e start_POSTSUPERSCRIPT italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT / italic_τ end_POSTSUPERSCRIPT - 1 ) end_ARG end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_C = divide start_ARG italic_τ end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_O italic_C italic_V = italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - divide start_ARG ( italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) italic_e start_POSTSUPERSCRIPT italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT / italic_τ end_POSTSUPERSCRIPT end_ARG start_ARG italic_e start_POSTSUPERSCRIPT italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT / italic_τ end_POSTSUPERSCRIPT - 1 end_ARG end_CELL start_CELL end_CELL end_ROW (12)

where τ=xdlny1y2y2y3𝜏subscript𝑥𝑑subscript𝑦1subscript𝑦2subscript𝑦2subscript𝑦3\tau=\frac{x_{d}}{\ln\frac{y_{1}-y_{2}}{y_{2}-y_{3}}}italic_τ = divide start_ARG italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG start_ARG roman_ln divide start_ARG italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_y start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG end_ARG, and its physical meaning is the time constant of the RC pair.

Based on (12), the values of the three parameters can be directly calculated once the three data points are acquired. However, even if the three points have been optimized, estimating three parameters using three data points is still inevitably vulnerable to measurement noise. Therefore, to further improve the noise tolerance, it is necessary to filter out the noise before doing parameter estimation. The algorithm we chose here is a 15-point median filter, which replaces the voltage of each of the three points with the median value of the fifteen points adjacent to it (including itself). We chose this algorithm instead of other common filtering algorithms like averaging for two reasons. First, this algorithm is straightforward and only adds a little extra computational complexity. Secondly, we can theoretically prove that this filtering algorithm can always reduce the variance of the noise. In contrast, other algorithms only work when the variance of the noise is in a specific range. Namely, we have the following theorem.

Theorem 1.

If x1>x2subscript𝑥1subscript𝑥2x_{1}>x_{2}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT > italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, yet the estimation of x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT (denoted as x^1subscript^𝑥1\hat{x}_{1}over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT), is smaller than the estimation of x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT (denoted as x^2subscript^𝑥2\hat{x}_{2}over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT), then swapping the two estimations can make the overall RMS error lower.

Proof.

After swapping, the change in mean square error is

0.5[(x1x^2)2+(x2x^1)2]0.5[(x1x^1)2+(x2x^2)2]0.5delimited-[]superscriptsubscript𝑥1subscript^𝑥22superscriptsubscript𝑥2subscript^𝑥120.5delimited-[]superscriptsubscript𝑥1subscript^𝑥12superscriptsubscript𝑥2subscript^𝑥22\displaystyle 0.5[(x_{1}-\hat{x}_{2})^{2}+(x_{2}-\hat{x}_{1})^{2}]-0.5[(x_{1}-% \hat{x}_{1})^{2}+(x_{2}-\hat{x}_{2})^{2}]0.5 [ ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ] - 0.5 [ ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ]
=\displaystyle== 0.5(2x^2x12x^1x2+2x^1x1+2x^2x2)0.52subscript^𝑥2subscript𝑥12subscript^𝑥1subscript𝑥22subscript^𝑥1subscript𝑥12subscript^𝑥2subscript𝑥2\displaystyle 0.5(-2\hat{x}_{2}x_{1}-2\hat{x}_{1}x_{2}+2\hat{x}_{1}x_{1}+2\hat% {x}_{2}x_{2})0.5 ( - 2 over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - 2 over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT + 2 over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + 2 over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT )
=\displaystyle== (x^1x^2)(x1x2)<0subscript^𝑥1subscript^𝑥2subscript𝑥1subscript𝑥20\displaystyle(\hat{x}_{1}-\hat{x}_{2})(x_{1}-x_{2})<0( over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) < 0

Meaning that the RMS error becomes smaller after the swapping. ∎

Remark.

Theorem 1 means that swapping two measurements that are not in order can reduce measurement noise. In other words, the noise can be minimized by placing all measurements in order.

3.2 SOC and SOH estimation

Once the OCV during the relaxation is identified, the only missing piece in SOC and SOH estimation is estimating dOCVdt𝑑𝑂𝐶𝑉𝑑𝑡\frac{dOCV}{dt}divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG. When the current is constant and when the capacitor in the ECM reaches a steady state, the terminal voltage can be calculated by:

Uter=OCV+I(R1+R2)subscript𝑈𝑡𝑒𝑟𝑂𝐶𝑉𝐼subscript𝑅1subscript𝑅2U_{ter}=OCV+I(R_{1}+R_{2})italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT = italic_O italic_C italic_V + italic_I ( italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) (13)

As a result, for the derivative of terminal voltage dUterdt𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡\frac{dU_{ter}}{dt}divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG, we have:

dUterdt=dOCVdt+IdSOCdt(dR1dSOC+dR2dSOC)𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡𝑑𝑂𝐶𝑉𝑑𝑡𝐼𝑑𝑆𝑂𝐶𝑑𝑡𝑑subscript𝑅1𝑑𝑆𝑂𝐶𝑑subscript𝑅2𝑑𝑆𝑂𝐶\frac{dU_{ter}}{dt}=\frac{dOCV}{dt}+I\frac{dSOC}{dt}(\frac{dR_{1}}{dSOC}+\frac% {dR_{2}}{dSOC})divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG = divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG + italic_I divide start_ARG italic_d italic_S italic_O italic_C end_ARG start_ARG italic_d italic_t end_ARG ( divide start_ARG italic_d italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG + divide start_ARG italic_d italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG ) (14)

Both dOCVdt𝑑𝑂𝐶𝑉𝑑𝑡\frac{dOCV}{dt}divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG and dSOCdt𝑑𝑆𝑂𝐶𝑑𝑡\frac{dSOC}{dt}divide start_ARG italic_d italic_S italic_O italic_C end_ARG start_ARG italic_d italic_t end_ARG are proportional to I𝐼Iitalic_I. Therefore, when the current is small, we can neglect the final part in (14) since it is proportional to I2superscript𝐼2I^{2}italic_I start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT, and (14) becomes:

dUterdtdOCVdt𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡𝑑𝑂𝐶𝑉𝑑𝑡\frac{dU_{ter}}{dt}\approx\frac{dOCV}{dt}divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG ≈ divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG (15)

(15) points out that dUterdt𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡\frac{dU_{ter}}{dt}divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG, which can be easily calculated through linear regression, can be used to approximate dOCVdt𝑑𝑂𝐶𝑉𝑑𝑡\frac{dOCV}{dt}divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG when the current is low. One thing to note is that dUterdt𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡\frac{dU_{ter}}{dt}divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG is related to SOC. So, to ensure the SOC is the same as the SOC in parameter estimation, the voltage data right before the relaxation is used to do the regression analysis and determine dUterdt𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡\frac{dU_{ter}}{dt}divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG and OCVdt𝑂𝐶𝑉𝑑𝑡\frac{OCV}{dt}divide start_ARG italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG.

Besides constant-current(CC) charging, our algorithm can also be implemented during constant-voltage (CV) charging. In this case, noticing that dUterdt=0𝑑subscript𝑈𝑡𝑒𝑟𝑑𝑡0\frac{dU_{ter}}{dt}=0divide start_ARG italic_d italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_t end_ARG = 0, the derivative of (13) is

dOCVdt+dIdt(R1+R2)+IdSOCdt(dR1dSOC+dR2dSOC)=0𝑑𝑂𝐶𝑉𝑑𝑡𝑑𝐼𝑑𝑡subscript𝑅1subscript𝑅2𝐼𝑑𝑆𝑂𝐶𝑑𝑡𝑑subscript𝑅1𝑑𝑆𝑂𝐶𝑑subscript𝑅2𝑑𝑆𝑂𝐶0\frac{dOCV}{dt}+\frac{dI}{dt}(R_{1}+R_{2})+I\frac{dSOC}{dt}(\frac{dR_{1}}{dSOC% }+\frac{dR_{2}}{dSOC})=0divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG + divide start_ARG italic_d italic_I end_ARG start_ARG italic_d italic_t end_ARG ( italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) + italic_I divide start_ARG italic_d italic_S italic_O italic_C end_ARG start_ARG italic_d italic_t end_ARG ( divide start_ARG italic_d italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG + divide start_ARG italic_d italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG ) = 0 (16)

Since the current during the CV charging is usually small, we can neglect the final part in (16) since it is proportional to I2superscript𝐼2I^{2}italic_I start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT, and (16) becomes:

dOCVdt+dIdt(R1+R2)0𝑑𝑂𝐶𝑉𝑑𝑡𝑑𝐼𝑑𝑡subscript𝑅1subscript𝑅20\frac{dOCV}{dt}+\frac{dI}{dt}(R_{1}+R_{2})\approx 0divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG + divide start_ARG italic_d italic_I end_ARG start_ARG italic_d italic_t end_ARG ( italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) ≈ 0 (17)

Since R1subscript𝑅1R_{1}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and R2subscript𝑅2R_{2}italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT can be estimated by using (10) and (12), the value of dOCVdt𝑑𝑂𝐶𝑉𝑑𝑡\frac{dOCV}{dt}divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_t end_ARG during the constant-voltage charge can be easily estimated by using (17).

Once dtdOCV𝑑𝑡𝑑𝑂𝐶𝑉\frac{dt}{dOCV}divide start_ARG italic_d italic_t end_ARG start_ARG italic_d italic_O italic_C italic_V end_ARG and OCV are estimated, the SOC and SOH can be calculated by using (4) and (5). Namely, as shown in (18), the SOH is initially set to 100%, and (4) is used to solve the value of SOC. Next, the value of SOC is substituted into (5) to update the SOH. Afterward, the two processes described above are repeated until both estimations converge.

{SOH0=1SOCk=f1(OCV,SOHk,T)SOHk+1=IQ0OCVSOCdtdOCVcases𝑆𝑂subscript𝐻01otherwise𝑆𝑂subscript𝐶𝑘superscript𝑓1𝑂𝐶𝑉𝑆𝑂subscript𝐻𝑘𝑇otherwise𝑆𝑂subscript𝐻𝑘1𝐼subscript𝑄0𝑂𝐶𝑉𝑆𝑂𝐶𝑑𝑡𝑑𝑂𝐶𝑉otherwise\begin{cases}SOH_{0}=1\\ SOC_{k}=f^{-1}(OCV,SOH_{k},T)\\ SOH_{k+1}=\frac{I}{Q_{0}}\frac{\partial OCV}{\partial SOC}\frac{dt}{dOCV}\end{cases}{ start_ROW start_CELL italic_S italic_O italic_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = 1 end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_f start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT ( italic_O italic_C italic_V , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_T ) end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT = divide start_ARG italic_I end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG divide start_ARG italic_d italic_t end_ARG start_ARG italic_d italic_O italic_C italic_V end_ARG end_CELL start_CELL end_CELL end_ROW (18)

A flow chart of the entire SOC and SOH estimation scheme is presented in Figure 3(a). Note that the SOC in the output is the cell’s SOC in the first relaxation. Since SOC changes fast, another algorithm (such as coulomb counting) is usually needed to keep tracking the SOC afterward, and an example of such an algorithm will be detailed in Section 3.3. Generally, the proposed method only requires simple matrix operations and has no hyperparameter. The only special requirement for the charging profile is an extra two-minute relaxation during CC (or CV) charging.

However, when the current is high (above 0.5 C), the approximation in (15) would be no longer accurate since Id(R1+R2)dt𝐼𝑑subscript𝑅1subscript𝑅2𝑑𝑡I\frac{d(R_{1}+R_{2})}{dt}italic_I divide start_ARG italic_d ( italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) end_ARG start_ARG italic_d italic_t end_ARG will not be negligible. To address this problem, we proposed another variant of the SOC and SOH estimation method, which performs the parameter estimation a second time after the cell charges for a short while. While this will double the total relaxation time and calculation complexity, it can bring two benefits. First and foremost, by comparing the results from the first and second parameter estimation, we can know how much (R1+R2)𝑅1𝑅2(R1+R2)( italic_R 1 + italic_R 2 ) has changed during that short period and calculate d(R1+R2)/dt𝑑𝑅1𝑅2𝑑𝑡d(R1+R2)/dtitalic_d ( italic_R 1 + italic_R 2 ) / italic_d italic_t, which can help us better estimate dOCV𝑑𝑂𝐶𝑉dOCVitalic_d italic_O italic_C italic_V. The second benefit is that the estimation result can be more accurate if the estimation is done twice and averaged. A flow chart of the entire SOC and SOH estimation scheme with this extra dR𝑑𝑅dRitalic_d italic_R compensation is presented in Figure 3(b).

Refer to caption
Figure 3: A flow chart of the proposed SOC and SOH estimation method: (a) without dR𝑑𝑅dRitalic_d italic_R compensation (b) with dR𝑑𝑅dRitalic_d italic_R compensation

3.3 SOC tracking method

The method shown in Figure 3 outputs the SOC and SOH during the first relaxation period. The method can be repeated after several cycles to keep track of the SOH. As for the SOC, however, it changes very quickly during operation. As a result, it is necessary to propose a method to keep tracking the SOC after the SOC and SOH of the cell during the relaxation are estimated. Note that the current is the same for all the cells connected in series in a battery pack. Therefore, according to (2), the SOC of different cells has the following correlation:

ΔSOCj=ΔSOCi×SOHiSOHjΔ𝑆𝑂subscript𝐶𝑗Δ𝑆𝑂subscript𝐶𝑖𝑆𝑂subscript𝐻𝑖𝑆𝑂subscript𝐻𝑗\Delta SOC_{j}=\Delta SOC_{i}\times\frac{SOH_{i}}{SOH_{j}}roman_Δ italic_S italic_O italic_C start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT = roman_Δ italic_S italic_O italic_C start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT × divide start_ARG italic_S italic_O italic_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG start_ARG italic_S italic_O italic_H start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG (19)

where ΔSOCiΔ𝑆𝑂subscript𝐶𝑖\Delta SOC_{i}roman_Δ italic_S italic_O italic_C start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is the change of SOC of Cell i𝑖iitalic_i after the SOC and SOH estimation is done. According to (19), the SOC of each cell in the string can be calculated once the SOC of any single cell is estimated. Since the SOC tracking method here does not need to be repeated for every cell, it can be more complex, like a filter-based SOC estimation method.

In algorithm 1, an example of using an EKF for SOC tracking is provided. The method selects SOC and the capacitor voltage of Cell i𝑖iitalic_i (the reference cell) as the states of the system. Note that all the inputs of the algorithms come from the measurement data and the output of the SOC and SOH estimation algorithm presented in Figure 3.

Algorithm 1 SOC tracking algorithm based on extended Kalman filter

Inputs: 𝑺𝑶𝑪𝟎,𝑺𝑶𝑯,R1,R2,C,Ik,Uter,k,Tempk,tk𝑺𝑶subscript𝑪0𝑺𝑶𝑯subscript𝑅1subscript𝑅2𝐶subscript𝐼𝑘subscript𝑈𝑡𝑒𝑟𝑘𝑇𝑒𝑚subscript𝑝𝑘subscript𝑡𝑘\bm{SOC_{0}},\bm{SOH},R_{1},R_{2},C,I_{k},U_{ter,k},Temp_{k},t_{k}bold_italic_S bold_italic_O bold_italic_C start_POSTSUBSCRIPT bold_0 end_POSTSUBSCRIPT , bold_italic_S bold_italic_O bold_italic_H , italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_C , italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r , italic_k end_POSTSUBSCRIPT , italic_T italic_e italic_m italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT

k=0𝑘0k=0italic_k = 0
while the BMS is on do
     k=k+1𝑘𝑘1k=k+1italic_k = italic_k + 1
     Δt=tktk1Δ𝑡subscript𝑡𝑘subscript𝑡𝑘1\Delta t=t_{k}-t_{k-1}roman_Δ italic_t = italic_t start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_t start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT
     [SOCk(i)Uc,k]=[100eΔt/(R2C)][SOCk1(i)Uc,k1]matrix𝑆𝑂subscript𝐶𝑘𝑖subscript𝑈𝑐𝑘matrix100superscript𝑒Δ𝑡subscript𝑅2𝐶matrix𝑆𝑂subscript𝐶𝑘1𝑖subscript𝑈𝑐𝑘1\begin{bmatrix}SOC_{k}(i)\\ U_{c,k}\end{bmatrix}=\begin{bmatrix}1&0\\ 0&e^{-\Delta t/(R_{2}C)}\end{bmatrix}\begin{bmatrix}SOC_{k-1}(i)\\ U_{c,k-1}\end{bmatrix}[ start_ARG start_ROW start_CELL italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_i ) end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL italic_e start_POSTSUPERSCRIPT - roman_Δ italic_t / ( italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C ) end_POSTSUPERSCRIPT end_CELL end_ROW end_ARG ] [ start_ARG start_ROW start_CELL italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT ( italic_i ) end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k - 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] + [ΔtQ0SOHiR2(1eΔt/(R2C))]IkmatrixΔ𝑡subscript𝑄0𝑆𝑂subscript𝐻𝑖subscript𝑅21superscript𝑒Δ𝑡subscript𝑅2𝐶subscript𝐼𝑘\begin{bmatrix}\frac{\Delta t}{Q_{0}SOH_{i}}\\ R_{2}(1-e^{-\Delta t/(R_{2}C)})\end{bmatrix}I_{k}[ start_ARG start_ROW start_CELL divide start_ARG roman_Δ italic_t end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_S italic_O italic_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG end_CELL end_ROW start_ROW start_CELL italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( 1 - italic_e start_POSTSUPERSCRIPT - roman_Δ italic_t / ( italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C ) end_POSTSUPERSCRIPT ) end_CELL end_ROW end_ARG ] italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     Pk=[100e2Δt/(R2C)]Pk1+Qksubscript𝑃𝑘matrix100superscript𝑒2Δ𝑡subscript𝑅2𝐶subscript𝑃𝑘1subscript𝑄𝑘P_{k}=\begin{bmatrix}1&0\\ 0&e^{-2\Delta t/(R_{2}C)}\end{bmatrix}P_{k-1}+Q_{k}italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL italic_e start_POSTSUPERSCRIPT - 2 roman_Δ italic_t / ( italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C ) end_POSTSUPERSCRIPT end_CELL end_ROW end_ARG ] italic_P start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT + italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     yk=Uter,kOCV(SOCk(i),SOHi,Tempk)Uc,kR1Iksubscript𝑦𝑘subscript𝑈𝑡𝑒𝑟𝑘𝑂𝐶𝑉𝑆𝑂subscript𝐶𝑘𝑖𝑆𝑂subscript𝐻𝑖𝑇𝑒𝑚subscript𝑝𝑘subscript𝑈𝑐𝑘subscript𝑅1subscript𝐼𝑘y_{k}=U_{ter,k}-OCV(SOC_{k}(i),SOH_{i},Temp_{k})-U_{c,k}-R_{1}I_{k}italic_y start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r , italic_k end_POSTSUBSCRIPT - italic_O italic_C italic_V ( italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_i ) , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , italic_T italic_e italic_m italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) - italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT - italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     Hk=[OCVSOC|SOC=SOCk(i),Temp=Tempk1]subscript𝐻𝑘matrixevaluated-at𝑂𝐶𝑉𝑆𝑂𝐶formulae-sequence𝑆𝑂𝐶𝑆𝑂subscript𝐶𝑘𝑖𝑇𝑒𝑚𝑝𝑇𝑒𝑚subscript𝑝𝑘1H_{k}=\begin{bmatrix}\left.\dfrac{\partial OCV}{\partial SOC}\right|_{SOC=SOC_% {k}(i),Temp=Temp_{k}}&1\end{bmatrix}italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ start_ARG start_ROW start_CELL divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C = italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_i ) , italic_T italic_e italic_m italic_p = italic_T italic_e italic_m italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_CELL start_CELL 1 end_CELL end_ROW end_ARG ]
     Sk=HkPkHkT+Rksubscript𝑆𝑘subscript𝐻𝑘subscript𝑃𝑘superscriptsubscript𝐻𝑘𝑇subscript𝑅𝑘S_{k}=H_{k}P_{k}H_{k}^{T}+R_{k}italic_S start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT + italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     Kk=PkHkTSk1subscript𝐾𝑘subscript𝑃𝑘superscriptsubscript𝐻𝑘𝑇superscriptsubscript𝑆𝑘1K_{k}=P_{k}H_{k}^{T}S_{k}^{-1}italic_K start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT italic_S start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT
     [SOCk(i)Uc,k]=[SOCk(i)Uc,k]+Kkykmatrix𝑆𝑂subscript𝐶𝑘𝑖subscript𝑈𝑐𝑘matrix𝑆𝑂subscript𝐶𝑘𝑖subscript𝑈𝑐𝑘subscript𝐾𝑘subscript𝑦𝑘\begin{bmatrix}SOC_{k}(i)\\ U_{c,k}\end{bmatrix}=\begin{bmatrix}SOC_{k}(i)\\ U_{c,k}\end{bmatrix}+K_{k}y_{k}[ start_ARG start_ROW start_CELL italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_i ) end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] = [ start_ARG start_ROW start_CELL italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_i ) end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] + italic_K start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_y start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     Pk=(IKkHk)Pksubscript𝑃𝑘𝐼subscript𝐾𝑘subscript𝐻𝑘subscript𝑃𝑘P_{k}=(I-K_{k}H_{k})P_{k}italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = ( italic_I - italic_K start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT
     for j=𝑗absentj=italic_j = 1 to N𝑁Nitalic_N do
         SOCk(j)=SOC0(j)+(SOCi,kSOC0(i))×SOHiSOHj𝑆𝑂subscript𝐶𝑘𝑗𝑆𝑂subscript𝐶0𝑗𝑆𝑂subscript𝐶𝑖𝑘𝑆𝑂subscript𝐶0𝑖𝑆𝑂subscript𝐻𝑖𝑆𝑂subscript𝐻𝑗SOC_{k}(j)=SOC_{0}(j)+(SOC_{i,k}-SOC_{0}(i))\times\frac{SOH_{i}}{SOH_{j}}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ( italic_j ) = italic_S italic_O italic_C start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_j ) + ( italic_S italic_O italic_C start_POSTSUBSCRIPT italic_i , italic_k end_POSTSUBSCRIPT - italic_S italic_O italic_C start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_i ) ) × divide start_ARG italic_S italic_O italic_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG start_ARG italic_S italic_O italic_H start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_ARG
     end for
     Output 𝑺𝑶𝑪𝒌𝑺𝑶subscript𝑪𝒌\bm{SOC_{k}}bold_italic_S bold_italic_O bold_italic_C start_POSTSUBSCRIPT bold_italic_k end_POSTSUBSCRIPT
end while
where N𝑁Nitalic_N is the total number of cells in the battery pack. i𝑖iitalic_i can be chosen arbitrarily. The algorithm inputs include the measured temperature, voltage, current, estimated SOC (during the relaxation), and estimated SOH of each cell. For Cell i𝑖iitalic_i (the reference cell), its estimated ECM parameters are also required as the inputs. The output is the SOC of each cell in the battery pack. Rksubscript𝑅𝑘R_{k}italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT and Qksubscript𝑄𝑘Q_{k}italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT are, respectively, the process noise covariance matrix and the measurement covariance matrix, and they can be determined based on the method presented in [35].

It is worth noting that, in algorithm 1, all the parameters in the ECM are considered to be constants, which is actually not true in reality. Nevertheless, the algorithm can still yield a satisfactory result if the possible parameter changes are considered part of the measurement and process noise. Additionally, it is easy to prove that when the sampling frequency is high enough (in which case the linearization of the output function in each step can be considered perfect), all the states in the model are observable, and the convergence is therefore guaranteed. By contrast, suppose that a model parameter (such as the internal resistance) is instead considered to be a time-varying third state. In that case, the system’s observability would depend on the input, and there may be no guarantee for convergence even if the sampling frequency is high enough. Therefore, only two states are included in the EKF.

4 Theoretical analysis

4.1 Sensitivity analysis

In section 3.1, when the three measurements y1,y2,y3subscript𝑦1subscript𝑦2subscript𝑦3y_{1},y_{2},y_{3}italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_y start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT are noisy, the estimation of the three ECM parameters R2,C,OCVsubscript𝑅2𝐶𝑂𝐶𝑉R_{2},C,OCVitalic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_C , italic_O italic_C italic_V can also be inaccurate. When such noise is small, the correlation between the error of measurement and the error of parameter estimation can be found by taking the derivative of the (11), which is

[dR2R2dCCdOCVOCV]=[x3ebx3x2ebx2a(A1+A2A3)x1ebx1x3ebx3a(A1+A2A3)x2ebx2x1ebx1a(A1+A2A3)(bx21)ebx2(bx31)ebx3ab(A1+A2A3)(bx31)ebx3(bx11)ebx1ab(A1+A2A3)(bx11)ebx1(bx21)ebx2ab(A1+A2A3)1OCVA2A1+A2A31OCVA3A1+A2A31OCVA1A1+A2A3][dy1dy2dy3]matrix𝑑subscript𝑅2subscript𝑅2𝑑𝐶𝐶𝑑𝑂𝐶𝑉𝑂𝐶𝑉matrixsubscript𝑥3superscript𝑒𝑏subscript𝑥3subscript𝑥2superscript𝑒𝑏subscript𝑥2𝑎subscript𝐴1subscript𝐴2subscript𝐴3subscript𝑥1superscript𝑒𝑏subscript𝑥1subscript𝑥3superscript𝑒𝑏subscript𝑥3𝑎subscript𝐴1subscript𝐴2subscript𝐴3subscript𝑥2superscript𝑒𝑏subscript𝑥2subscript𝑥1superscript𝑒𝑏subscript𝑥1𝑎subscript𝐴1subscript𝐴2subscript𝐴3𝑏subscript𝑥21superscript𝑒𝑏subscript𝑥2𝑏subscript𝑥31superscript𝑒𝑏subscript𝑥3𝑎𝑏subscript𝐴1subscript𝐴2subscript𝐴3𝑏subscript𝑥31superscript𝑒𝑏subscript𝑥3𝑏subscript𝑥11superscript𝑒𝑏subscript𝑥1𝑎𝑏subscript𝐴1subscript𝐴2subscript𝐴3𝑏subscript𝑥11superscript𝑒𝑏subscript𝑥1𝑏subscript𝑥21superscript𝑒𝑏subscript𝑥2𝑎𝑏subscript𝐴1subscript𝐴2subscript𝐴31𝑂𝐶𝑉subscript𝐴2subscript𝐴1subscript𝐴2subscript𝐴31𝑂𝐶𝑉subscript𝐴3subscript𝐴1subscript𝐴2subscript𝐴31𝑂𝐶𝑉subscript𝐴1subscript𝐴1subscript𝐴2subscript𝐴3matrix𝑑subscript𝑦1𝑑subscript𝑦2𝑑subscript𝑦3\scriptsize\begin{bmatrix}\frac{dR_{2}}{R_{2}}\\ \frac{dC}{C}\\ \frac{dOCV}{OCV}\end{bmatrix}=\begin{bmatrix}\frac{x_{3}e^{bx_{3}}-x_{2}e^{bx_% {2}}}{a(A_{1}+A_{2}-A_{3})}&\frac{x_{1}e^{bx_{1}}-x_{3}e^{bx_{3}}}{a(A_{1}+A_{% 2}-A_{3})}&\frac{x_{2}e^{bx_{2}}-x_{1}e^{bx_{1}}}{a(A_{1}+A_{2}-A_{3})}\\ \frac{(bx_{2}-1)e^{bx_{2}}-(bx_{3}-1)e^{bx_{3}}}{ab(A_{1}+A_{2}-A_{3})}&\frac{% (bx_{3}-1)e^{bx_{3}}-(bx_{1}-1)e^{bx_{1}}}{ab(A_{1}+A_{2}-A_{3})}&\frac{(bx_{1% }-1)e^{bx_{1}}-(bx_{2}-1)e^{bx_{2}}}{ab(A_{1}+A_{2}-A_{3})}\\ \frac{1}{OCV}\frac{A_{2}}{A_{1}+A_{2}-A_{3}}&\frac{1}{OCV}\frac{-A_{3}}{A_{1}+% A_{2}-A_{3}}&\frac{1}{OCV}\frac{A_{1}}{A_{1}+A_{2}-A_{3}}\end{bmatrix}\begin{% bmatrix}dy_{1}\\ dy_{2}\\ dy_{3}\end{bmatrix}[ start_ARG start_ROW start_CELL divide start_ARG italic_d italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG italic_d italic_C end_ARG start_ARG italic_C end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_O italic_C italic_V end_ARG end_CELL end_ROW end_ARG ] = [ start_ARG start_ROW start_CELL divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL start_CELL divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL start_CELL divide start_ARG italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG ( italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - ( italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a italic_b ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL start_CELL divide start_ARG ( italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - ( italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a italic_b ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL start_CELL divide start_ARG ( italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - ( italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - 1 ) italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG start_ARG italic_a italic_b ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) end_ARG end_CELL end_ROW start_ROW start_CELL divide start_ARG 1 end_ARG start_ARG italic_O italic_C italic_V end_ARG divide start_ARG italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG end_CELL start_CELL divide start_ARG 1 end_ARG start_ARG italic_O italic_C italic_V end_ARG divide start_ARG - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG end_CELL start_CELL divide start_ARG 1 end_ARG start_ARG italic_O italic_C italic_V end_ARG divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG end_CELL end_ROW end_ARG ] [ start_ARG start_ROW start_CELL italic_d italic_y start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_d italic_y start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_d italic_y start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] (20)

where a=R2I0𝑎subscript𝑅2subscript𝐼0a=R_{2}I_{0}italic_a = italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_I start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, b=1R2C<0𝑏1subscript𝑅2𝐶0b=-\frac{1}{R_{2}C}<0italic_b = - divide start_ARG 1 end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG < 0, A1=(x2x1)ex3x2R2Csubscript𝐴1subscript𝑥2subscript𝑥1superscript𝑒subscript𝑥3subscript𝑥2subscript𝑅2𝐶A_{1}=(x_{2}-x_{1})e^{\frac{x_{3}-x_{2}}{R_{2}C}}italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = ( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT, A2=(x3x2)ex1x2R2Csubscript𝐴2subscript𝑥3subscript𝑥2superscript𝑒subscript𝑥1subscript𝑥2subscript𝑅2𝐶A_{2}=(x_{3}-x_{2})e^{\frac{x_{1}-x_{2}}{R_{2}C}}italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT, and A3=x3x1subscript𝐴3subscript𝑥3subscript𝑥1A_{3}=x_{3}-x_{1}italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT.

Since the three measurements are done using the same voltmeter, we can assume that the variance of the three measurements are the same and are all equal to σy2superscriptsubscript𝜎𝑦2\sigma_{y}^{2}italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT. In this case, the covariance of the estimation of the three parameters are

σR22=(x3ebx3x2ebx2)2+(x1ebx1x3ebx3)2+(x2ebx2x1ebx1)2a2(A1+A2A3)2R22σy2superscriptsubscript𝜎subscript𝑅22superscriptsubscript𝑥3superscript𝑒𝑏subscript𝑥3subscript𝑥2superscript𝑒𝑏subscript𝑥22superscriptsubscript𝑥1superscript𝑒𝑏subscript𝑥1subscript𝑥3superscript𝑒𝑏subscript𝑥32superscriptsubscript𝑥2superscript𝑒𝑏subscript𝑥2subscript𝑥1superscript𝑒𝑏subscript𝑥12superscript𝑎2superscriptsubscript𝐴1subscript𝐴2subscript𝐴32superscriptsubscript𝑅22superscriptsubscript𝜎𝑦2\displaystyle\sigma_{R_{2}}^{2}=\frac{(x_{3}e^{bx_{3}}-x_{2}e^{bx_{2}})^{2}+(x% _{1}e^{bx_{1}}-x_{3}e^{bx_{3}})^{2}+(x_{2}e^{bx_{2}}-x_{1}e^{bx_{1}})^{2}}{a^{% 2}(A_{1}+A_{2}-A_{3})^{2}}R_{2}^{2}\sigma_{y}^{2}italic_σ start_POSTSUBSCRIPT italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = divide start_ARG ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG italic_a start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (21)
σC2=(b2ebx2b3ebx3)2+(b3ebx3b1ebx1)2+(b1ebx1b2ebx2)2a2b2(A1+A2A3)2C2σy2superscriptsubscript𝜎𝐶2superscriptsubscript𝑏2superscript𝑒𝑏subscript𝑥2subscript𝑏3superscript𝑒𝑏subscript𝑥32superscriptsubscript𝑏3superscript𝑒𝑏subscript𝑥3subscript𝑏1superscript𝑒𝑏subscript𝑥12superscriptsubscript𝑏1superscript𝑒𝑏subscript𝑥1subscript𝑏2superscript𝑒𝑏subscript𝑥22superscript𝑎2superscript𝑏2superscriptsubscript𝐴1subscript𝐴2subscript𝐴32superscript𝐶2superscriptsubscript𝜎𝑦2\displaystyle\sigma_{C}^{2}=\frac{(b_{2}e^{bx_{2}}-b_{3}e^{bx_{3}})^{2}+(b_{3}% e^{bx_{3}}-b_{1}e^{bx_{1}})^{2}+(b_{1}e^{bx_{1}}-b_{2}e^{bx_{2}})^{2}}{a^{2}b^% {2}(A_{1}+A_{2}-A_{3})^{2}}C^{2}\sigma_{y}^{2}italic_σ start_POSTSUBSCRIPT italic_C end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = divide start_ARG ( italic_b start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_b start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + ( italic_b start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT italic_b italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG italic_a start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_b start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (22)
σOCV2=A12+A22+A32(A1+A2A3)2σy2superscriptsubscript𝜎𝑂𝐶𝑉2superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32superscriptsubscript𝐴1subscript𝐴2subscript𝐴32superscriptsubscript𝜎𝑦2\displaystyle\sigma_{OCV}^{2}=\frac{A_{1}^{2}+A_{2}^{2}+A_{3}^{2}}{(A_{1}+A_{2% }-A_{3})^{2}}\sigma_{y}^{2}italic_σ start_POSTSUBSCRIPT italic_O italic_C italic_V end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (23)

where bi=bxi1,i=1,2,3formulae-sequencesubscript𝑏𝑖𝑏subscript𝑥𝑖1𝑖123b_{i}=bx_{i}-1,i=1,2,3italic_b start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = italic_b italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - 1 , italic_i = 1 , 2 , 3.

Since the final purpose of parameter estimation is to estimate the SOC and SOH, and only OCV is directly related to the SOC and SOH, it is only necessary to minimize the covariance of OCV estimation. In other words, if we define f(x1,x2,x3)=σOCV2/σy2𝑓subscript𝑥1subscript𝑥2subscript𝑥3superscriptsubscript𝜎𝑂𝐶𝑉2superscriptsubscript𝜎𝑦2f(x_{1},x_{2},x_{3})=\sigma_{OCV}^{2}/\sigma_{y}^{2}italic_f ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) = italic_σ start_POSTSUBSCRIPT italic_O italic_C italic_V end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT / italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT, the objective function of the optimization problem can be formulated as minx1,x2,x3fsubscriptsubscript𝑥1subscript𝑥2subscript𝑥3𝑓\displaystyle\min_{x_{1},x_{2},x_{3}}froman_min start_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_f. The following theorems are introduced to solve this optimization problem.

Theorem 2.

When x3x10subscript𝑥3subscript𝑥10x_{3}-x_{1}\to 0italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT → 0, f𝑓f\to\inftyitalic_f → ∞; when x3x2subscript𝑥3subscript𝑥2x_{3}-x_{2}\to\inftyitalic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT → ∞, f1𝑓1f\to 1italic_f → 1; when x2x1subscript𝑥2subscript𝑥1x_{2}-x_{1}\to\inftyitalic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT → ∞, f1+e2(x3x2)R2C(ex3x2R2C1)2𝑓1superscript𝑒2subscript𝑥3subscript𝑥2subscript𝑅2𝐶superscriptsuperscript𝑒subscript𝑥3subscript𝑥2subscript𝑅2𝐶12f\to\frac{1+e^{\frac{2(x_{3}-x_{2})}{R_{2}C}}}{(e^{\frac{x_{3}-x_{2}}{R_{2}C}}% -1)^{2}}italic_f → divide start_ARG 1 + italic_e start_POSTSUPERSCRIPT divide start_ARG 2 ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT - 1 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG.

Proof.

When x3x10subscript𝑥3subscript𝑥10x_{3}-x_{1}\to 0italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT → 0, both x2x1subscript𝑥2subscript𝑥1x_{2}-x_{1}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and x3x2subscript𝑥3subscript𝑥2x_{3}-x_{2}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT also 0absent0\to 0→ 0. So,

A1+A2A3=o(xd)subscript𝐴1subscript𝐴2subscript𝐴3𝑜subscript𝑥𝑑A_{1}+A_{2}-A_{3}=o(x_{d})italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = italic_o ( italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ) (24)

where xd=max(x2x1,x3x2)subscript𝑥𝑑subscript𝑥2subscript𝑥1subscript𝑥3subscript𝑥2x_{d}=\max(x_{2}-x_{1},x_{3}-x_{2})italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT = roman_max ( italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ). While

A12+A22+A32=O(xd2)superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32𝑂superscriptsubscript𝑥𝑑2A_{1}^{2}+A_{2}^{2}+A_{3}^{2}=O(x_{d}^{2})italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = italic_O ( italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) (25)

So,

f=A12+A22+A32(A1+A2A3)2=O(xd2)o(xd2)𝑓superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32superscriptsubscript𝐴1subscript𝐴2subscript𝐴32𝑂superscriptsubscript𝑥𝑑2𝑜superscriptsubscript𝑥𝑑2f=\frac{A_{1}^{2}+A_{2}^{2}+A_{3}^{2}}{(A_{1}+A_{2}-A_{3})^{2}}=\frac{O(x_{d}^% {2})}{o(x_{d}^{2})}\to\inftyitalic_f = divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG = divide start_ARG italic_O ( italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) end_ARG start_ARG italic_o ( italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) end_ARG → ∞ (26)

On the other hand, when x3x2subscript𝑥3subscript𝑥2x_{3}-x_{2}\to\inftyitalic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT → ∞, A1A3A2much-greater-thansubscript𝐴1subscript𝐴3much-greater-thansubscript𝐴2A_{1}\gg A_{3}\gg A_{2}italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≫ italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ≫ italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, so

f=A12+A22+A32(A1+A2A3)2A12A12=1𝑓superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32superscriptsubscript𝐴1subscript𝐴2subscript𝐴32superscriptsubscript𝐴12superscriptsubscript𝐴121f=\frac{A_{1}^{2}+A_{2}^{2}+A_{3}^{2}}{(A_{1}+A_{2}-A_{3})^{2}}\approx\frac{A_% {1}^{2}}{A_{1}^{2}}=1italic_f = divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG ≈ divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG = 1 (27)

Meanwhile, when x2x1subscript𝑥2subscript𝑥1x_{2}-x_{1}\to\inftyitalic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT → ∞, A1=ex3x2R2CA3>>A2subscript𝐴1superscript𝑒subscript𝑥3subscript𝑥2subscript𝑅2𝐶subscript𝐴3much-greater-thansubscript𝐴2A_{1}=e^{\frac{x_{3}-x_{2}}{R_{2}C}}A_{3}>>A_{2}italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT > > italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, so

f=A12+A22+A32(A1+A2A3)21+e2(x3x2)R2C(ex3x2R2C1)2𝑓superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32superscriptsubscript𝐴1subscript𝐴2subscript𝐴321superscript𝑒2subscript𝑥3subscript𝑥2subscript𝑅2𝐶superscriptsuperscript𝑒subscript𝑥3subscript𝑥2subscript𝑅2𝐶12f=\frac{A_{1}^{2}+A_{2}^{2}+A_{3}^{2}}{(A_{1}+A_{2}-A_{3})^{2}}\approx\frac{1+% e^{\frac{2(x_{3}-x_{2})}{R_{2}C}}}{(e^{\frac{x_{3}-x_{2}}{R_{2}C}}-1)^{2}}italic_f = divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG ≈ divide start_ARG 1 + italic_e start_POSTSUPERSCRIPT divide start_ARG 2 ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT - 1 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG (28)

Theorem 2 suggests that increasing the time interval between the second and third points can improve the algorithm’s noise tolerance. However, when the time interval is larger, the required relaxation time for the cell will be longer, which would cause more delay in the charging process. As a result, it is necessary to optimize the position of x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT when the total time interval is constrained. To address this issue, we have the following theorem.

Theorem 3.

When x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT are fixed, and x3x1R2Cmuch-less-thansubscript𝑥3subscript𝑥1subscript𝑅2𝐶x_{3}-x_{1}\ll R_{2}Citalic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≪ italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C, the minimum of σOCV2/σy2superscriptsubscript𝜎𝑂𝐶𝑉2superscriptsubscript𝜎𝑦2\sigma_{OCV}^{2}/\sigma_{y}^{2}italic_σ start_POSTSUBSCRIPT italic_O italic_C italic_V end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT / italic_σ start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT is obtained when x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG.

Proof.

When x3x1R2Cmuch-less-thansubscript𝑥3subscript𝑥1subscript𝑅2𝐶x_{3}-x_{1}\ll R_{2}Citalic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≪ italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C, x3x2subscript𝑥3subscript𝑥2x_{3}-x_{2}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT and x2x1subscript𝑥2subscript𝑥1x_{2}-x_{1}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT are also R2Cmuch-less-thanabsentsubscript𝑅2𝐶\ll R_{2}C≪ italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C, so

A1x2subscript𝐴1subscript𝑥2\displaystyle\frac{\partial A_{1}}{\partial x_{2}}divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG =12kx2+kx1+kx3+o(x3x1)absent12𝑘subscript𝑥2𝑘subscript𝑥1𝑘subscript𝑥3𝑜subscript𝑥3subscript𝑥1\displaystyle=1-2kx_{2}+kx_{1}+kx_{3}+o(x_{3}-x_{1})= 1 - 2 italic_k italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT + italic_k italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_k italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT + italic_o ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) (29)
A2x2subscript𝐴2subscript𝑥2\displaystyle\frac{\partial A_{2}}{\partial x_{2}}divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG =1+2kx2kx1kx3+o(x3x1)absent12𝑘subscript𝑥2𝑘subscript𝑥1𝑘subscript𝑥3𝑜subscript𝑥3subscript𝑥1\displaystyle=-1+2kx_{2}-kx_{1}-kx_{3}+o(x_{3}-x_{1})= - 1 + 2 italic_k italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_k italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_k italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT + italic_o ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) (30)
A3x2subscript𝐴3subscript𝑥2\displaystyle\frac{\partial A_{3}}{\partial x_{2}}divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG =0absent0\displaystyle=0= 0 (31)

As a result, A1x2+A2x2=o(x3x1)subscript𝐴1subscript𝑥2subscript𝐴2subscript𝑥2𝑜subscript𝑥3subscript𝑥1\frac{\partial A_{1}}{\partial x_{2}}+\frac{\partial A_{2}}{\partial x_{2}}=o(% x_{3}-x_{1})divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG + divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = italic_o ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ). When f𝑓fitalic_f is minimized, fx2=0𝑓subscript𝑥20\frac{\partial f}{\partial x_{2}}=0divide start_ARG ∂ italic_f end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = 0, so

(2A1A1x2+2A2A1x2)(A1+A2A3)2(A12+A22+A32)(A1x2+A2x2)=02subscript𝐴1subscript𝐴1subscript𝑥22subscript𝐴2subscript𝐴1subscript𝑥2subscript𝐴1subscript𝐴2subscript𝐴32superscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32subscript𝐴1subscript𝑥2subscript𝐴2subscript𝑥20(2A_{1}\frac{\partial A_{1}}{\partial x_{2}}+2A_{2}\frac{\partial A_{1}}{% \partial x_{2}})(A_{1}+A_{2}-A_{3})-2(A_{1}^{2}+A_{2}^{2}+A_{3}^{2})(\frac{% \partial A_{1}}{\partial x_{2}}+\frac{\partial A_{2}}{\partial x_{2}})=0( 2 italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG + 2 italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG ) ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) - 2 ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) ( divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG + divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG ) = 0 (32)

Substituting (29) and (30) into (32), we have:

A1x2(A1A2)(A1+A2A3)=o((x3x1)3)subscript𝐴1subscript𝑥2subscript𝐴1subscript𝐴2subscript𝐴1subscript𝐴2subscript𝐴3𝑜superscriptsubscript𝑥3subscript𝑥13\frac{\partial A_{1}}{\partial x_{2}}(A_{1}-A_{2})(A_{1}+A_{2}-A_{3})=o((x_{3}% -x_{1})^{3})divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) = italic_o ( ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT ) (33)

If 2x2x1+x312subscript𝑥2subscript𝑥1subscript𝑥31\frac{2x_{2}}{x_{1}+x_{3}}\neq 1divide start_ARG 2 italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG ≠ 1, then A1x2=O(1)subscript𝐴1subscript𝑥2𝑂1\frac{\partial A_{1}}{\partial x_{2}}=O(1)divide start_ARG ∂ italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = italic_O ( 1 ), A1A2=O(x3x1)subscript𝐴1subscript𝐴2𝑂subscript𝑥3subscript𝑥1A_{1}-A_{2}=O(x_{3}-x_{1})italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_O ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ), A1+A2A3=O(x3x1)subscript𝐴1subscript𝐴2subscript𝐴3𝑂subscript𝑥3subscript𝑥1A_{1}+A_{2}-A_{3}=O(x_{3}-x_{1})italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = italic_O ( italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ), and (33) cannot be satisfied. As a result, when fx2=0𝑓subscript𝑥20\frac{\partial f}{\partial x_{2}}=0divide start_ARG ∂ italic_f end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = 0, 2x2x1+x3=12subscript𝑥2subscript𝑥1subscript𝑥31\frac{2x_{2}}{x_{1}+x_{3}}=1divide start_ARG 2 italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG = 1 must be satisfied. Noticing that this is the only point where fx2=0𝑓subscript𝑥20\frac{\partial f}{\partial x_{2}}=0divide start_ARG ∂ italic_f end_ARG start_ARG ∂ italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = 0, f𝑓fitalic_f must either reach maximum or minimum. Since when x2=x1subscript𝑥2subscript𝑥1x_{2}=x_{1}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT or when x2=x3subscript𝑥2subscript𝑥3x_{2}=x_{3}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT, f=+𝑓f=+\inftyitalic_f = + ∞, we can conclude that f𝑓fitalic_f is minimized at x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG when x3x1subscript𝑥3subscript𝑥1x_{3}-x_{1}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT is small. ∎

While theorem 3 suggests that the optimal selection of x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT is x1+x32subscript𝑥1subscript𝑥32\frac{x_{1}+x_{3}}{2}divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG, such a conclusion is based on the assumption that x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT is small. To study if choosing x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG is still reasonable when x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT is large, in Figure 4, a comparison of the noise amplification rate is made between the two x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT selection schemes. The first scheme is to optimize x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT so that the noise amplification rate is the lowest, while the second scheme is to select x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT as x1+x32subscript𝑥1subscript𝑥32\frac{x_{1}+x_{3}}{2}divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG. It can be seen that the two curves always have little difference, meaning that selecting x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT as x1+x32subscript𝑥1subscript𝑥32\frac{x_{1}+x_{3}}{2}divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG can always give a good result.

Refer to caption
Figure 4: The noise amplification rate at different x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT (when x1=0subscript𝑥10x_{1}=0italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0), τ=R2C𝜏subscript𝑅2𝐶\tau=R_{2}Citalic_τ = italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C

In fact, selecting x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG also has another benefit: the function set (11) can have a closed-form solution and can be directly calculated by using (12). Meanwhile, if x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT is chosen arbitrarily, the parameter needs to be calculated using algorithms like gradient descent, which damages the algorithm’s simplicity. Considering all the above, x2subscript𝑥2x_{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT is selected as x1+x32subscript𝑥1subscript𝑥32\frac{x_{1}+x_{3}}{2}divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG in this paper.

Finally, it is necessary to study how f𝑓fitalic_f changes as x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT change. Regarding this, we provide the following theorem.

Theorem 4.

When x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG, a larger x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT or a smaller x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT can make f𝑓fitalic_f smaller.

Proof.

If we define xd=x3x2=x2x1subscript𝑥𝑑subscript𝑥3subscript𝑥2subscript𝑥2subscript𝑥1x_{d}=x_{3}-x_{2}=x_{2}-x_{1}italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, f𝑓fitalic_f would only be related to xdsubscript𝑥𝑑x_{d}italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT, and the theorem we are trying to prove becomes equivalent to dfdxd<0𝑑𝑓𝑑subscript𝑥𝑑0\frac{df}{dx_{d}}<0divide start_ARG italic_d italic_f end_ARG start_ARG italic_d italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG < 0. And we have

A1=xdexdR2C,A2=xdexdR2C,A3=2xdformulae-sequencesubscript𝐴1subscript𝑥𝑑superscript𝑒subscript𝑥𝑑subscript𝑅2𝐶formulae-sequencesubscript𝐴2subscript𝑥𝑑superscript𝑒subscript𝑥𝑑subscript𝑅2𝐶subscript𝐴32subscript𝑥𝑑A_{1}=x_{d}e^{\frac{x_{d}}{R_{2}C}},A_{2}=x_{d}e^{-\frac{x_{d}}{R_{2}C}},A_{3}% =2x_{d}italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT , italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT - divide start_ARG italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT , italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 2 italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT (34)

Therefore, if we define m=exdR2C>1𝑚superscript𝑒subscript𝑥𝑑subscript𝑅2𝐶1m=e^{\frac{x_{d}}{R_{2}C}}>1italic_m = italic_e start_POSTSUPERSCRIPT divide start_ARG italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT > 1, we have

f𝑓\displaystyle fitalic_f =A12+A22+A32(A1+A2A3)2absentsuperscriptsubscript𝐴12superscriptsubscript𝐴22superscriptsubscript𝐴32superscriptsubscript𝐴1subscript𝐴2subscript𝐴32\displaystyle=\frac{A_{1}^{2}+A_{2}^{2}+A_{3}^{2}}{(A_{1}+A_{2}-A_{3})^{2}}= divide start_ARG italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG start_ARG ( italic_A start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_A start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_A start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG
=m2+m2+4(m+m12)2absentsuperscript𝑚2superscript𝑚24superscript𝑚superscript𝑚122\displaystyle=\frac{m^{2}+m^{-2}+4}{(m+m^{-1}-2)^{2}}= divide start_ARG italic_m start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_m start_POSTSUPERSCRIPT - 2 end_POSTSUPERSCRIPT + 4 end_ARG start_ARG ( italic_m + italic_m start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT - 2 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG
=m4+4m2+1(m1)4absentsuperscript𝑚44superscript𝑚21superscript𝑚14\displaystyle=\frac{m^{4}+4m^{2}+1}{(m-1)^{4}}= divide start_ARG italic_m start_POSTSUPERSCRIPT 4 end_POSTSUPERSCRIPT + 4 italic_m start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + 1 end_ARG start_ARG ( italic_m - 1 ) start_POSTSUPERSCRIPT 4 end_POSTSUPERSCRIPT end_ARG

Consequently,

dfdm=8m316m4(m1)5<0𝑑𝑓𝑑𝑚8superscript𝑚316𝑚4superscript𝑚150\frac{df}{dm}=\frac{-8m^{3}-16m-4}{(m-1)^{5}}<0divide start_ARG italic_d italic_f end_ARG start_ARG italic_d italic_m end_ARG = divide start_ARG - 8 italic_m start_POSTSUPERSCRIPT 3 end_POSTSUPERSCRIPT - 16 italic_m - 4 end_ARG start_ARG ( italic_m - 1 ) start_POSTSUPERSCRIPT 5 end_POSTSUPERSCRIPT end_ARG < 0 (35)

Since dmdxd>0𝑑𝑚𝑑subscript𝑥𝑑0\frac{dm}{dx_{d}}>0divide start_ARG italic_d italic_m end_ARG start_ARG italic_d italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG > 0, it can be concluded that dfdxd<0𝑑𝑓𝑑subscript𝑥𝑑0\frac{df}{dx_{d}}<0divide start_ARG italic_d italic_f end_ARG start_ARG italic_d italic_x start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG < 0, which means that a larger x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT or a smaller x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT can make f𝑓fitalic_f smaller. ∎

4.2 Convergence analysis

In (18), an iterative method was proposed for SOC and SOH estimation. While the method can theoretically be applied at any time during the charging process, the estimation accuracy varies due to several factors. One of the most important ones is the convergence of the method. Since the OCV curve is a nonlinear function of SOC and SOH (for a constant temperature), the iterative process can converge more quickly in a specific SOC range. Therefore, to improve the estimation accuracy, it is necessary to analyze the convergence of the method and pick the best time to use it.

Suppose that the true SOC and SOH are respectively SOCtrue𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒SOC_{true}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT and SOHtrue𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒SOH_{true}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT, according to (18),

SOHtrue=IQ0dtdOCVOCVSOC|SOCtrue,SOHtrue𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒evaluated-at𝐼subscript𝑄0𝑑𝑡𝑑𝑂𝐶𝑉𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒SOH_{true}=\frac{I}{Q_{0}}\frac{dt}{dOCV}\left.\frac{\partial OCV}{\partial SOC% }\right|_{SOC_{true},SOH_{true}}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT = divide start_ARG italic_I end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG divide start_ARG italic_d italic_t end_ARG start_ARG italic_d italic_O italic_C italic_V end_ARG divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT (36)

The iteration process in (18) can therefore be written as

SOHk+1=g(SOHk)=SOHtrueOCVSOC|SOCk,SOHkOCVSOC|SOCtrue,SOHtrue𝑆𝑂subscript𝐻𝑘1𝑔𝑆𝑂subscript𝐻𝑘evaluated-at𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂subscript𝐶𝑘𝑆𝑂subscript𝐻𝑘evaluated-at𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒SOH_{k+1}=g(SOH_{k})=\frac{SOH_{true}\left.\frac{\partial OCV}{\partial SOC}% \right|_{SOC_{k},SOH_{k}}}{\left.\frac{\partial OCV}{\partial SOC}\right|_{SOC% _{true},SOH_{true}}}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT = italic_g ( italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ) = divide start_ARG italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG start_ARG divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG (37)

We define the iteration to be locally convergent at A=(SOCtrue,SOHtrue)𝐴𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒A=(SOC_{true},SOH_{true})italic_A = ( italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT ) when there exists a neighborhood of A𝐴Aitalic_A, and the iterative method will converge to A𝐴Aitalic_A when the initial point is in the neighborhood. Suppose that the derivative of SOCk𝑆𝑂subscript𝐶𝑘SOC_{k}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT and dOCVdSOC𝑑𝑂𝐶𝑉𝑑𝑆𝑂𝐶\frac{dOCV}{dSOC}divide start_ARG italic_d italic_O italic_C italic_V end_ARG start_ARG italic_d italic_S italic_O italic_C end_ARG to SOHk𝑆𝑂subscript𝐻𝑘SOH_{k}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT are continuous in the domain, then the local convergence of the method can be judged by the derivative of g𝑔gitalic_g, which is defined in (38).

L=dgdSOH|SOCtrue,SOHtrue=SOHtrue2OCVSOC2SOCSOH+2OCVSOCSOHOCVSOC|SOCtrue,SOHtrue𝐿evaluated-at𝑑𝑔𝑑𝑆𝑂𝐻𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒evaluated-at𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒superscript2𝑂𝐶𝑉𝑆𝑂superscript𝐶2𝑆𝑂𝐶𝑆𝑂𝐻superscript2𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂𝐻𝑂𝐶𝑉𝑆𝑂𝐶𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒\footnotesize L=\left.\frac{dg}{dSOH}\right|_{SOC_{true},SOH_{true}}=SOH_{true% }\left.\frac{\frac{\partial^{2}OCV}{\partial SOC^{2}}\frac{\partial SOC}{% \partial SOH}+\frac{\partial^{2}OCV}{\partial SOC\partial SOH}}{\frac{\partial OCV% }{\partial SOC}}\right|_{SOC_{true},SOH_{true}}italic_L = divide start_ARG italic_d italic_g end_ARG start_ARG italic_d italic_S italic_O italic_H end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT = italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT divide start_ARG divide start_ARG ∂ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG divide start_ARG ∂ italic_S italic_O italic_C end_ARG start_ARG ∂ italic_S italic_O italic_H end_ARG + divide start_ARG ∂ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C ∂ italic_S italic_O italic_H end_ARG end_ARG start_ARG divide start_ARG ∂ italic_O italic_C italic_V end_ARG start_ARG ∂ italic_S italic_O italic_C end_ARG end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT (38)

where

SOCSOH|SOHtrue,SOCtrue=f1(OCV,SOH,T)SOH|SOHtrue,SOCtrueevaluated-at𝑆𝑂𝐶𝑆𝑂𝐻𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒evaluated-atsuperscript𝑓1𝑂𝐶𝑉𝑆𝑂𝐻𝑇𝑆𝑂𝐻𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒\left.\frac{\partial SOC}{\partial SOH}\right|_{SOH_{true},SOC_{true}}=\left.% \frac{\partial f^{-1}(OCV,SOH,T)}{\partial SOH}\right|_{SOH_{true},SOC_{true}}divide start_ARG ∂ italic_S italic_O italic_C end_ARG start_ARG ∂ italic_S italic_O italic_H end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT = divide start_ARG ∂ italic_f start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT ( italic_O italic_C italic_V , italic_S italic_O italic_H , italic_T ) end_ARG start_ARG ∂ italic_S italic_O italic_H end_ARG | start_POSTSUBSCRIPT italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT , italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT end_POSTSUBSCRIPT (39)

When |L|<1𝐿1|L|<1| italic_L | < 1, we can prove that the iteration is locally convergent, since |SOHk+1SOHtrue||SOHkSOHtrue|<|L|+ϵ<1𝑆𝑂subscript𝐻𝑘1𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑘𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝐿italic-ϵ1\frac{|SOH_{k+1}-SOH_{true}|}{|SOH_{k}-SOH_{true}|}<|L|+\epsilon<1divide start_ARG | italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT - italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT | end_ARG start_ARG | italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT | end_ARG < | italic_L | + italic_ϵ < 1. On the other hand, when L>1𝐿1L>1italic_L > 1, the method will not converge locally because in the neighborhood, |SOHk+1SOHtrue||SOHkSOHtrue|>|L|ϵ>1𝑆𝑂subscript𝐻𝑘1𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝑆𝑂subscript𝐻𝑘𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒𝐿italic-ϵ1\frac{|SOH_{k+1}-SOH_{true}|}{|SOH_{k}-SOH_{true}|}>|L|-\epsilon>1divide start_ARG | italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT - italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT | end_ARG start_ARG | italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT | end_ARG > | italic_L | - italic_ϵ > 1, and SOHk𝑆𝑂subscript𝐻𝑘SOH_{k}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT will finally move out of the neighborhood. The value of |L|𝐿|L|| italic_L | as a function of SOCtrue𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒SOC_{true}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT and SOHtrue𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒SOH_{true}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT is shown in Figure 5. In the figure, for better visualization, all the areas where |L|>1𝐿1|L|>1| italic_L | > 1 are rescaled to |L|=1𝐿1|L|=1| italic_L | = 1, and other areas represent the domain where the method is locally convergent.

Refer to caption
Figure 5: Local convergence analysis

The local convergence analysis can tell us what outputs are possible and what are not. For example, if the iterative method is used at 50% SOC𝑆𝑂𝐶SOCitalic_S italic_O italic_C, it will almost always give inaccurate results since it hardly ever converges at 50% SOC, regardless of the true SOH. However, local convergence analysis alone is not enough to evaluate the estimation error since local convergence doesn’t guarantee global convergence, and not converging at a certain point doesn’t necessarily mean a high estimation error. To better evaluate the accuracy limit of the iterative method, another simulation was performed to analyze the correlation between SOCtrue𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒SOC_{true}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT and estimation accuracy. Namely, for each SOCtrue𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒SOC_{true}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT between 0% to 100%, we enumerate the values of SOHtrue𝑆𝑂subscript𝐻𝑡𝑟𝑢𝑒SOH_{true}italic_S italic_O italic_H start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT from 80% to 100% and calculate the average estimation error (measured by root mean square error, or RMSE) when the iterative method is initialized at SOH0=100%𝑆𝑂subscript𝐻0percent100SOH_{0}=100\%italic_S italic_O italic_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = 100 %. The results are shown in Figure 6.

Refer to caption
Figure 6: Iteration error analysis

According to Figure 6, the accuracy of SOC estimation is always relatively high, as the maximum RMSE of SOC is only 0.5%. In contrast, the accuracy of SOH estimation varies more significantly to the SOCtrue𝑆𝑂subscript𝐶𝑡𝑟𝑢𝑒SOC_{true}italic_S italic_O italic_C start_POSTSUBSCRIPT italic_t italic_r italic_u italic_e end_POSTSUBSCRIPT when using the method. Since the error of SOC estimation can be higher in practice, the best timing to use our method is between 57% and 77% SOC, where both errors are very close to zero, meaning that the method can always converge to the correct values.

5 Experimental validation

5.1 Experimental validation setup

Six lithium-ion batteries of NMC chemistry (model ICR18650-22F) manufactured by SAMSUNG were placed inside six separate temperature control chambers and were used for experimental validation. The charging and discharging were monitored by the battery tester manufactured by Arbin Instruments. Data collection and the setup of charging and discharging profiles were done using the supporting software Mits Pro. The RMSEs of the voltage and current measurements are 0.15 mV and 0.1 mA, respectively. The testing profile for each cell was precisely the same and is shown in Figure 7.

Refer to caption
Figure 7: A flow chart of the aging test

As is shown in Figure 7, the cells were aged at 40C by running continuous 1 C charge and 2 C discharge until the SOH dropped below 75%. A set of characteristic tests was performed for each cell at at least nine different aging levels. Each characteristic test consisted of a capacity test (to stabilize the cell temperature), two OCV tests (incremental OCV test and low-current OCV test), and three incremental capacity tests at different C rates. All these characteristic tests were repeated at three different temperatures. The meanings of the two OCV tests have already been illustrated in section 2.2. The charge and discharge rates used in the low-current OCV test and incremental OCV test were both 0.1 C. The relaxation time in the incremental OCV test was 3 minutes, much shorter than the typical setup. The purpose of shortening the relaxation time is to make the OCV in the OCV experiment more consistent with the OCV identified from the battery ECM and, hence, to improve the SOC and SOH estimation accuracy. In the incremental capacity tests, the cells were fully charged and discharged at a constant current until the SOC dropped by 3%. Afterward, the cell rested for three minutes, followed by a 10-second 1 C discharge and another 3-minute rest. Then, the cell was discharged again, and the procedures described above were repeated until the cell was fully discharged. The cell then rested for 30 minutes and was charged using a constant current constant voltage profile afterward. Likewise, whenever the SOC rose by 5%, the cell rested for 3 minutes, was discharged for 10 seconds, and rested for another 3 minutes until the cell was fully charged. The purpose of such a charging and discharging profile was to enable the validation of our parameter estimation algorithm at the most desirable SOC.

According to the conclusions in Section 4.2, the best time to use the method is when the actual SOC is between 55% and 77%. However, in practice, the SOC is unknown before the state estimation, so the SOC is not a good indicator of when to use the method. Under this consideration, we used the terminal voltage as the indicator during validation instead. Namely, among more than twenty relaxations during the charging process in the incremental capacity test, the method is used when the terminal voltage at the beginning of the relaxation exceeds 3.9 V. This voltage threshold can guarantee that the SOC during this and the following relaxation are both between 55% and 77%, regardless of the SOH and the C rate.

According to theorem 4 and 3 in section 4.1, when estimating the ECM parameters, the optimal selection of the three points should be x1=0,x2=x3/2formulae-sequencesubscript𝑥10subscript𝑥2subscript𝑥32x_{1}=0,x_{2}=x_{3}/2italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0 , italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT / 2, and 50s<=x3<=absentsubscript𝑥3absent<=x_{3}<=< = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT < =120s (depending on the estimation accuracy). However, theorem 4 is based on the assumption that the ECM precisely describes the dynamic voltage response of the battery, which is, in fact, not true. In practice, it is found that the ECM model can only approximate the cell’s voltage response between 10s to 300s well. As a result, we instead selected x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT=10s, x2=x1+x32subscript𝑥2subscript𝑥1subscript𝑥32x_{2}=\frac{x_{1}+x_{3}}{2}italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG, and 60s<=x3<=absentsubscript𝑥3absent<=x_{3}<=< = italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT < =180s.

During the experimental validation, the OCV curve was fitted based on the voltage data in the incremental OCV test. Since the proposed SOC and SOH estimation method is used during the charging process, we only used the charge OCV data to fit the OCV curve, as the charge OCV curve is slightly different from the discharge OCV curve. After fitting the OCV curve, we validated our method on the experimental data in the three incremental capacity tests. Such a process was repeated at each temperature. As previously mentioned, when validating on a particular cell, the OCV data of this cell was excluded when fitting the OCV curve. For example, when estimating the SOC and SOH of Cell 3, the OCV curve we used was fitted on the data of Cells 1, 2, 4, 5, and 6. The reason for such an arrangement was to separate the fitting data and validation data.

5.2 Experimental results

When x3=subscript𝑥3absentx_{3}=italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT =120s, our method’s SOC and SOH estimation results with and without dR𝑑𝑅dRitalic_d italic_R compensation are shown in Figure 8. The average run time of these two variants is, respectively, 0.33 ms and 0.51 ms.

Refer to caption
Figure 8: SOC and SOH estimation errors of our method with and without dR𝑑𝑅dRitalic_d italic_R compensation (two-minute relaxation time)

According to the figure, the proposed method can realize fast and accurate SOC and SOH estimation under various temperatures and C rates. When the C rate is equal to or lower than 0.5 C, the variant without dR𝑑𝑅dRitalic_d italic_R compensation is enough for accurate estimation, with a SOC and SOH error of about 2% and 3.5%. Note that this variant only requires a relaxation of two minutes and a computational time of 0.33 ms. If the charging current is higher than 0.5 C or the requirement for estimation accuracy is higher, then using the variant with dR𝑑𝑅dRitalic_d italic_R compensation would be better. While this other variant is more complex, it still only needs a four-minute relaxation time and a computational time of 0.51 ms. This means that even if this variant is applied to an EV with 8,000 cells, the total computational time would still be lower than five seconds.

To verify the method’s sensitivity to the relaxation time (x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT), in Figure 9, the average SOC and SOH estimation error at different relaxation time and temperatures are plotted. The results show that the estimation error is not very sensitive to the relaxation time after it exceeds 60 seconds. The lowest error is achieved at x3=120subscript𝑥3120x_{3}=120italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 120s, suggesting that relaxing the cells for more than two minutes is unnecessary.

Refer to caption
Figure 9: Selection of the relaxation time (x3subscript𝑥3x_{3}italic_x start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT)

5.3 Comparison against Unscented Kalman Filter

Compared with other model-based methods (for example, EKF and UKF), the method proposed in this paper has significantly less computational complexity and needs no hyperparameter or initialization. However, it requires the cell to rest for one to four minutes during the charging process, while other model-based methods do not have such requirements. As a result, to better evaluate the pros and cons of the proposed method, it is necessary to make a quantitative comparison with other model-based methods in terms of their accuracy and computational complexity.

In this paper, the UKF algorithm was chosen as the baseline algorithm. While another KF-based method was used in Section 3.3 for SOC tracking, the purpose differed. In Section 3.3, EKF was only used to estimate the SOC of one cell for each battery string, under which circumstance all the states of the model are observable, and the convergence is guaranteed; but here, the UKF is used to estimate the SOC and SOH of each cell in the pack, and not the states are not always fully observable.

The UKF used in this paper has three states: remaining capacity Qrsubscript𝑄𝑟Q_{r}italic_Q start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, capacitor voltage Ucsubscript𝑈𝑐U_{c}italic_U start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT, and present maximum capacity Q𝑄Qitalic_Q. With these definitions, the discrete state-space representation of the system can be written as (40). The correlation between these states and the SOC and SOH is formulated in (1) and (3). We didn’t directly define SOC𝑆𝑂𝐶SOCitalic_S italic_O italic_C and SOH𝑆𝑂𝐻SOHitalic_S italic_O italic_H as the states to make the state transition functions linear.

{[Qr,kUc,kQk]=F[Qr,k1Uc,k1Qk1]+BIkUter,k=fOCV(Qr,kQk,QkQ0)+Uc,k+R1Ikcasesmatrixsubscript𝑄𝑟𝑘subscript𝑈𝑐𝑘subscript𝑄𝑘𝐹matrixsubscript𝑄𝑟𝑘1subscript𝑈𝑐𝑘1subscript𝑄𝑘1𝐵subscript𝐼𝑘otherwisesubscript𝑈𝑡𝑒𝑟𝑘subscript𝑓𝑂𝐶𝑉subscript𝑄𝑟𝑘subscript𝑄𝑘subscript𝑄𝑘subscript𝑄0subscript𝑈𝑐𝑘subscript𝑅1subscript𝐼𝑘otherwise\begin{cases}\begin{bmatrix}Q_{r,k}\\ U_{c,k}\\ Q_{k}\end{bmatrix}=F\begin{bmatrix}Q_{r,k-1}\\ U_{c,k-1}\\ Q_{k-1}\end{bmatrix}+BI_{k}\\ U_{ter,k}=f_{OCV}(\frac{Q_{r,k}}{Q_{k}},\frac{Q_{k}}{Q_{0}})+U_{c,k}+R_{1}I_{k% }\end{cases}{ start_ROW start_CELL [ start_ARG start_ROW start_CELL italic_Q start_POSTSUBSCRIPT italic_r , italic_k end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] = italic_F [ start_ARG start_ROW start_CELL italic_Q start_POSTSUBSCRIPT italic_r , italic_k - 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_c , italic_k - 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_Q start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] + italic_B italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_U start_POSTSUBSCRIPT italic_t italic_e italic_r , italic_k end_POSTSUBSCRIPT = italic_f start_POSTSUBSCRIPT italic_O italic_C italic_V end_POSTSUBSCRIPT ( divide start_ARG italic_Q start_POSTSUBSCRIPT italic_r , italic_k end_POSTSUBSCRIPT end_ARG start_ARG italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG , divide start_ARG italic_Q start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_ARG start_ARG italic_Q start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG ) + italic_U start_POSTSUBSCRIPT italic_c , italic_k end_POSTSUBSCRIPT + italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_CELL start_CELL end_CELL end_ROW (40)
F=[1000eΔtR2C0001],B=[ΔtR2R2eΔtR2C0]formulae-sequence𝐹matrix1000superscript𝑒Δ𝑡subscript𝑅2𝐶0001𝐵matrixΔ𝑡subscript𝑅2subscript𝑅2superscript𝑒Δ𝑡subscript𝑅2𝐶0F=\begin{bmatrix}1&0&0\\ 0&e^{\frac{-\Delta t}{R_{2}C}}&0\\ 0&0&1\end{bmatrix},B=\begin{bmatrix}\Delta t\\ R_{2}-R_{2}e^{\frac{-\Delta t}{R_{2}C}}\\ 0\end{bmatrix}italic_F = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL 0 end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL italic_e start_POSTSUPERSCRIPT divide start_ARG - roman_Δ italic_t end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 0 end_CELL start_CELL 1 end_CELL end_ROW end_ARG ] , italic_B = [ start_ARG start_ROW start_CELL roman_Δ italic_t end_CELL end_ROW start_ROW start_CELL italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT - italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_e start_POSTSUPERSCRIPT divide start_ARG - roman_Δ italic_t end_ARG start_ARG italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_C end_ARG end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARG ] (41)

where ΔtΔ𝑡\Delta troman_Δ italic_t is the time interval between two steps, and B and F are two constant matrices defined by (41).

The UKF was validated on the same data as our method (with dR𝑑𝑅dRitalic_d italic_R compensation) for a fair comparison. Specifically, the profile includes a three-minute relaxation, a 10-second 1 C discharge pulse, another 3-minute relaxation, a constant-current charging that increases the SOC by 5%, and another 3-minute relaxation. During the first relaxation, the UKF was not turned on, and the voltage data was used to estimate the values of all the ECM parameters. The parameter estimation method is the same as in Section 3.1. Starting from the discharge pulse, the UKF was turned on, with the initial SOH estimation set to 100%, the initial capacitor voltage set to 0, and the initial SOC set to be the inverse of the OCV during the first relaxation. The SOC and SOH estimation at the very end of the profile are considered estimation outputs and compared against the actual value to calculate the error. The detailed hyperparameter setup for this UKF is the same as in [35].

The SOC and SOH estimation results by using UKF are presented in Figure 10. The figure suggests that our method is hundreds of times faster than the UKF and is more accurate, especially for SOC estimation.

Refer to caption
Figure 10: Comparison between our method (average run time = 0.51 ms) and UKF (average run time = 73 ms)

5.4 Error analysis

While the SOC and SOH estimation error of the proposed method is relatively low, it is still essential to understand the source of the error, as understanding the error sources can help us better analyze the applicability and the pros and cons of the method. For this purpose, the validation was done another eighteen times, each time on a different setup. As is shown in the first column of Table 1, these extra validations can be separated into three groups according to the data source used in the validation. In the first group, all the validations were done on experimental data. In the second and third groups, only the current data were from the experiment, and all the voltage data came from a simulated battery model. The difference is that the battery model used in the second group is a second-order RC model, while the one used in the third group is a first-order RC model. In other words, only the model used in the third group is the same as the battery model we used when proposing the method. By default, when generating the voltage data, it is assumed that there is a voltage noise with a standard deviation of 0.15 mV (the same as the standard deviation of the voltmeter in the experiment), and all the RC parameters change as the SOC changes.

We started with the default setting for each data source and gradually added more simplifications. For example, in the fourth scenario, we not only used the simplification “Known SOC” but also applied the simplification “More relevant data” and “Fixed OCV curve”. In other words, in Table 1, within each group, the difficulty of the estimation becomes gradually lower from top to bottom. Specifically, for experimental data, “More relevant data” means that the OCV curve we used came from the same cell that we were validating on (note that by default, the OCV curve came from the data of all the other cells besides the cell that we were validating on); “Fixed OCV curve” means that we stopped updating the OCV curve as we updated the SOH estimation, and always used the OCV curve corresponding to the true SOH; “Known SOC” means that we assume that we used the actual SOC instead of the estimated SOC when estimating the SOH. For simulation data, “Known capacitor voltage” means that the actual value of the capacitor voltage before entering the relaxation, which was previously assumed to be R2Isubscript𝑅2𝐼R_{2}Iitalic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_I, is known; “No voltage noise” means that the measurement voltage noise is set to zero, “Fixed RC parameter” means that the RC parameters in the simulation become constants instead of variables that change as SOC changes; “More accurate dV/dt” means that fewer points (two points instead of fifty points) are used in the linear regression to fit dV/dt. The meaning of “Fixed OCV curve” and “Known SOC” for simulation data are the same as for experimental data.

Among all the scenarios in Table 1, the most unique one is “Coulomb Counting”. For this setup, we didn’t use our SOC and SOH estimation method; instead, we used Coulomb Counting. As previously mentioned, the “true” SOC and “true” SOH are also calculated based on Coulomb Counting in the experimental validation. The difference is that our definition of SOH is the cell’s normalized charge capacity in the 0.1 C incremental OCV test. Yet, here, the SOH was estimated by the normalized charge capacity in the corresponding incremental capacity test, in which the charge current is not 0.1 C. For example, when the charge current is 0.1 C, the initial capacity of Cell 1 is 2.156 Ah, which decreases to 1.775 Ah after 900 cycles, resulting in an SOH of 82.3%. Meanwhile, when the maximum charge current is 1 C, the initial capacity of Cell 1 is 2.079 Ah, which decreases to 1.627 Ah after 900 cycles, resulting in an SOH of 78.3%. Such a 4% difference in SOH suggests that SOH is not a definite state of the battery, and its value can change under different conditions. The RMSE of the SOH estimation is used to quantify this uncertainty originating from the definition of SOH itself. Likewise, when we calculate the SOC based on the charge and discharge capacity calculated from the 0.1 C OCV test, the SOC at the end of the charging may not be precisely 100% since the cell’s capacity varies slightly at different C rates. The RMSE of the SOC estimation is calculated from the difference between the final calculated SOC and 100% and is used to quantify the uncertainty originating from the definition of SOC. In essence, the error of Coulomb Counting can be considered the lower limit of the SOC and SOH estimation error when using experimental data since such an error comes from the definition of SOC and SOH and is impossible to avoid.

The SOC and SOH estimation errors in all these extra validations are presented in Table 1. Note that all the validations here were based on the data gathered at 25 C, and we always added dR𝑑𝑅dRitalic_d italic_R compensation when doing the estimation.

Table 1: RMSE of SOC and SOH estimation under different scenarios
Data Source Scenarios 0.2 C 0.5 C 1 C
SOC SOH SOC SOH SOC SOH
Experimental Data Default 1.24% 1.83% 1.65% 2.50% 1.46% 4.24%
More relevant data 1.24% 1.84% 1.69% 2.55% 1.57% 4.23%
Fixed OCV curve 0.62% 2.31% 1.35% 2.84% 1.88% 4.44%
Known SOC 0.62% 2.33% 1.35% 2.79% 1.88% 4.85%
Coulomb Counting 0.20% 0.68% 0.77% 1.79% 0.38% 2.06%
2RC Model Simulation Default 0.78% 2.92% 0.89% 7.50% 1.40% 11.72%
Known capacitor voltage 1.29% 2.27% 2.37% 4.18% 3.70% 6.89%
No voltage noise 1.14% 1.71% 2.55% 3.88% 3.74% 6.94%
Fixed RC parameters 0.35% 0.52% 1.15% 0.81% 3.14% 3.39%
More accurate dV/dt 0.35% 0.52% 1.14% 0.77% 3.12% 3.32%
Fixed OCV curve 0.31% 0.14% 0.93% 0.42% 2.22% 2.39%
Known SOC 0.31% 0.08% 0.93% 0.09% 2.22% 0.20%
1RC Model Simulation Default 0.72% 2.57% 1.24% 6.11% 2.12% 11.41%
Known Capacitor Voltage 1.05% 2.40% 1.44% 2.44% 1.26% 4.28%
No voltage noise 0.85% 1.13% 1.40% 1.80% 1.20% 3.93%
Fixed RC parameters 0.10% 0.50% 0.16% 0.62% 0.53% 1.25%
More accurate dV/dt 0.11% 0.51% 0.17% 0.62% 0.47% 1.10%
Fixed OCV curve 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%
Known SOC 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%

Interestingly, when using our method on experimental data, no simplification can effectively improve the accuracy of the SOH estimated by our method, and only the “Fixed OCV curve” can marginally improve the accuracy of the SOC estimated by our method. Such a phenomenon suggests that all the error sources we examined in the first validation group are unimportant. According to the results in the second and third groups of validations, the critical error sources of our method are (1) our assumption that the capacitor has been fully charged before the start of the relaxation and (2) our linear approximation of R1(SOC)subscript𝑅1𝑆𝑂𝐶R_{1}(SOC)italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_S italic_O italic_C ) and R2(SOC)subscript𝑅2𝑆𝑂𝐶R_{2}(SOC)italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_S italic_O italic_C ). The second error source is very hard to avoid since estimating R1subscript𝑅1R_{1}italic_R start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and R2subscript𝑅2R_{2}italic_R start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT in real-time is very hard. Yet, the first error source can be mitigated by prolonging the constant-current charging time before the relaxation. In the experiment, the length of constant-current charging is set to the time required to increase the SOC by 5%. Therefore, when the charge C rate is 1 C, the constant-current charging time is just 3 minutes, which is insufficient for the capacitor to charge fully. Such a difference in the length of constant-current charging explains why this error source affects higher C rates more than lower C rates. The estimation accuracy is expected to increase if we prolong the constant-current charging time.

Additionally, by comparing the corresponding scenarios in the second and third data sources, we can see that the estimation accuracy for these two data sources is, in fact, quite similar, even though the first-order RC model used in the parameter estimation only matches the third data source well. Such an observation suggests that although a more complex battery model can better simulate the voltage data, the simple first-order RC model will not necessarily lead to a higher SOC and SOH estimation error. Other error sources can dilute the benefit of a more complex model, and identifying more parameters also leads to weaker observability and longer computational time.

6 Conclusions

In this paper, an online battery SOC and SOH estimation method was proposed. The method is based on rigorous theoretical analysis and requires no hyperparameter fine-tuning. The method has two variants. The first variant is designed for low C-rate (\leq0.5 C) charging and only requires a 1 to 2-minute relaxation, while the second can be used for higher C rates but requires a 2 to 4-minute relaxation during the charging process. Both variants can accurately estimate SOC and SOH at different temperatures. Specifically, the average computational time of the first variant is 0.33 ms, and the estimation RMSE for SOC and SOH are respectively around 1.2% and 4.8%. In comparison, the average computational time of the second variant is 0.51 ms, and the estimation RMSE for SOC and SOH are respectively around 1.5% and 3%. Compared with UKF, our method requires significantly lower computational time and has higher accuracy.

The main limitations of the work are that the proposed method requires a few minutes of relaxation at some specific SOC range (between 55% and 77%) and that the charging current cannot be too high (>1absent1>1> 1 C) for accurate state estimation. Future work will focus on extending the method to a broader SOC range and fast-charging scenarios.

References

  • [1] X. Hu, C. Zou, C. Zhang, Y. Li, Technological developments in batteries: a survey of principal roles, types, and management needs, IEEE Power and Energy Magazine 15 (5) (2017) 20–31.
  • [2] J. Hou, T. Li, F. Zhou, D. Zhao, Y. Zhong, L. Yao, L. Zeng, A review of critical state joint estimation methods of lithium-ion batteries in electric vehicles, World Electric Vehicle Journal 13 (9) (2022) 159.
  • [3] Y. Li, K. Liu, A. M. Foley, A. Zülke, M. Berecibar, E. Nanini-Maury, J. Van Mierlo, H. E. Hoster, Data-driven health estimation and lifetime prediction of lithium-ion batteries: A review, Renewable and sustainable energy reviews 113 (2019) 109254.
  • [4] L. Ungurean, G. Cârstoiu, M. V. Micea, V. Groza, Battery state of health estimation: a structured review of models, methods and commercial devices, International Journal of Energy Research 41 (2) (2017) 151–181.
  • [5] S. Jiang, Z. Song, A review on the state of health estimation methods of lead-acid batteries, Journal of Power Sources 517 (2022) 230710.
  • [6] S. Zhang, X. Guo, X. Dou, X. Zhang, A rapid online calculation method for state of health of lithium-ion battery based on coulomb counting method and differential voltage analysis, Journal of Power Sources 479 (2020) 228740.
  • [7] M. Berecibar, M. Garmendia, I. Gandiaga, J. Crego, I. Villarreal, State of health estimation algorithm of lifepo4 battery packs based on differential voltage curves for battery management system application, Energy 103 (2016) 784–796.
  • [8] L. Zheng, J. Zhu, D. D.-C. Lu, G. Wang, T. He, Incremental capacity analysis and differential voltage analysis based state of charge and capacity estimation for lithium-ion batteries, Energy 150 (2018) 759–769.
  • [9] S. Yang, C. Zhang, J. Jiang, W. Zhang, L. Zhang, Y. Wang, Review on state-of-health of lithium-ion batteries: Characterizations, estimations and applications, Journal of Cleaner Production 314 (2021) 128015.
  • [10] R. Xiong, L. Li, J. Tian, Towards a smarter battery management system: A critical review on battery state of health monitoring methods, Journal of Power Sources 405 (2018) 18–29.
  • [11] A. Manoharan, K. Begam, V. R. Aparow, D. Sooriamoorthy, Artificial neural networks, gradient boosting and support vector machines for electric vehicle battery state estimation: A review, Journal of Energy Storage 55 (2022) 105384.
  • [12] J. Shi, D. Kato, S. Jiang, C. Dangwal, S. Moura, Robust estimation of state of charge in lithium iron phosphate cells enabled by online parameter estimation and deep neural networks, IFAC-PapersOnLine 56 (3) (2023) 127–132.
  • [13] X. Shu, G. Li, J. Shen, Z. Lei, Z. Chen, Y. Liu, An adaptive multi-state estimation algorithm for lithium-ion batteries incorporating temperature compensation, Energy 207 (2020) 118262.
  • [14] P. Shen, M. Ouyang, L. Lu, J. Li, X. Feng, The co-estimation of state of charge, state of health, and state of function for lithium-ion batteries in electric vehicles, IEEE Transactions on vehicular technology 67 (1) (2017) 92–103.
  • [15] C. Yang, X. Wang, Q. Fang, H. Dai, Y. Cao, X. Wei, An online soc and capacity estimation method for aged lithium-ion battery pack considering cell inconsistency, Journal of Energy Storage 29 (2020) 101250.
  • [16] S. Park, J. Ahn, T. Kang, S. Park, Y. Kim, I. Cho, J. Kim, Review of state-of-the-art battery state estimation technologies for battery management systems of stationary energy storage systems, Journal of Power Electronics 20 (6) (2020) 1526–1540.
  • [17] Y. Xing, W. He, M. Pecht, K. L. Tsui, State of charge estimation of lithium-ion batteries using the open-circuit voltage at various ambient temperatures, Applied Energy 113 (2014) 106–115.
  • [18] R. Zhang, B. Xia, B. Li, L. Cao, Y. Lai, W. Zheng, H. Wang, W. Wang, M. Wang, A study on the open circuit voltage and state of charge characterization of high capacity lithium-ion battery under different temperature, Energies 11 (9) (2018) 2408.
  • [19] S.-L. Wang, X. Xiong, C.-Y. Zou, L. Chen, C. Jiang, Y.-X. Xie, D.-I. Stroe, An improved coulomb counting method based on dual open-circuit voltage and real-time evaluation of battery dischargeable capacity considering temperature and battery aging, International Journal of Energy Research 45 (12) (2021) 17609–17621.
  • [20] L. Lavigne, J. Sabatier, J. M. Francisco, F. Guillemard, A. Noury, Lithium-ion open circuit voltage (ocv) curve modelling and its ageing adjustment, Journal of Power Sources 324 (2016) 694–703.
  • [21] C. R. Birkl, M. R. Roberts, E. McTurk, P. G. Bruce, D. A. Howey, Degradation diagnostics for lithium ion cells, Journal of Power Sources 341 (2017) 373–386.
  • [22] C. Weng, J. Sun, H. Peng, A unified open-circuit-voltage model of lithium-ion batteries for state-of-charge estimation and state-of-health monitoring, Journal of power Sources 258 (2014) 228–237.
  • [23] S. Tong, M. P. Klein, J. W. Park, On-line optimization of battery open circuit voltage for improved state-of-charge and state-of-health estimation, Journal of Power Sources 293 (2015) 416–428.
  • [24] Z. Ma, R. Yang, Z. Wang, A novel data-model fusion state-of-health estimation approach for lithium-ion batteries, Applied energy 237 (2019) 836–847.
  • [25] D. Natella, S. Onori, F. Vasca, A co-estimation framework for state of charge and parameters of lithium-ion battery with robustness to aging and usage conditions, IEEE Transactions on Industrial Electronics 70 (6) (2022) 5760–5770.
  • [26] M. Naguib, P. Kollmeyer, A. Emadi, Lithium-ion battery pack robust state of charge estimation, cell inconsistency, and balancing, IEEE Access 9 (2021) 50570–50582.
  • [27] Z. Zhou, B. Duan, Y. Kang, N. Cui, Y. Shang, C. Zhang, A low-complexity state of charge estimation method for series-connected lithium-ion battery pack used in electric vehicles, Journal of Power Sources 441 (2019) 226972.
  • [28] D. Huang, Z. Chen, C. Zheng, H. Li, A model-based state-of-charge estimation method for series-connected lithium-ion battery pack considering fast-varying cell temperature, Energy 185 (2019) 847–861.
  • [29] J. Wei, G. Dong, Z. Chen, Y. Kang, System state estimation and optimal energy control framework for multicell lithium-ion battery system, Applied Energy 187 (2017) 37–49.
  • [30] P. Gill, D. Zhang, L. D. Couto, C. Dangwal, S. Benjamin, W. Zeng, S. Moura, State-of-health estimation pipeline for li-ion battery packs with heterogeneous cells, in: 2022 American Control Conference (ACC), IEEE, 2022, pp. 1080–1086.
  • [31] G. L. Plett, Extended kalman filtering for battery management systems of lipb-based hev battery packs: Part 3. state and parameter estimation, Journal of Power sources 134 (2) (2004) 277–292.
  • [32] Q.-Q. Yu, R. Xiong, L.-Y. Wang, C. Lin, A comparative study on open circuit voltage models for lithium-ion batteries, Chinese Journal of Mechanical Engineering 31 (1) (2018) 1–8.
  • [33] F. Zheng, Y. Xing, J. Jiang, B. Sun, J. Kim, M. Pecht, Influence of different open circuit voltage tests on state of charge online estimation for lithium-ion batteries, Applied energy 183 (2016) 513–525.
  • [34] C. Lin, Q. Yu, R. Xiong, et al., A study on the impact of open circuit voltage tests on state of charge estimation for lithium-ion batteries, Applied Energy 205 (2017) 892–902.
  • [35] S. Jiang, J. Shi, M. Borah, S. Moura, Weaknesses and improvements of the extended kalman filter for battery state-of-charge and state-of-health estimation, in: 2024 American Control Conference (ACC), IEEE, 2024, pp. 1441–1448.