Buildings.Fluid.HydronicConfigurations.Examples

Example models

Information

This package contains generic examples illustrating the concept of valve authority.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Fluid.HydronicConfigurations.Examples.TwoWayOpenLoop TwoWayOpenLoop Model illustrating the concept of the authority for two-way valves and open loop control

Buildings.Fluid.HydronicConfigurations.Examples.TwoWayOpenLoop Buildings.Fluid.HydronicConfigurations.Examples.TwoWayOpenLoop

Model illustrating the concept of the authority for two-way valves and open loop control

Buildings.Fluid.HydronicConfigurations.Examples.TwoWayOpenLoop

Information

This model illustrates the concept of the authority for two-way valves controlled with an open loop that modulates the valve from fully closed to fully open position. The valve authority β = Δp(y=100%) / Δp(y=0%) can be computed by dividing the pressure drop across the valve between those two extreme positions (see plot #2 for the pressure drop values and the command log for the computed value of the authority).

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
MassFlowRatemLiq_flow_nominal1Circuit mass flow rate at design conditions [kg/s]
Pressurep_min2E5Circuit minimum pressure [Pa]
PressureDifferencedp_nominal1E5Circuit total pressure drop at design conditions [Pa]

Modelica definition

model TwoWayOpenLoop "Model illustrating the concept of the authority for two-way valves and open loop control" extends Modelica.Icons.Example; package MediumLiq = Buildings.Media.Water "Medium model for hot water"; parameter Modelica.Units.SI.MassFlowRate mLiq_flow_nominal = 1 "Circuit mass flow rate at design conditions"; parameter Modelica.Units.SI.Pressure p_min = 2E5 "Circuit minimum pressure"; parameter Modelica.Units.SI.PressureDifference dp_nominal = 1E5 "Circuit total pressure drop at design conditions"; Sources.Boundary_pT sup( redeclare final package Medium = MediumLiq, final p=p_min + dp_nominal, nPorts=5) "Pressure boundary condition at supply"; Sources.Boundary_pT ret( redeclare final package Medium = MediumLiq, final p=p_min, nPorts=7) "Pressure boundary condition at return"; .Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ope(duration=100) "Valve opening signal"; FixedResistances.PressureDrop ter50( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dp_nominal=0.5 * dp_nominal) "Terminal unit as a fixed resistance destroying 50% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut50( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal= 0.5 * dp_nominal, use_inputFilter=false) "Control valve with 50% authority"; FixedResistances.PressureDrop ter75( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dp_nominal=0.75*dp_nominal) "Terminal unit as a fixed resistance destroying 75% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut25( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=0.25*dp_nominal, use_inputFilter=false) "Control valve with 25% authority"; FixedResistances.PressureDrop ter25( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, dp_nominal=0.25*dp_nominal) "Terminal unit as a fixed resistance destroying 25% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut75( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=0.75*dp_nominal, use_inputFilter=false) "Control valve with 75% authority"; Sources.Boundary_pT supOve( redeclare final package Medium = MediumLiq, final p=p_min + 1.5*dp_nominal, nPorts=2) "Pressure boundary condition at supply augmented by 50% from design value"; Actuators.Valves.TwoWayEqualPercentage valAut50Ove( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=0.5*dp_nominal, use_inputFilter=false) "Control valve with 50% authority and overflow"; FixedResistances.PressureDrop ter50Ove( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dp_nominal=0.5*dp_nominal) "Terminal unit as a fixed resistance destroying 50% of design pressure difference"; FixedResistances.PressureDrop ter50Bal( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dp_nominal=0.5*dp_nominal) "Terminal unit as a fixed resistance destroying 50% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut33Bal( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=0.5*dp_nominal, use_inputFilter=false) "Control valve with 33% authority and balanced circuit"; FixedResistances.PressureDrop bal50( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, dp_nominal=0.5*dp_nominal) "Balancing valve as a fixed resistance destroying 50% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut100( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=1*dp_nominal, use_inputFilter=false) "Control valve with 100% authority"; FixedResistances.PressureDrop ter67( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dp_nominal=0.67*dp_nominal) "Terminal unit as a fixed resistance destroying 67% of design pressure difference"; Actuators.Valves.TwoWayEqualPercentage valAut33( redeclare final package Medium = MediumLiq, final m_flow_nominal=mLiq_flow_nominal, final dpValve_nominal=0.33*dp_nominal, use_inputFilter=false) "Control valve with 33% authority"; equation connect(sup.ports[2], ter50.port_a); connect(ter50.port_b, valAut50.port_a); connect(ope.y, valAut50.y); connect(ter75.port_b, valAut25.port_a); connect(ope.y, valAut25.y); connect(sup.ports[3], ter75.port_a); connect(ter25.port_a, sup.ports[4]); connect(ter25.port_b, valAut75.port_a); connect(valAut75.port_b, ret.ports[2]); connect(valAut50.port_b, ret.ports[3]); connect(valAut25.port_b, ret.ports[4]); connect(ope.y, valAut75.y); connect(supOve.ports[1], ter50Ove.port_a); connect(valAut50Ove.port_b, ret.ports[5]); connect(ter50Ove.port_b, valAut50Ove.port_a); connect(ope.y, valAut50Ove.y); connect(ter50Bal.port_b, valAut33Bal.port_a); connect(supOve.ports[2], ter50Bal.port_a); connect(valAut33Bal.port_b, bal50.port_a); connect(bal50.port_b, ret.ports[6]); connect(ope.y, valAut33Bal.y); connect(sup.ports[1], valAut100.port_a); connect(valAut100.port_b, ret.ports[1]); connect(ope.y, valAut100.y); connect(valAut33.port_a, ter67.port_b); connect(valAut33.port_b, ret.ports[7]); connect(ter67.port_a, sup.ports[5]); connect(valAut33.y, ope.y); end TwoWayOpenLoop;