FCR
About this page
Pre-qualification is the gate every resource has to clear before it can participate in Japan's balancing markets. This page covers the actual operation test for FCR on a resource registered for offline monitoring. For FCR the resource responds to frequency autonomously through its droop setting rather than to a dispatch command, so it is tested with a simulated frequency signal: an on-site transducer injects that signal into the resource's control system, and the resulting power response is judged against the droop curve and offered capacity registered for that resource.
This page is for the EMS integrator and the EPC contractor. Tensor Energy is the trading member, so everything facing the area TSO and OCCTO sits with Tensor Energy. What this page covers is what has to be built and configured before the test, and what each party does on the day.
The mock frequency profiles for the engineer operating the transducer: fcr-prequalification-mock-frequency.xlsx.
One sheet per test, both patterns expanded to one row per second, and the procedure on the first sheet.
What happens
- The EPC injects a mock grid frequency, with the integrator supporting. On the agreed day the transducer drives the profile from the workbook into the resource's control system, in place of the live frequency measurement. The battery responds through its droop setting exactly as it would to a real frequency excursion.
- The EMS collects the battery's response and sends it to Tensor Cloud. The integrator publishes the 1 Hz power response together with the 1 Hz frequency the battery was driven against, on the normal telemetry topics and in the normal schema, flagged
pre_qualification: true. - Tensor Energy handles the pre-qualification. Tensor Energy reconstructs the delivered response from those two series, submits it through MMS and takes the resource through pre-qualification with the area TSO. Nothing further is needed from site.
Who does what
| Stage | Tensor Energy | EMS integrator | EPC contractor |
|---|---|---|---|
| Registration | Registers the droop, deadband and offered capacity the test is scored against | Reports the values actually configured in the controller | - |
| Scheduling | Agrees the day and the two slots with the area TSO, then confirms the date | Confirms availability for the proposed day | Confirms availability for the proposed day |
| Before the test | Files the generation plan with OCCTO; schedules charge and discharge so the battery starts at 50 % SoC; sends an FCR schedule covering the hour before and both slots | Verifies the control system accepts an injected signal; stops anything else that would move the battery during the test | Installs and wires the transducer |
| On the day | Not on site | Sets pre_qualification: true, keeps telemetry flowing, stays reachable | Operates the transducer and drives the profile |
| Afterwards | Submits the results through MMS to the area TSO | - | - |
Offered capacity
Offered capacity is registered for the resource before the test, and it becomes the upper limit on what can be bid into FCR. For an offline resource it is the largest output change the resource can reach within 30 seconds of a 0.2 Hz frequency drop, or 0.3 Hz in the Hokkaido Electric Power Network area.
The registered value is checked in two ways:
- Test a drives a step past the threshold and checks that the resource actually reaches the registered value within 30 seconds.
- Test b scores every evaluated point against the droop curve with a tolerance of ±10 % of the registered value, so the registered number also sets how tight the staircase tolerance is.
Register a value the battery can actually deliver on the day. Too high and test a fails. Too low and the bid cap sits below what the battery can support.
The staircase drives the battery to charge and discharge in turn, so it needs headroom in both directions for the whole test window. Tensor Cloud schedules charge and discharge in the hours beforehand so that the battery is at 50 % state of charge when the first slot opens, which leaves room either way. Follow that schedule; the dispatch lockout below applies from the start of the test window, not before it.
Duration is not assessed for an offline resource, so the value has to be reachable within 30 seconds, not sustainable for any particular length of time.
Droop response
What the injected frequency is meant to exercise.
| Item | Requirement |
|---|---|
| Deadband | Within ±0.01 Hz (50 Hz areas) or ±0.012 Hz (60 Hz areas) |
| Droop | 5 % or less, and constant regardless of deviation magnitude. The area TSO may permit an exception where equipment characteristics justify it. |
| Response time | 30 s |
| Duration | Not assessed |
Check the registered droop against what the battery actually does before the run. Scoring compares each point to a theoretical value taken from the registered droop, so a battery whose real saturation point differs from the registered one can follow its own curve perfectly and still fall outside the ±10 % band.
Frequency measurement
These apply to the instrument that reads grid frequency at the connection point, and the test does not touch them: injecting a simulated signal bypasses that instrument entirely. Establish them separately, from datasheets and calibration certificates.
Delay time is not only a limit, it is also applied as a correction during evaluation. The area TSO shifts the response back by the 2 s delay time before comparing it to the frequency that caused it, so a response that lags by up to 2 s is not penalised for the lag itself. The 2 s delay time is the only correction applied.
| Item | Requirement |
|---|---|
| Measurement interval | 0.1 s or shorter |
| Measurement error | Within ±0.02 Hz |
| Delay time | 2 s or less |
The two tests
Pre-qualification consists of two standardized tests. They are run in separate 30-minute slots, because scoring is done per slot.
| Test a (abnormal conditions) | Test b (normal conditions) | |
|---|---|---|
| Verifies | Response time, offered capacity, delay time | Deadband, droop |
| Shape | One sustained step down | Repeating staircase |
| Length | 660 s | 1,800 s |
| Required offline | Yes, this is the only test that establishes offered capacity | Yes |
Test a, abnormal conditions
Test a holds base frequency for 60 seconds, applies a single step down at t=60 s, and holds it to t=660 s.
The step has to exceed the threshold rather than merely reach it:
| Area | Threshold | Reach offered capacity within |
|---|---|---|
| Other than Hokkaido | 0.2 Hz | 30 s |
| Hokkaido Electric Power Network | 0.3 Hz | 30 s |
The workbook adds a 0.01 Hz margin to each threshold so the requirement is met unambiguously. Duration is not assessed, but the test a data is still required to confirm offered capacity.
Test b, normal conditions
Test b steps the frequency through six deviation magnitudes, positive first in each pair, to confirm that output tracks the registered droop curve outside the deadband. Each level is held for 120 seconds, with 30 seconds at base frequency between levels.
| Time (s) | Deviation, 60 Hz zone | Deviation, 50 Hz zone | Hold (s) |
|---|---|---|---|
| 0 | 0 | 0 | 30 |
| 30 / 180 | +0.010 / -0.010 | +0.008 / -0.008 | 120 each |
| 330 / 480 | +0.030 / -0.030 | +0.025 / -0.025 | 120 each |
| 630 / 780 | +0.050 / -0.050 | +0.042 / -0.042 | 120 each |
| 930 / 1080 | +0.080 / -0.080 | +0.067 / -0.067 | 120 each |
| 1230 / 1380 | +0.120 / -0.120 | +0.100 / -0.100 | 120 each |
| 1530 / 1680 | +0.160 / -0.160 | +0.133 / -0.133 | 120 each |
| 1800 | 0 | 0 | end |
For a 60 Hz site, use the 60 Hz column. For a 50 Hz site, wait for Tensor Energy to issue the confirmed pattern before loading anything; the 50 Hz column here is scaled 50/60 from the 60 Hz values and is not yet confirmed.
Scoring starts 10 seconds after each step, which excludes the initial transient. Each evaluated point must fall within the droop-curve theoretical value ±10% of offered capacity, and at least 90% of the points in a 30-minute slot must be in band. Samples inside the resource's deadband are excluded from evaluation, so the ±0.01 Hz steps may legitimately produce no response at all.
Test b never reaches the deviation at which offered capacity is defined. Its largest step is 0.16 Hz, below the 0.2 Hz point outside Hokkaido and the 0.3 Hz point in the Hokkaido Electric Power Network area, so it exercises the droop line rather than saturation. Test a covers offered capacity.
The test day
Tensor Energy agrees the date with the area TSO by email and confirms it once fixed. Two 30-minute slots on a single day, one test per slot. The slots may be consecutive or not; nothing requires either. The area TSO can refuse a slot if the grid or supply-demand situation does not allow it, so treat a date as provisional until it is confirmed.
Needed before a date is proposed
- Confirmation from the integrator that the controller is running the registered droop and deadband settings. If they changed during commissioning, report them before the test rather than after, because the response is scored against the registered values.
On the day
- Tensor Cloud sends an FCR schedule covering the hour before the first slot and both test slots. That schedule is what puts the site into 1 Hz publishing, by the same rule as any FCR-awarded slot, so nothing has to be switched on by hand. The hour before is part of the period submitted to the TSO.
- Publish 1 Hz supplied power as 1-second average kW at the sending end, and 1 Hz frequency carrying the simulated value the resource is being driven against rather than the live grid frequency.
- Set
pre_qualification: truefor the test window and clear it afterwards. - Nothing except the injected frequency may move the battery during the test window. Stop any power setpoint schedule still running, and make sure the battery is not following a dispatch signal for another product. If the output moves for a second reason, the response no longer matches the droop curve it is scored against.
- The EPC operates the transducer and drives the profile from the workbook linked above. The integrator stays reachable while it runs.
Everything reaches Tensor Cloud over the normal telemetry path. Nothing is sent to Tensor Energy separately, and no TSO form is filled in on site.