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 |
Enable_FreProSta
|
Model validates economizer disable for heating zone state and activated freeze protection |
Enable_TOut_hOut
|
Model validates economizer disable in case outdoor air conditions are above cutoff |
Model validates economizer disable for heating zone state and activated freeze protection
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
Type | Name | Default | Description |
Real | TOutCutoff | 297.15 | Outdoor temperature high limit cutoff [K] |
Real | hOutCutoff | 65100 | Outdoor air enthalpy high limit cutoff [J/kg] |
Modelica definition
model Enable_FreProSta
parameter Real TOutCutoff(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature")=297.15
;
parameter Real hOutCutoff(
final unit="J/kg",
final quantity="SpecificEnergy")=65100
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable
enaDis
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(
final k=TOutCutoff - 2)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut(
final k=TOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(
final k=hOutCutoff - 1000)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(
final k=hOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPosMax(
final k=0.9) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPosMin(
final k=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPhyPosMax(
final k=1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPosMax(
final k=0.8) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPosMin(
final k=0) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta(k=true)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(period=1800)
;
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)
;
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;
Model validates economizer disable in case outdoor air conditions are above cutoff
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
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut(
final k=TOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut1(
final k=hOutCutoff) ;
Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid TOut(
final rising=1000,
final falling=800,
final amplitude=4,
final offset=TOutCutoff - 2) ;
Buildings.Controls.OBC.CDL.Logical.TriggeredTrapezoid hOut(
final amplitude=4000,
final offset=hOutCutoff - 2200,
final rising=1000,
final falling=800) ;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable
enaDis
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable
enaDis1
;
Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Enable
enaDis2(
final use_enthalpy=false)
;
protected
final parameter Real TOutCutoff(
final unit="K",
final displayUnit="degC",
final quantity="ThermodynamicTemperature")=297.15
;
final parameter Real hOutCutoff(
final unit="J/kg",
final quantity="SpecificEnergy")=65100
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutCut(
final k=hOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut1(
final k=TOutCutoff) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant hOutBelowCutoff(
final k=hOutCutoff - 1000)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutBelowCutoff(
final k=TOutCutoff - 2)
;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPosMax(
final k=0.9) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant outDamPosMin(
final k=0.1) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPosMax(
final k=0.8) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPosMin(
final k=0) ;
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant retDamPhyPosMax(
final k=1) ;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant freProSta(
final k=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0)
;
Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFanSta(
final k=true) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(
final shift=10,
final period=2000) ;
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(
final shift=10,
final period=2000) ;
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(booPul.y, TOut.u);
connect(TOut.y, enaDis.TOut);
connect(booPul1.y, hOut.u);
connect(hOut.y, enaDis1.hOut);
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(TOut.y, enaDis2.TOut);
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);
end Enable_TOut_hOut;