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 |
Controller_Disable
|
Validation model for disabling the multi zone VAV AHU economizer modulation and damper position limit control loops |
Controller_Mod_DamLim
|
Validation model for multi zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits |
Validation model for disabling the multi zone VAV AHU economizer modulation and damper position limit control loops
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
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) ;
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) ;
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)
;
protected
final parameter Modelica.SIunits.Temperature TOutCutoff=297.15
;
final parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100
;
final parameter Modelica.SIunits.VolumeFlowRate minVOutSet_flow=0.71
;
final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=0.61
;
final parameter Modelica.SIunits.VolumeFlowRate incVOutSet_flow=(
minVOutSet_flow - VOutMin_flow)*2.2
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(
final k=true)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta(
final k=
Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage1)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta2(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage2)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(
final
k=hOutCutoff - 40000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(
final k=
hOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(
final
k=TOutCutoff - 30) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut1(
final k=
TOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VOutMinSet_flow(
final
k=minVOutSet_flow)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOut_flow(
final height=incVOutSet_flow,
final offset=VOutMin_flow,
final duration=1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uTSup(
final duration=1800,
final height=1,
final offset=0) ;
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;
Validation model for multi zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits
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
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller
economizer(
final use_TMix=true,
final use_enthalpy=true,
final use_G36FrePro=true) ;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Economizers.Controller
economizer1(
final use_enthalpy=false,
final use_TMix=true,
final use_G36FrePro=true) ;
protected
final parameter Modelica.SIunits.Temperature TOutCutoff=297.15
;
final parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100
;
final parameter Modelica.SIunits.VolumeFlowRate minVOutSet_flow=0.71
;
final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=0.61
;
final parameter Modelica.SIunits.VolumeFlowRate incVOutSet_flow=(
minVOutSet_flow - VOutMin_flow)*2.2
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(
final k=true)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta(
final k=
Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage0)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.OperationModes.occupied)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(
final
k=hOutCutoff - 10000) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(
final k=
hOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(
final
k=TOutCutoff - 5) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut1(
final k=
TOutCutoff);
CDL.Continuous.Sources.Constant TMixMea(
final k=303.15)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VOutMinSet_flow(
final
k=minVOutSet_flow)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOut_flow(
final offset=VOutMin_flow,
final duration=900,
final height=incVOutSet_flow) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp uTSup(
final duration=1800,
final height=1,
final offset=0) ;
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;