Buildings.Templates.Plants.Controls.MinimumFlow.Validation

Collection of validation models

Information

This package contains validation models.

Package Content

Name Description
Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Controller Controller Validation model for the minimum flow bypass valve controller
Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerHeatPumps ControllerHeatPumps Validation model for the HP plant minimum flow bypass valve controller
Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Setpoint Setpoint Validation model for the minimum flow setpoint calculation

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Controller Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Controller

Validation model for the minimum flow bypass valve controller

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Controller

Information

This model validates Buildings.Templates.Plants.Controls.MinimumFlow.Controller in two configurations: one where the bypass valve controller is enabled with the isolation valve command (component ctlFloMinVal), and another where it is enabled with the primary pump status (component ctlFloMinPum).

Modelica definition

model Controller "Validation model for the minimum flow bypass valve controller" Buildings.Templates.Plants.Controls.MinimumFlow.Controller ctlFloMinPum( use_val=false, use_pumPriDed=true, use_pumPriDedEqu=fill(true, 2), V_flow_nominal={0.02,0.05}, V_flow_min={0.01,0.03}, nEqu=2) "Valve controller enabled by primary pump status"; Buildings.Templates.Plants.Controls.MinimumFlow.Controller ctlFloMinVal( use_val=true, use_valEqu=fill(true, 2), use_pumPriDed=false, V_flow_nominal={0.02,0.05}, V_flow_min={0.01,0.03}, nEqu=2) "Valve controller enabled by isolation valve command"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1EquValPum( table=[ 0, 0, 0; 1, 1, 0; 2, 1, 1; 3, 0, 1; 4, 0, 0], timeScale=200, period=900) "Source signal for equipment or valve command or pump status"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin dVPri_flow( amplitude=sum(ctlFloMinVal.V_flow_min) / 2, freqHz=3 / 1000) "Source signal for primary flow rate variation around setpoint"; Buildings.Controls.OBC.CDL.Reals.Add VPri_flow1 "Primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Add VPri_flow "Primary flow rate"; equation connect(u1EquValPum.y[1:2], ctlFloMinVal.u1ValIso[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPum.u1PumPri_actual[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinVal.u1Equ[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPum.u1Equ[1:2]); connect(dVPri_flow.y, VPri_flow1.u2); connect(VPri_flow1.y, ctlFloMinPum.VPri_flow); connect(ctlFloMinPum.VPriSet_flow, VPri_flow1.u1); connect(ctlFloMinVal.VPriSet_flow, VPri_flow.u1); connect(dVPri_flow.y, VPri_flow.u2); connect(VPri_flow.y, ctlFloMinVal.VPri_flow); end Controller;

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerHeatPumps Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerHeatPumps

Validation model for the HP plant minimum flow bypass valve controller

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerHeatPumps

Information

This model validates Buildings.Templates.Plants.Controls.MinimumFlow.ControllerDualMode for cooling-only (components *Coo), heating-only (components *Hea) and heating and cooling applications (components *HeaCoo), and for two plant configurations: one where the bypass valve controller is enabled with the isolation valve command (components ctlFloMinVal*), and another where it is enabled with the primary pump status (components ctlFloMinPum*).

Modelica definition

model ControllerHeatPumps "Validation model for the HP plant minimum flow bypass valve controller" Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinPumCoo( have_heaWat=false, have_chiWat=true, have_pumPriHdr=false, have_pumChiWatPriDedHp=true, nHp=2, nPhp=0, have_valInlIso=false, have_valOutIso=false, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}) "Valve controller enabled by primary pump status – Cooling-only application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinValCoo( have_heaWat=false, have_chiWat=true, have_pumPriHdr=true, nHp=2, nPhp=0, have_valInlIso=true, have_valOutIso=false, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}) "Valve controller enabled by isolation valve command – Cooling-only application"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1EquValPum( table=[0, 0, 0; 1, 1, 0; 2, 1, 1; 3, 0, 1; 4, 0, 0], timeScale=200, period=900) "Source signal for equipment or valve command or pump status"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin dVPri_flow( amplitude=sum(ctlFloMinValCoo.VChiWat_flow_min) / 2, freqHz=3 / 1000) "Source signal for primary flow rate variation around setpoint"; Buildings.Controls.OBC.CDL.Reals.Add VPriCoo_flow1 "Primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Add VPriCoo_flow "Primary flow rate"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinPumHea( have_heaWat=true, have_chiWat=false, have_pumPriHdr=false, have_pumChiWatPriDedHp=false, nHp=2, nPhp=0, have_valInlIso=false, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}) "Valve controller enabled by primary pump status – Heating-only application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinValHea( have_heaWat=true, have_chiWat=false, have_pumPriHdr=true, nHp=2, nPhp=0, have_valInlIso=true, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}) "Valve controller enabled by isolation valve command – Heating-only application"; Buildings.Controls.OBC.CDL.Reals.Add VPriHea_flow1 "Primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Add VPriHea_flow "Primary flow rate"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinPumHeaCoo( have_heaWat=true, have_chiWat=true, have_pumPriHdr=false, have_pumChiWatPriDedHp=false, nHp=2, nPhp=0, have_valInlIso=false, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}) "Valve controller enabled by primary pump status – Heating and cooling application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerHeatPumps ctlFloMinValHeaCoo( have_heaWat=true, have_chiWat=true, have_pumPriHdr=true, nHp=2, nPhp=0, have_valInlIso=true, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}) "Valve controller enabled by isolation valve command – Heating and cooling application"; Buildings.Controls.OBC.CDL.Reals.Add VPriHeaCoo_flow1 "Primary flow rate"; Buildings.Controls.OBC.CDL.Reals.Add VPriHeaCoo_flow "Primary flow rate"; Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1HeaEqu( table=[0, 0, 0; 1.5, 1, 0; 2.5, 0, 1], timeScale=200, period=900) "Source signal for equipment heating/cooling mode command or pump status"; Buildings.Controls.OBC.CDL.Logical.And u1ValChiWat[2] "Source signal for CHW isolation valves"; Buildings.Controls.OBC.CDL.Logical.And u1ValHeaWat[2] "Source signal for HW isolation valves"; Buildings.Controls.OBC.CDL.Logical.Not u1CooEqu[2] "True if equipment is commanded in cooling mode"; equation connect(u1EquValPum.y[1:2], ctlFloMinValCoo.u1Hp[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumCoo.u1Hp[1:2]); connect(dVPri_flow.y, VPriCoo_flow1.u2); connect(dVPri_flow.y, VPriCoo_flow.u2); connect(ctlFloMinPumCoo.VChiWatPriSet_flow, VPriCoo_flow1.u1); connect(ctlFloMinValCoo.VChiWatPriSet_flow, VPriCoo_flow.u1); connect(VPriCoo_flow.y, ctlFloMinValCoo.VChiWatPri_flow); connect(VPriCoo_flow1.y, ctlFloMinPumCoo.VChiWatPri_flow); connect(u1EquValPum.y[1:2], ctlFloMinValCoo.u1ValChiWatInlIso[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumCoo.u1PumChiWatPriDedHp_actual[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinValHea.u1Hp[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumHea.u1Hp[1:2]); connect(dVPri_flow.y, VPriHea_flow.u2); connect(dVPri_flow.y, VPriHea_flow1.u2); connect(ctlFloMinPumHea.VHeaWatPriSet_flow, VPriHea_flow1.u1); connect(ctlFloMinValHea.VHeaWatPriSet_flow, VPriHea_flow.u1); connect(VPriHea_flow1.y, ctlFloMinPumHea.VHeaWatPri_flow); connect(VPriHea_flow.y, ctlFloMinValHea.VHeaWatPri_flow); connect(u1EquValPum.y[1:2], ctlFloMinValHea.u1ValHeaWatInlIso[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumHea.u1PumHeaWatPriDedHp_actual[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumHeaCoo.u1Hp[1:2]); connect(ctlFloMinPumHeaCoo.VHeaWatPriSet_flow, VPriHeaCoo_flow1.u1); connect(ctlFloMinValHeaCoo.VHeaWatPriSet_flow, VPriHeaCoo_flow.u1); connect(VPriHeaCoo_flow1.y, ctlFloMinPumHeaCoo.VHeaWatPri_flow); connect(VPriHeaCoo_flow.y, ctlFloMinValHeaCoo.VHeaWatPri_flow); connect(u1EquValPum.y[1:2], ctlFloMinValHeaCoo.u1Hp); connect(u1EquValPum.y[1:2], ctlFloMinPumHeaCoo.u1PumHeaWatPriDedHp_actual[1:2]); connect(dVPri_flow.y, VPriHeaCoo_flow.u2); connect(dVPri_flow.y, VPriHeaCoo_flow1.u2); connect(VPriHeaCoo_flow.y, ctlFloMinValHeaCoo.VChiWatPri_flow); connect(VPriHeaCoo_flow1.y, ctlFloMinPumHeaCoo.VChiWatPri_flow); connect(u1HeaEqu.y[1:2], ctlFloMinValHeaCoo.u1HeaHp[1:2]); connect(u1HeaEqu.y[1:2], ctlFloMinPumHeaCoo.u1HeaHp[1:2]); connect(u1EquValPum.y[1:2], u1ValChiWat[1:2].u1); connect(u1EquValPum.y[1:2], u1ValHeaWat[1:2].u1); connect(u1HeaEqu.y[1:2], u1ValHeaWat[1:2].u2); connect(u1HeaEqu.y[1:2], u1CooEqu.u); connect(u1CooEqu.y, u1ValChiWat.u2); connect(u1ValChiWat.y, ctlFloMinValHeaCoo.u1ValChiWatInlIso); connect(u1ValHeaWat.y, ctlFloMinValHeaCoo.u1ValHeaWatInlIso); end ControllerHeatPumps;

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Setpoint Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Setpoint

Validation model for the minimum flow setpoint calculation

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.Setpoint

Information

This model validates Buildings.Templates.Plants.Controls.MinimumFlow.Setpoint in a configuration with two equipment with different minimum flow ratios.

Modelica definition

model Setpoint "Validation model for the minimum flow setpoint calculation" Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable u1Equ( table=[ 0, 0, 0; 1, 1, 0; 2, 1, 1; 3, 0, 1; 4, 0, 0], timeScale=200, period=900) "Source signal for equipment enable command"; Buildings.Templates.Plants.Controls.MinimumFlow.Setpoint setFloMin( V_flow_nominal={0.02, 0.05}, V_flow_min={0.01, 0.03}, nEqu=2) "Minimum flow setpoint calculation"; equation connect(u1Equ.y[1:2], setFloMin.u1[1:2]); end Setpoint;