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.ControllerDualMode ControllerDualMode Validation model for the dual mode 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( have_valInlIso=false, have_valOutIso=false, V_flow_nominal={0.02, 0.05}, V_flow_min={0.01, 0.03}, nEna=2, nEqu=2) "Valve controller enabled by primary pump status"; Buildings.Templates.Plants.Controls.MinimumFlow.Controller ctlFloMinVal( have_valInlIso=true, have_valOutIso=false, V_flow_nominal={0.02, 0.05}, V_flow_min={0.01, 0.03}, nEna=2, 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.u1ValInlIso[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.ControllerDualMode Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerDualMode

Validation model for the dual mode minimum flow bypass valve controller

Buildings.Templates.Plants.Controls.MinimumFlow.Validation.ControllerDualMode

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 ControllerDualMode "Validation model for the dual mode minimum flow bypass valve controller" Buildings.Templates.Plants.Controls.MinimumFlow.ControllerDualMode ctlFloMinPumCoo( have_heaWat=false, have_chiWat=true, have_valInlIso=false, have_valOutIso=false, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}, nEqu=2, nEnaChiWat=2) "Valve controller enabled by primary pump status – Cooling-only application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerDualMode ctlFloMinValCoo( have_heaWat=false, have_chiWat=true, have_valInlIso=true, have_valOutIso=false, VChiWat_flow_nominal={0.02, 0.05}, VChiWat_flow_min={0.01, 0.03}, nEqu=2, nEnaChiWat=2) "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.ControllerDualMode ctlFloMinPumHea( have_heaWat=true, have_chiWat=false, have_valInlIso=false, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}, nEqu=2, nEnaChiWat=2, nEnaHeaWat=2) "Valve controller enabled by primary pump status – Heating-only application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerDualMode ctlFloMinValHea( have_heaWat=true, have_chiWat=false, have_valInlIso=true, have_valOutIso=false, VHeaWat_flow_nominal={0.02, 0.05}, VHeaWat_flow_min={0.01, 0.03}, nEqu=2, nEnaChiWat=2, nEnaHeaWat=2) "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.ControllerDualMode ctlFloMinPumHeaCoo( have_heaWat=true, have_chiWat=true, have_pumChiWatPri=false, 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}, nEqu=2, nEnaChiWat=2, nEnaHeaWat=2) "Valve controller enabled by primary pump status – Heating and cooling application"; Buildings.Templates.Plants.Controls.MinimumFlow.ControllerDualMode ctlFloMinValHeaCoo( have_heaWat=true, have_chiWat=true, have_pumChiWatPri=false, 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}, nEqu=2, nEnaChiWat=2, nEnaHeaWat=2) "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.u1Equ[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumCoo.u1Equ[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.u1PumChiWatPri_actual[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinValHea.u1Equ[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumHea.u1Equ[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.u1PumHeaWatPri_actual[1:2]); connect(u1EquValPum.y[1:2], ctlFloMinPumHeaCoo.u1Equ[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.u1Equ); connect(u1EquValPum.y[1:2], ctlFloMinPumHeaCoo.u1PumHeaWatPri_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.u1HeaEqu[1:2]); connect(u1HeaEqu.y[1:2], ctlFloMinPumHeaCoo.u1HeaEqu[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 ControllerDualMode;

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;