Accurate modeling of grid-connected solar inverters is essential for analyzing fault characteristics in power systems with high photovoltaic penetration. In practice, the control parameters of inverters are often unknown due to proprietary concerns or operational variations, leading to significant discrepancies between simulation models and actual device behavior. To address this issue, we propose a parameter identification approach based on an improved chaotic genetic particle swarm optimization (CGAPSO) algorithm. The work is motivated by a real 1 MW photovoltaic station, whose operational data are used as the reference. We first divide the inverter operating interval into three stages according to practical conditions, and classify the sensitivity levels of the parameters to be identified using the mathematical perturbation method. A step-by-step identification strategy is then developed for parameters with different sensitivities. The initial value ranges of the parameters are derived from accessible external data. We design synchronous identification experiments as baselines and demonstrate that the proposed method yields significantly higher accuracy, especially for low-sensitivity parameters. The identified model outputs closely match the actual inverter data, validating the effectiveness of our approach.
1. Introduction
Large-scale integration of solar photovoltaic systems into power grids introduces complex fault current characteristics that differ from conventional synchronous generators. The grid-connected inverter is the key interface, and its control system determines the dynamic response under both normal and fault conditions. However, due to manufacturer confidentiality and environmental changes, the actual control parameters are often unavailable. Parameter identification provides a practical solution to reconstruct accurate inverter models. Existing work has explored black-box and gray-box identification methods. However, many studies either ignore low-sensitivity parameters or fail to achieve acceptable precision for them. In this work, we focus on the widely used dual-loop control structure (voltage outer loop and current inner loop) and low-voltage ride-through (LVRT) control coefficients. We propose a mathematical perturbation analysis to quantitatively differentiate high- and low-sensitivity parameters, and a step-by-step identification framework to overcome the mutual interference during optimization. The CGAPSO algorithm enhances convergence speed and accuracy by combining genetic operations, particle swarm dynamics, and chaotic local search.
2. Control Strategy of Grid-Connected Solar Inverter
The solar inverter adopts a typical double-loop control under normal operation, and switches to LVRT control during grid faults. The complete mathematical model for the dq-axis is given by:
$$
\begin{aligned}
U_q(s) &= \left(K_{iP} + \frac{K_{iI}}{s}\right)\left(-I_q(s)\right) + \omega L I_d(s) \\
U_d(s) &= \left(K_{iP} + \frac{K_{iI}}{s}\right)\left[ K_{uP}(U_{dcref} – U_{dc}) + \frac{K_{uI}}{s}(U_{dcref} – U_{dc}) – I_d(s) \right] – \omega L I_q(s) + E_d(s)
\end{aligned}
$$
where \(U_d, U_q, I_d, I_q\) are the dq-axis voltages and currents at the inverter output, \(E_d\) is the filtered d-axis grid voltage, \(\omega\) is the angular frequency, \(L\) and \(R\) are the filter inductance and resistance, \(K_{iP}, K_{iI}\) are the current inner-loop PI gains, and \(K_{uP}, K_{uI}\) are the voltage outer-loop PI gains.
During low-voltage conditions, the reactive current reference is determined by the grid voltage dip:
$$
I_{q\_fault}^* =
\begin{cases}
0, & U_{pcc} > 0.9 \, \text{p.u.} \\
K_q (0.9 – U_{pcc}) I_n, & 0.2 \leq U_{pcc} \leq 0.9 \, \text{p.u.} \\
1.1 I_n, & U_{pcc} < 0.2 \, \text{p.u.}
\end{cases}
$$
where \(K_q\) is the reactive support coefficient, and \(I_n\) is the rated current. The active current reference during fault is:
$$
I_{d\_fault}^* = \min\left( I_{dref\_normal}, \sqrt{I_{n,\max}^2 – I_{q\_fault}^{*2}} \right)
$$
After fault clearance, the active current recovers linearly:
$$
\begin{aligned}
I_{d\_recovery}^* &= (t – t_1) K_{dp} + I_{d\_fault} \\
I_{q\_recovery}^* &= 0
\end{aligned}
$$
where \(K_{dp}\) is the active power recovery slope. Thus, the inverter operates in three stages: normal (parameters \(K_{uP}, K_{uI}, K_{iP}, K_{iI}\)), fault (parameters \(K_q, K_{iP}, K_{iI}\)), and recovery (parameters \(K_{dp}, K_{iP}, K_{iI}\)).
3. Sensitivity Analysis via Mathematical Perturbation
To understand why synchronous identification often yields poor results for low-sensitivity parameters, we analyze the mathematical relationship between each parameter and the output of the current inner-loop PI controller. The PI output deviation caused by parameter perturbations is derived.
3.1 Normal Stage
Define the d-axis PI controller output \(Y_{PI.d}\). If \(K_{uP}, K_{uI}\) are accurate but \(K_{iP}, K_{iI}\) have errors (\(\Delta K_{iP}, \Delta K_{iI}\)), the output deviation is:
$$
\Delta Y_{PI.d1} = \Delta K_{iP}\left[ K_{uP}(U_{dcref}-U_{dc}) + K_{uI}\int_0^{t_1} (U_{dcref}-U_{dc}) dt – I_d \right] + \Delta K_{iI}\int_0^{t_1} \left[ K_{uP}(U_{dcref}-U_{dc}) + K_{uI}\int_0^{t_1} (U_{dcref}-U_{dc}) dt – I_d \right] dt
$$
Conversely, if \(K_{iP}, K_{iI}\) are accurate but \(K_{uP}, K_{uI}\) have errors:
$$
\Delta Y_{PI.d2} = K_{iP}\left[ \Delta K_{uP}(U_{dcref}-U_{dc}) + \Delta K_{uI} \int_0^{t_1} (U_{dcref}-U_{dc}) dt \right] + K_{iI}\int_0^{t_1} \left[ \Delta K_{uP}(U_{dcref}-U_{dc}) + \Delta K_{uI} \int_0^{t_1} (U_{dcref}-U_{dc}) dt \right] dt
$$
Under steady-state conditions, \(I_d \approx I_{dref}\), and the integrals in \(\Delta Y_{PI.d1}\) involve only the short dynamic tracking period, thus \(\Delta Y_{PI.d1}\) is small. In contrast, \(\Delta Y_{PI.d2}\) contains a non-zero integral term that accumulates over time, leading to \(\Delta Y_{PI.d2} \gg \Delta Y_{PI.d1}\). Therefore, \(K_{uP}, K_{uI}\) have much higher sensitivity than \(K_{iP}, K_{iI}\) in the normal stage.
3.2 Fault Stage
For the fault stage, consider both d- and q-axis PI outputs. A similar derivation shows that the deviation caused by a perturbation in \(K_q\) is:
$$
\Delta Y_{PI.1} = K_{iP} \Delta K M_1(t) + K_{iI} \int_{t_1}^{t_2} \Delta K M_1(t) dt
$$
where \(M_1(t) = (0.9 – U_{pcc})I_n\). Conversely, perturbations in \(K_{iP}, K_{iI}\) yield:
$$
\Delta Y_{PI.2} = \Delta K_{iP}(K M_1(t) – M_2(t)) + \Delta K_{iI} \int_{t_1}^{t_2} (K M_1(t) – M_2(t)) dt + \Delta K_{iI} \int_0^{t_1} M_3(t) dt
$$
Since \(K M_1(t) – M_2(t) \approx 0\) and \(M_3(t) \approx 0\) during steady state, \(\Delta Y_{PI.2}\) is dominated by the integral of a near-zero quantity, while \(\Delta Y_{PI.1}\) includes a non-zero integral over the fault duration. Thus, \(K_q\) is a high-sensitivity parameter, and \(K_{iP}, K_{iI}\) are low-sensitivity. The same conclusion holds for \(K_{dp}\) in the recovery stage.
Based on this analysis, we propose a step-by-step identification strategy: first identify high-sensitivity parameters (\(K_{uP}, K_{uI}, K_q, K_{dp}\)) while fixing low-sensitivity parameters at empirical values, then identify \(K_{iP}, K_{iI}\) using the already determined high-sensitivity parameters. This avoids the search direction being dominated by high-sensitivity parameters and significantly improves the accuracy for low-sensitivity ones.
4. Proposed Parameter Identification Framework
4.1 Determining Initial Parameter Ranges
In practice, the true parameter values are unknown. We use available external measurements to estimate plausible initial ranges. For the voltage outer loop, we exploit the time-scale difference between the voltage loop (10 Hz level) and current loop (100 Hz level). During a small disturbance, the d-axis current variation \(\Delta I_d\) and DC-link voltage variation \(\Delta U_{dc}\) satisfy:
$$
\frac{\Delta I_d}{\Delta U_{dc}} \approx K_{uP} + K_{uI} \Delta t
$$
where \(\Delta t\) is the observation interval. Since \(\Delta I_d / \Delta U_{dc}\) can be computed from data, the possible \((K_{uP}, K_{uI})\) pairs form a straight line. Combined with empirical bounds, we obtain:
$$
K_{uP} \in [1.5, 3.5], \quad K_{uI} \in [1.35, 5.35]
$$
For the current loop, the inverter filter parameters are known (\(L = 2.3\) mH, \(R = 0.01\ \Omega\)). If the inner loop is designed as a first-order system:
$$
K_{iP} = \omega_c L, \quad K_{iI} = \omega_c R
$$
with \(\omega_c = 10\omega = 3141.6\) rad/s, we get \(K_{iP} \approx 72.25,\ K_{iI} \approx 31.42\). Allowing a factor of 5 variation, the ranges are \(K_{iP} \in [14.45, 144.5]\), \(K_{iI} \in [6.28, 62.83]\). For a second-order system with damping \(\xi = 0.707\):
$$
K_{iP} \approx 2\xi \omega_n L, \quad K_{iI} = \omega_n^2 L
$$
Choosing \(\omega_n = 3000\) rad/s yields \(K_{iP} \approx 102.16\), \(K_{iI} \approx 22699\). Ranges become \(K_{iP} \in [20.43, 204.32]\), \(K_{iI} \in [4539.8, 45398]\). To determine the actual inner-loop order, we run two trial identifications with fixed (random) voltage loop parameters and compare fitness values. The smaller fitness indicates the correct order.
For the LVRT parameters, using fault current data we compute:
$$
1.21 – K_q^2 (1 – U_{pcc})^2 = y_{MN}, \quad K_{dp} = k_{NP}
$$
where \(y_{MN}\) and \(k_{NP}\) are derived from the measured active current profile. This gives \(K_q \in [0.355, 3.554]\) and \(K_{dp} \in [0.231, 2.312]\). The true values lie within these ranges, validating the approach.
4.2 Improved Chaotic Genetic Particle Swarm Optimization (CGAPSO)
We propose CGAPSO to combine the advantages of genetic algorithm (GA), particle swarm optimization (PSO), and chaotic local search. The fitness function is defined as:
$$
\text{Obj.Fun} = \frac{1}{n} \sum_{j=1}^n \left| I_{d,\text{true},j} – I_{d,\text{sim},j} \right|
$$
where \(n\) is the number of data points. In the early stage, CGAPSO operates in GAPSO mode: PSO updates velocities and positions, and GA operations (crossover, mutation) are applied to maintain diversity. When the average fitness change between consecutive iterations falls below 0.1, the algorithm switches to chaotic local search using the Tent map:
$$
o_{i+1} = \begin{cases}
o_i / h, & 0 < o_i \leq h \\
(1 – o_i) / (1 – h), & h < o_i \leq 1
\end{cases}
$$
with \(h = 0.5\). The chaotic perturbation magnitude decreases with iterations:
$$
\beta = 0.1 \frac{(Gen_{\max} – Gen + 1)^2}{Gen_{\max}^2}
$$
The new candidate positions are generated as:
$$
X_{\text{new},i+1} = X_{\min} + (X_{\max} – X_{\min}) o_{\text{new},i+1}
$$
where \(o_{\text{new},i+1}\) is perturbed around the global best position. This systematic search near the optimum improves precision without losing convergence speed.
4.3 Step-by-Step Identification Process
The overall identification procedure is as follows:
- Stage 0: Determine the current-loop order (first-order vs. second-order) by comparing fitness values under fixed voltage outer-loop gains.
- Stage 1 (Fault stage): Fix \(K_{iP}, K_{iI}\) at initial empirical values (e.g., from second-order design). Identify \(K_q\) using CGAPSO with fault-period dq-current data.
- Stage 2 (Normal stage): Using the identified \(K_q\) and fixed \(K_{iP}, K_{iI}\), identify \(K_{uP}, K_{uI}\) with normal-stage data.
- Stage 3 (Recovery stage): Using the identified \(K_q, K_{uP}, K_{uI}\) and fixed \(K_{iP}, K_{iI}\), identify \(K_{dp}\).
- Stage 4 (Low-sensitivity parameters): Now fix all high-sensitivity parameters to their identified values, and re-identify \(K_{iP}, K_{iI}\) using data from all three stages combined (or the fault stage, which provides the richest dynamic information for current loop).
The flowchart is summarized below (conceptually). In each identification subproblem, CGAPSO is run with 30 particles and 40 iterations.
5. Simulation and Results
We build a detailed simulation model of a 1 MW solar inverter in MATLAB/Simulink, using actual field data (voltage, current, power) from a real photovoltaic station as the reference. The inverter filter parameters are: \(L = 2.3\) mH, \(R = 0.01\ \Omega\), DC-link capacitor \(C = 10.4\) mF. A three-phase short-circuit fault is applied at \(t = 1\) s, causing a voltage dip to 0.538 p.u. The fault lasts 0.2 s, followed by recovery. The recorded active and reactive currents are used as the true data.
5.1 Current Loop Order Determination
We fix \(K_{uP}=3.0,\ K_{uI}=2.0\) (values within the estimated ranges) and randomly sample \(K_{iP}, K_{iI}\) from first-order and second-order ranges separately. The fitness values (averaged over 10 runs) are shown in Table 1.
| \(K_{uP}, K_{uI}\) | \(K_{iP}, K_{iI}\) (first-order) | Fitness (first-order) | \(K_{iP}, K_{iI}\) (second-order) | Fitness (second-order) |
|---|---|---|---|---|
| (2, 3) | (40.5, 50.3) | 0.5103 | (80, 25000) | 0.4294 |
| (3.23, 5.15) | (102.7, 34.3) | 0.1447 | (115.7, 26000) | 0.1295 |
| (1.72, 2.13) | (15.23, 7.11) | 0.6598 | (21.72, 5123.3) | 0.4713 |
In all cases, the second-order ranges yield smaller fitness values, indicating that the actual current loop is designed as a second-order system. This matches the simulation model configuration.
5.2 Synchronous vs. Step-by-Step Identification
We first perform synchronous identification using the standard PSO (without step-by-step) on each stage separately. The results are given in Table 2.
| Parameter | True value | Identified value | Error (%) |
|---|---|---|---|
| \(K_q\) | 2.000 | 2.0036 | 0.18 |
| \(K_{dp}\) | 1.500 | 1.4121 | 5.86 |
| \(K_{uP}\) | 3.000 | 3.3025 | 10.08 |
| \(K_{uI}\) | 2.000 | 2.3881 | 19.41 |
| \(K_{iP}\) | 60.000 | 84.0459 | 40.08 |
| \(K_{iI}\) | 20000 | 24112 | 20.56 |
Low-sensitivity parameters \(K_{iP}, K_{iI}\) have errors above 20%, and even the high-sensitivity \(K_{uP}, K_{uI}\) show errors around 10–19%. This confirms that synchronous identification suffers from mutual interference.
Next, we apply the proposed step-by-step CGAPSO method. The results are shown in Table 3.
| Parameter | True value | Identified value | Error (%) |
|---|---|---|---|
| \(K_q\) | 2.000 | 2.0001 | 0.005 |
| \(K_{dp}\) | 1.500 | 1.5050 | 0.33 |
| \(K_{uP}\) | 3.000 | 3.0316 | 1.05 |
| \(K_{uI}\) | 2.000 | 2.0166 | 0.83 |
| \(K_{iP}\) | 60.000 | 60.516 | 0.86 |
| \(K_{iI}\) | 20000 | 20183 | 0.915 |
All errors are below 1.1%, demonstrating a dramatic improvement for low-sensitivity parameters. The step-by-step approach effectively decouples the influence of high-sensitivity parameters.
5.3 Model Validation
We insert the identified parameters back into the simulation and compare the model output with the actual field data for both active and reactive currents during the fault and recovery periods. The results are shown qualitatively (conceptually). The identified model curves closely match the measured ones, confirming that the proposed method yields a high-fidelity solar inverter model.

6. Conclusion
We have presented a complete framework for parameter identification of solar inverters, addressing the critical challenge of low-sensitivity parameters. The key contributions are:
- A mathematical perturbation analysis that quantitatively distinguishes high- and low-sensitivity parameters in different operating stages.
- A practical method to determine initial parameter ranges using only external measurements, eliminating the need for proprietary data.
- A step-by-step identification strategy that first identifies high-sensitivity parameters, then low-sensitivity ones, preventing the search from being dominated by the former.
- An improved CGAPSO algorithm that combines genetic diversity, particle swarm convergence, and chaotic local search to achieve high accuracy.
- Validation using real field data from a 1 MW solar inverter, showing that the proposed method reduces low-sensitivity parameter errors from over 20% to below 1.1%.
Future work will extend the identification to additional parameters such as PI saturation limits and current limiter thresholds, and explore online implementation for real-time inverter monitoring.
