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

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.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.Reheat.Subsequences.Validation.ActiveAirFlow ActiveAirFlow Validate the model for calculating active airflow setpoint for unit with reheat
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.Alarms Alarms Validation of model that generates alarms
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.DamperValves DamperValves Validate model for controlling damper and valve position
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.Overrides Overrides Validation of model that overrides control
Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.SystemRequests SystemRequests Validation of model that generates system requests

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

Validate the model for calculating active airflow setpoint for unit with reheat

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

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.ActiveAirFlow for calculating active minimum and maximum airflow setpoint used in terminal unit with reheat.

Modelica definition

model ActiveAirFlow "Validate the model for calculating active airflow setpoint for unit with reheat" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.ActiveAirFlow actAirSet( final VCooMax_flow=0.5, final VHeaMin_flow=0.1, 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.Reheat.Subsequences.Validation.Alarms Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.Alarms

Validation of model that generates alarms

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

Information

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

Modelica definition

model Alarms "Validation of model that generates alarms" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Alarms ala( final have_hotWatCoi=true, final staPreMul=1, final hotWatRes=1, final VCooMax_flow=1, 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 disAir( final duration=7200, final offset=0.1, final height=0.3) "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 supFan( final width=0.75, final period=7500) "AHU 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 damSta( final width=0.5, final period=7500) "Damper open and close status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse hotPla( final width=0.9, final period=7500) "Hot water plant status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis( final duration=3600, final offset=273.15 + 20, final height=-5) "Discharge air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp valPos( final duration=2000, final height=-0.7, final offset=0.7, final startTime=3600) "Valve position"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSup( final k=273.15 + 13) "AHU supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TDisSet( final k=273.15 + 30) "Discharge airflow temperature setpoint"; equation connect(disAirSet.y, ala.VActSet_flow); connect(booToRea.y, mul.u1); connect(damPos.y, mul.u2); connect(damSta.y, booToRea.u); connect(disAir.y, ala.VDis_flow); connect(supFan.y, ala.u1Fan); connect(mul.y, ala.uDam); connect(valPos.y, ala.uVal); connect(TSup.y, ala.TSup); connect(hotPla.y, ala.u1HotPla); connect(TDis.y, ala.TDis); connect(TDisSet.y, ala.TDisSet); end Alarms;

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.DamperValves Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.DamperValves

Validate model for controlling damper and valve position

Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Validation.DamperValves

Information

This example validates BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves for damper and valve control of terminal unit with reheat.

Modelica definition

model DamperValves "Validate model for controlling damper and valve position" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves damValFan( final VMin_flow=0.01, final VCooMax_flow=0.09, final VHeaMax_flow=0.08, final kDam=1) "Output signal for controlling damper position"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.DamperValves damValFan1( final VMin_flow=0.01, final VCooMax_flow=0.09, final VHeaMax_flow=0.08, final have_preIndDam=false, final kDam=1) "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 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.Constant TSupSet( final k=273.15 + 13) "AHU supply air temperature setpoint"; 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.Ramp disAir( final duration=7200, final offset=0.01, final height=0.06) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TSup( final offset=273.15 + 13, final amplitude=1, final freqHz=1/3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSet( final k=273.15 + 20) "Zone heating setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TDis( final offset=273.15 + 13, final amplitude=1.2, final freqHz=1/3600) "Measured discharge air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp opeMod( final offset=1, final height=3, final duration=90000) "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"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActCooMin_flow( final k=0.015) "Active cooling minimum flow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMin_flow( final k=0.015) "Active heating minimum flow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VActHeaMax_flow( final k=0.06) "Active heating maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveFlo( final height=3, final duration=2000, final startTime=1000) "Override flow setpoint"; 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"; equation connect(uCoo.y, damValFan.uCoo); connect(TZon.y, damValFan.TZon); connect(VActCooMax_flow.y, damValFan.VActCooMax_flow); connect(VActMin_flow.y, damValFan.VActMin_flow); connect(VActMin_flow.y, damValFan1.VActMin_flow); connect(TZon.y, damValFan1.TZon); connect(VActCooMax_flow.y, damValFan1.VActCooMax_flow); connect(uCoo.y, damValFan1.uCoo); connect(uHea.y, damValFan.uHea); connect(uHea.y, damValFan1.uHea); connect(disAir.y, damValFan1.VDis_flow); connect(TSupSet.y, damValFan.TSupSet); connect(TSupSet.y, damValFan1.TSupSet); connect(TSup.y, damValFan.TSup); connect(TSup.y, damValFan1.TSup); connect(THeaSet.y, damValFan.THeaSet); connect(THeaSet.y, damValFan1.THeaSet); connect(TDis.y, damValFan.TDis); connect(TDis.y, damValFan1.TDis); connect(opeMod.y,round2. u); connect(round2.y,reaToInt2. u); connect(reaToInt2.y, damValFan.uOpeMod); connect(reaToInt2.y, damValFan1.uOpeMod); connect(VActCooMin_flow.y, damValFan.VActCooMin_flow); connect(VActCooMin_flow.y, damValFan1.VActCooMin_flow); connect(VActHeaMin_flow.y, damValFan.VActHeaMin_flow); connect(VActHeaMin_flow.y, damValFan1.VActHeaMin_flow); connect(VActHeaMax_flow.y, damValFan.VActHeaMax_flow); connect(VActHeaMax_flow.y, damValFan1.VActHeaMax_flow); connect(oveFlo.y,round1. u); connect(round1.y,reaToInt1. u); connect(reaToInt1.y, damValFan.oveFloSet); connect(reaToInt1.y, damValFan1.oveFloSet); end DamperValves;

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

Validation of model that overrides control

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

Information

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

Modelica definition

model Overrides "Validation of model that overrides control" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.Overrides ove "Block outputs system requests"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos( final duration=3600, final height=0.5, final offset=0.5) "Damper position setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp oveDam( final height=2, final duration=2000, final 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 heaValPos( final duration=3600, final height=0.5, final offset=0.5) "Heating valve position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse heaOff( final width=0.75, final period=3600) "Close heating valve"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; equation connect(oveDam.y, round1.u); connect(round1.y, reaToInt1.u); connect(reaToInt1.y, ove.oveDamPos); connect(damPos.y, ove.uDam); connect(heaValPos.y, ove.uVal); connect(heaOff.y, not1.u); connect(not1.y, ove.uHeaOff); end Overrides;

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

Validation of model that generates system requests

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

Information

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

Modelica definition

model SystemRequests "Validation of model that generates system requests" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Subsequences.SystemRequests sysReq( final have_hotWatCoi=true, final floHys=0.01, final looHys=0.01, final damPosHys=0.01, final valPosHys=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 TCooSet( 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 disAirSet( final height=0.9, final duration=7200, final offset=0.1) "Discharge airflow rate setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp disAir( final duration=7200, final offset=0.1, final height=0.3) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp damPos( final duration=3000, final height=-0.7, final offset=0.7) "Damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul( final width=0.1, final period=7200) "After suppression"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis( final duration=3600, final offset=273.15 + 20, final height=-5) "Discharge air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TDisSet( final k=273.15 + 30) "Discharge airflow temperature setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp valPos( final duration=2000, final height=-0.7, final offset=0.7, final startTime=3600) "Valve position"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; equation connect(sine.y, TCooSet.u); connect(TCooSet.y, sysReq.TCooSet); connect(TZon.y, sysReq.TZon); connect(uCoo.y, sysReq.uCoo); connect(disAirSet.y, sysReq.VSet_flow); connect(disAir.y, sysReq.VDis_flow); connect(damPos.y, sysReq.uDam); connect(TDisSet.y, sysReq.TDisSet); connect(TDis.y, sysReq.TDis); connect(valPos.y, sysReq.uVal); connect(booPul.y, not1.u); connect(not1.y, sysReq.uAftSup); end SystemRequests;