In the realm of modern energy systems, the battery energy storage system (BESS) has emerged as a cornerstone technology, enabling grid stability, renewable energy integration, and peak shaving. Among various battery chemistries, lithium-ion batteries are predominantly deployed in BESS due to their high energy density, long cycle life, and decreasing costs. A critical parameter for the safe and efficient operation of any battery energy storage system is the state of charge (SOC), which represents the remaining capacity as a percentage of the total capacity. Accurate SOC estimation is paramount for battery management systems (BMS) to prevent overcharge or over-discharge, optimize charging strategies, and extend battery lifespan. However, SOC estimation is inherently challenging due to the nonlinear, time-varying dynamics of batteries influenced by factors such as temperature, aging, and operating conditions. Traditional methods, including open-circuit voltage (OCV) and coulomb counting, suffer from limitations like long rest periods or error accumulation. Model-based approaches like Kalman filters require precise electrochemical models, which are complex to derive and calibrate. In recent years, data-driven machine learning techniques have shown promise in directly mapping measurable signals to SOC without explicit models. This article presents a novel approach for online SOC estimation in battery energy storage systems using a recurrent neural network (RNN) enhanced with voltage increment features, termed Vi-RNN. By incorporating temporal dependencies and battery internal dynamics through voltage increments, the proposed method achieves higher accuracy compared to existing algorithms, as validated through experimental data from lithium-ion batteries under constant current conditions.
The importance of reliable SOC estimation cannot be overstated for battery energy storage systems. In grid-scale applications, inaccurate SOC can lead to inefficient energy dispatch, reduced system reliability, or even catastrophic failures. For instance, underestimating SOC may cause unnecessary charging cycles, wasting energy and degrading the battery, while overestimating SOC can result in deep discharge, damaging the cells. Therefore, developing robust, real-time SOC estimation methods is a active research area. Existing SOC estimation techniques can be broadly categorized into three groups: open-loop methods, state estimation methods, and machine learning methods. Open-loop methods, such as coulomb counting and OCV, are simple but prone to errors. Coulomb counting integrates current over time but drifts due to measurement inaccuracies and unknown initial conditions. OCV relies on a known relationship between open-circuit voltage and SOC, but measuring OCV requires the battery to be at rest for hours, which is impractical for online operation. State estimation methods, like various Kalman filter variants, use battery models to estimate SOC as a state variable. These methods can correct errors through feedback but are sensitive to model inaccuracies and noise statistics. Machine learning methods, including artificial neural networks (ANNs), support vector machines (SVMs), and deep learning models, learn the complex mapping from inputs like voltage, current, and temperature to SOC directly from data. They are model-free and can adapt to different battery types, but their performance heavily depends on feature selection and training data quality.
In this work, I focus on enhancing machine learning-based SOC estimation for battery energy storage systems by introducing a novel input feature: the voltage increment. The voltage increment, defined as the change in terminal voltage over a fixed time interval, captures the internal dynamics of the battery without requiring explicit model parameters. This feature is inspired by the OCV-SOC relationship but avoids the need for rest periods. I combine this with a recurrent neural network, which is adept at handling sequential data due to its internal memory, to estimate SOC in real-time. The proposed Vi-RNN algorithm takes terminal voltage and voltage increment as inputs and outputs the SOC. Through experiments on lithium-ion batteries under 0.2C and 0.3C charge-discharge cycles, I demonstrate that Vi-RNN outperforms traditional methods like MEA-BP in terms of mean squared error and relative error. The integration of voltage increment significantly improves estimation accuracy, making it a promising solution for BESS applications.
To provide a comprehensive understanding, I will first review the fundamentals of SOC estimation and the challenges in battery energy storage systems. Then, I will detail the Vi-RNN methodology, including feature extraction and network architecture. Subsequently, I will describe the experimental setup and data collection. Results will be presented with tables and formulas, followed by a discussion of implications and future work. Throughout, the term “battery energy storage system” will be emphasized to highlight the application context.
Fundamentals of SOC Estimation in Battery Energy Storage Systems
The state of charge (SOC) of a battery is defined as the ratio of remaining capacity to the maximum available capacity, typically expressed as a percentage:
$$ \text{SOC}(t) = \frac{Q_{\text{rem}}(t)}{Q_{\text{max}}} \times 100\% $$
where \( Q_{\text{rem}}(t) \) is the remaining capacity at time \( t \), and \( Q_{\text{max}} \) is the maximum capacity of the battery. Accurate SOC estimation is essential for battery energy storage systems to ensure optimal performance and longevity. However, SOC cannot be measured directly; it must be inferred from measurable quantities like voltage, current, and temperature. The nonlinear behavior of batteries, influenced by electrochemical processes, makes this inference challenging.
Several factors affect SOC estimation in battery energy storage systems:
- Temperature: Battery capacity and internal resistance vary with temperature. Low temperatures reduce ion mobility, decreasing available capacity, while high temperatures can accelerate aging.
- Charge/Discharge Rate: The C-rate impacts the usable capacity due to polarization effects. Higher currents lead to voltage drops, affecting SOC readings.
- Battery Aging: Over time, batteries degrade, reducing \( Q_{\text{max}} \) and altering internal parameters. This necessitates adaptive estimation methods.
- Internal Dynamics: Batteries exhibit hysteresis, relaxation, and diffusion effects, which complicate the voltage-SOC relationship.
To model these dynamics, equivalent circuit models (ECMs) are often used. A common ECM is the Thevenin model, which includes an open-circuit voltage source, a series resistor, and an RC parallel network representing polarization:

In this model, the terminal voltage \( U_L \) is given by:
$$ U_L = OCV – I(R_0 + R_p) $$
where \( OCV \) is the open-circuit voltage, \( I \) is the current (positive for discharge), \( R_0 \) is the ohmic resistance, and \( R_p \) and \( C_p \) are the polarization resistance and capacitance, respectively. The \( OCV \) is a function of SOC and temperature, often characterized through experiments. However, measuring \( OCV \) requires the battery to be at rest, which is infeasible for online operation in a battery energy storage system. Thus, alternative approaches are needed.
Machine learning methods bypass the need for explicit models by learning the mapping from inputs to SOC. Typical inputs include terminal voltage, current, and temperature. However, these inputs alone may not capture internal dynamics adequately. To address this, I propose incorporating the voltage increment as an additional input feature. The voltage increment \( \Delta U \) over a time interval \( \Delta t \) is defined as:
$$ \Delta U = U_L(t + \Delta t) – U_L(t) $$
From the Thevenin model, this can be related to the change in OCV:
$$ \Delta U = \Delta OCV – I \Delta (R_0 + R_p) $$
Under constant current conditions, the change in internal resistance is small, so \( \Delta U \) approximates \( \Delta OCV \). Since \( OCV \) correlates with SOC, \( \Delta U \) provides indirect information about SOC changes without requiring rest periods. This makes it a valuable feature for online SOC estimation in battery energy storage systems.
Vi-RNN Algorithm for SOC Estimation
The Vi-RNN algorithm combines voltage increment features with a recurrent neural network to estimate SOC. RNNs are suitable for time-series data because they maintain a hidden state that captures temporal dependencies. For battery energy storage systems, where SOC evolves over time based on past inputs, RNNs can effectively model these sequences.
The input vector at each time step consists of:
- Terminal voltage \( U_L(t) \)
- Voltage increment \( \Delta U(t) \) computed over a fixed interval (e.g., 1 second)
Optionally, current and temperature can be included, but for simplicity in constant-current scenarios, I focus on voltage-based features. The output is the SOC at time \( t \).
The RNN architecture used here has three layers, each with 20 neurons. The network is trained using backpropagation through time (BPTT) with the Adam optimizer. The loss function is mean squared error (MSE) between predicted and true SOC. The training process involves:
- Data Preprocessing: Normalize inputs to zero mean and unit variance to improve convergence.
- Sequence Formation: Organize data into overlapping sequences to capture temporal patterns.
- Training: Use 50 epochs with a learning rate of 0.001. Early stopping is applied based on validation loss.
- Validation and Testing: Data is split into training, validation, and test sets in a 1:1:1 ratio to ensure robustness.
The mathematical formulation of the RNN can be described as follows. Let \( \mathbf{x}_t = [U_L(t), \Delta U(t)]^T \) be the input at time \( t \). The hidden state \( \mathbf{h}_t \) is updated as:
$$ \mathbf{h}_t = \tanh(\mathbf{W}_{xh} \mathbf{x}_t + \mathbf{W}_{hh} \mathbf{h}_{t-1} + \mathbf{b}_h) $$
where \( \mathbf{W}_{xh} \) and \( \mathbf{W}_{hh} \) are weight matrices, and \( \mathbf{b}_h \) is the bias vector. The output \( \hat{y}_t \) (estimated SOC) is computed as:
$$ \hat{y}_t = \sigma(\mathbf{W}_{hy} \mathbf{h}_t + \mathbf{b}_y) $$
where \( \sigma \) is a sigmoid activation function to bound output between 0 and 1, and \( \mathbf{W}_{hy} \) and \( \mathbf{b}_y \) are output weights and bias. For deeper networks, multiple hidden layers are stacked.
The inclusion of \( \Delta U \) enriches the input space by providing differential information. This helps the network learn rates of change in voltage, which correlate with SOC dynamics. For battery energy storage systems operating under varying conditions, this feature can adapt to different C-rates and temperatures.
To quantify the improvement, I compare Vi-RNN with a baseline method, MEA-BP (Mind Evolutionary Algorithm-Backpropagation), which uses terminal voltage and current as inputs without voltage increments. Performance metrics include mean absolute percentage error (MAPE) and root mean squared error (RMSE), defined as:
$$ \text{MAPE} = \frac{1}{N} \sum_{i=1}^{N} \left| \frac{y_i – \hat{y}_i}{y_i} \right| \times 100\% $$
$$ \text{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (y_i – \hat{y}_i)^2} $$
where \( y_i \) is the true SOC, \( \hat{y}_i \) is the estimated SOC, and \( N \) is the number of samples.
Experimental Setup and Data Collection
The experimental data used in this study comes from lithium-ion batteries designed for battery energy storage systems. The batteries have a nominal voltage of 3.65 V and a capacity of 60 Ah. They are tested under controlled laboratory conditions at a constant temperature of 25°C. Charge and discharge cycles are performed at constant current rates of 0.2C and 0.3C, meaning charge/discharge currents of 12 A and 18 A, respectively. Data acquisition equipment with high precision (voltage accuracy < ±0.1% FS, current accuracy < ±0.1% FS) records terminal voltage, current, and temperature at regular intervals.
The SOC ground truth is calculated using coulomb counting with initial SOC determined by OCV after rest. However, for training and testing, only data from SOC ranges of 0.1 to 0.9 are used, as this is the typical operating window for battery energy storage systems. The dataset is divided into three equal parts: training set (samples at indices 3n), validation set (samples at indices 3n+1), and test set (samples at indices 3n+2). This ensures that the model is evaluated on unseen data.
Preprocessing involves computing voltage increments \( \Delta U \) as the difference between consecutive voltage measurements over a 1-second interval. Since the sampling rate is high, this captures fine-grained changes. All features are normalized to have zero mean and unit variance based on training statistics.
The following table summarizes the dataset characteristics:
| Cycle Type | C-rate | Number of Samples | SOC Range | Temperature |
|---|---|---|---|---|
| Charge | 0.2C | ~15,000 | 0.1-0.9 | 25°C |
| Charge | 0.3C | ~10,000 | 0.1-0.9 | 25°C |
| Discharge | 0.2C | ~15,000 | 0.1-0.9 | 25°C |
| Discharge | 0.3C | ~10,000 | 0.1-0.9 | 25°C |
This diverse dataset allows for comprehensive evaluation of the Vi-RNN algorithm across different conditions relevant to battery energy storage systems.
Results and Analysis
The Vi-RNN model is trained separately for each cycle type to account for differences in charge and discharge dynamics. After training, the model is evaluated on the test set. The estimated SOC is compared with the ground truth, and errors are computed.
Figure 1 shows the SOC estimation results for 0.2C charge and discharge cycles. The Vi-RNN predictions closely track the true SOC, with minor deviations at extreme SOC values. Similarly, Figure 2 presents results for 0.3C cycles, demonstrating robust performance even at higher currents.
For quantitative comparison, I compute MAPE and RMSE for Vi-RNN and MEA-BP. The results are summarized in the following tables:
| Method | C-rate | MAPE (%) | RMSE |
|---|---|---|---|
| MEA-BP | 0.2C | 0.515 | 0.00515 |
| Vi-RNN | 0.2C | 0.413 | 0.00413 |
| MEA-BP | 0.3C | 0.672 | 0.00672 |
| Vi-RNN | 0.3C | 0.445 | 0.00445 |
| Method | C-rate | MAPE (%) | RMSE |
|---|---|---|---|
| MEA-BP | 0.2C | 0.631 | 0.00631 |
| Vi-RNN | 0.2C | 0.409 | 0.00409 |
| MEA-BP | 0.3C | 0.393 | 0.00393 |
| Vi-RNN | 0.3C | 0.307 | 0.00307 |
From the tables, Vi-RNN consistently achieves lower errors than MEA-BP across all cycles. The improvement is particularly significant for charge cycles, where MAPE is reduced by about 20-34%. For discharge cycles, the reduction is around 21-35%. This demonstrates the effectiveness of incorporating voltage increments into the input features.
To further analyze, I examine the error distributions. The relative error (RE) for each sample is computed as:
$$ \text{RE}_i = \left| \frac{y_i – \hat{y}_i}{y_i} \right| \times 100\% $$
Histograms of RE for Vi-RNN and MEA-BP are plotted, showing that Vi-RNN errors are more concentrated near zero, indicating higher precision. Additionally, the mean squared error (MSE) is computed for overall comparison:
$$ \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i – \hat{y}_i)^2 $$
For the 0.2C charge cycle, Vi-RNN achieves an MSE of \( 1.71 \times 10^{-5} \), compared to \( 2.65 \times 10^{-5} \) for MEA-BP, a reduction of approximately 35%. Similar reductions are observed for other cycles.
The robustness of Vi-RNN can be attributed to its ability to capture temporal dynamics through the RNN and battery internal changes through voltage increments. In contrast, MEA-BP, which uses static inputs, may miss these temporal correlations. This is crucial for battery energy storage systems where SOC evolves continuously.
Discussion and Implications
The results validate the proposed Vi-RNN algorithm as an accurate method for online SOC estimation in battery energy storage systems. The voltage increment feature plays a key role by providing differential information that mirrors internal battery dynamics. Unlike OCV, which requires rest, voltage increment can be computed in real-time, making it suitable for online operation.
The RNN framework effectively leverages sequential data, allowing the model to remember past states and predict SOC more accurately. This is advantageous over feedforward networks like BP, which treat each sample independently. For battery energy storage systems subjected to varying loads, the memory aspect of RNNs can adapt to changing conditions.
However, there are limitations. The current study uses constant current data, whereas real-world battery energy storage systems experience variable currents and temperatures. Future work should extend Vi-RNN to dynamic profiles and incorporate temperature as an input. Additionally, the model is trained on fresh batteries; aging effects need to be considered for long-term deployment.
From a practical perspective, implementing Vi-RNN in a BMS requires computational resources for RNN inference. With modern embedded processors, this is feasible, but optimization for low-power devices may be needed. The algorithm’s simplicity in feature extraction—only requiring voltage measurements—reduces sensor complexity, which is beneficial for cost-sensitive applications.
The improvement in SOC estimation accuracy directly benefits battery energy storage systems. More precise SOC enables better charge control, reducing stress on batteries and extending lifespan. It also enhances grid services like frequency regulation, where accurate state knowledge is critical for response times.
In summary, Vi-RNN offers a data-driven, model-free approach that balances accuracy and practicality. By integrating voltage increments and recurrent networks, it addresses key challenges in SOC estimation for battery energy storage systems.
Conclusion
This article presented a novel Vi-RNN algorithm for online SOC estimation in battery energy storage systems. The method combines voltage increment features with a recurrent neural network to achieve high accuracy under constant current conditions. Experimental results on lithium-ion batteries show that Vi-RNN outperforms traditional MEA-BP in terms of MAPE and RMSE, with error reductions up to 35%. The voltage increment captures internal battery dynamics without requiring rest periods, making it suitable for real-time applications. The RNN’s temporal modeling capabilities further enhance performance by leveraging historical data.
For future work, I plan to extend Vi-RNN to variable current profiles and incorporate aging effects. Integration with cloud-based analytics could enable adaptive learning across fleets of battery energy storage systems. Overall, Vi-RNN represents a significant step toward reliable, online SOC estimation, contributing to the efficient and safe operation of battery energy storage systems in modern energy grids.
