FCR
Overview
Every resource must pass pre-qualification before it can trade in Japan's balancing markets. For an FCR resource registered for offline monitoring, the aggregator, usually Tensor Energy, submits performance data collected at the site to the area TSO.
An FCR resource responds to grid frequency on its own, through its droop setting, instead of following dispatch commands. To collect the data, a simulated frequency signal replaces the live frequency measurement in the resource's control system, and the power response is compared with the values registered for the resource. The signal can come from a hardware signal source wired into the control system or be generated in software on the EMS. Either way, the EMS must measure and publish the same value that goes into the control system.
About this page
This page explains how to collect the performance data. It is for the EMS integrator, the EPC contractor, and the injection operator, who feeds the simulated frequency into the control system. With a hardware signal source the injection operator is usually the EPC contractor or the battery OEM; with software generation it is the EMS integrator.
The aggregator handles everything involving the area TSO and OCCTO.
Procedure
Simulated frequency profiles for the injection operator: fcr-prequalification-mock-frequency.xlsx.
The workbook has one sheet per test slot, with one row per second showing the frequency to inject and the baseline the battery should hold. The procedure is on the first sheet.
Before the run
| By | Who | Step |
|---|---|---|
| 3 weeks before the run | Aggregator | Agree the date with the EMS integrator and the injection operator |
| 2 weeks before the run | EMS integrator | Complete integration testing with Tensor Cloud, so that telemetry is known to arrive |
| 1 week before the run | EMS integrator | Confirm with the aggregator that the droop and deadband configured in the controller match the values registered with EPRX. See registered values |
| 1 week before the run | EMS integrator, EPC contractor | Send the documents to the aggregator |
| 1 week before the run | Aggregator | Set the charging baseline for test slots 1 and 3 based on the size of the resource |
| Day before the run | Tensor Cloud | Send the baseline schedule on the normal command topic and an FCR schedule covering the hour before the first slot and all three slots, with charging and discharging scheduled so the battery is at 75 % SoC when the first slot starts. The FCR schedule switches the site to 1 Hz publishing, so nothing needs to be switched on manually |
On the day
| When | Who | Step |
|---|---|---|
| During each test slot | Injection operator | Feed the profile from the workbook into the control system in place of the live frequency measurement |
| During each test slot | EMS | Measure the injected signal and publish it as 1 Hz frequency, together with 1 Hz power as 1-second average kW at the sending end, with pre_qualification: true. Clear the flag after the slot |
| Throughout the run | EMS integrator | Stay reachable. The aggregator is not on site |
All run data reaches Tensor Cloud through normal telemetry.
After the run
| By | Who | Step |
|---|---|---|
| 3 months before the resource starts trading | Aggregator | Calculate the response from the power, the frequency and the baseline, and apply for pre-qualification with the area TSO. The area TSO reviews within three months of the application |
| After the run | Injection operator | Keep the injection log |
Documents
Pre-qualification also needs documents describing how the resource and the site are built and configured. Telemetry cannot carry them, so send them to the aggregator before the run.
From the EMS integrator
| Requirement | What is needed | Format |
|---|---|---|
| Command and control, control interval (local autonomous control) | A description of the droop control function: control block diagram, computation interval, and that its input is the locally measured frequency. Where the droop control lives in the PCS, obtain it from the battery OEM | |
| Frequency measurement interval (0.1 s or shorter) | The frequency meter's specification | |
| Frequency measurement error (within ±0.02 Hz) | The same specification, with a test or calibration certificate where one exists | |
| Deadband, droop | The values as configured in the controller, and whether a frequency-deviation compensation function is fitted | |
| Delay time (2 s or less) | The breakdown: frequency measurement delay, control logic computation delay, equipment control delay. Obtain the PCS share from the battery OEM |
The frequency meter's specification or data sheet must show the measurement or update interval and the accuracy. If it does not, also send a short raw log recorded at the device's native rate, showing samples 0.1 s apart or closer with their values.
From the EPC contractor
| What is needed | Format |
|---|---|
| Single-line diagram | |
| Site plan | |
| Continuous operating voltage range, upper and lower limits in % | Values in writing (email is fine) |
| Confirmation that the metering equipment meets the metering requirements in Article 13 of the balancing market trading rules | In writing (email is fine) |
| Number of units, location of the TSO's wheeling meter, and its metering voltage (sending end or generator end) | Values in writing (email is fine) |
Requirements
| Item | Requirement | Checked by |
|---|---|---|
| Deadband | Within ±0.01 Hz (50 Hz areas) or ±0.012 Hz (60 Hz areas) | Test b |
| Droop | 5 % or less, and constant regardless of deviation magnitude. The area TSO may permit an exception where equipment characteristics justify it | Test b |
| Response time | 30 s | Test a |
| Delay time | 2 s or less | Test a |
| Frequency measurement interval | 0.1 s or shorter | Documents |
| Frequency measurement error | Within ±0.02 Hz | Documents |
Registered values
The aggregator registers the resource's offered capacity, droop and deadband with EPRX, and both tests score the response against these registered values.
- Offered capacity is the largest output change the resource reaches within 30 seconds of a 0.2 Hz frequency drop (0.3 Hz in the Hokkaido Electric Power Network area). It caps how much can be bid into FCR. Register a value the battery can deliver on the day. If it is too high, test a fails. If it is too low, test b is scored against a narrower tolerance than necessary.
- Droop and deadband must match the values configured in the controller. Each test b point is scored against the registered droop, so if the battery's settings or actual saturation point differ, it can fail even when it follows its own curve exactly.
Tests
Test slots
The run uses three 30-minute test slots, each with its own baseline and frequency pattern. Scoring is done per slot.
| Slot | Pattern | Baseline | Shows |
|---|---|---|---|
| 1 | Test b, staircase | Charging, held flat | Droop and deadband while charging |
| 2 | Test b, staircase | Not charging | Droop and deadband while not charging |
| 3 | Test a, single step | Maximum charge | Offered capacity across the full range from maximum charge to maximum discharge |
The slots do not have to be consecutive. The hour before each slot is also submitted.
Baseline
- Tensor Cloud sends each slot's baseline as a battery power setpoint on
cmd/{siteId}/battery/power, the same command channel as in normal operation. - The setpoint must stay constant for the whole slot and for the hour before it. If it changes, the response cannot be separated from it and the slot cannot be scored.
- Nothing else may move the battery. Any movement not caused by the baseline or the injected frequency shows up as response that the droop curve cannot explain.
- Output change is measured from the baseline, not from zero. In slot 3, test a has to show the swing from maximum charge toward discharge, and offered capacity must be reachable across that range within 30 seconds.
- Test b makes the battery charge and discharge in turn, so it needs room in both directions. The battery starts at 75 % SoC, and the charging baseline is chosen so the battery does not become full or empty before the slot ends.
Test a, abnormal conditions
Test a holds base frequency for 60 seconds, steps down at t=60 s, and holds the lower frequency until t=660 s. It is the only test that confirms offered capacity.
| Area | Step | Reach offered capacity within |
|---|---|---|
| Other than Hokkaido | 0.2 Hz | 30 s |
| Hokkaido Electric Power Network | 0.3 Hz | 30 s |
The resource must reach at least the registered offered capacity minus 10 % within 30 seconds of the step. The response is scored without correction.
Test b, normal conditions
Test b steps the frequency through six deviation levels, positive first in each pair, to check that output follows the registered droop outside the deadband. Each level is held for 120 seconds, with 30 seconds at base frequency in between.
| Time (s) | Deviation (Hz) | Hold (s) |
|---|---|---|
| 0 | 0 | 30 |
| 30 / 180 | +0.010 / -0.010 | 120 each |
| 330 / 480 | +0.030 / -0.030 | 120 each |
| 630 / 780 | +0.050 / -0.050 | 120 each |
| 930 / 1080 | +0.080 / -0.080 | 120 each |
| 1230 / 1380 | +0.120 / -0.120 | 120 each |
| 1530 / 1680 | +0.160 / -0.160 | 120 each |
| 1800 | 0 | end |
The deviations are the same for 50 Hz and 60 Hz areas. Inject base frequency plus the deviation, for example 60.010 Hz at a 60 Hz site or 50.010 Hz at a 50 Hz site.
Scoring works as follows:
- The response in the 30 seconds after each step is scored, including the initial transient.
- Each point must be within ±10 % of offered capacity of the droop curve value, and at least 90 % of the points in the slot must be within that range. The registered offered capacity therefore also sets the width of the tolerance.
- The area TSO shifts the response back by the 2 s delay time before comparing it with the frequency, so a delay of up to 2 seconds does not count against the resource. Test a has no such correction.
- Points inside the resource's deadband are not scored, so the ±0.01 Hz steps may produce no response.
The largest step is 0.16 Hz, below the 0.2 Hz (0.3 Hz in the Hokkaido Electric Power Network area) that defines offered capacity, so test b checks the droop line and not the output limit.