Grid Stability: Frequency Response and Inertia in Power Systems

simulator advanced ~12 min
Loading simulation...
f_nadir ≈ 49.5 Hz — stable recovery

With inertia H=5s, a 5% generation loss causes frequency to dip to approximately 49.5 Hz before governor response arrests the decline. The system settles to a new steady-state frequency below 50 Hz until secondary control restores it.

Formula

2H · d(Δf)/dt = ΔP_m − ΔP_e − D · Δf
ROCOF = df/dt = −ΔP · f₀ / (2H)
Δf_ss = −ΔP / (D + 1/R)

Frequency: The Pulse of the Grid

Grid frequency is the most important real-time indicator of power system health. In a synchronous AC system, all generators rotate in lockstep at a speed directly proportional to frequency. When a large generator trips offline, the remaining generators must instantly supply the lost power — and the energy comes from their own rotational kinetic energy, causing them to slow down. This deceleration manifests as a frequency decline that propagates across the entire interconnected grid at nearly the speed of light.

The Swing Equation

The simulation is governed by the swing equation: 2H·d(Δf)/dt = ΔP_m − ΔP_e − D·Δf. The inertia constant H determines how quickly frequency changes for a given power imbalance. The mechanical power input ΔP_m represents governor response (increasing steam/water/gas to turbines), while D represents the natural load damping effect — motors and other frequency-sensitive loads naturally reduce their power consumption as frequency drops.

Three Phases of Frequency Response

The visualization shows three distinct phases after a generation loss. First, the inertial response (0-2 seconds): frequency declines at a rate determined by system inertia and the size of the disturbance. Second, primary frequency response (2-30 seconds): governors detect the frequency decline and increase generator output, arresting the decline at the frequency nadir. Third, secondary response (30 seconds to minutes): automatic generation control (AGC) restores frequency to its nominal value by adjusting setpoints.

The Low-Inertia Challenge

As power systems worldwide integrate more wind and solar generation — which connects through inverters rather than synchronous machines — total system inertia is declining. Ireland has already experienced inertia levels so low that the rate of frequency change after disturbances threatens to trigger anti-islanding relays on distributed generators, potentially cascading into wider outages. Solutions include synthetic inertia from wind turbines, grid-forming inverters on batteries, and synchronous condensers — flywheels that provide inertia without generating power.

FAQ

Why does grid frequency matter?

Grid frequency (50 or 60 Hz) reflects the real-time balance between generation and load. When generation exceeds load, frequency rises; when load exceeds generation, frequency falls. Even a 1% deviation from nominal can damage equipment, and a 5% deviation triggers emergency load shedding or system collapse.

What is system inertia?

System inertia is the kinetic energy stored in the rotating masses of synchronous generators. When generation is suddenly lost, this stored energy is released as the rotors slow down, providing a buffer that limits the rate of frequency decline. It is quantified by the inertia constant H (seconds).

What is governor droop?

Governor droop R (typically 4-5%) defines how much a generator increases output in response to frequency decline. A 5% droop means the generator goes from zero to full output for a 5% frequency drop. Lower droop provides faster response but can cause hunting and instability.

How do renewables affect grid stability?

Wind turbines and solar panels connect through power electronics (inverters) that have no inherent rotational inertia. As they replace synchronous generators, total system inertia decreases, making frequency more volatile. Grid codes now require synthetic inertia and fast frequency response from these resources.

Sources

Embed

<iframe src="https://homo-deus.com/lab/power-systems/grid-stability/embed" width="100%" height="400" frameborder="0"></iframe>
View source on GitHub