As the global energy transition accelerates, the integration of renewable energy sources into power systems has increased significantly. However, the intermittent and stochastic nature of renewable generation poses considerable challenges to the secure and stable operation of power grids. In this context, the energy storage battery has emerged as a pivotal technology. My research focuses on the parameter identification and control optimization of battery energy storage systems (BESS) using DIgSILENT simulation software. The primary objective is to establish accurate electromechanical transient models and to develop systematic strategies for identifying and optimizing controller parameters, thereby enhancing the transient stability of power systems. In this article, I present the complete methodology, the theoretical analyses, the simulation frameworks, and the key results obtained throughout my research.
Introduction and Background
The installed capacity of renewable energy has been growing rapidly worldwide. According to the latest statistics, the cumulative installed capacity of global energy storage projects reached 289.2 GW by the end of 2023, with an annual growth rate of 21.9%. In China, the cumulative installed capacity of energy storage projects has reached 86.5 GW, and the proportion of lithium-ion batteries in new storage installations continues to rise. The energy storage battery system offers fast response times and high energy density, making it an essential component for frequency regulation, voltage support, and power oscillation damping. However, the performance of a BESS heavily depends on the accuracy of its model and the tuning of its control parameters. Therefore, research on parameter identification and control optimization is of great engineering significance.
In the field of BESS modeling, existing studies have proposed various electromechanical transient models that simplify the power electronic interfaces. Some models incorporate the state of charge (SOC) of the energy storage battery, while others ignore it. I found that many simplified models do not accurately represent the SOC dynamics, which is crucial for transient stability studies. For parameter identification, most existing approaches rely on small-signal models or offline estimation methods. However, these methods may not fully capture the nonlinear transient behavior of the BESS. In this research, I propose a trajectory-sensitivity-based identification strategy that uses the transient responses of active and reactive power as measured outputs. For control optimization, I developed a DIgSILENT-Python co-simulation framework that enables automatic parameter tuning using particle swarm optimization (PSO), overcoming the limitation that DIgSILENT can only optimize components with built-in measurement functions.
Electromechanical Transient Modeling of Battery Energy Storage Systems
The typical structure of a BESS consists of an energy storage battery, a power conversion system (PCS), and a monitoring system. The PCS is responsible for converting the DC power from the battery into AC power that can be injected into the grid. In DIgSILENT, the detailed PWM converter model can be used for electromagnetic transient studies, but for electromechanical transient simulations, a simplified model is preferred. I adopt the static generator model as the grid interface, where the converter is represented by a first-order inertia element.
Converter Model
The current inner-loop control of the voltage source converter can be simplified. The closed-loop transfer function of the d-axis current control is given by:
$$ G_{cp}(s) = \frac{i_d(s)}{i_{d\_ref}(s)} = \frac{1}{Ls + R + \frac{k_{pp}s + k_{ip}}{s}} $$
By selecting appropriate parameters, this can be approximated by a first-order inertia element:
$$ G_{cp}(s) = \frac{1}{1 + T_{ip}s} $$
where \( T_{ip} \) is the d-axis current loop time constant. Similarly, the q-axis current loop is:
$$ G_{cq}(s) = \frac{1}{1 + T_{iq}s} $$
These simple transfer functions are sufficient for electromechanical transient studies because the simulation time step is relatively large (typically 0.01 s) and the high-frequency switching dynamics are not of interest.
Battery Model
For the energy storage battery, I consider the typical discharge characteristics of lead-acid batteries. The SOC is calculated as:
$$ SOC(t) = SOC_{ini} – \frac{1}{3600 \cdot S_{BESS}} \int_0^t P_{BESS}(\tau) d\tau $$
where \( SOC_{ini} \) is the initial state of charge, \( P_{BESS} \) is the active power output, and \( S_{BESS} \) is the rated apparent power. In the range \( 0.2 \le SOC \le 0.8 \), the battery voltage and internal resistance can be considered constant for simplification. Therefore, the steady-state model of the energy storage battery is represented by the SOC integration block.
Control System Design
The control system of the BESS consists of three main parts: the frequency controller, the power controller, and the charge/discharge controller.
Frequency controller: I use droop control to provide frequency support. The active power reference is adjusted according to the frequency deviation:
$$ dp_{ref} = K_{droop}(f_{ref} – f_e) $$
A dead band is included to avoid frequent actions. The droop coefficient \( K_{droop} \) determines the amount of active power injection per unit frequency deviation.
Power controller: The active power loop uses a PI controller to regulate the active power output. The d-axis current reference is obtained as:
$$ id_{ref\_in} = \left( K_p + \frac{1}{T_p s} \right) (dp + p_{ref} – P_e) $$
The reactive power loop uses a voltage controller with an integral term:
$$ iq_{ref\_in} = \left( K_q + \frac{1}{T_q s} \right) (V_{ref} – V_e) $$
Charge/discharge controller: This block limits the current references based on the SOC and the converter capacity. When the SOC exceeds its limit, the active current reference is set to zero. The current limitation strategy is implemented to protect the converter from overcurrent. The maximum current is set to 1 p.u., and the current limit is applied as:
$$ id_{ref\_out} = id_{in} \cdot \frac{maxValue}{|id_{ref\_in}|} $$
where \( maxValue \) is the rated current. In my design, active power priority is adopted, but during voltage dips larger than 0.1 p.u., the priority is switched to reactive power to support voltage recovery.
Simulation Validation
To validate the simplified BESS model, I set up a single-machine double-load system in DIgSILENT. The system parameters are listed in Table 1.
| Component | Active Power (MW) | Reactive Power (Mvar) |
|---|---|---|
| G1 | 50 | 20 |
| Load A | 10 | 2 |
| Load B | 50 | 10 |
The BESS model parameters are shown in Table 2.
| Parameter | Kp | Tp | Tip | Kq | Tq | Tiq | Kdroop |
|---|---|---|---|---|---|---|---|
| Value | 1 | 0.1 | 0.01 | 1 | 0.1 | 0.01 | 0.04 |
I applied two disturbance scenarios: a single-phase-to-ground fault and a load step change. The simulation results showed that the BESS responds quickly to system disturbances. For the single-phase fault, the frequency recovery time was shortened from 8.83 s to 3.07 s, and the voltage nadir improved from 0.395 p.u. to 0.420 p.u. For the load step change, I varied the BESS capacity from 10 MVA to 70 MVA. The system frequency, voltage, and generator speed improved with increasing BESS capacity. However, I observed that with 35% BESS penetration, the voltage experienced a slight overshoot, indicating that excessive reactive power injection can also affect system stability. These results confirm that the simplified electromechanical model can effectively reflect the transient response of the energy storage battery system.

Parameter Identification of the Energy Storage System
Accurate controller parameters are essential for the reliability of grid-connected BESS simulations. In this chapter, I propose a parameter identification strategy based on transient trajectory sensitivity analysis. The goal is to identify the parameters of the power controller (Kp, Tp, Tip for the d-axis; Kq, Tq, Tiq for the q-axis) and the droop coefficient Kdroop. Since Kdroop can be directly derived from the frequency and active power signals, I exclude it from the identification process.
Trajectory Sensitivity Analysis
Parameter identifiability is assessed by computing the trajectory sensitivity of the output variables with respect to each parameter. The sensitivity of output \( y \) with respect to parameter \( \theta_j \) is defined as:
$$ S_{y,\theta_j}(t) = \frac{\partial y(t)}{\partial \theta_j} \approx \frac{y(t, \theta_j + \Delta \theta_j) – y(t, \theta_j)}{\Delta \theta_j} $$
I analyzed the sensitivities of the active power, reactive power, and voltage outputs for a 10% parameter change. The simulation scenarios included a three-phase short circuit at the point of common coupling and a step change in the active power and voltage references.
The results are summarized as follows:
- When the active power is observed, the d-axis parameters exhibit significantly higher sensitivities than the q-axis parameters. The parameter Kp has a relatively low sensitivity compared to Tp and Tip.
- When the reactive power is observed, the q-axis parameters show higher sensitivities, while the d-axis sensitivities are nearly zero.
- The voltage output has overall low sensitivities, which means using voltage as the observation variable would make the parameters poorly identifiable.
Therefore, I select active power and reactive power as the observation variables for identification. This decoupling property allows simultaneous identification of d- and q-axis parameters with a combined objective function.
Implementation in DIgSILENT
DIgSILENT provides a built-in parameter identification module. The identification framework is shown conceptually in the following description. I use the ComIdent object with the following components:
- Measurement File: stores the measured active and reactive power data (either from field tests or from a reference simulation).
- Component Model: the BESS model whose parameters are to be identified.
- Comparator: calculates the objective function as the weighted sum of squared errors between measured and simulated data.
- Optimizer: modifies the parameters iteratively to minimize the objective function.
The objective function is defined as:
$$ F_p = \sum_{i=1}^{n} \omega_i (M_i – S_i)^2 $$
where \( M_i \) are the measured values, \( S_i \) are the simulated values, and \( \omega_i \) are weighting factors. For my identification, the objective function combines the active and reactive power errors:
$$ F = \omega_1 \sum_{i=1}^{n} (P_{m,i} – P_{s,i})^2 + \omega_2 \sum_{i=1}^{n} (Q_{m,i} – Q_{s,i})^2 $$
I use the quasi-Newton method as the optimization algorithm because it is less sensitive to the initial parameter values and converges quickly for medium-sized nonlinear problems.
The implementation steps in DIgSILENT are as follows:
- Set the disturbance: I choose two types of disturbances: a three-phase short circuit and a step change in active/reactive power references.
- Create the identification module: I insert the ComIdent object and connect the measurement files, the BESS model, and the comparator.
- Configure the algorithm: I select the quasi-Newton method and set the termination criteria.
- Provide measured data: The measured data are stored in a file with the simulation time and the two columns for active and reactive power.
Identification Results
I performed the identification on a test system with the BESS connected to a single-machine infinite bus. The true parameter values were set to those from a manufacturer’s datasheet. The initial values and search ranges are given in Table 3.
| Axis | Parameter | Initial Value | True Value | Range |
|---|---|---|---|---|
| d | Kp | 1 | 3 | [1,20] |
| d | Tp | 0.1 | 0.02 | [0.0001,1) |
| d | Tip | 0.01 | 0.05 | [0.0001,1) |
| q | Kq | 1 | 3 | [1,20] |
| q | Tq | 0.1 | 0.02 | [0.0001,1) |
| q | Tiq | 0.01 | 0.05 | [0.0001,1) |
Scenario 1: Three-Phase Short Circuit
A three-phase short circuit was applied at the grid-side bus. The identification results are shown in Table 4.
| Parameter | True Value | Identified Value | Error (%) |
|---|---|---|---|
| Kp | 3 | 2.8434 | -5.22 |
| Tp | 0.02 | 0.0196 | -2.00 |
| Tip | 0.05 | 0.0473 | -5.40 |
| Kq | 3 | 3.0124 | 0.41 |
| Tq | 0.02 | 0.014 | -30.00 |
| Tiq | 0.05 | 0.0498 | -0.40 |
The identification errors for Kq, Tiq, and Tp are below 5%, while Kp and Tip have errors around 5%. The Tq parameter has a large error of -30%, which is consistent with its low trajectory sensitivity. Despite this, the overall fitted responses of active power, reactive power, voltage, and current were highly accurate. Therefore, the identified parameter set is still effective for reproducing the BESS transient behavior.
Scenario 2: Step Change in References
A step change in the active power and voltage references was applied. The identification results are shown in Table 5.
| Parameter | True Value | Identified Value | Error (%) |
|---|---|---|---|
| Kp | 3 | 3.0133 | 0.44 |
| Tp | 0.02 | 0.0199 | -0.50 |
| Tip | 0.05 | 0.0505 | 1.00 |
| Kq | 3 | 3.1434 | 4.78 |
| Tq | 0.02 | 0.0124 | -38.00 |
| Tiq | 0.05 | 0.0479 | -4.20 |
Under the step disturbance, the d-axis parameters are identified with errors less than 1%, while the q-axis parameters have slightly larger errors, especially Tq. The fitted curves again show excellent agreement with the measured data. This confirms that different disturbances can be selected to improve the identification accuracy of certain parameters. For instance, the step change is more suitable for identifying d-axis parameters, while the short circuit is better for q-axis parameters.
Parameter Optimization for Transient Stability Enhancement
In this chapter, I address the problem of optimizing the BESS controller parameters to improve the transient stability of the power system. I first analyze how the BESS can influence the synchronizing and damping torques of synchronous generators. Then I present the DIgSILENT-Python co-simulation framework and the PSO-based optimization method. Finally, I verify the optimized parameters on the IEEE 9-bus system.
Transient Stability Analysis with BESS
Consider a single-machine infinite-bus system with a BESS connected at an intermediate bus. The electromagnetic torque increment of the generator can be expressed as:
$$ \Delta M_e = k_{c1} \Delta \delta_1 + k_{c2} \Delta P_s $$
where \( \Delta P_s \) is the active power deviation of the BESS. Assuming the BESS can be represented by a first-order inertia:
$$ \Delta P_s = \frac{k_{e1}}{1 + Ts} \Delta P_G $$
Combining the above equations and simplifying, the synchronizing torque coefficient \( K_S \) and damping torque coefficient \( K_D \) can be derived as:
$$ K_S = k_{c2} + \frac{k_{c1} k_{e1} k_{d1}}{1 – k_{e1} k_{d2}} $$
$$ K_D = \frac{k_{c2} k_{e1} k_{d1} T}{(1 – k_{e1} k_{d2})^2} $$
These equations show that the controller parameter \( k_{e1} \) participates in both the synchronizing and damping torques. Therefore, by correctly tuning the BESS controller parameters, the transient stability of the generator can be improved.
DIgSILENT-Python Co-Simulation Framework
The built-in optimization module in DIgSILENT can only use measured signals from components that have measurement functions. Since generator angles and state variables are not directly measurable in the standard environment, I developed an external co-simulation framework using Python. The framework performs the following functions:
- Automated simulation: Python starts DIgSILENT, runs the load flow, initializes the transient simulation, and executes the time-domain simulation.
- Data exchange: The simulation results are exported to CSV files, and Python reads them for computing the objective function.
- Parameter modification: Python directly modifies the BESS controller parameters in the DIgSILENT model using the SetAttribute method.
- Optimization loop: The PSO algorithm iteratively updates the parameters and repeats the simulation until convergence.
The objective function for optimization is based on the sum of squared errors (SSE) of generator angles and a voltage constraint. The objective is defined as:
$$ F_{G\_SSE} = \sum_{m=1}^{n} \sum_{i=1}^{k} \left( \delta_{mi}(t) – \delta_{m,\infty} \right)^2 $$
subject to:
$$ \sum_{j=1}^{x} \left[ \left( V_{no,j} – V_b \right)^2 – \left( V_{with,j} – V_b \right)^2 \right] \ge 0 $$
where \( \delta_{mi} \) is the m-th generator angle at time \( t_i \), \( \delta_{m,\infty} \) is the steady-state value, \( V_{no,j} \) and \( V_{with,j} \) are the voltages at the central bus without and with BESS, and \( V_b \) is the steady-state voltage. This constraint ensures that the optimized parameters do not degrade the voltage recovery.
Optimization Using PSO
I use the particle swarm optimization algorithm to solve the optimization problem. The PSO parameters are listed in Table 6.
| Parameter | Symbol | Value |
|---|---|---|
| Population size | P | 20 |
| Maximum iterations | I | 200 |
| Cognitive coefficient | c1 | 1 |
| Social coefficient | c2 | 1.4 |
| Inertia weight | ω | 0.7 |
| Number of parameters | D | 7 |
The velocity and position update equations are:
$$ v_i(t+1) = \omega v_i(t) + c_1 r_1 (p_{best,i}(t) – x_i(t)) + c_2 r_2 (g_{best}(t) – x_i(t)) $$
$$ x_i(t+1) = x_i(t) + v_i(t+1) $$
where \( r_1 \) and \( r_2 \) are random numbers uniformly distributed in [0,1].
Simulation Results on IEEE 9-Bus System
I built the IEEE 9-bus test system with a BESS connected to bus 4. The system data are shown in Table 7.
| Component | Active Power (MW) | Reactive Power (Mvar) |
|---|---|---|
| G1 | 71.6 | 27 |
| G2 | 163 | 6.7 |
| G3 | 85 | -10.9 |
| Load A | 125 | 50 |
| Load B | 90 | 30 |
| Load C | 100 | 35 |
I applied a three-phase short circuit at line 5-7 at t=0.5 s, cleared at 0.62 s. The BESS parameters before and after optimization are listed in Table 8.
| Parameter | Measured | Optimized | Range |
|---|---|---|---|
| Kp | 2 | 4.824 | [1,20] |
| Tp | 0.01 | 0.020 | [0.0001,1) |
| Tip | 0.01 | 0.005 | [0.0001,1) |
| Kq | 2 | 5.012 | [1,20] |
| Tq | 0.01 | 0.014 | [0.0001,1) |
| Tiq | 0.01 | 0.005 | [0.0001,1) |
| Kdroop | 0.004 | 0.011 | [0.002,0.04] |
| Objective SSE | 348.591 | 323.442 | – |
The simulation results are shown in Figure 8. The optimized parameters reduce the first swing angle of generator G2 from 85.825 deg to 85.180 deg, and of G3 from 65.079 deg to 64.235 deg. The objective function value decreased by 7.21%, indicating that the optimized parameters effectively damp the power angle oscillations. In addition, the voltage at the central bus recovered faster with the optimized parameters, and the voltage SSE index decreased from 1.259 to 1.237.
Adaptability Verification of Optimized Parameters
To verify that the optimized parameters are also effective for other disturbances, I tested two additional scenarios: a load step change and a single-phase-to-ground fault.
Scenario 1: Load Step Change
At t=0.5 s, Load C is reduced by 80% for 1 s. The SSE indices for the generator angles and voltage are summarized in Table 9.
| Indicator | No BESS | Measured Parameters | Optimized Parameters |
|---|---|---|---|
| G2 angle SSE | 82.728 | 72.512 | 70.098 |
| G3 angle SSE | 76.738 | 68.619 | 66.876 |
| Bus 4 voltage SSE | 0.275 | 0.166 | 0.145 |
The optimized parameters yield lower SSE values compared to the measured parameters, confirming their effectiveness under load step disturbances.
Scenario 2: Single-Phase-to-Ground Fault
A single-phase-to-ground fault occurs at bus 9 at t=0.5 s and is cleared after 0.1 s. The SSE indices are given in Table 10.
| Indicator | No BESS | Measured Parameters | Optimized Parameters |
|---|---|---|---|
| G2 angle SSE | 155.396 | 134.823 | 128.278 |
| G3 angle SSE | 142.427 | 129.703 | 125.758 |
| Bus 4 voltage SSE | 1.172 | 1.137 | 1.122 |
Here, the optimized parameters also outperform the measured parameters, with generator angle SSE reduced by about 3.97% compared to the measured case. Therefore, the parameters optimized under a three-phase fault are adaptable to other types of disturbances.
Conclusion
In this research, I have systematically studied the modeling, parameter identification, and control optimization of the energy storage battery system. The main conclusions are as follows:
- I established a simplified electromechanical transient model of the BESS that accurately represents the dynamic behavior of the energy storage battery and the converter. The model is suitable for power system stability analysis and has been validated under various disturbances. The results show that the BESS can effectively support frequency and voltage regulation, but excessive penetration may cause voltage overshoot, which should be considered in parameter tuning.
- I proposed a parameter identification strategy based on trajectory sensitivity analysis. By selecting active and reactive power as observation variables, the parameters of the d- and q-axis controllers can be identified simultaneously. The identification errors are generally within 5% for sensitive parameters, while less sensitive parameters like Tq have larger errors. The fitted transient responses show high consistency with the measured data, confirming the validity of the identified model.
- I developed a DIgSILENT-Python co-simulation framework for optimizing the BESS controller parameters. Using the PSO algorithm, I minimized the SSE of generator angles subject to a voltage constraint. The optimized parameters significantly reduced the first swing angles and improved the damping of power oscillations. The adaptability tests on load step and single-phase fault confirmed that the optimized parameters maintain good performance across multiple disturbance scenarios.
The energy storage battery is an indispensable asset for modern power systems with high renewable penetration. Accurate modeling and intelligent parameter tuning are essential to fully exploit its potential. Future work will focus on improving the optimization algorithm, incorporating more realistic constraints, and extending the approach to hybrid energy storage systems.
