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.
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 (PPOI: MW → W, PAC,rated,ESS: MW → W, PMV,rated,ESS: MVA → VA).
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.
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 Pexcess:Pexcess=max(PPV,avail−PPOI,0)Pc,start=Pexcess+LHV×PPV,MVPexcessThe proportional scaling of LHV 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,MV
The starting power passes through the ESS MV transformer:Pinv,AC=Pc,start−LMV,ESS(Pc,start)where LMV,ESS is computed using the Transformer Loss Model with PMV,rated,ESS, LNL,ESS, and LFL,ESS.
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)For the Custom Dispatch algorithm, the user specifies the inverter operating point as a fraction fcap of rated capacity, capped by the PV-derived power from Steps 1–2:Pinv,capped=min(fcap×PAC,rated,ESS,Pinv,AC)
The inverter efficiency ηinv is converted from percent to a fraction before use in equations.Pcharge=Pinv,capped×ηinvFor the Energy Available algorithm, Pcharge is used by the Dispatch Algorithms to determine whether to set the charge flag (when above zero).
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.
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(PPOI−PPV,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,ESS−LMV,ESS−LHV,ESSwhere LMV,ESS is the ESS MV transformer loss computed for PAC,rated,ESS using the Transformer Loss Model, and LHV,ESS is the total HV equipment loss computed by running the post-MV-transformer power (PAC,rated,ESS−LMV,ESS) through the plant’s HV equipment chain.Note that LHV,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)
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,ESSLMV,ESS is recalculated for the actual power at the transformer (Pd,start+LHV,ESS). If the limiting constraint in Step 1 is the LGIA headroom, this power is lower than PAC,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.
For the LGIA Excess and Energy Available algorithms, the hardware limit in Step 1 guarantees that Pinv,AC never exceeds PAC,rated,ESS, so Pinv,capped=Pinv,AC.For the Custom Dispatch algorithm, the user specifies the inverter operating point directly, bypassing Steps 1–2:Pinv,capped=fcap×PAC,rated,ESSBecause 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.