Skip to main content

Summary

Charge and discharge limits determine the maximum power that can flow into or out of the battery at each timestep. The Dispatch Algorithms set the intent to charge or discharge; the charge/discharge limits determine how much power is actually available for each operation. These limits account for the available PV power, ESS inverter capacity and losses, ESS losses, equipment losses, and the interconnect constraint. In both directions, the limit is set by the lesser of two competing factors: the energy target and the ESS hardware capacity (primarily the inverter). During charging, the energy target depends on the dispatch algorithm—ranging from PV power that would otherwise be curtailed to the full available PV output. During discharging, the energy target is the remaining headroom below the LGIA limit at the . For Custom Dispatch, the user directly controls both charge and discharge power levels as a fraction of inverter capacity, as detailed below.

Inputs

NameSymbolUnitsDescription
PV MV Transformer OutputPPV,MVP_{PV,MV}WPV power output from MV transformer, before HV losses
PV Power After AvailabilityPPV,availP_{PV,avail}WPV output after availability losses, before LGIA curtailment
Grid Limit (LGIA)PPOIP_{POI}MWMaximum allowed power at point of interconnection
HV Equipment LossesLHVL_{HV}WTotal HV transformer and transmission line losses (from PV-only pass)
ESS MV Transformer RatingPMV,rated,ESSP_{MV,rated,ESS}MVAESS MV transformer nameplate capacity
ESS MV No-Load LossLNL,ESSL_{NL,ESS}%ESS MV transformer no-load loss as a percentage of PMV,rated,ESSP_{MV,rated,ESS}
ESS MV Full-Load LossLFL,ESSL_{FL,ESS}%ESS MV transformer full-load loss as a percentage of PMV,rated,ESSP_{MV,rated,ESS}
ESS Inverter Rated AC PowerPAC,rated,ESSP_{AC,rated,ESS}MWESS inverter nameplate AC power rating
ESS Inverter Efficiencyηinv\eta_{inv}%ESS inverter conversion efficiency
Custom Inverter Capacity Fractionfcapf_{cap}Per-timestep inverter capacity fraction, 0 to 1 (Custom Dispatch only)

Outputs

NameSymbolUnitsDescription
Available Charge PowerPchargeP_{charge}WMaximum charge power at battery DC
Available Discharge PowerPdischargeP_{discharge}WMaximum discharge power at battery DC

Detailed Description

All charge and discharge limits are calculated at the battery DC terminals (Node 1). The calculations trace power from the measurement point (POI or MV bus) back through losses to determine how much DC power can actually reach or leave the battery. All inputs are converted to watts before use in equations (PPOIP_{POI}: MW → W, PAC,rated,ESSP_{AC,rated,ESS}: MW → W, PMV,rated,ESSP_{MV,rated,ESS}: MVA → VA).

Charge Limits

Each charge limit calculation follows the same four steps: determine a starting power, subtract ESS MV transformer losses, cap at inverter capacity, and apply inverter efficiency. The choice of dispatch algorithm affects the starting power (Step 1) and, for Custom Dispatch, the inverter capacity limit (Step 3). The result is clamped to zero if negative.

Step 1: Charging Starting Power

LGIA Excess algorithm: The LGIA Excess algorithm uses the PV excess above the interconnect limit, traced back from the POI to the MV bus by adding the portion of total HV losses attributable to PexcessP_{excess}: Pexcess=max(PPV,availPPOI,  0)P_{excess} = \max(P_{PV,avail} - P_{POI},\; 0) Pc,start=Pexcess+LHV×PexcessPPV,MVP_{c,start} = P_{excess} + L_{HV} \times \frac{P_{excess}}{P_{PV,MV}} The proportional scaling of LHVL_{HV} assumes HV losses scale linearly with power. Because HV losses are quadratic in current, this slightly overestimates the charge limit. This approximation only affects the determination of the charge limit; the actual losses are correctly captured in the second-pass plant-level power flow. Energy Available and Custom Dispatch algorithms: Both algorithms use the full PV MV transformer output as starting power: Pc,start=PPV,MVP_{c,start} = P_{PV,MV}

Step 2: ESS MV Transformer Loss

The starting power passes through the ESS MV transformer: Pinv,AC=Pc,startLMV,ESS(Pc,start)P_{inv,AC} = P_{c,start} - L_{MV,ESS}(P_{c,start}) where LMV,ESSL_{MV,ESS} is computed using the Transformer Loss Model with PMV,rated,ESSP_{MV,rated,ESS}, LNL,ESSL_{NL,ESS}, and LFL,ESSL_{FL,ESS}.

Step 3: Inverter Capacity Limit

For the LGIA Excess and Energy Available algorithms, the power available to the energy storage system after transformer losses is limited by the ESS inverter’s rated AC capacity: Pinv,capped=min(PAC,rated,ESS,  Pinv,AC)P_{inv,capped} = \min(P_{AC,rated,ESS},\; P_{inv,AC}) For the Custom Dispatch algorithm, the user specifies the inverter operating point as a fraction fcapf_{cap} of rated capacity, capped by the PV-derived power from Steps 1–2: Pinv,capped=min(fcap×PAC,rated,ESS,  Pinv,AC)P_{inv,capped} = \min(f_{cap} \times P_{AC,rated,ESS},\; P_{inv,AC})

Step 4: Inverter Efficiency

The inverter efficiency ηinv\eta_{inv} is converted from percent to a fraction before use in equations. Pcharge=Pinv,capped×ηinvP_{charge} = P_{inv,capped} \times \eta_{inv} For the Energy Available algorithm, PchargeP_{charge} is used by the Dispatch Algorithms to determine whether to set the charge flag (when above zero).

Discharge Limit

The discharge limit determines how much DC power the battery can deliver, traced from the POI back to the battery DC terminals. The calculation mirrors the charge pipeline in reverse.

Step 1: Discharging Starting Power

Two independent constraints determine the maximum discharge power at the POI: LGIA headroom: The battery can only discharge up to the remaining capacity below the LGIA limit after accounting for the PV output: Pd,LGIA=max(PPOIPPV,avail,  0)P_{d,LGIA} = \max(P_{POI} - P_{PV,avail},\; 0) Storage hardware limit: The maximum power the storage system can deliver to the POI is the inverter capacity reduced by ESS MV transformer and HV equipment losses: Pd,hardware=PAC,rated,ESSLMV,ESSLHV,ESSP_{d,hardware} = P_{AC,rated,ESS} - L_{MV,ESS} - L_{HV,ESS} where LMV,ESSL_{MV,ESS} is the ESS MV transformer loss computed for PAC,rated,ESSP_{AC,rated,ESS} using the Transformer Loss Model, and LHV,ESSL_{HV,ESS} is the total HV equipment loss computed by running the post-MV-transformer power (PAC,rated,ESSLMV,ESSP_{AC,rated,ESS} - L_{MV,ESS}) through the plant’s HV equipment chain. Note that LHV,ESSL_{HV,ESS} is evaluated for the storage power alone, not the combined PV+storage flow. Because HV losses are quadratic in current, this underestimates the true incremental loss and therefore slightly overestimates the discharge limit. This approximation only affects the determination of the discharge limit; the actual losses are correctly captured in the second-pass plant-level power flow, which uses the combined output. Combined constraint: The discharge starting power is the lesser of the two limits: Pd,start=min(Pd,LGIA,  Pd,hardware)P_{d,start} = \min(P_{d,LGIA},\; P_{d,hardware})

Step 2: HV and ESS MV Equipment Losses

The starting power is traced backward from the POI through HV equipment and ESS MV transformer to determine the power at the inverter AC terminals: Pinv,AC=Pd,start+LHV,ESS+LMV,ESSP_{inv,AC} = P_{d,start} + L_{HV,ESS} + L_{MV,ESS} LMV,ESSL_{MV,ESS} is recalculated for the actual power at the transformer (Pd,start+LHV,ESSP_{d,start} + L_{HV,ESS}). If the limiting constraint in Step 1 is the LGIA headroom, this power is lower than PAC,rated,ESSP_{AC,rated,ESS} and the MV loss differs from the value used in Step 1. If the limit is set by the ESS hardware, the power is the same and the loss is unchanged.

Step 3: Inverter Capacity Limit

For the LGIA Excess and Energy Available algorithms, the hardware limit in Step 1 guarantees that Pinv,ACP_{inv,AC} never exceeds PAC,rated,ESSP_{AC,rated,ESS}, so Pinv,capped=Pinv,ACP_{inv,capped} = P_{inv,AC}. For the Custom Dispatch algorithm, the user specifies the inverter operating point directly, bypassing Steps 1–2: Pinv,capped=fcap×PAC,rated,ESSP_{inv,capped} = f_{cap} \times P_{AC,rated,ESS} Because Custom Dispatch does not check LGIA headroom, the combined PV+ESS power at the POI can exceed the LGIA limit. Any excess is curtailed in the second-pass plant-level power flow. It is the user’s responsibility to set the custom dispatch instructions to avoid exceeding the LGIA limit, as there are intentionally no safeguards for this dispatch algorithm.

Step 4: Inverter Efficiency

The inverter AC power is converted to battery DC power by dividing by inverter efficiency: Pdischarge=Pinv,cappedηinvP_{discharge} = \frac{P_{inv,capped}}{\eta_{inv}}