Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.

Note that most validation models contain simple input data which may not be realistic, but for which the correct output can be obtained through an analytic solution. The examples plot various outputs, which have been verified against these solutions. These model outputs are stored as reference data and used for continuous validation whenever models in the library change.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.ActiveAirFlow ActiveAirFlow Validate the model for calculating active airflow setpoint for dual-duct terminal unit
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Alarms Alarms Validation of model that generates alarms
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersDualSensors DampersDualSensors Validate model for controlling damper position of dual-duct unit
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersSingleSensors DampersSingleSensors Validate model for controlling damper position of dual-duct unit
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Overrides Overrides Validation of model that overrides control
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.SystemRequests SystemRequests Validation of model that generates system requests

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.ActiveAirFlow Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.ActiveAirFlow

Validate the model for calculating active airflow setpoint for dual-duct terminal unit

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.ActiveAirFlow

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.ActiveAirFlow for calculating active minimum and maximum airflow setpoint used in dual-duct terminal unit.

Modelica definition

model ActiveAirFlow "Validate the model for calculating active airflow setpoint for dual-duct terminal unit" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.ActiveAirFlow actAirSet( final VCooMax_flow=0.5, final VHeaMax_flow=0.4) "Output the active airflow setpoint for terminal unit"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine minFlo( final amplitude=0.3, final freqHz=1/3600, final offset=0.2) "Occupied zone minimum flow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp opeMod( final offset=1, final height=5, final duration=3600) "Operation mode"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 "Convert real to integer"; Buildings.Controls.OBC.CDL.Continuous.Round round2(final n=0) "Round real number to given digits"; equation connect(opeMod.y,round2. u); connect(round2.y,reaToInt2. u); connect(reaToInt2.y, actAirSet.uOpeMod); connect(minFlo.y, actAirSet.VOccMin_flow); end ActiveAirFlow;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Alarms Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Alarms

Validation of model that generates alarms

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Alarms

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Alarms for generating system alarms.

Modelica definition

model Alarms "Validation of model that generates alarms" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Alarms ala( final have_duaSen=true, final staPreMul=1, final VCooMax_flow=1, final VHeaMax_flow=0.9, final floHys=0.01, final damPosHys=0.01) "Block outputs system alarms"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Alarms ala1( final have_duaSen=false, final staPreMul=1, final VCooMax_flow=1, final VHeaMax_flow=0.9, final floHys=0.01, final damPosHys=0.01) "Block outputs system alarms"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAirSet( final height=0.9, final duration=7200, final offset=0.1) "Discharge airflow rate setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp cooDisAir( final duration=7200, final offset=0.1, final height=0.3) "Cooling duct discharge airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos( final duration=7200, final height=0.7, final offset=0.3) "Damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supCooFan( final width=0.75, final period=7500) "Cooling supply fan status"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea "Convert boolean input to real output"; Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse colDammSta( final width=0.5, final period=7500) "Cooling duct damper open and close status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos1( final duration=7200, final height=0.7, final offset=0.3) "Damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supHeaFan( final width=0.75, final period=7500) "Heating supply fan status"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea1 "Convert boolean input to real output"; Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaDammSta( final width=0.5, final period=7500) "Heating duct damper open and close status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaDisAir( final duration=7200, final offset=0.1, final height=0.3) "Heating duct discharge airflow rate"; equation connect(disAirSet.y, ala.VActSet_flow); connect(booToRea.y, mul.u1); connect(damPos.y, mul.u2); connect(colDammSta.y, booToRea.u); connect(booToRea1.y, mul1.u1); connect(damPos1.y, mul1.u2); connect(heaDammSta.y, booToRea1.u); connect(supCooFan.y, ala.u1CooFan); connect(mul.y, ala.uCooDam); connect(supHeaFan.y, ala.u1HeaFan); connect(mul1.y, ala.uHeaDam); connect(cooDisAir.y, ala.VColDucDis_flow); connect(heaDisAir.y, ala.VHotDucDis_flow); connect(supCooFan.y, ala1.u1CooFan); connect(mul.y, ala1.uCooDam); connect(supHeaFan.y, ala1.u1HeaFan); connect(mul1.y, ala1.uHeaDam); connect(disAirSet.y, ala1.VActSet_flow); connect(cooDisAir.y, ala1.VDis_flow); end Alarms;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersDualSensors Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersDualSensors

Validate model for controlling damper position of dual-duct unit

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersDualSensors

Information

This example validates BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersDualSensors for damper control of dual-duct unit.

Modelica definition

model DampersDualSensors "Validate model for controlling damper position of dual-duct unit" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersDualSensors dam( final VCooMax_flow=0.08, final VHeaMax_flow=0.06, final kDam=1, final samplePeriod=120) "Output signal for controlling damper position"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersDualSensors dam1( final have_preIndDam=false, final VCooMax_flow=0.08, final VHeaMax_flow=0.06, final kDam=1, final samplePeriod=120) "Output signal for controlling damper position"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo( final height=-1, final duration=3600, final offset=1, final startTime=900) "Cooling control signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TZon( final k=273.15 + 22) "Zone temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TCooSup( final k=273.15 + 13) "AHU supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActMin_flow( final k=0.01) "Active minimum airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActCooMax_flow( final k=0.075) "Active cooling maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine VColDuc( final offset=0.015, final amplitude=0.002, final freqHz=1/3600) "Cold-duct airflow rate"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse cooAhu( final width=0.75, final period=7200) "Cold air handling unit status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSup( final k=273.15 + 25) "AHU supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea( final height=1, final duration=3600, final offset=0, final startTime=5500) "Heating control signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMax_flow( final k=0.07) "Active heating maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaAhu( final width=0.75, final period=7200, final shift=5000) "Hot air handling unit status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine VHotDuc( final offset=0.015, final amplitude=0.002, final freqHz=1/3600) "Hot-duct airflow rate"; equation connect(uCoo.y, dam.uCoo); connect(TZon.y, dam.TZon); connect(VActCooMax_flow.y, dam.VActCooMax_flow); connect(VActMin_flow.y, dam.VActMin_flow); connect(VActMin_flow.y, dam1.VActMin_flow); connect(TZon.y, dam1.TZon); connect(VActCooMax_flow.y, dam1.VActCooMax_flow); connect(uCoo.y, dam1.uCoo); connect(TCooSup.y, dam.TColSup); connect(TCooSup.y, dam1.TColSup); connect(cooAhu.y, dam.u1CooAHU); connect(cooAhu.y, dam1.u1CooAHU); connect(THeaSup.y, dam.THotSup); connect(THeaSup.y, dam1.THotSup); connect(uHea.y, dam.uHea); connect(uHea.y, dam1.uHea); connect(VActHeaMax_flow.y, dam.VActHeaMax_flow); connect(VActHeaMax_flow.y, dam1.VActHeaMax_flow); connect(heaAhu.y, dam1.u1HeaAHU); connect(VColDuc.y, dam1.VColDucDis_flow); connect(VHotDuc.y, dam1.VHotDucDis_flow); connect(heaAhu.y, dam.u1HeaAHU); end DampersDualSensors;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersSingleSensors Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersSingleSensors

Validate model for controlling damper position of dual-duct unit

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.DampersSingleSensors

Information

This example validates BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersSingleSensors for damper control of dual-duct unit.

Modelica definition

model DampersSingleSensors "Validate model for controlling damper position of dual-duct unit" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersSingleSensors dam( have_preIndDam=true, final VCooMax_flow=0.08, final VHeaMax_flow=0.06, final kDam=1, final samplePeriod=120) "Output signal for controlling damper position"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.DampersSingleSensors dam1( final have_preIndDam=false, final VCooMax_flow=0.08, final VHeaMax_flow=0.06, final kDam=1, final samplePeriod=120) "Output signal for controlling damper position"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo( final height=-1, final duration=3600, final offset=1, final startTime=900) "Cooling control signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActMin_flow( final k=0.01) "Active minimum airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActCooMax_flow( final k=0.075) "Active cooling maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine VDis( final offset=0.015, final amplitude=0.002, final freqHz=1/3600) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse cooAhu( final width=0.75, final period=7200) "Cold air handling unit status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea( final height=1, final duration=3600, final offset=0, final startTime=5500) "Heating control signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMax_flow( final k=0.07) "Active heating maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaAhu( final width=0.75, final period=7200, final shift=5000) "Hot air handling unit status"; equation connect(uCoo.y, dam.uCoo); connect(VActCooMax_flow.y, dam.VActCooMax_flow); connect(VActMin_flow.y, dam.VActMin_flow); connect(VActMin_flow.y, dam1.VActMin_flow); connect(VActCooMax_flow.y, dam1.VActCooMax_flow); connect(uCoo.y, dam1.uCoo); connect(cooAhu.y, dam.u1CooAHU); connect(cooAhu.y, dam1.u1CooAHU); connect(uHea.y, dam.uHea); connect(uHea.y, dam1.uHea); connect(VActHeaMax_flow.y, dam.VActHeaMax_flow); connect(VActHeaMax_flow.y, dam1.VActHeaMax_flow); connect(heaAhu.y, dam1.u1HeaAHU); connect(heaAhu.y, dam.u1HeaAHU); connect(VDis.y, dam1.VDis_flow); end DampersSingleSensors;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Overrides Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Overrides

Validation of model that overrides control

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.Overrides

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Overrides for overrideing controls.

Modelica definition

model Overrides "Validation of model that overrides control" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Overrides ove( final VMin_flow=0.1, final VCooMax_flow=0.9, final VHeaMax_flow=0.8) "Block outputs system requests"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAirSet( final height=0.9, final duration=7200, final offset=0.1) "Discharge airflow rate setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp cooDamPos( final duration=3600, final height=0.5, final offset=0.5) "Cooling damper position setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveFlo( final height=3, final duration=2000, startTime=1000) "Override flow setpoint"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 "Convert real to integer"; Buildings.Controls.OBC.CDL.Continuous.Round round2( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam( final height=2, final duration=2000, startTime=1000) "Override damper position"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 "Convert real to integer"; Buildings.Controls.OBC.CDL.Continuous.Round round1( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp heaDamPos( final duration=3600, final height=0.5, final offset=0.5) "Heating damper position setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam1( final height=2, final duration=2000, startTime=1000) "Override damper position"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3 "Convert real to integer"; Buildings.Controls.OBC.CDL.Continuous.Round round3(final n=0) "Round real number to given digits"; equation connect(oveDam.y, round1.u); connect(round1.y, reaToInt1.u); connect(oveFlo.y, round2.u); connect(round2.y, reaToInt2.u); connect(reaToInt2.y, ove.oveFloSet); connect(disAirSet.y, ove.VActSet_flow); connect(reaToInt1.y, ove.oveCooDamPos); connect(cooDamPos.y, ove.uCooDam); connect(oveDam1.y, round3.u); connect(round3.y,reaToInt3. u); connect(reaToInt3.y, ove.oveHeaDamPos); connect(heaDamPos.y, ove.uHeaDam); end Overrides;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.SystemRequests Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.SystemRequests

Validation of model that generates system requests

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.Validation.SystemRequests

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.SystemRequests for generating system requests.

Modelica definition

model SystemRequests "Validation of model that generates system requests" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Subsequences.SystemRequests sysReq( final have_duaSen=false, final floHys=0.01, final looHys=0.01, final damPosHys=0.01) "Block outputs system requests"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine( final freqHz=1/7200, final offset=296.15) "Generate data for setpoint"; Buildings.Controls.OBC.CDL.Discrete.UnitDelay TZonCooSet( final samplePeriod=1800) "Cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TZon( final freqHz=1/7200, final amplitude=2, final offset=299.15) "Zone temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uCoo( final height=-1, final duration=2000, final offset=1, final startTime=1000) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp colDucAirSet( final height=0.9, final duration=7200, final offset=0.1) "Cold-duct airflow rate setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp colDucAirRate( final duration=7200, final offset=0.1, final height=0.3) "Cold duct airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp colDamPos( final duration=3000, final height=-0.7, final offset=0.7) "Cold-duct damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul( final width=0.1, final period=7200) "After suppression"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine1( final freqHz=1/7200, final offset=293.15) "Generate data for setpoint"; Buildings.Controls.OBC.CDL.Discrete.UnitDelay TZonHeaSet( final samplePeriod=1800) "Heating setpoint temperature"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( final width=0.1, final period=7200) "After suppression"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uHea( final height=0.9, final duration=3600, final startTime=3600) "Heating loop signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDucAirSet( final height=0.9, final duration=7200, final offset=0.1) "Hot-duct airflow rate setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDucAirRate( final duration=7200, final offset=0.1, final height=0.3) "Hot duct airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp hotDamPos( final duration=3600, final height=0.7, startTime=3600) "Hot-duct damper position"; Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr(final t=0.01) "Check if damper is open"; Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr1(final t=0.01) "Check if damper is open"; equation connect(sine.y, TZonCooSet.u); connect(TZonCooSet.y, sysReq.TCooSet); connect(TZon.y, sysReq.TZon); connect(uCoo.y, sysReq.uCoo); connect(booPul.y, not1.u); connect(not1.y, sysReq.uAftSupCoo); connect(colDucAirSet.y, sysReq.VColDuc_flow_Set); connect(colDucAirRate.y, sysReq.VColDucDis_flow); connect(colDamPos.y, sysReq.uCooDam); connect(sine1.y, TZonHeaSet.u); connect(booPul1.y, not2.u); connect(not2.y, sysReq.uAftSupHea); connect(TZonHeaSet.y, sysReq.THeaSet); connect(uHea.y, sysReq.uHea); connect(hotDucAirSet.y, sysReq.VHotDuc_flow_Set); connect(hotDucAirRate.y, sysReq.VHotDucDis_flow); connect(hotDamPos.y, sysReq.uHeaDam); connect(colDamPos.y, greThr.u); connect(greThr.y, sysReq.u1CooDam); connect(hotDamPos.y, greThr1.u); connect(greThr1.y, sysReq.u1HeaDam); end SystemRequests;