Flexible Connection Agreements

Understanding how FCAs impact battery operations and dispatch optimization in Germany


Flexible Connection Agreements (FCAs) impose operational constraints on grid-connected assets. As grid capacity becomes increasingly constrained, FCAs are emerging as a mechanism for enabling new connections while managing network limitations.

Read this article to learn more about how FCAs impact revenues and why the dispatch varies as shown below.

What You Can Configure in a Forecast

Three FCA-related settings can be entered when creating a German forecast, all found in the forecast creation flow:

Setting Where What it does
Ramp time Grid connection tab, in minutes How long the battery takes to move between power levels, up to 30 minutes. A longer ramp time reduces how quickly the battery can react to prices, and the forecast accounts for the energy lost while ramping.
Maximum ancillary services capacity Grid connection tab, % of rated power Caps the combined share of the battery available for ancillary services. Covered in detail under Ancillary Service Participation below.
Custom curtailment profile Grid connection tab, file upload Time-varying limits on how much the battery can export to or import from the grid, uploaded as a profile, for agreements that cap grid access at certain times.

The model applies these limits automatically in every dispatch decision, so the forecast reflects what the battery could realistically earn under the agreement. The revenue impact of an FCA can be measured by comparing a forecast that includes the restrictions with one that does not.

Ramping Rate Restrictions

FCA agreements may limit how quickly a battery can change its power output. The model enforces four directional ramp constraints:

Ramp-up limits (increasing power):

\[P^{\text{charge}}_t - P^{\text{charge}}_{t-1} \leq R^{\max}_{\Delta t}\] \[P^{\text{discharge}}_t - P^{\text{discharge}}_{t-1} \leq R^{\max}_{\Delta t}\]

Ramp-down limits (decreasing power):

\[P^{\text{charge}}_t - P^{\text{charge}}_{t-1} \geq -R^{\max}_{\Delta t}\] \[P^{\text{discharge}}_t - P^{\text{discharge}}_{t-1} \geq -R^{\max}_{\Delta t}\]

Where \(R^{\max}_{\Delta t}\) is the maximum allowed power change per timestep.

Average Power During Ramping

When ramp times are non-zero, the battery cannot instantly reach its target power level. The model calculates average power during each period using the trapezoidal rule to account for gradual ramping:

Power
(MW)
  β”‚
  β”‚  P_t^signal  ·······‒─────────────────‒
  β”‚                    β•±                  β”‚
  β”‚                   β•±                   β”‚
  β”‚                  β•±                    β”‚
  β”‚                 β•±                     β”‚
  β”‚                β•±                      β”‚
  β”‚ P_{t-1}^signal β€’                       β”‚
  β”‚                β”‚                      β”‚
  └────────────────┼──────────────────────┼────► Time
                 t-1         Ο„            t
                   │←────────→│
                   │←────────────────────→│
                              Ξ”t

Energy Calculation via Trapezoid Area:

The energy delivered during the timestep equals the area under the power curve. This area comprises two regions:

  1. Ramp region (from \(t-1\) to \(t-1+\tau\)): A trapezoid with parallel sides \(P_{t-1}^{\text{signal}}\) and \(P_t^{\text{signal}}\)

  2. Flat region (from \(t-1+\tau\) to \(t\)): A rectangle at \(P_t^{\text{signal}}\)

Using the trapezoid area formula \(A = \frac{1}{2}(a + b) \cdot h\):

\[E_t = \underbrace{\frac{1}{2}\left(P_{t-1}^{\text{signal}} + P_t^{\text{signal}}\right) \cdot \tau}_{\text{ramp region}} + \underbrace{P_t^{\text{signal}} \cdot (\Delta t - \tau)}_{\text{flat region}}\]

Expanding and simplifying:

\[E_t = P_t^{\text{signal}} \cdot \Delta t - \frac{\tau}{2} \left(P_t^{\text{signal}} - P_{t-1}^{\text{signal}}\right)\]

The average power over the timestep is therefore:

\[P^{\text{avg}}_t = \frac{E_t}{\Delta t} = P_t^{\text{signal}} - \frac{\tau}{2 \Delta t} \left(P_t^{\text{signal}} - P_{t-1}^{\text{signal}}\right)\]

Or equivalently:

\[P^{\text{avg}}_t = P_{t-1}^{\text{signal}} + \frac{2\Delta t - \tau}{2 \Delta t} \cdot \left( P_t^{\text{signal}} - P_{t-1}^{\text{signal}} \right)\]

Boundary Cases:

Ramp Time Average Power Interpretation
\(\tau = 0\) \(P^{\text{avg}}_t = P_t^{\text{signal}}\) Instantaneous rampingβ€”power jumps immediately
\(\tau = \Delta t\) \(P^{\text{avg}}_t = \frac{P_{t-1}^{\text{signal}} + P_t^{\text{signal}}}{2}\) Full-period rampβ€”linear interpolation
Instantaneous (Ο„ = 0)          With Ramp Time (Ο„ > 0)
─────────────────────          ─────────────────────
Power                          Power
  β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€              β”‚            β”Œβ”€β”€β”€β”€β”€β”€
  β”‚       β”‚                      β”‚           β•±β”‚
  β”‚       β”‚                      β”‚          β•± β”‚
  β”‚       β”‚                      β”‚         β•±  β”‚
  β”‚β”€β”€β”€β”€β”€β”€β”€β”˜                      │────────╱   β”‚
  └──────────────► t             └──────────────► t
        t-1    t                       t-1  Ο„  t

  Area = P_t Γ— Ξ”t                Area = trapezoid + rectangle
  (full rectangle)               (accounts for gradual ramp)

Export/Import Limits

Flexible connections often impose time-varying limits on grid export or import:

\[P^{\text{export}}_t \leq P^{\text{FCA,export}}_t \quad \text{and} \quad P^{\text{import}}_t \leq P^{\text{FCA,import}}_t\]

These constraints directly affect the battery’s ability to participate in wholesale markets and must be factored into dispatch decisions.

This is how custom curtailment profiles appear on the terminal:

FCA Custom Curtailment Profile Upload

Ancillary Service Participation

Under FCA, ancillary service participation may be restricted:

  • Reduced FCR/aFRR capacity available due to export constraints
  • Model adjusts maximum ancillary service provision based on FCA limits
  • Revenue impact quantified by comparing constrained vs unconstrained dispatch

The Maximum ancillary services capacity field on the Grid connection tab captures this restriction. It caps the combined capacity committed across all ancillary products, not each product separately, and is applied to the charge and discharge directions independently. See Ancillary service capacity is capped by a single combined limit on the Dispatch Model page for the full definition and a worked example.


  • Dispatch Model – How the model optimizes battery dispatch across German markets
  • Revenue Stack – Overview of available revenue streams in Germany