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. These limits account for the available PV power, storage losses, equipment losses, inverter capacity, and the interconnect constraint. The dispatch algorithms set the intent to charge or discharge; these limits determine how much power is actually available for each operation.

Inputs

NameSymbolUnitsDescription
PV Power After AvailabilityPPV,availP_{PV,avail}WPV output after availability losses (from PV-only pass)
PV MV Transformer OutputPPV,MVP_{PV,MV}WPV power before HV losses (from PV-only pass)
Interconnect CapacityPPOIP_{POI}WMaximum plant output (LGIA limit)
Storage Inverter CapacityPinvP_{inv}WMaximum power through the storage inverter
Storage Inverter Efficiencyηinv\eta_{inv}%Storage inverter conversion efficiency (converted to fraction for calculations)
MV Transformer RatingPrated,MVP_{rated,MV}kVAStorage MV transformer nameplate capacity
MV No-Load LossLNL,MVL_{NL,MV}%Storage MV transformer no-load loss percentage
MV Full-Load LossLFL,MVL_{FL,MV}%Storage MV transformer full-load loss percentage
HV Equipment LossesLHVL_{HV}WTotal HV transformer and transmission line losses (from PV-only pass)
Custom Inverter Capacity Fractionfcapf_{cap}Per-timestep inverter capacity percentage (Custom Dispatch only)

Outputs

NameSymbolUnitsDescription
Available Excess to ChargePc,excessP_{c,excess}WMaximum charge power from LGIA-clipped PV (at battery DC)
Available Capacity to ChargePcharge,availP_{charge,avail}WMaximum charge power from total PV (at battery DC)
Available Capacity to DischargePd,availP_{d,avail}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.

Charge Limit — LGIA Excess

When PV output after availability losses exceeds the interconnect capacity, the excess power can be diverted to charge the battery. The calculation traces this excess backward from the POI through HV equipment and the storage MV transformer to determine how much DC charge power is available. Step 1 — Excess at the POI (node 7): Pexcess=max(PPV,availPPOI,  0)P_{excess} = \max(P_{PV,avail} - P_{POI},\; 0) Step 2 — Add back proportional HV losses (node 5 → node 3): The excess power at the POI would have incurred HV transformer and transmission line losses. These are added back proportionally (the excess’s share of total losses): Pexcess,MV=Pexcess+LHV×PexcessPPV,MVP_{excess,MV} = P_{excess} + \sum L_{HV} \times \frac{P_{excess}}{P_{PV,MV}} Step 3 — Subtract storage MV transformer loss (node 3 → node 2): The power passes through the storage MV transformer in the step-down direction (same loss profile assumed in both directions): Pexcess,inv=Pexcess,MVLMV,storage(Pexcess,MV)P_{excess,inv} = P_{excess,MV} - L_{MV,storage}(P_{excess,MV}) where LMV,storageL_{MV,storage} is computed using the Transformer Loss Model with Prated,MVP_{rated,MV}, LNL,MVL_{NL,MV}, and LFL,MVL_{FL,MV}. Step 4 — Cap at inverter capacity and apply efficiency (node 2 → node 1): Pc,excess=min(Pinv,  Pexcess,inv)×ηinvP_{c,excess} = \min(P_{inv},\; P_{excess,inv}) \times \eta_{inv} The result is clamped to zero if negative.

Charge Limit — Energy Available

When PV is producing power (regardless of whether it exceeds the interconnect), the total MV output can potentially be diverted to charge the battery. The calculation traces the full PV MV output through the storage MV transformer. Step 1 — Storage MV transformer loss (node 4 → node 2): Pavail,inv=PPV,MVLMV,storage(PPV,MV)P_{avail,inv} = P_{PV,MV} - L_{MV,storage}(P_{PV,MV}) Step 2 — Cap at inverter capacity and apply efficiency (node 2 → node 1): Pcharge,avail=min(Pinv,  Pavail,inv)×ηinvP_{charge,avail} = \min(P_{inv},\; P_{avail,inv}) \times \eta_{inv} The result is clamped to zero if negative. This value is also used by the Energy Available dispatch algorithm to determine whether to set the charge flag.

Custom Dispatch Power

For the Custom Dispatch algorithm, charge and discharge power are derived from the user-specified inverter capacity fraction fcapf_{cap}: Pcustom,charge=fcap×Pinv×ηinvP_{custom,charge} = f_{cap} \times P_{inv} \times \eta_{inv} Pcustom,discharge=fcap×PinvηinvP_{custom,discharge} = \frac{f_{cap} \times P_{inv}}{\eta_{inv}} The actual charge power used by the battery model is the lesser of Pcustom,chargeP_{custom,charge} and Pcharge,availP_{charge,avail} (limiting charge to what the PV system can supply). The custom discharge power is not limited by LGIA headroom, giving the user maximum control over the dispatch schedule.

Discharge Limit

The discharge limit determines how much power the battery can deliver to the grid, constrained by both the LGIA headroom and the storage hardware capacity. Two limits are computed independently, and the lesser applies. LGIA limit (node 7): The battery can only discharge up to the remaining room under the interconnect limit: Pd,LGIA=max(PPOIPPV,avail,  0)P_{d,LGIA} = \max(P_{POI} - P_{PV,avail},\; 0) Storage hardware limit (node 7): The maximum power the storage system can deliver to the POI is determined by the inverter capacity, reduced by MV transformer and HV equipment losses: Pd,storage=PinvLMV,storage(Pinv)LHV,storageP_{d,storage} = P_{inv} - L_{MV,storage}(P_{inv}) - L_{HV,storage} where LHV,storageL_{HV,storage} is the HV equipment loss calculated for the storage inverter’s maximum output flowing through the plant-level HV equipment. Binding constraint (node 7): Pd,avail,POI=min(Pd,LGIA,  Pd,storage)P_{d,avail,POI} = \min(P_{d,LGIA},\; P_{d,storage}) Translate back to battery DC (node 7 → node 1): The limit at the POI is traced backward through HV equipment, MV transformer, and inverter to determine the actual DC discharge power: Pd,avail=min(Pd,avail,POI+LHV,storage+LMV,storage,  Pinv)ηinvP_{d,avail} = \frac{\min(P_{d,avail,POI} + L_{HV,storage} + L_{MV,storage},\; P_{inv})}{\eta_{inv}}