Buildings.Experimental.DHC.Loads.Controls.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Experimental.DHC.Loads.Controls.

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

Package Content

Name Description
Buildings.Experimental.DHC.Loads.Controls.Validation.MixingValveControl MixingValveControl Validation of mixing valve control in change-over mode

Buildings.Experimental.DHC.Loads.Controls.Validation.MixingValveControl Buildings.Experimental.DHC.Loads.Controls.Validation.MixingValveControl

Validation of mixing valve control in change-over mode

Buildings.Experimental.DHC.Loads.Controls.Validation.MixingValveControl

Information

This model validates Buildings.Experimental.DHC.Loads.Controls.MixingValveControl (as part of Buildings.Experimental.DHC.Loads.FlowDistribution) in change-over mode.

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

Parameters

TypeNameDefaultDescription
MassFlowRatem_flow_nominal1Mass flow rate at nominal conditions [kg/s]

Modelica definition

model MixingValveControl "Validation of mixing valve control in change-over mode" extends Modelica.Icons.Example; package Medium=Buildings.Media.Water "Source side medium"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal=1 "Mass flow rate at nominal conditions"; Buildings.Experimental.DHC.Loads.FlowDistribution disFlo( redeclare package Medium=Medium, m_flow_nominal=m_flow_nominal, typDis=Buildings.Experimental.DHC.Loads.Types.DistributionType.ChangeOver, have_pum=true, have_val=true, dp_nominal=100000, nPorts_a1=1, nPorts_b1=1) "Secondary distribution system"; Buildings.Fluid.Sources.Boundary_pT souPri( redeclare package Medium=Medium, use_T_in=true, nPorts=1) "Primary supply stream"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TPriHea( k=313.15, y(final unit="K", displayUnit="degC")) "Heating water primary supply temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TPriChi( k=280.15, y(final unit="K", displayUnit="degC")) "Chilled water primary supply temperature"; Buildings.Controls.OBC.CDL.Logical.Switch TPri( y(final unit="K", displayUnit="degC")) "Actual primary supply temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSetSecHea( k=303.15, y(final unit="K", displayUnit="degC")) "Heating water secondary supply temperature set point"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSetSecChi( k=291.15) "Chilled water secondary supply temperature set point"; Buildings.Controls.OBC.CDL.Logical.Switch TSetSecAct( y(final unit="K", displayUnit="degC")) "Actual secondary supply temperature set point"; Buildings.Fluid.Sources.MassFlowSource_T souSec( use_m_flow_in=true, redeclare package Medium=Medium, use_T_in=true, nPorts=1) "Secondary return stream"; Buildings.Fluid.Sources.Boundary_pT sinSec( redeclare package Medium=Medium, nPorts=1) "Sink for secondary stream"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant dTSecHea( k=-5) "Secondary temperature difference between supply and return"; Buildings.Fluid.Sensors.TemperatureTwoPort senTSecSup( redeclare package Medium=Medium, m_flow_nominal=m_flow_nominal) "Secondary supply temperature (measured)"; Buildings.Fluid.Sensors.TemperatureTwoPort senTSecRet( redeclare package Medium=Medium, m_flow_nominal=m_flow_nominal) "Secondary return temperature (measured)"; Buildings.Fluid.Sources.Boundary_pT sinPri( redeclare package Medium=Medium, nPorts=1) "Sink for primary stream"; Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse mSec_flow( amplitude=m_flow_nominal, period=200, offset=0) "Secondary mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Add add "Computation of secondary return temperature"; Buildings.Fluid.Sensors.TemperatureTwoPort senTPriSup( redeclare package Medium=Medium, m_flow_nominal=m_flow_nominal) "Primary supply temperature (measured)"; Buildings.Controls.OBC.CDL.Logical.Switch dTSec( y(final unit="K", displayUnit="degC")) "Actual secondary delta T"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant dTSecCoo( k=5) "Secondary temperature difference between supply and return"; Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger modInd( final integerTrue=1, final integerFalse=2) "Mode index, 1 for heating, 2 for cooling"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse modCha( period=1000) "Boolean pulse for changing mode"; Buildings.Controls.OBC.CDL.Logical.Not mod "Operating mode, true for heating, false for cooling"; equation connect(TPri.y,souPri.T_in); connect(TSetSecAct.y,disFlo.TSupSet); connect(disFlo.ports_b1[1],senTSecSup.port_a); connect(souSec.ports[1],senTSecRet.port_a); connect(senTSecRet.port_b,disFlo.ports_a1[1]); connect(disFlo.port_b,sinPri.ports[1]); connect(senTSecSup.port_b,sinSec.ports[1]); connect(mSec_flow.y,disFlo.mReq_flow[1]); connect(mSec_flow.y,souSec.m_flow_in); connect(add.y,souSec.T_in); connect(souPri.ports[1],senTPriSup.port_a); connect(senTPriSup.port_b,disFlo.port_a); connect(TSetSecChi.y,TSetSecAct.u3); connect(TSetSecHea.y,TSetSecAct.u1); connect(TPriChi.y,TPri.u3); connect(TPriHea.y,TPri.u1); connect(TSetSecAct.y,add.u1); connect(dTSec.y,add.u2); connect(dTSecHea.y,dTSec.u1); connect(dTSecCoo.y,dTSec.u3); connect(modCha.y,mod.u); connect(mod.y,TPri.u2); connect(mod.y,TSetSecAct.u2); connect(mod.y,modInd.u); connect(modInd.y,disFlo.modChaOve); connect(mod.y,dTSec.u2); end MixingValveControl;