Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.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.SingleZone.VAV.Economizers.Validation.Controller_Disable Controller_Disable Validation model for disabling the single zone VAV AHU economizer modulation and damper position limit control loops
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Mod_DamLim Controller_Mod_DamLim Validation model for single zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Disable Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Disable

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

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Disable

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.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 single zone VAV AHU economizer modulation and damper position limit control loops" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller economizer( final use_enthalpy=true, final yFanMin=yFanMin, final yFanMax=yFanMax, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, use_TMix=false, use_G36FrePro=true) "Single zone VAV AHU economizer"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller economizer1( final use_enthalpy=true, final yFanMin=yFanMin, final yFanMax=yFanMax, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, use_TMix=false, use_G36FrePro=true) "Single zone VAV AHU economizer"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller economizer2( final yFanMin=yFanMin, final yFanMax=yFanMax, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, use_TMix=true, use_G36FrePro=false, final use_enthalpy=false) "Single 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.Temperature TSupSet=291.15 "Supply air temperature setpoint"; final parameter Real yFanMin( final min=0, final max=1, final unit="1")=0.1 "Minimum supply fan operation speed"; final parameter Real yFanMax( final min=0, final max=1, final unit="1")=0.9 "Maximum supply fan operation speed"; final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=1.0 "Calculated minimum outdoor airflow rate"; final parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow=2.0 "Calculated design outdoor airflow rate"; 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 stage is 0"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant zonSta( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.ZoneStates.heating) "Zone State is heating"; 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 TSupSetSig( final k=TSupSet) "Heating supply air temperature setpoint"; 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.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); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup( final height=4, final offset=TSupSet - 2, final duration=1800) "Supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOutMinSetSig( final duration=1800, final offset=VOutMin_flow, final height=VOutDes_flow - VOutMin_flow) "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp SupFanSpeSig( final duration=1800, final offset=yFanMin, final height=yFanMax - yFanMin) "Supply fan speed signal"; Buildings.Controls.OBC.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(TSup.y, economizer.TSup); connect(TSupSetSig.y, economizer.THeaSupSet); connect(TOutCut1.y, economizer1.TOutCut); connect(TOutBelowCutoff.y, economizer1.TOut); connect(hOutCut.y, economizer1.hOutCut); connect(hOutBelowCutoff.y, economizer1.hOut); connect(TSup.y, economizer1.TSup); connect(TSupSetSig.y, economizer1.THeaSupSet); connect(fanSta.y, economizer1.uSupFan); connect(freProSta2.y, economizer1.uFreProSta); connect(zonSta.y, economizer.uZonSta); connect(opeMod.y, economizer.uOpeMod); connect(opeMod.y, economizer1.uOpeMod); connect(zonSta.y, economizer1.uZonSta); connect(VOutMinSetSig.y, economizer.VOutMinSet_flow); connect(SupFanSpeSig.y, economizer.uSupFanSpe); connect(VOutMinSetSig.y, economizer1.VOutMinSet_flow); connect(SupFanSpeSig.y, economizer1.uSupFanSpe); connect(fanSta.y, economizer2.uSupFan); connect(TOutBelowCutoff.y, economizer2.TOut); connect(TOutCut1.y, economizer2.TOutCut); connect(TSup.y, economizer2.TSup); connect(TSupSetSig.y, economizer2.THeaSupSet); connect(VOutMinSetSig.y, economizer2.VOutMinSet_flow); connect(SupFanSpeSig.y, economizer2.uSupFanSpe); connect(sin1.y, economizer2.TMix); connect(opeMod.y, economizer2.uOpeMod); connect(zonSta.y, economizer2.uZonSta); end Controller_Disable;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Mod_DamLim Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Mod_DamLim

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

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Validation.Controller_Mod_DamLim

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.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 single zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller economizer( final use_enthalpy=true, final yFanMin=yFanMin, final yFanMax=yFanMax, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, use_G36FrePro=true, use_TMix=false) "Single zone VAV AHU economizer"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Economizers.Controller economizer1( final use_enthalpy=false, final yFanMin=yFanMin, final yFanMax=yFanMax, final VOutMin_flow=VOutMin_flow, final VOutDes_flow=VOutDes_flow, use_G36FrePro=true, use_TMix=false) "Single zone VAV AHU economizer"; protected parameter Modelica.SIunits.Temperature TOutCutoff=297.15 "Outdoor temperature high limit cutoff"; parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100 "Outdoor air enthalpy high limit cutoff"; parameter Modelica.SIunits.Temperature TSupSet=291.15 "Supply air temperature Heating setpoint"; parameter Modelica.SIunits.Temperature TSup=290.15 "Measured supply air temperature"; parameter Real yFanMin( final min=0, final max=1, final unit="1") = 0.1 "Minimum supply fan operation speed"; parameter Real yFanMax( final min=0, final max=1, final unit="1") = 0.9 "Maximum supply fan operation speed"; parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow = 1.0 "Calculated minimum outdoor airflow rate"; parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow = 2.0 "Calculated design outdoor airflow rate"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta( 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 zonSta( final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.ZoneStates.deadband) "Zone State is deadband"; 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); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSetSig( final k=TSupSet) "Heating supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSig( final k=TSup) "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSupSig1( final duration=900, final height=2, final offset=TSupSet - 1) "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOutMinSetSig( final duration=1800, final offset=VOutMin_flow, final height=VOutDes_flow - VOutMin_flow) "Minimum outdoor airflow setpoint"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp SupFanSpeSig( final duration=1800, final offset=yFanMin, final height=yFanMax - yFanMin) "Supply fan speed signal"; equation connect(fanSta.y, economizer.uSupFan); connect(freProSta.y, economizer.uFreProSta); connect(opeMod.y, economizer.uOpeMod); connect(zonSta.y, economizer.uZonSta); connect(TOutBelowCutoff.y, economizer.TOut); connect(TOutCut1.y, economizer.TOutCut); connect(hOutBelowCutoff.y, economizer.hOut); connect(hOutCut.y, economizer.hOutCut); connect(TSupSetSig.y, economizer.THeaSupSet); connect(TSupSig.y, economizer.TSup); connect(TOutBelowCutoff.y, economizer1.TOut); connect(TOutCut1.y, economizer1.TOutCut); connect(TSupSig1.y, economizer1.TSup); connect(TSupSetSig.y, economizer1.THeaSupSet); connect(fanSta.y, economizer1.uSupFan); connect(freProSta.y, economizer1.uFreProSta); connect(hOutBelowCutoff.y, economizer1.hOut); connect(hOutCut.y, economizer1.hOutCut); connect(opeMod.y, economizer1.uOpeMod); connect(zonSta.y, economizer1.uZonSta); connect(VOutMinSetSig.y, economizer.VOutMinSet_flow); connect(VOutMinSetSig.y, economizer1.VOutMinSet_flow); connect(SupFanSpeSig.y, economizer.uSupFanSpe); connect(SupFanSpeSig.y, economizer1.uSupFanSpe); end Controller_Mod_DamLim;