Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.

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_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Disable Controller_Disable Validation model for disabling the multi zone VAV AHU economizer modulation and damper position limit control loops
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Mod_DamLim Controller_Mod_DamLim Validation model for multi zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Disable Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Disable

Validation model for disabling the multi zone VAV AHU economizer modulation and damper position limit control loops

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Disable

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller for control signals which disable modulation control loop only (economizer block) and both minimum outdoor airflow and modulation control loops (economizer1 block).

Modelica definition

model Controller_Disable "Validation model for disabling the multi zone VAV AHU economizer modulation and damper position limit control loops" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller economizer( final use_enthalpy=true, final retDamPhyPosMax=1, final retDamPhyPosMin=0, final outDamPhyPosMax=1, final outDamPhyPosMin=0, final use_TMix=false, final use_G36FrePro=true) "Multi zone VAV AHU economizer "; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller economizer1( final use_enthalpy=true, final retDamPhyPosMax=1, final retDamPhyPosMin=0, final outDamPhyPosMax=1, final outDamPhyPosMin=0, final use_TMix=false, final use_G36FrePro=true) "Multi zone VAV AHU economizer"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller economizer2( final retDamPhyPosMax=1, final retDamPhyPosMin=0, final outDamPhyPosMax=1, final outDamPhyPosMin=0, final use_TMix=true, final use_G36FrePro=false, final use_enthalpy=false) "Multi zone VAV AHU economizer with TMix freeze protection"; protected final parameter Modelica.SIunits.Temperature TOutCutoff=297.15 "Outdoor temperature high limit cutoff"; final parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100 "Outdoor air enthalpy high limit cutoff"; final parameter Modelica.SIunits.VolumeFlowRate minVOutSet_flow=0.71 "Example volumetric airflow setpoint, 15cfm/occupant, 100 occupants"; final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=0.61 "Minimal measured volumetric airflow"; final parameter Modelica.SIunits.VolumeFlowRate incVOutSet_flow=( minVOutSet_flow - VOutMin_flow)*2.2 "Maximum volumetric airflow increase during the example simulation"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(final k=true) "Fan is on"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta(final k= Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage1) "Freeze protection status is 0"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta2( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage2) "Freeze protection stage is 2"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied) "AHU operation mode is Occupied"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(final k=hOutCutoff - 40000) "Outdoor air enthalpy is below the cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(final k= hOutCutoff) "Outdoor air enthalpy cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(final k=TOutCutoff - 30) "Outdoor air temperature is below the cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut1(final k= TOutCutoff) "Outdoor air temperature cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VOutMinSet_flow(final k=minVOutSet_flow) "Outdoor airflow rate setpoint, example assumes 15cfm/occupant and 100 occupants"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOut_flow( final height=incVOutSet_flow, final offset=VOutMin_flow, final duration=1800) "Measured outdoor air volumetric airflow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uTSup( final duration=1800, final height=1, final offset=0) "Supply air temperature control signal"; CDL.Continuous.Sources.Sine sin1( amplitude=20, freqHz=1/1800, offset=272.15, startTime=0); equation connect(fanSta.y, economizer.uSupFan); connect(freProSta.y, economizer.uFreProSta); connect(TOutBelowCutoff.y, economizer.TOut); connect(TOutCut1.y, economizer.TOutCut); connect(hOutBelowCutoff.y, economizer.hOut); connect(hOutCut.y, economizer.hOutCut); connect(VOut_flow.y, economizer.VOut_flow_normalized); connect(VOutMinSet_flow.y, economizer.VOutMinSet_flow_normalized); connect(TOutCut1.y, economizer1.TOutCut); connect(TOutBelowCutoff.y, economizer1.TOut); connect(hOutCut.y, economizer1.hOutCut); connect(hOutBelowCutoff.y, economizer1.hOut); connect(VOut_flow.y, economizer1.VOut_flow_normalized); connect(VOutMinSet_flow.y, economizer1.VOutMinSet_flow_normalized); connect(fanSta.y, economizer1.uSupFan); connect(freProSta2.y, economizer1.uFreProSta); connect(opeMod.y, economizer.uOpeMod); connect(opeMod.y, economizer1.uOpeMod); connect(uTSup.y, economizer.uTSup); connect(uTSup.y, economizer1.uTSup); connect(TOutBelowCutoff.y, economizer2.TOut); connect(TOutCut1.y, economizer2.TOutCut); connect(VOut_flow.y, economizer2.VOut_flow_normalized); connect(VOutMinSet_flow.y, economizer2.VOutMinSet_flow_normalized); connect(uTSup.y, economizer2.uTSup); connect(fanSta.y, economizer2.uSupFan); connect(opeMod.y, economizer2.uOpeMod); connect(sin1.y, economizer2.TMix); end Controller_Disable;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Mod_DamLim Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Mod_DamLim

Validation model for multi zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Validation.Controller_Mod_DamLim

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller control loops: minimum outdoor air damper position limits control loop (economizer block) and modulation control loop (economizer1 block) for VOut_flow and TSup control signals. Both control loops are enabled during the validation test.

Modelica definition

model Controller_Mod_DamLim "Validation model for multi zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller economizer( final use_TMix=true, final use_enthalpy=true, final use_G36FrePro=true) "Multi zone VAV AHU economizer"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller economizer1( final use_enthalpy=false, final use_TMix=true, final use_G36FrePro=true) "Multi zone VAV AHU economizer"; protected final parameter Modelica.SIunits.Temperature TOutCutoff=297.15 "Outdoor temperature high limit cutoff"; final parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100 "Outdoor air enthalpy high limit cutoff"; final parameter Modelica.SIunits.VolumeFlowRate minVOutSet_flow=0.71 "Example volumetric airflow setpoint, 15cfm/occupant, 100 occupants"; final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=0.61 "Minimal measured volumetric airflow"; final parameter Modelica.SIunits.VolumeFlowRate incVOutSet_flow=( minVOutSet_flow - VOutMin_flow)*2.2 "Maximum volumetric airflow increase during the example simulation"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(final k=true) "Fan is on"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta(final k= Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage0) "Freeze protection status is 0"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied) "AHU operation mode is Occupied"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(final k=hOutCutoff - 10000) "Outdoor air enthalpy is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(final k= hOutCutoff) "Outdoor air enthalpy cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(final k=TOutCutoff - 5) "Outdoor air temperature is slightly below the cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut1(final k= TOutCutoff); CDL.Continuous.Sources.Constant TMixMea(final k=303.15) "Measured mixed air temperature above cutoff"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VOutMinSet_flow(final k=minVOutSet_flow) "Outdoor airflow rate setpoint, example assumes 15cfm/occupant and 100 occupants"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOut_flow( final offset=VOutMin_flow, final duration=900, final height=incVOutSet_flow) "Measured outdoor air volumetric airflow"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uTSup( final duration=1800, final height=1, final offset=0) "Supply air temperature control signal"; equation connect(fanSta.y, economizer.uSupFan); connect(freProSta.y, economizer.uFreProSta); connect(opeMod.y, economizer.uOpeMod); connect(TOutBelowCutoff.y, economizer.TOut); connect(TOutCut1.y, economizer.TOutCut); connect(VOut_flow.y, economizer.VOut_flow_normalized); connect(VOutMinSet_flow.y, economizer.VOutMinSet_flow_normalized); connect(TOutBelowCutoff.y, economizer1.TOut); connect(TOutCut1.y, economizer1.TOutCut); connect(VOut_flow.y, economizer1.VOut_flow_normalized); connect(VOutMinSet_flow.y, economizer1.VOutMinSet_flow_normalized); connect(fanSta.y, economizer1.uSupFan); connect(freProSta.y, economizer1.uFreProSta); connect(opeMod.y, economizer1.uOpeMod); connect(uTSup.y, economizer.uTSup); connect(uTSup.y, economizer1.uTSup); connect(economizer1.TMix, TMixMea.y); connect(hOutCut.y, economizer.hOutCut); connect(hOutBelowCutoff.y, economizer.hOut); connect(TMixMea.y, economizer.TMix); end Controller_Mod_DamLim;