modelMultiplePumpsSpeed

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

Extends from Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.PartialMultiplePumps (Base class for modeling multiple identical pumps in parallel).

Information

This model represents a set of identical speed-controlled pumps that are piped in parallel. The model may be configured to represent either constant speed pumps or variable speed pumps. 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 for variable speed pumps or Starter contact for constant speed pumps) y1: DO signal dedicated to each unit, with a dimensionality of one
  • (Optionally if have_var is true) Speed command y: 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)
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.RealInputyPump speed (common to all pumps)

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.