Electric Boiler

Note

An electric boiler consists of one element and one controller. The element defines its physical parameters, while the controller governs the operational logic.

Create Controlled Function

pandaprosumer.create_controlled_electric_boiler(prosumer, max_p_kw, min_p_kw=nan, max_ramp_up_kw_per_s=nan, max_ramp_down_kw_per_s=nan, efficiency_percent=100, allow_stop=True, max_t_out_c=nan, name=None, index=None, in_service=True, level=0, order=0, period=0, **kwargs)[source]

Creates an electric boiler element in prosumer[“electric_boiler”] and an electric boiler controller

INPUT:

prosumer - The prosumer within this electric boiler should be created

max_p_kw (float) - Maximal electrical power of the boiler [kW]

OPTIONAL:

min_p_kw (float, default None) - Minimal electrical power of the boiler [kW]

max_ramp_up_kw_per_s (float, default None) - Maximum ramping up speed of the boiler [kW/s]

max_ramp_down_kw_per_s (float, default None) - Maximum ramping down speed of the boiler [kW/s]

efficiency_percent (float, default 100) - Boiler Efficiency [%]

allow_stop (bool, default True) - Whether the boiler is allowed to stop completely (reach zero power)

max_t_out_c (float, default None) - Maximum output temperature constraint in °C

name (string, default None) - The name for this electric boiler

index (int, default None) - Force a specified ID if it is available. If None, the index one higher than the highest already existing index is selected.

in_service (boolean, default True) - True for in_service or False for out of service

level (int, default 0) - The level of the controller

order (int, default 0) - The order of the controller

period (int, default 0) - Index of the period, default is 0

OUTPUT:

index (int) - The unique ID of the created electric boiler

EXAMPLE:

create_controlled_electric_boiler(prosumer, “electric_boiler_1”)

Controller

Electric Boiler Controller logic

Input Static Data

These are the physical parameters required for the Electric Boiler element to enable the model calculation:

Parameter

Description

Unit

name

Unique name or identifier for the electric boiler element.

N/A

max_p_kw

Maximum electrical power of the boiler.

kW

min_p_kw

Minimum electrical power of the boiler. Only relevant when allow_stop is False.

kW

max_ramp_up_kw_per_s

Maximum allowed increase of electrical power between two time steps.

kW/s

max_ramp_down_kw_per_s

Maximum allowed decrease of electrical power between two time steps.

kW/s

efficiency_percent

Boiler efficiency expressed as a percentage.

%

allow_stop

Whether the boiler is allowed to stop completely (reach zero power) when there is zero demand. If False and min_p_kw is set, the boiler will operate at min_p_kw even with zero demand.

Boolean

max_t_out_c

Maximum output temperature constraint. If the calculated output temperature exceeds this value, it will be limited to this temperature.

Degree Celsius

overflow_strategy

How to dispatch surplus mass flow to responders when the boiler runs at min_p_kw but the demand asks for less. 'dump_proportional' (default) splits the surplus across responders in proportion to their requests; 'dump_on_last' pushes the surplus mass flow onto the last responder at the requested feed temperature; 'cap' drops the surplus and raises t_out_c to keep energy balance. See Overflow Strategy: Dispatching Surplus Mass Flow.

str

Input Time Series

No input (GenericMapping) needed for this controller

Output Time Series

Output Time Series: Electric Boiler
header:

“Parameter”

Description

Unit

q_kw

The provided heat power.

kW

mdot_kg_per_s

The water mass flow rate through the boiler.

kg/s

t_in_c

The temperature at the inlet of the electric boiler (cold return pipe).

Degree Celsius

t_out_c

The temperature at the outlet of the electric boiler (hot feed pipe).

Degree Celsius

p_kw

The boiler consumed electrical power.

kW

Mapping

The Electric Boiler Controller can be mapped using FluidMixMapping.

  • No inputs are mapped, as the electric boiler does not act as a responder.

  • The following outputs are mapped:

    • mdot_kg_per_s

    • t_out_c

Model

class pandaprosumer.controller.models.ElectricBoilerController(prosumer, electric_boiler_object, order, level, in_service=True, index=None, name=None, **kwargs)[source]

Controller for electric boilers.

Parameters:
  • prosumer – The prosumer object

  • electric_boiler_object – The electric boiler object

  • order – The order of the controller

  • level – The level of the controller

  • in_service – The in-service status of the controller

  • index – The index of the controller

  • kwargs – Additional keyword arguments

control_step(prosumer)[source]

Executes the control step for the controller.

Parameters:

prosumer – The prosumer object

name_class()[source]

Return the controller class identifier used in results and logging.

The electric boiler model calculate the power consumption of the boiler to heat up the fluid to the demand power. It is a tankless electric water heater that heats water on demand.

\begin{align*} P_\text{el} = \frac{Q}{\eta} &= \frac{\dot{m} * Cp * (T_\text{feed} - T_\text{return})}{\eta} \\ \end{align*}

If the power consumption is higher than the maximum power of the boiler P_{text{el}_text{max}}, the power consumption is set to the maximum power, and the actual output temperature \(T_\text{feed}\) that can be reached is calculated based on the maximum power.

The model also supports additional constraints:

  • Maximum output temperature constraint: If \(T_\text{feed}\) exceeds the max_t_out_c parameter, the output temperature is limited to this maximum value and the mass flow is adjusted accordingly.

  • Minimum power constraint: If min_p_kw is set, the boiler will maintain at least this minimum power level, regardless of the allow_stop setting. When the calculated power would be below min_p_kw, the boiler operates at min_p_kw. The allow_stop parameter only affects whether the boiler can shut down completely when there is zero demand - if allow_stop=False, the boiler will operate at min_p_kw even with zero demand.