Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.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 single zone VAV AHU economizer modulation and damper position limit control loops |
Controller_Mod_DamLim
|
Validation model for single zone VAV AHU economizer operation: damper modulation and minimum ooutdoor air requirement damper position limits |
Validation model for disabling the single zone VAV AHU economizer modulation and damper position limit control loops
Information
This example validates
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.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.SingleZone.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)
;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.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)
;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.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)
;
protected
final parameter Modelica.SIunits.Temperature TOutCutoff=297.15
;
final parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100
;
final parameter Modelica.SIunits.Temperature TSupSet=291.15 ;
final parameter Real yFanMin(
final min=0,
final max=1,
final unit="1")=0.1 ;
final parameter Real yFanMax(
final min=0,
final max=1,
final unit="1")=0.9 ;
final parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow=1.0
;
final parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow=2.0
;
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 zonSta(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.ZoneStates.heating) ;
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 TSupSetSig(
final k=TSupSet) ;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta2(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.FreezeProtectionStages.stage2)
;
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.Ramp TSup(
final height=4,
final offset=TSupSet - 2,
final duration=1800) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOutMinSetSig(
final duration=1800,
final offset=VOutMin_flow,
final height=VOutDes_flow - VOutMin_flow)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp SupFanSpeSig(
final duration=1800,
final offset=yFanMin,
final height=yFanMax - yFanMin) ;
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;
Validation model for single 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.SingleZone.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.SingleZone.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)
;
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.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)
;
protected
parameter Modelica.SIunits.Temperature TOutCutoff=297.15
;
parameter Modelica.SIunits.SpecificEnergy hOutCutoff=65100
;
parameter Modelica.SIunits.Temperature TSupSet=291.15
;
parameter Modelica.SIunits.Temperature TSup=290.15
;
parameter Real yFanMin(
final min=0,
final max=1,
final unit="1") = 0.1 ;
parameter Real yFanMax(
final min=0,
final max=1,
final unit="1") = 0.9 ;
parameter Modelica.SIunits.VolumeFlowRate VOutMin_flow = 1.0 ;
parameter Modelica.SIunits.VolumeFlowRate VOutDes_flow = 2.0 ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanSta(
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 zonSta(
final k=Buildings.Controls.OBC.ASHRAE.G36_PR1.Types.ZoneStates.deadband)
;
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);
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSetSig(
final k=TSupSet) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSupSig(
final k=TSup) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSupSig1(
final duration=900,
final height=2,
final offset=TSupSet - 1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOutMinSetSig(
final duration=1800,
final offset=VOutMin_flow,
final height=VOutDes_flow - VOutMin_flow) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp SupFanSpeSig(
final duration=1800,
final offset=yFanMin,
final height=yFanMax - yFanMin) ;
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;