Skip to main content

Summary

Dispatch Algorithms determine when the battery energy storage system should attempt to charge or discharge. PlantPredict implements three dispatch algorithms:
  • Excess: charges from clipped PV energy
  • Energy Available: charges when PV energy is available
  • Custom Dispatch: user-defined time series
The dispatch algorithm sets binary charge/discharge flags for each timestep, which control the battery calculation. These flags set the intent to charge or discharge; the Charge & Discharge 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, before LGIA curtailment
Grid Limit (LGIA)PPOIP_{POI}MWMaximum allowed power at point of interconnection
Available Charge PowerPchargeP_{charge}WMaximum charge power at battery DC (see Charge & Discharge Limits)
Dispatch TableDm,hD_{m,h}booleanDischarge command for month mm, hour hh (LGIA Excess / Energy Available)
Custom Time SeriesCtC_tPer-timestep charge/discharge command (Custom Dispatch)

Outputs

NameSymbolUnitsDescription
Charge FlagFcF_cbooleanTrue if battery should attempt to charge
Discharge FlagFdF_dbooleanTrue if battery should attempt to discharge

Detailed Description

The dispatch algorithms set charge and discharge intent flags (FcF_c, FdF_d) for each timestep. Both flags default to FALSE. These flags do not guarantee that charging or discharging will occur—feasibility depends on the available charge/discharge power (already computed by Charge & Discharge Limits) and whether the battery has remaining capacity to accept or deliver energy—is the battery fully charged or discharged?—evaluated in the Battery Model. PPOIP_{POI} is converted from MW to W before use in equations.

Discharging

LGIA Excess and Energy Available

For these algorithms, the target discharge period is determined from a monthly dispatch table (Dm,hD_{m,h}). For each month of the year, the table specifies which hours of the day are designated as discharge periods. The discharge flag is set when the current timestep falls within a target period: If Dm,h=TRUE    Fd=TRUE\text{If } D_{m,h} = \text{TRUE} \implies F_d = \text{TRUE}

Custom Dispatch

The discharge flag is set directly from the user-defined time series: If Ct=Discharge    Fd=TRUE\text{If } C_t = \text{Discharge} \implies F_d = \text{TRUE}

Charging

LGIA Excess

The charge flag is set when PV output after availability losses exceeds the LGIA limit, including during target discharge periods. The excess energy is diverted to charge the battery, subject to ESS inverter capacity and available battery capacity. If PPV,avail>PPOI    Fc=TRUE\text{If } P_{PV,avail} > P_{POI} \implies F_c = \text{TRUE}

Energy Available

The charge flag is set when there is available capacity to charge and the current timestep is not within a target discharge period. PchargeP_{charge} is the maximum charge power available at the battery DC terminals, derived from the total PV output at the bus through the ESS MV transformer and inverter losses and limits (see Charge & Discharge Limits for the full calculation). If Pcharge>0 and Dm,h=FALSE    Fc=TRUE\text{If } P_{charge} > 0 \text{ and } D_{m,h} = \text{FALSE} \implies F_c = \text{TRUE}

Custom Dispatch

The charge flag is set directly from the user-defined time series: If Ct=Charge    Fc=TRUE\text{If } C_t = \text{Charge} \implies F_c = \text{TRUE}

Charge/Discharge Priority

When both charge and discharge flags are active in the same timestep—possible with the LGIA Excess algorithm during a target discharge period when PV exceeds the LGIA limit—charging takes priority.