Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.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.Validation.Controller Controller Validation of model that controls dual-duct unit with snap-acting control

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

Validation of model that controls dual-duct unit with snap-acting control

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

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Controller.

Modelica definition

model Controller "Validation of model that controls dual-duct unit with snap-acting control" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.DualDuctSnapActing.Controller duaDucCon( final venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1, final have_duaSen=true, final VAreBreZon_flow=0.006, final VPopBreZon_flow=0.005, final VMin_flow=0.5, final VCooMax_flow=1.5, final VHeaMax_flow=1.2, final staPreMul=1, final floHys=0.01, final looHys=0.01, final damPosHys=0.01, final VOccMin_flow=0, final VAreMin_flow=0) "Dual duct unit controller"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin TZon( final freqHz=1/86400, final amplitude=4, final offset=299.15) "Zone temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAirTem( final height=2, final duration=43200, final offset=273.15 + 15, final startTime=28800) "Discharge airflow temperture"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta( final width=0.05, final period=43200, final shift=43200) "Window opening status"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooSet( final k=273.15 + 24) "Zone cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant heaSet( final k=273.15 + 20) "Zone heating setpoint temperature"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse occ( final width=0.75, final period=43200, final shift=28800) "Occupancy status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp opeMod( final offset=1, final height=2, final duration=28800, final startTime=28800) "Operation mode"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 "Convert real to integer"; Buildings.Controls.OBC.CDL.Reals.Round round2( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin CO2( final amplitude=400, final freqHz=1/28800, final offset=600) "CO2 concentration"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp colSupAirTem( final height=2, final duration=43200, final offset=273.15 + 14) "Cold-duct supply air temperature from air handling unit"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin VColDis_flow( final offset=1.2, final amplitude=0.6, final freqHz=1/28800) "Cold duct airflow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveFlo( final height=2, final duration=10000, final startTime=35000) "Override flow setpoint"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 "Convert real to integer"; Buildings.Controls.OBC.CDL.Reals.Round round1( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveColDam( final height=2, final duration=5000, startTime=60000) "Override cold-duct damper position"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3 "Convert real to integer"; Buildings.Controls.OBC.CDL.Reals.Round round3( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse cooSupFanSta( final width=0.9, final period=73200, final shift=18800) "Cooling supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveHotDam( final height=2, final duration=5000, final startTime=60000) "Override hot-duct damper position"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt4 "Convert real to integer"; Buildings.Controls.OBC.CDL.Reals.Round round4( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaSupFanSta( final width=0.9, final period=73200, final shift=18800) "Heating supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin VHotDis_flow( final offset=1.2, final amplitude=0.6, final freqHz=1/28800) "Hot duct airflow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp hotSupAirTem( final height=2, final duration=43200, final offset=273.15 + 24) "Hot-duct supply air temperature from air handling unit"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant CO2Set( final k=894) "CO2 concentration setpoint"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; equation connect(TZon.y,duaDucCon. TZon); connect(cooSet.y, duaDucCon.TCooSet); connect(heaSet.y, duaDucCon.THeaSet); connect(occ.y, duaDucCon.u1Occ); connect(opeMod.y,round2. u); connect(round2.y,reaToInt2. u); connect(reaToInt2.y,duaDucCon. uOpeMod); connect(CO2.y,duaDucCon. ppmCO2); connect(oveFlo.y,round1. u); connect(round1.y,reaToInt1. u); connect(oveColDam.y, round3.u); connect(round3.y,reaToInt3. u); connect(reaToInt1.y,duaDucCon. oveFloSet); connect(reaToInt3.y, duaDucCon.oveCooDamPos); connect(oveHotDam.y, round4.u); connect(round4.y,reaToInt4. u); connect(reaToInt4.y, duaDucCon.oveHeaDamPos); connect(disAirTem.y, duaDucCon.TDis); connect(colSupAirTem.y, duaDucCon.TColSup); connect(VColDis_flow.y, duaDucCon.VColDucDis_flow); connect(cooSupFanSta.y, duaDucCon.u1CooAHU); connect(hotSupAirTem.y, duaDucCon.THotSup); connect(VHotDis_flow.y, duaDucCon.VHotDucDis_flow); connect(heaSupFanSta.y, duaDucCon.u1HeaAHU); connect(CO2Set.y, duaDucCon.ppmCO2Set); connect(winSta.y, not2.u); connect(not2.y, duaDucCon.u1Win); end Controller;