modelCHP

Table based CHP model
Diagram of CHP

Extends from AixLib.Fluid.BoilerCHP.BaseClasses.PartialHeatGenerator (Partial model for heat generators).

Information

Overview

A table based combined heat and power (CHP) model. Depending on the user choice, this model can be both heat and electricity driven.

Concept

When controlled by heat demand, the CHP is controlled either by flow temperature or by return temperature. When electricity control is activated, an electricity profile needs to be connected to the model. During electricity controlled operation, heat controllers act as emergency systems.

A complete On/Off controller is implemented which takes charge of the timing of each turning on and off command. For example it can be set that between each on and off command, the CHP needs 300 seconds (set in parameter SD_delay) to be able to execute the other command. During this time a PI controller controls the temperature continuously.

Minimum possible capacity can be set to prevent the CHP working in lower capacities. If the timing does not allow a shut down at times lower capacities are required, the CHP works on minimum capacity until the shut down is permitted. This can result in the rise of water temperature higher than setpoint and may in some cases result in temperatures higher than boiling point of water.

The dimension of thermal and electrical power outputs and fuel input as well as the electricity profile should be in kW. The dimension of fuel consumption depends on the user's data.

Assumptions

The combustion temperature T_sorce is at the moment set to a constant value of 1748 K. The value is relevant for exergy analysis.

Parameters

TypeNameDefaultDescription
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from PartialHeatGenerator)a*(m_flow_nominal/rho_default)^nPressure drop at nominal mass flow rate
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Advanced › Sensor Properties
Modelica.Units.SI.Timetau (from PartialHeatGenerator)1Time constant of the temperature sensors at nominal flow rate
Modelica.Blocks.Types.InitinitType (from PartialHeatGenerator)Modelica.Blocks.Types.Init.InitialStateType of initialization (InitialState and InitialOutput are identical)
BooleantransferHeat (from PartialHeatGenerator)falseIf true, temperature T converges towards TAmb when no flow
Modelica.Units.SI.TemperatureTAmb (from PartialHeatGenerator)Medium.T_defaultFixed ambient temperature for heat transfer
Modelica.Units.SI.TimetauHeaTra (from PartialHeatGenerator)1200Time constant for heat transfer, default 20 minutes
Initialization
Modelica.Units.SI.TemperatureT_start (from PartialHeatGenerator)Medium.T_defaultInitial or guess value of output (= state)
Modelica.Units.SI.AbsolutePressuredp_start (from PartialHeatGenerator)0Guess value of dp = port_a.p - port_b.p
Modelica.Units.SI.MassFlowRatem_flow_start (from PartialHeatGenerator)0Guess value of m_flow = port_a.m_flow
Modelica.Units.SI.AbsolutePressurep_start (from PartialHeatGenerator)Medium.p_defaultStart value of pressure
Advanced › Pressure drop
Booleanfrom_dp (from PartialHeatGenerator)false= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearized (from PartialHeatGenerator)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from PartialHeatGenerator)0.3Fraction of nominal mass flow rate where transition to turbulent occurs
Reala (from PartialHeatGenerator)Coefficient of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n.
Realn (from PartialHeatGenerator)2Exponent of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n.
Modelica.Units.SI.Densityrho_default (from PartialHeatGenerator)Medium.density_pTX(Medium.p_default, Medium.T_default, Medium.X_default)Density used for parameterization of pressure curve
Dynamics
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialHeatGenerator)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Unit properties
AixLib.DataBase.CHP.CHPDataSimple.CHPBaseDataDefinitionparamCHP data set
RealminCapacityMinimum allowable working capacity in percent
Control system
BooleanelectricityDrivenfalseIf the CHP is controlled by electricity demand (external table required)
BooleanTSetIntrueInput temperature setpoint from outside (Otherwise max temp in database)
BooleanctrlStrategytrueTrue for flow-, false for return- temperature control strategy
Modelica.Units.SI.TemperatureDifferenceminDeltaT10Minimum flow and return temperature difference
Modelica.Units.SI.TemperatureDifferenceTFlowRange2Range of allowable flow temperature
Modelica.Units.SI.TimedelayTime3600Shutdown/Startup delay
RealKc1Gain of the controller
Modelica.Units.SI.TimeTc60Time Constant (T>0 required)
Modelica.Units.SI.TimedelayUnit60Delay measurement of the controller output

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputTSetTemperature setpoint
Modelica.Blocks.Interfaces.RealInputelSetElectrical power setpoint
Modelica.Blocks.Interfaces.BooleanInputonFalse for shut down
Modelica.Blocks.Interfaces.RealOutputTSourceCombustion temperature
Modelica.Blocks.Interfaces.RealOutputelectricalPowerElectrical power
Modelica.Blocks.Interfaces.RealOutputthermalPowerThermal power
Modelica.Blocks.Interfaces.RealOutputfuelInputFuel input
Modelica.Blocks.Interfaces.RealOutputfuelConsumptionFuel consumption

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
AixLib.Fluid.Sensors.TemperatureTwoPortsenTRet (from PartialHeatGenerator)Temperature sensor of cold side of heat generator (return)
AixLib.Fluid.Sensors.TemperatureTwoPortsenTSup (from PartialHeatGenerator)Temperature sensor of hot side of heat generator (supply)
AixLib.Fluid.Sensors.MassFlowRatesenMasFlo (from PartialHeatGenerator)Sensor for mass flwo rate
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlowheater (from PartialHeatGenerator)Prescribed heat flow
AixLib.Fluid.MixingVolumes.MixingVolumevol (from PartialHeatGenerator)Fluid volume
AixLib.Fluid.FixedResistances.PressureDroppreDro (from PartialHeatGenerator)Pressure drop
BaseClasses.Controllers.DelayedOnOffControllerdelayedOnOffControllerOnOff controller to swicht between the modes
BaseClasses.Controllers.PIControllerthControlThermal controller
Modelica.Blocks.Math.MinminDetermines the min value of both PI controllers
Modelica.Blocks.Tables.CombiTable1DscombiTable1DsTime table to read CHP performance data
Modelica.Blocks.Continuous.LimPIDelControlElectrical controller
Modelica.Blocks.Sources.ConstantconstSetpointConstant setpoint if utilized
Modelica.Blocks.Sources.ConstantconstAdds safety value on min capacity
Modelica.Blocks.Logical.SwitchctrlSwitchChanges the measured temperature source
Modelica.Blocks.Sources.BooleanConstantbooleanConstantDetermines control strategy
Modelica.Blocks.Math.GaingainConversion factor
Modelica.Blocks.Sources.ConstantexothermicTemperatureExothermic temperature

Revisions

  • December 08, 2016  by Moritz Lauster:
    Adapted to AixLib conventions
  • October 11, 2016  by Pooyan Jahangiri:
    Merged with AixLib
  • January 09, 2006  by Peter Matthes:
    V0.1: Initial configuration.
  • November 28, 2014  by Roozbeh Sangi:
    Output for source Temperature added.
  • October 7, 2013  by Ole Odendahl:
    Formatted documentation appropriately
  • by Pooyan Jahangiri:
    First implementation.