Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.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.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_FreProSta Enable_FreProSta Model validates economizer disable for heating zone state and activated freeze protection
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_TOut_hOut Enable_TOut_hOut Model validates economizer disable in case outdoor air conditions are above cutoff

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_FreProSta Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_FreProSta

Model validates economizer disable for heating zone state and activated freeze protection

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_FreProSta

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable for the following control signals: zone state, freeze protection stage.

Parameters

TypeNameDefaultDescription
RealTOutCutoff297.15Outdoor temperature high limit cutoff [K]
RealhOutCutoff65100Outdoor air enthalpy high limit cutoff [J/kg]

Modelica definition

model Enable_FreProSta "Model validates economizer disable for heating zone state and activated freeze protection" parameter Real TOutCutoff( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=297.15 "Outdoor temperature high limit cutoff"; parameter Real hOutCutoff( final unit="J/kg", final quantity="SpecificEnergy")=65100 "Outdoor air enthalpy high limit cutoff"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable enaDis "Multi zone VAV AHU enable disable sequence"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOutBelowCutoff( final k=TOutCutoff - 2) "Outdoor air temperature is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOutCut( final k=TOutCutoff) "OA temperature high limit cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutBelowCutoff( final k=hOutCutoff - 1000) "Outdoor air enthalpy is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutCut( final k=hOutCutoff) "Outdoor air enthalpy cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPosMax( final k=0.9) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPosMin( final k=0.1) "Minimal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMax( final k=1) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPosMax( final k=0.8) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPosMin( final k=0) "Minimal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta(k=true) "Supply fan status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(period=1800) "Boolean pulse for generating freeze protection stage"; Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger freProSta1( integerTrue=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0, integerFalse=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage1) "Freeze protection stage changes from stage 0 to stage 1"; equation connect(TOutCut.y, enaDis.TOutCut); connect(TOutBelowCutoff.y, enaDis.TOut); connect(hOutBelowCutoff.y, enaDis.hOut); connect(hOutCut.y, enaDis.hOutCut); connect(outDamPosMin.y, enaDis.uOutDam_min); connect(outDamPosMax.y, enaDis.uOutDam_max); connect(retDamPosMin.y, enaDis.uRetDam_min); connect(retDamPosMax.y, enaDis.uRetDam_max); connect(retDamPhyPosMax.y, enaDis.uRetDamPhy_max); connect(supFanSta.y, enaDis.u1SupFan); connect(booPul1.y, freProSta1.u); connect(freProSta1.y, enaDis.uFreProSta); end Enable_FreProSta;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_TOut_hOut Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_TOut_hOut

Model validates economizer disable in case outdoor air conditions are above cutoff

Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Validation.Enable_TOut_hOut

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable for the following control signals: TOut, TOutCut, hOut, hOutCut.

Modelica definition

model Enable_TOut_hOut "Model validates economizer disable in case outdoor air conditions are above cutoff" Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOutCut( final k=TOutCutoff) "Outdoor air temperature cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutCut1( final k=hOutCutoff) "Outdoor air enthalpy cutoff"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable enaDis "Multi zone VAV AHU economizer enable disable sequence"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable enaDis1 "Multi zone VAV AHU economizer enable disable sequence"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable enaDis2( final use_enthalpy=false) "Multi zone VAV AHU economizer enable disable sequence"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin TOut( final amplitude=4, final freqHz=1/3600, final offset=TOutCutoff - 2, final startTime=10) "Outdoor air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin hOut( final amplitude=4000, final freqHz=1/3600, final offset=hOutCutoff - 2200, final startTime=10) "Outdoor air enthalpy"; protected final parameter Real TOutCutoff( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=297.15 "Outdoor temperature high limit cutoff"; final parameter Real hOutCutoff( final unit="J/kg", final quantity="SpecificEnergy")=65100 "Outdoor air enthalpy high limit cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutCut( final k=hOutCutoff) "Outdoor air enthalpy cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOutCut1( final k=TOutCutoff) "Outdoor air temperature cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant hOutBelowCutoff( final k=hOutCutoff - 1000) "Outdoor air enthalpy is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOutBelowCutoff( final k=TOutCutoff - 2) "Outdoor air temperature is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPosMax( final k=0.9) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPosMin( final k=0.1) "Minimal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPosMax( final k=0.8) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPosMin( final k=0) "Minimal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant retDamPhyPosMax( final k=1) "Maximal allowed economizer damper position"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0) "Freeze Protection Status - Disabled"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta( final k=true) "Supply fan status signal"; equation connect(TOutCut.y, enaDis.TOutCut); connect(hOutCut.y, enaDis.hOutCut); connect(freProSta.y, enaDis.uFreProSta); connect(outDamPosMax.y, enaDis.uOutDam_max); connect(outDamPosMin.y, enaDis.uOutDam_min); connect(retDamPhyPosMax.y, enaDis.uRetDamPhy_max); connect(retDamPosMax.y, enaDis.uRetDam_max); connect(retDamPosMin.y, enaDis.uRetDam_min); connect(TOutCut1.y, enaDis1.TOutCut); connect(hOutCut1.y, enaDis1.hOutCut); connect(hOutBelowCutoff.y, enaDis.hOut); connect(TOutBelowCutoff.y, enaDis1.TOut); connect(freProSta.y, enaDis1.uFreProSta); connect(outDamPosMax.y, enaDis1.uOutDam_max); connect(outDamPosMin.y, enaDis1.uOutDam_min); connect(retDamPhyPosMax.y, enaDis1.uRetDamPhy_max); connect(retDamPosMax.y, enaDis1.uRetDam_max); connect(retDamPosMin.y, enaDis1.uRetDam_min); connect(TOutCut.y, enaDis2.TOutCut); connect(freProSta.y, enaDis2.uFreProSta); connect(outDamPosMax.y, enaDis2.uOutDam_max); connect(outDamPosMin.y, enaDis2.uOutDam_min); connect(retDamPhyPosMax.y, enaDis2.uRetDamPhy_max); connect(retDamPosMax.y, enaDis2.uRetDam_max); connect(retDamPosMin.y, enaDis2.uRetDam_min); connect(supFanSta.y, enaDis.u1SupFan); connect(supFanSta.y, enaDis1.u1SupFan); connect(supFanSta.y, enaDis2.u1SupFan); connect(TOut.y, enaDis.TOut); connect(TOut.y, enaDis2.TOut); connect(hOut.y, enaDis1.hOut); end Enable_TOut_hOut;