Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Validation
Collection of validation models
Information
This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.
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 | Validation controller model |
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Validation.Controller
Validation controller model
Information
This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller.
Modelica definition
model Controller "Validation controller model"
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.VAV.Controller conAHU(
numZon=2,
AFlo={50,50},
minZonPriFlo={(50*3/3600)*6,(50*3/3600)*6},
VPriSysMax_flow=0.7*(50*3/3600)*6*2,
have_occSen=true) "Multiple zone AHU controller";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSetRooCooOn(
final k=273.15 + 24)
"Cooling on setpoint";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSetRooHeaOn(
final k=273.15 + 20)
"Heating on setpoint";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOutCut(
final k=297.15)
"Outdoor temperature high limit cutoff";
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.Ramp TZon[2](
each height=6,
each offset=273.15 + 17,
each duration=3600) "Measured zone temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TDis[2](
each height=4,
each duration=3600,
each offset=273.15 + 18) "Terminal unit discharge air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp numOfOcc1(
height=2,
duration=3600)
"Occupant number in zone 1";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp numOfOcc2(
duration=3600,
height=3)
"Occupant number in zone 2";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup(
height=4,
duration=3600,
offset=273.15 + 14) "AHU supply air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp VOut_flow(
duration=1800,
offset=0.02,
height=0.0168)
"Measured outdoor airflow rate";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp vavBoxFlo1(
height=1.5,
offset=1,
duration=3600)
"Ramp signal for generating VAV box flow rate";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp vavBoxFlo2(
offset=1,
height=0.5,
duration=3600)
"Ramp signal for generating VAV box flow rate";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TMixMea(
height=4,
duration=1,
offset=273.15 + 2,
startTime=0)
"Measured mixed air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine TOut(
amplitude=5,
offset=18 + 273.15,
freqHz=1/3600) "Outdoor air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine ducStaPre(
offset=200,
amplitude=150,
freqHz=1/3600) "Duct static pressure";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine(
offset=3,
amplitude=2,
freqHz=1/9600) "Duct static pressure setpoint reset requests";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sine1(
amplitude=6,
freqHz=1/9600)
"Maximum supply temperature setpoint reset";
Buildings.Controls.OBC.CDL.Continuous.Abs abs
"Block generates absolute value of input";
Buildings.Controls.OBC.CDL.Continuous.Abs abs1
"Block generates absolute value of input";
Buildings.Controls.OBC.CDL.Continuous.Round round1(n=0)
"Round real number to given digits";
Buildings.Controls.OBC.CDL.Continuous.Round round2(n=0)
"Round real number to given digits";
Buildings.Controls.OBC.CDL.Conversions.RealToInteger ducPreResReq "Convert real to integer";
Buildings.Controls.OBC.CDL.Conversions.RealToInteger maxSupResReq "Convert real to integer";
equation
connect(sine.y,abs1. u);
connect(abs1.y,round2. u);
connect(round2.y, ducPreResReq.u);
connect(sine1.y, abs.u);
connect(abs.y,round1. u);
connect(round1.y, maxSupResReq.u);
connect(TSetRooCooOn.y, conAHU.TZonCooSet);
connect(TZon.y, conAHU.TZon);
connect(TOutCut.y, conAHU.TOutCut);
connect(TSup.y, conAHU.TSup);
connect(numOfOcc1.y, conAHU.nOcc[1]);
connect(numOfOcc2.y, conAHU.nOcc[2]);
connect(VOut_flow.y, conAHU.VOut_flow);
connect(ducStaPre.y, conAHU.ducStaPre);
connect(vavBoxFlo1.y, conAHU.VDis_flow[1]);
connect(vavBoxFlo2.y, conAHU.VDis_flow[2]);
connect(TMixMea.y, conAHU.TMix);
connect(opeMod.y, conAHU.uOpeMod);
connect(maxSupResReq.y, conAHU.uZonTemResReq);
connect(ducPreResReq.y, conAHU.uZonPreResReq);
connect(TOut.y, conAHU.TOut);
connect(TDis.y, conAHU.TDis);
connect(TSetRooHeaOn.y, conAHU.TZonHeaSet);
end Controller;