Buildings.Templates.Plants.Controls.Pumps.Generic.Validation

Collection of validation models

Information

This package contains validation models.

Package Content

Name Description
Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ControlDifferentialPressure ControlDifferentialPressure Validation model for the differential pressure control of variable speed pumps
Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ResetLocalDifferentialPressure ResetLocalDifferentialPressure Validation model for the local differential pressure reset
Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeadered StagingHeadered Validation model for staging of headered pumps
Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeaderedDeltaP StagingHeaderedDeltaP Validation model for staging of headered variable speed pumps using ∆p pump speed control

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ControlDifferentialPressure Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ControlDifferentialPressure

Validation model for the differential pressure control of variable speed pumps

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ControlDifferentialPressure

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Generic.ControlDifferentialPressure in a configuration with two pumps and two remote DP sensors that either are hardwired to the controller (component ctlDpRem) or are not hardwired to the controller, which uses a local DP sensor instead (component ctlDpLoc).

The simulation of this model shows that when any pump is proven on, the controller is enabled and its output is initially set to the minimum pump speed y_min. The minimum pump speed sets the lower limit of the controller output for the entire time that the controller is enabled. The output of the controller ctlDpRem is driven by the most demanding remote DP control loop, e.g., the controller output only drops when both loop input measurements are above setpoints. Without remote sensors hardwired to the controller, the pump speed is driven by the highest local DP setpoint.

When no pump is proven on, the controller is disabled and its output is set to 0 %.

Parameters

TypeNameDefaultDescription
IntegernPum4Number of primary pumps that operate at design conditions
RealVPri_flow_nominal0.1Design primary flow rate

Modelica definition

model ControlDifferentialPressure "Validation model for the differential pressure control of variable speed pumps" parameter Integer nPum=4 "Number of primary pumps that operate at design conditions"; parameter Real VPri_flow_nominal=0.1 "Design primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable ratDp( table=[ 0, 0.1, 0.5; 1, 1, 0.5; 1.5, 1, 0.2; 2, 0.1, 0.1], timeScale=3600) "Differential pressure ratio to design value"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable y1Pum( table=[ 0, 0, 0; 2000, 1, 0; 6000, 0, 1; 8000, 0, 0], period=8400) "Pump status"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter dpRemSet[2]( k={3E4, 2E4}) "Differential pressure setpoint"; Buildings.Templates.Plants.Controls.Pumps.Generic.ControlDifferentialPressure ctlDpRem( have_senDpRemWir=true, nPum=2, nSenDpRem=2) "Differential pressure control with remote sensors hardwired to the plant controller"; Buildings.Controls.OBC.CDL.Reals.MultiMax mulMax( nin=2) "Maximum value"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter dpLoc( final k=5) "Differential pressure local to the plant"; Buildings.Templates.Plants.Controls.Pumps.Generic.ControlDifferentialPressure ctlDpLoc( have_senDpRemWir=false, nPum=2, nSenDpRem=2) "Differential pressure control without remote sensors hardwired to the plant controller"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin[2]( amplitude=0.1 * dpRemSet.k, freqHz={2 / 8000, 4 / 8000}, each phase=3.1415926535898) "Source signal used to generate measurement values"; Buildings.Controls.OBC.CDL.Reals.Add dpRem[2] "Differential pressure at remote location"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter dpLocSet[2]( each final k=5) "Local differential pressure setpoint"; equation connect(y1Pum.y, ctlDpRem.y1_actual); connect(mulMax.y, dpLoc.u); connect(y1Pum.y, ctlDpLoc.y1_actual); connect(dpLoc.y, ctlDpLoc.dpLoc); connect(ratDp.y, dpRemSet.u); connect(sin.y, dpRem.u2); connect(dpRemSet.y, dpRem.u1); connect(dpRemSet.y, ctlDpRem.dpRemSet); connect(dpRem.y, ctlDpRem.dpRem); connect(dpRem.y, mulMax.u); connect(dpRemSet.y, dpLocSet.u); connect(dpLocSet.y, ctlDpLoc.dpLocSet); end ControlDifferentialPressure;

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ResetLocalDifferentialPressure Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ResetLocalDifferentialPressure

Validation model for the local differential pressure reset

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.ResetLocalDifferentialPressure

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Generic.ResetLocalDifferentialPressure.

The simulation of this model shows how the local DP setpoint is reset by the controller resDpLoc based on the variation of the remote differential pressure around its setpoint. The local DP setpoint remains bounded by resDpLoc.dpLocSet_min and resDpLoc.dpLocSet_max.

Parameters

TypeNameDefaultDescription
IntegernPum4Number of primary pumps that operate at design conditions
RealVPri_flow_nominal0.1Design primary flow rate

Modelica definition

model ResetLocalDifferentialPressure "Validation model for the local differential pressure reset" parameter Integer nPum=4 "Number of primary pumps that operate at design conditions"; parameter Real VPri_flow_nominal=0.1 "Design primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable ratDp( table=[ 0, 0.1; 1, 1; 1.5, 1; 2, 0.1], timeScale=3600) "Differential pressure ratio to design value"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter dpRemSet( k=3E4) "Differential pressure setpoint"; Buildings.Templates.Plants.Controls.Pumps.Generic.ResetLocalDifferentialPressure resDpLoc( dpLocSet_max=1E5, Ti=10) "Local differential pressure reset"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin( amplitude=0.1 * dpRemSet.k, freqHz=4 / 8000, phase=3.1415926535898) "Source signal used to generate measurement values"; Buildings.Controls.OBC.CDL.Reals.Add dpRem "Differential pressure at remote location"; equation connect(sin.y, dpRem.u2); connect(dpRemSet.y, resDpLoc.dpRemSet); connect(dpRem.y, resDpLoc.dpRem); connect(dpRemSet.y, dpRem.u1); connect(ratDp.y[1], dpRemSet.u); end ResetLocalDifferentialPressure;

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeadered Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeadered

Validation model for staging of headered pumps

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeadered

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered with three plant equipment and three pumps and for the following configurations.

Parameters

TypeNameDefaultDescription
IntegernEqu3Number of plant equipment
IntegernPumnEquNumber of pumps that operate at design conditions
RealV_flow_nominal0.1Design flow rate

Modelica definition

model StagingHeadered "Validation model for staging of headered pumps" parameter Integer nEqu=3 "Number of plant equipment"; parameter Integer nPum=nEqu "Number of pumps that operate at design conditions"; parameter Real V_flow_nominal=0.1 "Design flow rate"; Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered staPumPriDp( is_pri=true, is_hdr=true, is_ctlDp=true, have_valInlIso=true, have_valOutIso=true, final nEqu=nEqu, final nPum=nPum, final V_flow_nominal=V_flow_nominal) "Pump staging – Headered primary pumps with ∆p control"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable ratFlo(table=[0,0; 1,1; 1.5, 1; 2,0], timeScale=3600) "Flow ratio to design value"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter VPri_flow(final k= V_flow_nominal) "Flow rate"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea[nPum] "Convert command signal to real value"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol[nPum](each samplePeriod=1) "Hold signal value"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr[nPum] "Compare to zero to compute equipment status"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1( table=[0,0,0,0; 0.1,1,0,0; 0.5,1,1,0; 1,1,1,1; 1.5,1,1,1; 2,0,1,1; 2.5,0,0,1; 3,0,0,0], timeScale=3600, period=10800) "Command signal – Plant, equipment or isolation valve depending on tested configuration"; Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered staPumSecDp( is_pri=false, is_hdr=true, is_ctlDp=true, have_valInlIso=true, have_valOutIso=true, final nEqu=nEqu, final nPum=nPum, final V_flow_nominal=V_flow_nominal) "Pump staging – Headered primary pumps with ∆p control"; Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered staPumPriNoDp( is_pri=true, is_hdr=true, is_ctlDp=false, have_valInlIso=true, have_valOutIso=false, final nEqu=nEqu, final nPum=nPum, final V_flow_nominal=V_flow_nominal) "Pump staging – Headered primary pumps without ∆p control"; Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeadered staPumPriDed( is_pri=true, is_hdr=false, is_ctlDp=false, have_valInlIso=true, have_valOutIso=false, final nEqu=nEqu, final nPum=nPum, final V_flow_nominal=V_flow_nominal) "Pump staging – Dedicated primary pumps"; equation connect(ratFlo.y[1],VPri_flow. u); connect(VPri_flow.y, staPumPriDp.V_flow); connect(booToRea.y,zerOrdHol. u); connect(zerOrdHol.y,greThr. u); connect(staPumPriDp.y1, booToRea.u); connect(greThr.y, staPumPriDp.u1Pum_actual); connect(u1.y, staPumPriDp.u1ValInlIso); connect(u1.y, staPumPriDp.u1ValOutIso); connect(u1.y[1], staPumSecDp.u1Pla); connect(greThr.y, staPumSecDp.u1Pum_actual); connect(VPri_flow.y, staPumSecDp.V_flow); connect(u1.y, staPumPriNoDp.u1ValInlIso); connect(u1.y, staPumPriNoDp.u1Pum); connect(greThr.y, staPumPriNoDp.u1Pum_actual); connect(u1.y, staPumPriDed.u1Pum); connect(greThr.y, staPumPriDed.u1Pum_actual); end StagingHeadered;

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeaderedDeltaP Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeaderedDeltaP

Validation model for staging of headered variable speed pumps using ∆p pump speed control

Buildings.Templates.Plants.Controls.Pumps.Generic.Validation.StagingHeaderedDeltaP

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeaderedDeltaP in a configuration with four pumps.

The simulation of this model shows that when the lead pump is enabled, the output of the staging controller is greater than or equal to one. The number of enabled pumps increases and decreases with the varying flow rate and under the condition of a minimum runtime of 10 min. It remains greater than or equal to one as long as the lead pump remains enabled.

When the lead pump is disabled, the number of enabled pumps is set to 0. This transition is not subject to the minimum runtime.

Parameters

TypeNameDefaultDescription
IntegernPum4Number of pumps that operate at design conditions
RealV_flow_nominal0.1Design flow rate

Modelica definition

model StagingHeaderedDeltaP "Validation model for staging of headered variable speed pumps using ∆p pump speed control" parameter Integer nPum=4 "Number of pumps that operate at design conditions"; parameter Real V_flow_nominal=0.1 "Design flow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable ratFlo( table=[ 0, 0; 1, 1; 1.5, 1; 2, 0], timeScale=3600) "Flow ratio to design value"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable enaLea( table=[ 0, 1; 8000, 0], period=8400) "Lead pump enable signal"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter VPri_flow( final k=V_flow_nominal) "Flow rate"; Buildings.Templates.Plants.Controls.Pumps.Generic.StagingHeaderedDeltaP staPum( final nPum=nPum, final V_flow_nominal=V_flow_nominal) "Pump staging"; Utilities.StageIndex idxSta( have_inpAva=false, final nSta=nPum, final dtRun=staPum.dtRun) "Calculate stage index = number of enabled pumps"; Buildings.Controls.OBC.CDL.Integers.GreaterEqualThreshold y1[nPum]( final t={i for i in 1:nPum}) "Pump command"; Buildings.Controls.OBC.CDL.Routing.IntegerScalarReplicator rep( nout=nPum) "Replicate signal"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea[nPum] "Convert command signal to real value"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol[nPum]( each samplePeriod=1) "Hold signal value"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr[nPum] "Compare to zero to compute equipment status"; equation connect(ratFlo.y[1], VPri_flow.u); connect(VPri_flow.y, staPum.V_flow); connect(staPum.y1Up, idxSta.u1Up); connect(staPum.y1Dow, idxSta.u1Dow); connect(rep.y, y1.u); connect(enaLea.y[1], idxSta.u1Lea); connect(idxSta.y, rep.u); connect(y1.y, booToRea.u); connect(booToRea.y, zerOrdHol.u); connect(zerOrdHol.y, greThr.u); connect(greThr.y, staPum.u1_actual); end StagingHeaderedDeltaP;