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.VariableSpeed VariableSpeed Validation model for the control logic of variable speed primary pumps

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.VariableSpeed Buildings.Templates.Plants.Controls.Pumps.Primary.Validation.VariableSpeed

Validation model for the control logic of variable speed primary pumps

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

Information

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

Modelica definition

model VariableSpeed "Validation model for the control logic of variable speed primary pumps" Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeed ctlPumPriHdrHea( have_heaWat=true, have_chiWat=false, have_pumPriCtlDp=false, have_pumPriHdr=true, nPumHeaWatPri=2, yPumHeaWatPriSet=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.VariableSpeed ctlPumPriHdr( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=false, have_pumPriHdr=true, nEqu=2, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=0.9) "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.VariableSpeed ctlPumPriDedCom( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=false, have_pumChiWatPriDed=false, have_pumPriHdr=false, nEqu=2, nPumHeaWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=0.9) "Common dedicated primary pumps without Δp control – Heating and cooling plant"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeed ctlPumPriDedSep( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=false, have_pumChiWatPriDed=true, have_pumPriHdr=false, nEqu=2, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=0.9) "Separate dedicated primary pumps without Δp control – Heating and cooling plant"; Buildings.Templates.Plants.Controls.Pumps.Primary.VariableSpeed ctlPumPriHdrHeaDp( have_heaWat=true, have_chiWat=false, have_pumPriCtlDp=true, have_pumPriHdr=true, nPumHeaWatPri=2, yPumHeaWatPriSet=0.8, 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.VariableSpeed ctlPumPriHdrDp( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=true, have_pumPriHdr=true, nEqu=2, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=0.9, 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.VariableSpeed ctlPumPriDedComDp( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=true, have_pumChiWatPriDed=false, have_pumPriHdr=false, nEqu=2, nPumHeaWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=0.9, 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.VariableSpeed ctlPumPriDedSepDp( have_heaWat=true, have_chiWat=true, have_pumPriCtlDp=true, have_pumChiWatPriDed=true, have_pumPriHdr=false, nEqu=2, nPumHeaWatPri=2, nPumChiWatPri=2, yPumHeaWatPriSet=0.8, yPumChiWatPriSet=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.u1PumChiWatPri); connect(u1.y, ctlPumPriHdr.u1PumHeaWatPri); connect(u1.y, ctlPumPriDedCom.u1PumHeaWatPri); connect(u1.y, ctlPumPriDedSep.u1PumHeaWatPri); connect(u1.y, ctlPumPriHdrHea.u1PumHeaWatPri); connect(u1.y, ctlPumPriHdrHeaDp.u1PumHeaWatPri); connect(u1.y, ctlPumPriHdrHeaDp.u1PumHeaWatPri_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.u1PumHeaWatPri); connect(u1.y, ctlPumPriHdrDp.u1PumHeaWatPri_actual); connect(u1Coo.y, ctlPumPriHdrDp.u1PumChiWatPri); connect(u1Coo.y, ctlPumPriHdrDp.u1PumChiWatPri_actual); connect(dpSet.y, ctlPumPriHdrDp.dpHeaWatRemSet); connect(dp.y, ctlPumPriHdrDp.dpHeaWatRem); connect(dp.y, ctlPumPriHdrDp.dpChiWatRem); connect(dpSet.y, ctlPumPriHdrDp.dpChiWatRemSet); connect(u1.y, ctlPumPriDedComDp.u1PumHeaWatPri); connect(u1.y, ctlPumPriDedComDp.u1PumHeaWatPri_actual); 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.u1Hea); connect(dpSet.y, ctlPumPriDedSepDp.dpHeaWatLocSet); connect(dpSet.y, ctlPumPriDedSepDp.dpChiWatLocSet); connect(dp[2].y, ctlPumPriDedSepDp.dpChiWatLoc); connect(dp[1].y, ctlPumPriDedSepDp.dpHeaWatLoc); connect(u1.y, ctlPumPriDedSepDp.u1PumHeaWatPri); connect(u1.y, ctlPumPriDedSepDp.u1PumHeaWatPri_actual); connect(u1Coo.y, ctlPumPriDedSepDp.u1PumChiWatPri); connect(u1Coo.y, ctlPumPriDedSepDp.u1PumChiWatPri_actual); connect(u1Hea.y, ctlPumPriDedCom.u1Hea); connect(u1Coo.y, ctlPumPriDedSep.u1PumChiWatPri); end VariableSpeed;