modelMultiplePumpsDp

Model of multiple identical pumps in parallel with dp-controlled pump model

Extends from BaseClasses.PartialMultiplePumps (Base class for modeling multiple identical pumps in parallel).

Information

This model represents a set of identical dp-controlled variable speed pumps that are piped in parallel. An optional check valve in series with each pump is included.

Control points

The following input and output points are available.

  • Start command (VFD Run) y1: DO signal dedicated to each unit, with a dimensionality of one
  • (Optionally if have_varSet is true) Differential pressure setpoint dp_in: AO signal common to all units, with a dimensionality of zero
  • Pump status y1_actual: DI signal dedicated to each unit, with a dimensionality of one

Details

See the base class Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.PartialMultiplePumps. for a description of the modeling approach.

Parameters

TypeNameDefaultDescription
IntegernPum (from PartialMultiplePumps)Number of pumps
Booleanhave_var (from PartialMultiplePumps)trueSet to true for variable speed pumps, false for constant speed
Booleanhave_valve (from PartialMultiplePumps)trueSet to true for inline check valve
Fluid.Movers.Data.Genericper (from PartialMultiplePumps)
Booleanhave_varSettrueSet to true for variable setpoint, false for constant setpoint (design value)
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from LumpedVolumeDeclarations)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicssubstanceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of independent mass fraction balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicstraceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of trace substance balance: dynamic (3 initialization options) or steady state
Advanced › Dynamics
Modelica.Fluid.Types.DynamicsmassDynamics (from LumpedVolumeDeclarations)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
Initialization
Medium.AbsolutePressurep_start (from LumpedVolumeDeclarations)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from LumpedVolumeDeclarations)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from LumpedVolumeDeclarations)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from LumpedVolumeDeclarations)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from LumpedVolumeDeclarations)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Dynamics
RealmSenFac (from LumpedVolumeDeclarations)1Factor for scaling the sensible thermal mass of the volume
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.MassFlowRatemPum_flow_nominal (from PartialMultiplePumps)Design mass flow rate (each pump)
Modelica.Units.SI.PressureDifferencedpPum_nominal (from PartialMultiplePumps)Design head (each pump)
Modelica.Units.SI.PressureDifferencedpValve_nominal (from PartialMultiplePumps)10000Pressure drop of check valve fully open
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
Dynamics › Nominal condition
Modelica.Units.SI.Timetau (from PartialMultiplePumps)1Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic
Dynamics › Motor speed
Booleanuse_riseTime (from PartialMultiplePumps)trueSet to true to continuously change motor speed
Modelica.Units.SI.TimeriseTime (from PartialMultiplePumps)30Time needed to change motor speed between zero and full speed
Modelica.Blocks.Types.Initinit (from PartialMultiplePumps)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial 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)
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPum]y1 (from PartialMultiplePumps)Start signal (VFD Run or motor starter contact)
Buildings.Controls.OBC.CDL.Interfaces.RealOutputP (from PartialMultiplePumps)Total power (all pumps)
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPum]y1_actual (from PartialMultiplePumps)Pump status
Buildings.Controls.OBC.CDL.Interfaces.RealInputdp_inDifferential pressure setpoint

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
Fluid.BaseClasses.MassFlowRateMultipliermulOut (from PartialMultiplePumps)Flow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulInl (from PartialMultiplePumps)Flow rate multiplier
Fluid.Movers.SpeedControlled_ypum (from PartialMultiplePumps)
Buildings.Templates.Components.Controls.MultipleCommandscom (from PartialMultiplePumps)Convert command signal
Buildings.Controls.OBC.CDL.Conversions.BooleanToRealbooToRea (from PartialMultiplePumps)Convert to real
Buildings.Controls.OBC.CDL.Reals.Multiplymul (from PartialMultiplePumps)Compute total power
Buildings.Controls.OBC.CDL.Reals.Multiplyinp (from PartialMultiplePumps)Compute pump input signal
Buildings.Controls.OBC.CDL.Reals.Sources.Constantcst (from PartialMultiplePumps)Constant setpoint
Buildings.Controls.OBC.CDL.Reals.GreaterThresholdisOpe (from PartialMultiplePumps)Evaluate if pump is operating
Fluid.FixedResistances.CheckValvecheVal (from PartialMultiplePumps)Check valve (optional)
Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.PassThroughFluidpas (from PartialMultiplePumps)Direct fluid pass-through (case without check valve)
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorrep (from PartialMultiplePumps)Replicate
Buildings.Controls.OBC.CDL.Logical.Pre[nPum]preY1 (from PartialMultiplePumps)Left limit of signal avoiding direct feedback of status to controller

Revisions

  • February 24, 2023, by Antoine Gautier:
    First implementation.