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

Collection of validation models

Information

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

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

Validate the model for calculating active airflow setpoint for unit with variable volume series fans

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

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.ActiveAirFlow for calculating active minimum and maximum airflow setpoint used in series fan powered terminal unit.

Modelica definition

model ActiveAirFlow "Validate the model for calculating active airflow setpoint for unit with variable volume series fans" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.ActiveAirFlow actAirSet( final VCooMax_flow=0.5) "Output the active airflow setpoint for terminal unit"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin minFlo( final amplitude=0.3, final freqHz=1/3600, final offset=0.2) "Occupied zone minimum flow"; Buildings.Controls.OBC.CDL.Reals.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.Reals.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.SeriesFanVVF.Subsequences.Validation.Alarms Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.Validation.Alarms

Validation of model that generates alarms

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

Information

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

Modelica definition

model Alarms "Validation of model that generates alarms" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.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.Reals.Sources.Ramp disAirSet( final height=0.9, final duration=7200, final offset=0.1) "Discharge airflow rate setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir( final duration=7200, final offset=0.1, final height=0.3) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Reals.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.Reals.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.Reals.Sources.Ramp TDis( final duration=3600, final offset=273.15 + 20, final height=-5) "Discharge air temperature"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFanComOn( final width=0.5, final period=7500) "Terminal fan command on status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFanOn( final width=0.5, final period=7500, shift=1000) "Terminal fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp valPos( final duration=2000, final height=-0.7, final offset=0.7, final startTime=3600) "Valve position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSup( final k=273.15 + 13) "AHU supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TDisSet( final k=273.15 + 30) "Discharge airflow temperature setpoint"; Buildings.Controls.OBC.CDL.Integers.Sources.Pulse intPul( amplitude=6, width=0.1, period=8500, offset=1) "Operation mode"; 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.VPri_flow); connect(supFan.y, ala.u1Fan); connect(terFanComOn.y, ala.u1FanCom); connect(terFanOn.y, ala.u1TerFan); 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); connect(intPul.y, ala.uOpeMod); end Alarms;

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

Validate model for controlling damper and valve position

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

Information

This example validates BBuildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.DamperValves for damper and valve control of series fan powered unit.

Modelica definition

model DamperValves "Validate model for controlling damper and valve position" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.DamperValves damValFan1( final maxRat=0.1, final VMin_flow=0.01, final VCooMax_flow=0.09, final kDam=1) "Output signal for controlling damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo( final height=-1, final duration=3600, final offset=1, final startTime=900) "Cooling control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon( final k=273.15 + 22) "Zone temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant VActMin_flow( final k=0.01) "Active minimum airflow setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant VActCooMax_flow( final k=0.075) "Active cooling maximum airflow setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse terFan( final width=0.75, final period=7200) "Terminal fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSupSet( final k=273.15 + 13) "AHU supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uHea( final height=1, final duration=3600, final offset=0, final startTime=5500) "Heating control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir( final duration=7200, final offset=0.01, final height=0.06) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin TSup( final offset=273.15 + 13, final amplitude=1, final freqHz=1/3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaSet( final k=273.15 + 20) "Zone heating setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin TDis( final offset=273.15 + 13, final amplitude=1.2, final freqHz=1/3600) "Measured discharge air temperature"; Buildings.Controls.OBC.CDL.Reals.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.Reals.Round round2( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp damPos( final height=1, final duration=3600, final offset=0, final startTime=5500) "Damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant VMinOut_flow( final k=0.005) "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Reals.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.Reals.Round round1(final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul( final width=0.9, final period=4800, final shift=180) "AHU fan status"; equation 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, damValFan1.uHea); connect(disAir.y, damValFan1.VPri_flow); connect(TSupSet.y, damValFan1.TSupSet); connect(TSup.y, damValFan1.TSup); connect(THeaSet.y, damValFan1.THeaSet); connect(TDis.y, damValFan1.TDis); connect(opeMod.y,round2. u); connect(round2.y,reaToInt2. u); connect(reaToInt2.y, damValFan1.uOpeMod); connect(terFan.y, damValFan1.u1TerFan); connect(damPos.y, damValFan1.uDam); connect(VMinOut_flow.y, damValFan1.VOAMin_flow); connect(oveFlo.y,round1. u); connect(round1.y,reaToInt1. u); connect(reaToInt1.y, damValFan1.oveFloSet); connect(booPul.y, damValFan1.u1Fan); end DamperValves;

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

Validation of model that overrides control

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

Information

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

Modelica definition

model Overrides "Validation of model that overrides control" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.Subsequences.Overrides ove "Block outputs system requests"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp damPos( final duration=3600, final height=0.5, final offset=0.5) "Damper position setpoint"; Buildings.Controls.OBC.CDL.Reals.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.Reals.Round round1( final n=0) "Round real number to given digits"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaValPos( final duration=3600, final height=0.5, final offset=0.5) "Heating valve position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp oveDam1( final height=2, final duration=2000, final startTime=1000) "Override 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 heaOff( final width=0.75, final period=3600) "Close heating valve"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant terFan( final k=true) "Terminal fan status"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; equation connect(oveDam.y, round1.u); connect(round1.y, reaToInt1.u); connect(oveDam1.y, round3.u); connect(round3.y,reaToInt3. u); connect(reaToInt1.y, ove.oveDamPos); connect(damPos.y, ove.uDam); connect(heaValPos.y, ove.uVal); connect(reaToInt3.y, ove.oveFan); connect(terFan.y, ove.u1Fan); connect(heaOff.y, not1.u); connect(not1.y, ove.uHeaOff); end Overrides;

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

Validation of model that generates system requests

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

Information

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

Modelica definition

model SystemRequests "Validation of model that generates system requests" Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.SeriesFanVVF.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.Reals.Sources.Sin 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.Reals.Sources.Sin TZon( final freqHz=1/7200, final amplitude=2, final offset=299.15) "Zone temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo( final height=-1, final duration=2000, final offset=1, final startTime=1000) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAirSet( final height=0.9, final duration=7200, final offset=0.1) "Discharge airflow rate setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp disAir( final duration=7200, final offset=0.1, final height=0.3) "Discharge airflow rate"; Buildings.Controls.OBC.CDL.Reals.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.Reals.Sources.Ramp TDis( final duration=3600, final offset=273.15 + 20, final height=-5) "Discharge air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TDisSet( final k=273.15 + 30) "Discharge airflow temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.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.VPri_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;