Buildings.Templates.Plants.Controls.Pumps.Primary.Validation

Collection of validation models

Information

This package contains validation models.

Package Content

Name Description
Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.DisableDedicated DisableDedicated Validation model for dedicated primary pump disable logic
Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.EnableLeadHeadered EnableLeadHeadered Validation model for the enabling logic of headered primary pumps
Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.VariableSpeedWithHeatPumps VariableSpeedWithHeatPumps Validation model for the control logic of variable speed primary pumps in heat pump plants

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.DisableDedicated Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.DisableDedicated

Validation model for dedicated primary pump disable logic

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.DisableDedicated

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Primary.DisableDedicated in a configuration with a flow request software point or not.

Modelica definition

model DisableDedicated "Validation model for dedicated primary pump disable logic" Buildings.Controls.OBC.CDL.Logical.Sources.Pulse y1( period=60 * 30) "Lead pump enable"; Buildings.Templates.Plants.Controls.Pumps.Primary.DisableDedicated enaDed "Command dedicated pumps – Without flow request"; Buildings.Templates.Plants.Controls.Pumps.Primary.DisableDedicated enaDedReq( have_reqFlo=true) "Command dedicated pumps – With flow request"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse y1ReqEquLea( period=y1EquLea.period + 4 * 60, shift=y1EquLea.shift) "Lead equipment flow request"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse y1EquLea( period=y1.period, shift=60) "Lead equipment enable"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse y1EquLea_actual( period=y1EquLea.period, shift=y1EquLea.shift + 60) "Lead equipment status"; equation connect(y1.y, enaDed.u1); connect(y1.y, enaDedReq.u1); connect(y1ReqEquLea.y, enaDedReq.u1ReqFlo); connect(y1EquLea.y, enaDed.u1Equ); connect(y1EquLea.y, enaDedReq.u1Equ); connect(y1EquLea_actual.y, enaDedReq.u1Equ_actual); connect(y1EquLea_actual.y, enaDed.u1Equ_actual); end DisableDedicated;

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.EnableLeadHeadered Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.EnableLeadHeadered

Validation model for the enabling logic of headered primary pumps

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.EnableLeadHeadered

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Primary.EnableLeadHeadered in a configuration with two production units, either parallel piped or series piped, with either two-position or modulating isolation valves.

Modelica definition

model EnableLeadHeadered "Validation model for the enabling logic of headered primary pumps" Buildings.Controls.OBC.CDL.Logical.Sources.Pulse u1ValIso[2]( period=60 * {20, 30}) "Isolation valve command"; Buildings.Templates.Plants.Controls.Pumps.Primary.EnableLeadHeadered enaSerTwo( typCon=Buildings.Templates.Plants.Controls.Types.EquipmentConnection.Series, typValIso=Buildings.Templates.Plants.Controls.Types.Actuator.TwoPosition, nValIso=2) "Enable lead pump - Series piped equipment with two-position isolation valves"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea[2] "Convert to real"; Buildings.Controls.OBC.CDL.Reals.LimitSlewRate uValIso[2]( each raisingSlewRate=1 / 200) "Compute valve command"; Buildings.Templates.Plants.Controls.Pumps.Primary.EnableLeadHeadered enaSerMod( typCon=Buildings.Templates.Plants.Controls.Types.EquipmentConnection.Series, typValIso=Buildings.Templates.Plants.Controls.Types.Actuator.Modulating, nValIso=2) "Enable lead pump - Series piped equipment with modulating isolation valves"; Buildings.Templates.Plants.Controls.Pumps.Primary.EnableLeadHeadered enaParTwo( typCon=Buildings.Templates.Plants.Controls.Types.EquipmentConnection.Parallel, typValIso=Buildings.Templates.Plants.Controls.Types.Actuator.TwoPosition, nValIso=2) "Enable lead pump - Parallel piped equipment with two-position isolation valves"; Buildings.Templates.Plants.Controls.Pumps.Primary.EnableLeadHeadered enaParMod( typCon=Buildings.Templates.Plants.Controls.Types.EquipmentConnection.Parallel, typValIso=Buildings.Templates.Plants.Controls.Types.Actuator.Modulating, nValIso=2) "Enable lead pump - Parallel piped equipment with modulating isolation valves"; equation connect(u1ValIso.y, booToRea.u); connect(booToRea.y, uValIso.u); connect(u1ValIso.y, enaSerTwo.u1ValIso); connect(uValIso.y, enaSerMod.uValIso); connect(u1ValIso.y, enaParTwo.u1ValIso); connect(uValIso.y, enaParMod.uValIso); end EnableLeadHeadered;

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.VariableSpeedWithHeatPumps Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.VariableSpeedWithHeatPumps

Validation model for the control logic of variable speed primary pumps in heat pump plants

Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.VariableSpeedWithHeatPumps

Information

This model validates Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps with two plant equipment and two primary pumps and for the following configurations.

Modelica definition

model VariableSpeedWithHeatPumps "Validation model for the control logic of variable speed primary pumps in heat pump plants" Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriHdrHea( have_heaWat=true, have_chiWat=false, nHp=2, nPhp=0, have_pumPriCtlDp=false, have_pumPriHdr=true, nPumHeaWatPri=2, nPumChiWatPri=0, yPumHeaWatPriHdrSet=1, yPumHeaWatPriDedHpSet=0.8) "Headered primary pumps without Δp control – Heating-only plant"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1( table=[ 0, 0, 0; 0.1, 1, 0; 0.5, 1, 1; 1, 1, 1; 1.5, 1, 1; 2, 0, 1; 2.5, 0, 0; 3, 0, 0], timeScale=800, period=3500) "Command signal – Plant, equipment or isolation valve depending on tested configuration"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriHdr( have_heaWat=true, have_chiWat=true, nHp=2, nPhp=0, have_pumPriCtlDp=false, have_pumPriHdr=true, yPumHeaWatPriHdrSet=1, yPumChiWatPriHdrSet=1, yPumHeaWatPriDedHpSet=0.8, yPumChiWatPriDedHpSet=0.9, nPumHeaWatPri=2, nPumChiWatPri=2) "Headered primary pumps without Δp control – Heating and cooling plant"; Buildings.Controls.OBC.CDL.Logical.Not u1Coo[2] "Opposite signal to generate cooling system commands"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriDedCom( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=false, have_pumChiWatPriDedHp=false, have_pumPriHdr=false, nHp=2, nPhp=0, nPumHeaWatPri=2, yPumHeaWatPriDedHpSet=0.8, yPumChiWatPriDedHpSet=0.9) "Common dedicated primary pumps without Δp control – Heating and cooling plant"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriDedSep( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=false, have_pumChiWatPriDedHp=true, have_pumPriHdr=false, nHp=2, nPhp=0, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriDedHpSet=0.8, yPumChiWatPriDedHpSet=0.9) "Separate dedicated primary pumps without Δp control – Heating and cooling plant"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriHdrHeaDp( have_heaWat=true, have_chiWat=false, nHp=2, nPhp=0, have_pumPriCtlDp=true, have_pumPriHdr=true, nPumHeaWatPri=2, nPumChiWatPri=0, have_senDpHeaWatRemWir=false, nSenDpHeaWatRem=2) "Headered primary pumps with Δp control – Heating-only plant"; 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.Reals.MultiplyByParameter dpSet[2](k={3E4, 2E4}) "Differential pressure setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin[2]( amplitude=0.1 * dpSet.k, freqHz={2 / 8000, 4 / 8000}, each phase=3.1415926535898) "Source signal used to generate measurement values"; Buildings.Controls.OBC.CDL.Reals.Add dp[2] "Differential pressure"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriHdrDp( have_heaWat=true, have_chiWat=true, nHp=2, nPhp=0, have_pumPriCtlDp=true, have_pumPriHdr=true, nPumHeaWatPri=2, nPumChiWatPri=2, have_senDpHeaWatRemWir=true, nSenDpHeaWatRem=2, have_senDpChiWatRemWir=true, nSenDpChiWatRem=2) "Headered primary pumps with Δp control – Heating and cooling plant"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriDedComDp( have_heaWat=true, have_chiWat=true, have_pumChiWatPriDedHp=false, nHp=2, nPhp=0, have_pumPriCtlDp=true, have_pumPriHdr=false, nPumHeaWatPri=2, have_senDpHeaWatRemWir=false, nSenDpHeaWatRem=2, have_senDpChiWatRemWir=false, nSenDpChiWatRem=2) "Common dedicated primary pumps with Δp control – Heating and cooling plant"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Hea( table=[ 0, 0, 0; 0.1, 1, 0; 0.5, 1, 0; 1, 0, 0; 1.5, 0, 1; 2, 0, 1; 2.5, 0, 0; 3, 0, 0], timeScale=600, period=5000) "Heating mode command signal"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeedWithHeatPumps ctlPumPriDedSepDp( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=true, have_pumChiWatPriDedHp=true, have_pumPriHdr=false, nHp=2, nPhp=0, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriDedHpSet=0.8, yPumChiWatPriDedHpSet=0.9, have_senDpHeaWatRemWir=false, nSenDpHeaWatRem=2, have_senDpChiWatRemWir=false, nSenDpChiWatRem=2) "Separate dedicated primary pumps with Δp control – Heating and cooling plant"; equation connect(u1.y, u1Coo.u); connect(u1Coo.y, ctlPumPriHdr.u1PumChiWatPriHdr); connect(u1.y, ctlPumPriHdr.u1PumHeaWatPriHdr); connect(u1.y, ctlPumPriHdrHea.u1PumHeaWatPriHdr); connect(u1.y, ctlPumPriHdrHeaDp.u1PumHeaWatPriHdr); connect(u1.y, ctlPumPriHdrHeaDp.u1PumHeaWatPriHdr_actual); connect(ratDp.y, dpSet.u); connect(sin.y, dp.u2); connect(dpSet.y, dp.u1); connect(dpSet[1:2].y, ctlPumPriHdrHeaDp.dpHeaWatLocSet); connect(dp[1].y, ctlPumPriHdrHeaDp.dpHeaWatLoc); connect(u1.y, ctlPumPriHdrDp.u1PumHeaWatPriHdr); connect(u1.y, ctlPumPriHdrDp.u1PumHeaWatPriHdr_actual); connect(u1Coo.y, ctlPumPriHdrDp.u1PumChiWatPriHdr); connect(u1Coo.y, ctlPumPriHdrDp.u1PumChiWatPriHdr_actual); connect(dpSet.y, ctlPumPriHdrDp.dpHeaWatRemSet); connect(dp.y, ctlPumPriHdrDp.dpHeaWatRem); connect(dp.y, ctlPumPriHdrDp.dpChiWatRem); connect(dpSet.y, ctlPumPriHdrDp.dpChiWatRemSet); connect(dp[1].y, ctlPumPriDedComDp.dpHeaWatLoc); connect(dp[2].y, ctlPumPriDedComDp.dpChiWatLoc); connect(dpSet.y, ctlPumPriDedComDp.dpHeaWatLocSet); connect(dpSet.y, ctlPumPriDedComDp.dpChiWatLocSet); connect(u1Hea.y, ctlPumPriDedComDp.u1HeaHp); connect(dpSet.y, ctlPumPriDedSepDp.dpHeaWatLocSet); connect(dpSet.y, ctlPumPriDedSepDp.dpChiWatLocSet); connect(dp[2].y, ctlPumPriDedSepDp.dpChiWatLoc); connect(dp[1].y, ctlPumPriDedSepDp.dpHeaWatLoc); connect(u1Hea.y, ctlPumPriDedCom.u1HeaHp); connect(u1.y, ctlPumPriDedSepDp.u1PumHeaWatPriDedHp); connect(u1.y, ctlPumPriDedSepDp.u1PumHeaWatPriDedHp_actual); connect(u1.y, ctlPumPriDedCom.u1PumHeaWatPriDedHp); connect(u1Coo.y, ctlPumPriDedSepDp.u1PumChiWatPriDedHp); connect(u1.y, ctlPumPriDedSep.u1PumHeaWatPriDedHp); connect(u1Coo.y, ctlPumPriDedSep.u1PumChiWatPriDedHp); connect(u1Coo.y, ctlPumPriDedSepDp.u1PumChiWatPriDedHp_actual); connect(u1.y, ctlPumPriDedComDp.u1PumHeaWatPriDedHp); connect(u1.y, ctlPumPriDedComDp.u1PumHeaWatPriDedHp_actual); end VariableSpeedWithHeatPumps;