← Back to list

Detail Explanation of Grid-Tied Converter #17

Working in utility-scale energy storage energy, I'm always fascinated by how the converters able to dispatch and receive power on command…

Mr. C · 2026-06-28 07:30 · 0 claps · 9.7 min read
#grid-tied-converter #converter #power-inverter #solar-energy #besss
Open on Medium ↗
Wiki topics: RAG · RAG & Retrieval 🥊 · Combat Sports

Detail Explanation of Grid-Tied Converter #17

Working in utility-scale energy storage energy, I'm always fascinated by how the converters able to dispatch and receive power on command. Here I will try my best to explain this concept to the best of my ability.

“If you can’t explain it to a six year old, you don’t understand it yourself.”

Albert Einstein

What is a grid-tied converter?

First, a converter is a power conversion unit that transforms Direct Current (DC) to Alternating Current (AC), or vice versa. For example, a phone charger converts AC from the wall outlet into DC so the battery can charge. A basic charger like this is uncontrolled, it just converts at whatever rate it can, no special instructions needed.

But what if you want to control exactly how much power flows, or even reverse the direction entirely? That’s where a controlled converter comes in, with algorithms that receive commands and tell the converter exactly what to do, to charge faster, discharge slower or stop entirely.

A grid-tied converter takes it a step further. “Grid-tied” means the converter has to synchronise with the grid first — matching the grid’s voltage, frequency, and phase — before it can exchange any power at all. It works in both directions: pulling power from the three-phase AC grid to charge the DC batteries, or pushing power from the batteries back into the grid when needed.

Overview of the control strategy

It may seem overwhelming now, let’s focus one by one. There are three things to notice here. First, the Grid/PCC on the top right is the power grid itself, where the converter connects to the three-phase AC supply. PCC stands for Point of Common Coupling, basically the handshake point between your converter and the wider grid. Second, the VSC right below stands for Voltage Source Converter, that’s the converter we are controlling. Third, the References on the top left are the power setpoints a user sends to the converter: how much active power (P) to push or pull, and how much reactive power (Q) — in this case, zero. The rest is the control strategy.

In simple terms: you give a command, and the converter either pulls power from the grid to charge whatever is on the DC side, or pushes power from the DC side back into the grid. For this blog, we will not consider what’s on the DC side but it usually is some sort of power bank.

Control Strategy

A power grid is a strongly interconnected network that drives our modern world, connecting homes, power plants, and different cities into one gigantic machine. As they would call it, humanity’s largest man-made machine. So this power grid is the foundation. To connect a converter and try to discharge into the grid, you can’t simply push power in however you like. The voltage, frequency, and phase must be synchronized. In other words, they need to be the same as the grid because a small machine like a converter, compared to the whole grid, will simply lose that fight and get damaged.

abc to direct-quadrature-zero (dq0) Transformation (also refered to Parks Transform)

abc to direct-quadrature-zero (dq0) Transformation (also refered to Parks Transform)

abc to dq0 Transformation

So first, you have a mathematical transformation that converts a three-phase sinusoidal waveform into DC components that are much easier to work with. To make this more visual, look at the two diagrams side by side. On the right, you can see the three-phase AC waveforms, the blue, green, and orange sinusoidal waves; each 120° apart from each other, continuously rising and falling over one electrical cycle (2π). At any given snapshot in time, each phase is at a completely different point in its wave, which is exactly what makes them hard to control directly.

Now look at the left diagram. Instead of three separate waves, imagine combining them into a single rotating arrow — that orange vector spinning around the circle. The three axes a, b, and c represent each phase, and as the vector rotates with angle θ, it sweeps past all three. The full transform produces three components: d, q, and a zero-sequence component — that’s where the “0” in dq0 comes from. In a balanced three-phase system the zero component drops out to zero. The dq frame rotates with that arrow at the same speed as the grid frequency. So from its own perspective, the arrow is standing still and those spinning AC waveforms now look like steady DC values. Basically, it is very hard to control or track a moving sinusoidal wave, so you transform it into something flat that can be easily tracked and adjusted.

Back on the right diagram, the blue dashed line locked at +1 is the d component — steady and flat because the rotating frame is perfectly chasing the voltage vector. The pink dashed line sitting at 0 is the q component, zero because everything is perfectly aligned. The moment there’s a slight phase misalignment, Vq shifts away from zero. And when there’s an imbalance in the system, both d and q components will wobble rather than staying flat.

abc-dq0 transformation

abc-dq0 transformation

Phase-Locked Loop (PLL)

So what happens when there’s a misalignment? That’s where the PLL comes in. It watches the q component continuously, and its job is to drive Vq back to zero. It feeds the phase error into a PI controller, which adjusts the angle estimate θ and keeps recalculating until Vq = 0 again, meaning your converter’s frame is locked back onto the grid.

So now the abc-dq0 transformation gives us two things: the actual measured grid currents in the dq frame, i_d and i_q, telling us exactly what is flowing right now. But knowing what is flowing is only half the picture. The next question is what should be flowing? What is the target? That’s what the DC Bus PI and Reactive PI controllers calculate, and they output the targeted values: i_d and i_q.

It is worth noting that the abc-dq0 transformation is actually applied twice. Once on the measured grid voltages, which feeds the PLL to extract the phase angle θ. And again on the measured grid currents, which gives i_d and i_q, the actual current values flowing at that moment. Same transformation, two different signals.

DC side bus voltage controller

The DC bus PI controller monitors the actual DC bus voltage (Vdc) and compares it against the target DC bus voltage (Vdc), which is a fixed voltage reference set by the system design. The difference between them is the error, ev = Vdc − Vdc. That error gets fed into a PI controller which has two parts: the proportional term (Kp·ev) that reacts immediately to the error, and the integral term (Ki·∫ev dt) that keeps accumulating until the error is fully gone. Add them together and out comes i_d*, the active current reference that tells the converter how much current to push.

Equation: i_d* = Kp·ev + Ki·∫ev, ev = Vdc − Vdc*

Equation: i_d = Kp·ev + Ki·∫ev, ev = Vdc − Vdc**

Reactive-power reference

The reactive power side is much simpler, it’s just pure algebra. Reactive power is used to absorb or inject VArs, which in plain terms means shifting the phase of the sinusoidal waveform slightly. The relationship is i_q = Q/(−1.5·Vg).

Current Reference Limiter

Current limiter diagram

Current limiter diagram

But there is a limit to how much you can command. The converter has a physical current rating and you simply cannot ask it to push more than what it is built for. So before i_d and i_q go any further, they have to pass through a current limiter.

Think of it like a circle on a graph as shown above, with i_d on the horizontal axis and i_q on the vertical axis. The orange dashed circle is the boundary, its radius is i_max, the maximum current the converter can handle. The green arrow is the commanded current vector, a combination of both i_d and i_q together.

If that green arrow stays inside the circle, everything is fine and the command goes through as is. But if the command is too aggressive and the arrow tries to go beyond the circle, the controller pulls it back to the edge of the circle. It prioritises active current i_d first because that is your real power, and trims the reactive part i_q if needed to fit within the limit.

This is also exactly how fault ride-through works. During a grid fault when the system demands a large current response, the current limiter keeps the converter within its safe operating boundary so it doesn’t damage itself while still responding to the fault as best it can.

Inner Current Controller

v_d* = Kp·e_d + Ki∫e_d − ωL·i_q + v_gd ← v_gd  v_q* = Kp·e_q + Ki∫e_q + ωL·i_d + v_gq ← v_gq (≈0)

v_d = Kp·e_d + Ki∫e_d − ωL·i_q + v_gd ← v_gd v_q = Kp·e_q + Ki∫e_q + ωL·i_d + v_gq ← v_gq (≈0)

So now we have our targets, i_d and i_q. And we have our actual measured currents, i_d and i_q, from the abc-dq0 transformation. Now the inner current controller’s job is simple: close the gap between what we have and what we want, and do it fast, in milliseconds.

It runs two PI loops simultaneously, one for i_d and one for i_q, completely in parallel. Each loop takes the error between the target and the actual value, runs it through the PI controller, the proportional term reacts immediately and the integral term grinds the error down to zero.

But in a real converter there is an inductor (LR filter) on the AC side, and that inductor causes the d-axis and q-axis to interfere with each other. When current flows on the d-axis, it creates a disturbance on the q-axis, and vice versa. So before the voltage commands go out, the controller adds a decoupling term to each axis to cancel that interference out. On the d-axis it adds the grid voltage feedforward (Vg) on top of that to give it a head start.

The outputs are v_d and v_q, the voltage commands that tell the converter exactly what voltage it needs to synthesize on the AC side to drive the right amount of current.

Inverse Park (dq-αβ Transformation)

Equation: v_α = v_d·cosθ − v_q·sinθ , v_β = v_d·sinθ + v_q·cosθ; θ = instantaneous phase angle of the grid voltage generated by PLL

Equation: v_α = v_d·cosθ − v_q·sinθ , v_β = v_d·sinθ + v_q·cosθ; θ = instantaneous phase angle of the grid voltage generated by PLL

Now we have v_d and v_q, two DC values sitting in a rotating frame. But the converter needs to output AC voltage, not DC values in a spinning reference frame. So the next step is to reverse the transformation done earlier.

When the rotating frame stops and comes back to a stationary frame, those two DC values immediately become sinusoidal again. As seen in the diagram above, there are now two sinusoidal waves, v_α in blue and v_β in teal, sitting exactly 90° apart from each other.

Looking at the circle in the top diagram, those two sinusoidal waves combine into a single orange arrow that rotates around the circle. That rotating arrow is the voltage reference vector (V_ref). It spins at exactly the same speed as the grid frequency because the whole dq frame was locked to the grid by the PLL from the very beginning. The speed of rotation tells the frequency, the length of the arrow tells the voltage magnitude, and the angle tells the phase. All three in one single rotating vector.

Space Vector Pulse Width Modulation (SVPWM)

Now the voltage reference vector gets fed into the SVPWM block, and this is where the actual switching happens. Watch the animation above to see this in action.

Each point in the SVPWM diagram represents a switching pattern for the converter. Each pattern is a combination of three letters, either N or P, one for each leg. N means the lower IGBT (Q2) on the negative bus is switched on while P means the upper IGBT (Q1) on the positive bus is switched on. So NPN for example means Q2 at leg a is on, Q1 at leg b is on, and Q2 at leg c is on.

The converter cycles through what is called a seven-segment switching period. Think of it as one PWM cycle chopped into seven small time slots, where each slot is held for a precisely calculated duration so that the average voltage output across the full cycle works out to exactly V_ref.

On top of the current limit, the converter also has a voltage limit controlled by the modulation index m. Overmodulation means m exceeds 1 and that is not allowed as it distorts the output waveform. The modulation index controls the magnitude of the converter’s AC output voltage relative to the grid voltage. When m increases and the converter output voltage rises above the grid voltage, reactive power is exported into the grid. When m decreases and the converter output voltage drops below the grid voltage, reactive power is absorbed from the grid.

Conclusion

These IGBT switches are what physically enable the power to flow, either from the grid into the DC side like a battery bank, or from the battery bank back out into the grid.

But to get to that point, the whole control chain has to work together. The PLL locks onto the grid first. The abc-dq0 transformation turns those spinning AC waveforms into flat DC values that are easy to work with. The outer controllers calculate the targets. The current limiter makes sure nothing exceeds the physical capacity of the converter. The inner current controller closes the gap between what is actually flowing and what should be flowing. The Inverse Park transformation turns everything back into AC. And finally SVPWM translates it all into precise switching patterns that the IGBTs execute thousands of times per second.

A simple grid-tied converter hides a remarkably precise chain of math and control engineering working nonstop to make sure the power flows exactly as commanded, safely, stably, and in perfect sync with the grid.


메타데이터
post_id
c5555abd7d5f
slug
detail-explanation-of-grid-tied-converter-17-c5555abd7d5f
url
https://medium.com/@ahvim2000/detail-explanation-of-grid-tied-converter-17-c5555abd7d5f
canonical_url
https://medium.com/@ahvim2000/detail-explanation-of-grid-tied-converter-17-c5555abd7d5f
author_url
https://medium.com/@ahvim2000
status
ok
fetched_at
2026-07-10 13:01:02