Illuminator Controller Models

class illuminator.models.Controllers.controller_T1.controller_T1_v3.Controller_T1(**kwargs)

Controller for managing power flows between renewable generation, load, and battery storage.

This controller determines how power should be distributed between renewable sources (wind, solar), load demands, and battery storage. It implements basic control logic for battery charging and discharging based on state of charge limits and power constraints.

Parameters:
  • soc_min (float) – Minimum state of charge of the battery before discharging stops (%)

  • soc_max (float) – Maximum state of charge of the battery before charging stops (%)

  • max_p (float) – Maximum power to/from the battery (kW)

  • battery_active (bool) – Flag to enable/disable battery operation

Inputs:
  • wind_gen (float) – Wind power generation (kW)

  • pv_gen (float) – Solar power generation (kW)

  • load_dem (float) – Electrical load demand (kW)

  • soc (float) – State of charge of the battery (%)

Outputs:
  • flow2b (float) – Power flow to/from battery (kW, positive for charging, negative for discharging)

  • res_load (float) – Residual load after renewable generation (kW)

  • dump (float) – Excess power that cannot be stored or used (kW)

States:

None

control(wind_gen, pv_gen, load_dem, soc=None)

Controls power flows based on generation, demand and storage states.

Parameters:
  • wind_gen (float) – Wind power generation [kW]

  • pv_gen (float) – Solar power generation [kW]

  • load_dem (float) – Load demand [kW]

  • soc (float) – Battery state of charge [%]

Returns:

Dictionary containing: - flow2b (float): Power flow to/from battery [kW] - res_load (float): Residual load [kW] - dump (float): Excess power [kW]

Return type:

dict

inputs: Dict = {'load_dem': 0, 'pv_gen': 0, 'soc': 0, 'wind_gen': 0}
outputs: Dict = {'dump': 0, 'flow2b': 0, 'res_load': 0}
parameters: Dict = {'battery_active': True, 'max_p': 100, 'soc_max': 100, 'soc_min': 0}
states: Dict = {}
step(time: int, inputs: dict = None, max_advance: int = 900) None

Advances the simulation one time step.

Parameters:
  • time (int) – Current simulation time

  • inputs (dict) – Dictionary containing input values:

  • wind_gen (-) – Wind power generation [kW]

  • pv_gen (-) – Solar power generation [kW]

  • load_dem (-) – Load demand [kW]

  • soc (-) – Battery state of charge [%]

  • max_advance (int, optional) – Maximum time to advance in seconds. Defaults to 900.

Returns:

Next simulation time step

Return type:

int

time = None
time_step_size: int = 1
class illuminator.models.Controllers.controller_T3Congestion.controller_T3Congestion_v3.ControllerT3Congestion(**kwargs)

Controller for managing power flows between renewable generation, load, battery storage, and electrified assets.

This controller determines power distribution between renewable sources (wind, solar), load demands, battery storage, and electrified assets like EVs and heat pumps. It implements control logic for battery charging/discharging and load shifting to manage grid congestion.

Parameters:
  • soc_min (float) – Minimum state of charge of the battery before discharging stops (%)

  • soc_max (float) – Maximum state of charge of the battery before charging stops (%)

  • max_p (float) – Maximum power to/from the battery (kW)

  • gridconnect_ctrl (float) – Grid connection capacity limit (kW)

  • battery_active (bool) – Flag to enable/disable battery operation

  • elec_assets (bool) – Flag to enable/disable electrified assets

  • load_shift_active (bool) – Flag to enable/disable load shifting during congestion warnings

Inputs:
  • wind_gen (float) – Wind power generation (kW)

  • pv_gen (float) – Solar power generation (kW)

  • load_dem (float) – Base electrical load demand (kW)

  • soc (float) – State of charge of the battery (%)

  • load_EV (float) – Electric vehicle load demand (kW)

  • load_HP (float) – Heat pump load demand (kW)

  • flag_warning (int) – Warning flag for grid congestion

Outputs:
  • flow2b (float) – Power flow to/from battery (kW, positive for charging, negative for discharging)

  • res_load (float) – Residual load after renewable generation (kW)

  • dump (float) – Excess power that cannot be stored or used (kW)

States:

limit_grid_connect (float) – Grid connection limit for congestion management (kW)

control(wind_gen, pv_gen, load_dem, soc=None, load_EV=None, load_HP=None, flag_warning=None)

Controls power flows based on generation, demand and storage states.

Parameters:
  • wind_gen (float) – Wind power generation [kW]

  • pv_gen (float) – Solar power generation [kW]

  • load_dem (float) – Load demand [kW]

  • soc (float) – Battery state of charge [%]

  • load_EV (float, optional) – Electric vehicle load demand [kW]

  • load_HP (float, optional) – Heat pump load demand [kW]

  • flag_warning (int, optional) – Warning flag for grid congestion

Returns:

Dictionary containing: - flow2b (float): Power flow to/from battery [kW] - res_load (float): Residual load [kW] - dump (float): Excess power [kW]

Return type:

dict

inputs: Dict = {'flag_warning': None, 'load_EV': 0, 'load_HP': 0, 'load_dem': 0, 'pv_gen': 0, 'soc': 0, 'wind_gen': 0}
outputs: Dict = {'dump': 0, 'flow2b': 0, 'res_load': 0}
parameters: Dict = {'battery_active': True, 'elec_assets': True, 'gridconnect_ctrl': 15, 'load_shift_active': True, 'max_p': 100, 'soc_max': 100, 'soc_min': 0}
states: Dict = {'limit_grid_connect': None}
step(time: int, inputs: dict = None, max_advance: int = 900) None

Advances the simulation one time step.

Parameters:
  • time (int) – Current simulation time

  • inputs (dict) – Dictionary containing input values:

  • wind_gen (-) – Wind power generation [kW]

  • pv_gen (-) – Solar power generation [kW]

  • load_dem (-) – Load demand [kW]

  • soc (-) – Battery state of charge [%]

  • load_EV (-) – Electric vehicle load demand [kW]

  • load_HP (-) – Heat pump load demand [kW]

  • flag_warning (-) – Warning flag for grid congestion

  • max_advance (int, optional) – Maximum time to advance in seconds. Defaults to 900.

Returns:

Next simulation time step

Return type:

int

time = None
time_step_size: int = 1