Flexibility and grid codes

Dynamic frequency response services explained

How GB Dynamic Containment, Moderation and Regulation differ from static response, and what a battery site must measure, control and record to deliver them.

Dynamic frequency response is an automatic change in active power that follows measured grid frequency. A battery, generator or controllable load measures frequency at its own connection, calculates a power request from the service's response curve and changes output continuously while frequency is away from nominal.

Each system operator defines its own services, response curves, tests and settlement rules. This article uses the Great Britain services from the National Energy System Operator (NESO) as the worked case, with the equivalent European, Irish and Australian figures for comparison.

Why frequency response exists

Frequency falls when generation is less than demand and rises when it is more. Low system inertia makes frequency move further and faster after the same loss, which is the case DC is designed for. In Great Britain, NESO's licence obliges it to hold frequency within 50 Hz ±1% (49.5 to 50.5 Hz), and it operates to a tighter band of ±0.2 Hz. In Continental Europe, the System Operation Guideline (Regulation (EU) 2017/1485, Annex III) sets a standard frequency range of ±50 mHz, a maximum steady-state deviation of 200 mHz and a maximum instantaneous deviation of 800 mHz. Ireland and Northern Ireland are a smaller synchronous area and get wider limits: ±200 mHz, 500 mHz and 1000 mHz.

The old labels primary, secondary and tertiary map to the ENTSO-E terms Frequency Containment Reserve (FCR), automatic Frequency Restoration Reserve (aFRR) and manual Frequency Restoration Reserve (mFRR). Replacement Reserve (RR) is a slower, manually activated reserve that some TSOs use to release aFRR and mFRR. FCR acts on local frequency. In Continental Europe it must reach full activation within 30 s at a ±200 mHz deviation, with no more than 10 mHz of combined insensitivity and deadband (Annex V). aFRR and mFRR do not act on local frequency. They follow a set point from the TSO, and the European standard products give them full activation times of 5 minutes and 12.5 minutes.

Dynamic services in Great Britain

NESO procures three Dynamic Response Services. Each one is procured separately for low frequency and high frequency.

ServiceMaximum initiation timeMaximum time to full deliveryDelivery durationRole
Dynamic Containment (DC)0.5 s1 s15 minutesPost-fault
Dynamic Moderation (DM)0.5 s1 s30 minutesPre-fault
Dynamic Regulation (DR)2 s10 s60 minutesPre-fault

Source: NESO Dynamic Services technical requirements and Provider Guidance v14, June 2026.

A response unit must offer at least 1 MW and at most 100 MW, in whole MW. Contracts currently run in four-hour EFA blocks. Every unit must accept a disarm and re-arm instruction from NESO. Aggregation is allowed for assets in the same GSP Group. NESO's response reform programme proposes 30-minute service windows in place of EFA blocks, and a 1 second response time for DR to match DC and DM. Check the service terms in force on the date of the bid.

NESO also still buys Static Firm Frequency Response (SFFR), a non-dynamic post-fault service with a 30 s response and a 30-minute duration.

DC is autonomous. The unit acts on its own frequency measurement and receives no dispatch signal during an event. aFRR in Europe works the other way: the unit follows a TSO set point that changes every few seconds. Both vary power continuously, but they need a different control path, a different communications design and different evidence.

Dynamic and static controllers

A static controller switches a fixed block of power when frequency crosses a trigger. An example is a relay that sheds a 400 kW chiller at 49.7 Hz and restores it after a hold time. The response is either zero or the full block.

A dynamic controller calculates a new power request on every frequency sample. The request is a piecewise-linear function of the deviation from 50 Hz. The DC characteristic from the NESO Provider Guidance is:

  • 0% delivery within ±0.015 Hz (the deadband);
  • a small linear delivery that reaches 5% at ±0.2 Hz (the knee point); and
  • a steep linear delivery from 5% at ±0.2 Hz to 100% at ±0.5 Hz.

DM is concentrated between ±0.1 Hz and ±0.2 Hz, where it gives additional power as frequency approaches the operational limit. DR delivers across the operational range and reaches full delivery at ±0.2 Hz. The service decides which controller type is eligible. A relay cannot deliver DC.

Worked example: 10 MW of Dynamic Containment

A battery holds a 10 MW DC low-frequency contract (DCL). The table shows the request at several frequencies.

Measured frequencyDeviationDeliveryRequested discharge
49.985 Hz0.015 Hz0%0 MW
49.90 Hz0.10 Hz2.3%0.23 MW
49.80 Hz0.20 Hz5.0%0.50 MW
49.70 Hz0.30 Hz36.7%3.67 MW
49.60 Hz0.40 Hz68.3%6.83 MW
49.50 Hz0.50 Hz100%10.0 MW

Between the knee and full delivery, the slope is 95% per 0.3 Hz. That is 3.2% of contracted power per 0.01 Hz, or 0.32 MW per 0.01 Hz on this unit. A frequency measurement that reads 0.01 Hz high at 49.7 Hz therefore under-delivers by about 0.3 MW. Measurement accuracy is part of the delivery error.

The energy rules follow from the duration. NESO defines the Response Energy Volume as the contracted quantity multiplied by the delivery duration: 10 MW × 15 minutes = 2.5 MWh. The unit must also be able to recover at least 20% of that volume (0.5 MWh) in one 30-minute settlement period through State of Energy management. A unit that holds both DCL and DCH at 10 MW needs 2.5 MWh above its minimum state of charge and 2.5 MWh of free capacity below its maximum, at the start of every EFA block, before inverter losses and the battery management system's own limits. Operational baselines (Physical Notifications, at 1-minute resolution and submitted before gate closure 60 minutes ahead) are the tool for moving state of charge back to that position.

The 1 second latency budget

DC must start within 0.5 s and reach full delivery within 1 s. The delivery curve also says full delivery must be no faster than 0.5 s, so a very fast inverter may need a ramp limit. Everything between the frequency input and the power at the boundary shares that second:

StageExample figureWhere it comes from
Frequency measurement and filtering100 ms or lessZDR datasheet reaction and sample time
Set point write, Modbus RTU function 16, two registers, 19.2 kbit/sabout 16 ms21 bytes at 11 bits each, plus two 3.5-character gaps
PCS set point processing and rampmeasure itInverter or PCS vendor, verified at commissioning
Boundary metering and recordingsample interval of the record50 ms for 20 Hz performance data

The measurement and the serial write are small and predictable. The PCS term is the one that is rarely on a datasheet. Check whether the PCS applies a default ramp limiter or reads its set point register on a slow internal cycle. Do a step test: inject a frequency step, record frequency, the set point written and the power at the boundary on one clock, and read the delay from the record.

Service names by region

RegionServicesSpeed figures
Great BritainDC, DM, DR; Static Firm Frequency ResponseDC and DM full delivery in 1 s, DR in 10 s, SFFR in 30 s
Continental EuropeFCR, aFRR, mFRR, RRFCR full activation in 30 s at ±200 mHz; aFRR 5 minutes; mFRR 12.5 minutes
Ireland and Northern IrelandDS3 System Services, including Fast Frequency Response (FFR)FFR fully available within 2 s of an event and sustained to 10 s
Australia's NEMTen FCAS markets: regulation raise and lower, and contingency raise and lowerContingency at 1 s, 6 s, 60 s and 5 minutes

EirGrid and SONI procure DS3 services under their own protocol and agreements. For Australian projects, use the FCAS services and measurement guide. AEMO's Market Ancillary Services Specification sets its own measurement and registration rules.

Assets that can provide response

Batteries provide most dynamic response in Great Britain because a battery inverter can reverse its power flow inside DC's 1 second limit and can track a changing request in both directions. The limits are energy, not speed: state of charge, cell temperature and the cycling allowed under the warranty.

Generators can provide high-frequency response cheaply by reducing output. Low-frequency response needs headroom that is held back, so wind or solar plant must run curtailed, which costs energy revenue in every hour it is contracted.

Flexible demand usually suits static or low-frequency-only services. A compressor, chiller or heater can stop quickly but cannot follow frequency back up smoothly. A compressor stopped at 49.6 Hz cannot restart until its anti-short-cycle timer expires. Refrigeration and HVAC also rebound after an event, when the load recovers the lost cooling or heating. Measure that rebound at the boundary meter, because it appears as extra demand just after the frequency recovers.

Aggregation combines smaller sites into one response unit, a virtual power plant, but each site still needs a known operating state, an authorised control path, measured delivery at its own boundary and a safe state on communications loss.

Measurement and control architecture

Design the site as six separate functions:

  1. Frequency measurement: local frequency at the connection, at the accuracy and rate the service needs.
  2. Response calculation: the service curve, deadband, direction, contracted MW and state-of-charge limits.
  3. Asset control: a set point the PCS or load controller can follow safely, or a relay for a static service.
  4. Power measurement: active power at the electrical boundary that the programme defines.
  5. Time and evidence: frequency, set point, asset state, availability flag and power on one clock.
  6. Market operation: bidding, baselines, availability declarations, disarm instructions and settlement.

State each rate as a number. The ZDR-22 samples frequency every 100 ms for control, records event data at 20 ms intervals and streams data to the cloud at 1 s. NESO wants DC and DM performance data at 20 Hz, and DR at 20 Hz or 2 Hz. It treats any gap longer than 50 ms in 20 Hz data as missing data. A 1 second cloud stream therefore cannot be the performance record, and replaying buffered data later cannot create a response that did not happen.

Failure modes and the evidence that finds them

Record the evidence that exposes each of these failures before commissioning, not after the first poor performance score.

Clock misalignment makes a correct response look late. At 20 Hz, a 100 ms offset between the frequency record and the power record is two samples, and NESO calculates DC and DM error over a 0.2 s rolling-minimum window of four samples. Take frequency and power from one time source, such as GPS/GNSS, and check the offset in the step test.

A boundary meter with a wrong CT ratio scales every delivery figure. A reversed CT flips the sign, so a correct DCL discharge appears as charging. Check import and export sign convention against a known load before the first test.

Stale data is dangerous. If the controller loses its frequency input or its link to the PCS, it must not hold the last set point. Define the safe state (usually zero request) and set the availability flag to unavailable. NESO sets the availability factor to zero for a whole settlement period that contains any unavailability, so a 2-second dropout costs 30 minutes of availability payment.

State-of-charge exhaustion ends delivery early in a long low-frequency period. Log state of charge with every event and compare it with the baseline that was submitted.

Shared boundaries cause double counting. If a site load or another service sits behind the same meter, its changes appear as response. Record every load and generator behind the boundary, and every other service the asset is stacked with.

Keep raw 20 Hz data with the analysis, together with the firmware version and controller settings in force during each event. A screenshot or a calculated score without the source data cannot be re-checked.

Frequency response with the EpiSensor ZDR

The ZDR datasheet (EPI-211-04) covers three variants:

  • ZDR-20: static frequency response through a relay output.
  • ZDR-21: static response, with 20 ms event-data recording and GPS/GNSS time synchronisation.
  • ZDR-22: battery control for dynamic frequency response, with 20 ms event-data recording and GPS/GNSS time synchronisation. It has no relay output. It commands the battery through its serial port as a Modbus RTU master over RS-485 (up to four client devices and 20 registers). An optional CANbus port is also available.

Frequency reaction time and sample time are 100 ms or less, frequency resolution is 0.01 Hz and frequency accuracy is ±0.01 Hz. The ±0.01 Hz accuracy meets the 10 mHz FCR measurement minimum in Annex V of Regulation (EU) 2017/1485. On the DC curve above, it is worth up to 0.32 MW on a 10 MW unit, so include it in the delivery tolerance. Active power accuracy is Class 0.5S to IEC 62053-22, on its own three-phase inputs, which lets the ZDR measure delivery at the boundary independently of the PCS's own reading.

The 20 ms event recording on the ZDR-21 and ZDR-22 is finer than the 50 ms interval of NESO's 20 Hz performance files. The 100 ms figure is the control sample and must not be quoted as the recording rate. NESO also tests operational metering and performance-data delivery through its data concentrator at onboarding. Plan how the ZDR record reaches that path before the test date.

A ZDR does not qualify a site by itself. Prequalification tests the complete unit: frequency input, controller, PCS, boundary meter and data path. Use the battery demand-response application guide to lay out the site, then select the variant that matches the service.