Inside a Grid-Following Inverter: The Control Loops
Most of the inverters on the grid today are grid-following, and the usual one-line summary, “it uses a PLL and a current loop”, is true but unsatisfying. It tells you nothing about why the loops are arranged the way they are, why there are decoupling terms scattered through the code, or why the thing behaves so meekly during a fault. Grid-following inverter control is a genuinely elegant piece of cascaded control engineering, and it rewards a proper look.
This post opens up that structure. We will walk the cascade from the PLL inward to the current loop and back out to the power loops, derive the dq cross-coupling that forces the decoupling terms, put real numbers on the current-loop tuning, and finally explain why a grid-following inverter contributes so little fault current. By the end the block diagram should read as a set of deliberate choices rather than a tangle of boxes.
A Controlled Current Source That Follows
The defining idea is in the name. A grid-following inverter behaves as a controlled current source: it measures the grid voltage, figures out the grid’s angle, and injects current in step with it. It does not try to set the voltage, it leans on the grid to provide one and follows it. That is why a grid-following inverter needs a healthy grid voltage to lock onto, and why it struggles in a very weak one.
Everything in grid-following inverter control flows from that choice. Because the output variable is current, the fastest loop is a current loop. Because the loop must act on DC-like quantities, it lives in the dq frame, which needs the grid angle, which is why a phase-locked loop comes first. And because current is directly limited by the switches, fault current is whatever the current loop is told to allow, no more. Hold that thread and the rest of the architecture falls out of it.
Grid-Following Inverter Control: The Cascaded Architecture
The structure is a cascade of nested loops, fast on the inside, slow on the outside:
- A PLL reads the grid voltage and produces the angle that all the dq transformations use.
- An inner current loop in dq tracks current references quickly, this is the fast core.
- Outer loops generate those current references: a DC-link voltage or active-power loop sets the d-axis current reference, and a reactive-power or AC-voltage loop sets the q-axis reference.
The diagram shows the full chain: grid voltage to PLL to angle, outer loops to current references, current loop to a voltage command, modulator to the switches, then the filter back to the grid. The reason for the nesting is a clean division of labour. The inner loop is responsible for fast, accurate current; the outer loops worry about the slower energy and voltage balances and never touch the switches directly. Good grid-following inverter control is mostly about getting this separation right.
The Inner Current Loop and Why It Needs Decoupling
Across the filter inductor \( L \) (with resistance \( R \)), the converter voltage and grid voltage are related by \( v = L\,di/dt + Ri + e \). Transform that into the rotating dq frame and the time derivative of the rotating vector introduces cross terms. The two axes become coupled:
\[ v_d = L\frac{di_d}{dt} + R i_d – \omega L i_q + e_d \]
\[ v_q = L\frac{di_q}{dt} + R i_q + \omega L i_d + e_q \]
Those \( \pm \omega L \) terms are the problem: change \( i_d \) and you disturb \( i_q \), and vice versa. The fix is to add equal and opposite decoupling feedforward terms at the controller output, subtracting \( \omega L i_q \) on the d-axis and adding \( \omega L i_d \) on the q-axis, plus a grid-voltage feedforward of \( e_d \) and \( e_q \). For a 2 mH filter on a 50 Hz grid, \( \omega L = 2\pi(50)(0.002) = 0.628\ \Omega \), so at 100 A of q-axis current the d-axis decoupling term is about 63 V. Cancel those and each axis behaves like a simple, independent \( R\text{-}L \) plant, which is exactly what makes the tuning trivial. (Sign conventions vary with the dq orientation, so verify them against your own derivation.)
Tuning the Current Loop With Real Numbers
Once decoupled, each current axis is a first-order \( R\text{-}L \) system, and there is a clean, widely used way to tune the PI controller for it: internal model control (IMC). The result, from Harnefors and Nee, is beautifully simple. For a target closed-loop current-loop bandwidth \( \alpha_c \) (in rad/s):
\[ K_p = \alpha_c L, \qquad K_i = \alpha_c R \]
The controller zero cancels the plant pole, and the closed loop becomes a first-order lag with bandwidth \( \alpha_c \) and no overshoot. Put numbers on it: aim for a 500 Hz current loop, so \( \alpha_c = 2\pi(500) = 3142 \) rad/s, with \( L = 2 \) mH and \( R = 0.1\ \Omega \):
\[ K_p = 3142 \times 0.002 = 6.28\ \mathrm{V/A}, \qquad K_i = 3142 \times 0.1 = 314\ \mathrm{V/(A\,s)} \]
That is the entire current-loop design, two numbers from the filter values and one bandwidth choice. The step-response chart shows the loop with and without the decoupling of the previous section: with decoupling, a step in \( i_d \) leaves \( i_q \) undisturbed; without it, the step kicks a transient into \( i_q \). This is the heart of grid-following inverter control, and the general recipe behind it gets its own post on control-loop design.
The Outer Loops and Bandwidth Separation
The current loop tracks whatever reference it is given. The outer loops decide that reference. On the d-axis, a DC-link voltage controller (or an active-power controller) sets \( i_d^* \): if the DC link is sagging, demand more active current. On the q-axis, a reactive-power or AC-voltage controller sets \( i_q^* \) to deliver the required VARs or hold the terminal voltage.
The one rule that keeps a cascade stable is bandwidth separation: the inner loop must be substantially faster than the outer, typically by a factor of 5 to 10. The reasoning is intuitive. The outer loop assumes the current loop delivers its reference essentially instantly; that assumption only holds if the current loop is much faster. Violate it and the two loops start to interact and ring. So a 500 Hz current loop pairs naturally with an outer loop around 50 to 100 Hz. Most messy grid-following inverter control behaviour traces back to either bad decoupling or loops whose bandwidths are too close together.
Why Fault Current Is So Small
Here is the consequence that most affects the wider grid. A synchronous machine shoves 5 to 7 times its rated current into a nearby fault because physics says so, the flux cannot change instantly. A grid-following inverter has no such obligation. Its output current is whatever the inner current loop commands, and that loop has a hard limit set to protect the semiconductors, usually around 1.1 to 1.5 times rated.
So when a fault drags the voltage down, a grid-following inverter does not surge, it rides the current limit, delivering maybe 1.2 times rated and no more, as the fault-current chart shows against a machine’s decaying contribution. This is not a flaw, it is the design, but it has large knock-on effects: protection relays that expect a big fault current may not see enough to trip, and system strength falls as machines are replaced by current-limited inverters. Understanding grid-following inverter control is therefore the starting point for understanding why high-IBR grids force a rethink of protection.
Conclusion
Grid-following inverter control is one of those topics where the block diagram looks intimidating until you see the logic that generated it. Start from “it is a current source that follows the grid” and everything follows: a PLL to get the angle, a fast current loop in dq, decoupling terms to undo the frame’s cross-coupling, slow outer loops for power and voltage, and a current limit that quietly defines the fault behaviour.
The practical lessons are concrete. Get the decoupling signs right, tune the current loop with the two-line IMC formula, and keep your loop bandwidths well separated. Do those three things and a grid-following inverter is a well-behaved, predictable machine. Its one real weakness, leaning on a grid voltage it cannot itself create, is exactly what motivates grid-forming control, the subject of the companion post.
Key takeaways
- A grid-following inverter is a controlled current source that locks to the grid voltage via a PLL and injects current in step with it.
- The architecture is a cascade: PLL angle, a fast inner dq current loop, and slower outer loops for DC-link/active and reactive/AC-voltage control.
- The dq frame couples the axes through omega-L terms; decoupling feedforward (minus omega-L iq on d, plus omega-L id on q) cancels it so each axis is independent.
- IMC tuning of the current PI is just Kp = alpha L and Ki = alpha R; a 500 Hz loop on a 2 mH, 0.1 ohm filter gives Kp = 6.28, Ki = 314.
- Keep the inner loop 5 to 10 times faster than the outer loops, or the cascade interacts and rings.
- Fault current is set by the current limit (about 1.1 to 1.5 pu), not by physics, which is why inverters weaken fault levels and complicate protection.
Frequently Asked Questions
What is grid-following inverter control?
It is the control scheme in which an inverter behaves as a current source that synchronises to the grid voltage with a phase-locked loop and injects current in step with it. It uses a cascade of a fast inner current loop in the dq frame and slower outer loops for DC-link or active power and reactive power or AC voltage.
Why does a grid-following inverter need decoupling terms?
In the rotating dq frame, the filter inductance couples the d and q current axes through omega-L terms, so changing one axis disturbs the other. Decoupling feedforward subtracts omega-L times iq on the d-axis and adds omega-L times id on the q-axis, cancelling the coupling so each axis behaves as an independent first-order plant.
How is the current loop tuned?
Most commonly with internal model control (IMC), which for a first-order R-L plant gives Kp = alpha times L and Ki = alpha times R, where alpha is the desired closed-loop bandwidth in rad/s. For a 500 Hz loop on a 2 mH, 0.1 ohm filter, Kp is about 6.28 and Ki about 314.
Why do grid-following inverters contribute little fault current?
Their output current is set by the inner current loop, which has a hard limit, usually about 1.1 to 1.5 times rated, to protect the semiconductors. Unlike a synchronous machine that surges to 5 to 7 times rated, the inverter simply rides this limit during a fault, which weakens fault levels and complicates protection.
Related reading
- The dq (Park) transformation for inverter control
- Inside a grid-forming inverter: droop, VSM and power synchronization
- SRF-PLL design: synchronizing an inverter to the grid
- PLL synchronization instability in weak grids
- Electrical Engineering Formula Cheat Sheet (power systems quick reference)
References
- Yazdani & Iravani – Voltage-Sourced Converters in Power Systems (current control)
- Kazmierkowski & Malesani – Current control techniques for three-phase VSCs (IEEE)
- Harnefors & Nee – Model-based current control using internal model control (IEEE)
- Sandia National Laboratories – Controls and Fault Response of Inverter-Based Resources