Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.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.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Validation.Controller Controller Validation controller model

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Validation.Controller Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Validation.Controller

Validation controller model

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Validation.Controller

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Controller.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model Controller "Validation controller model" extends Modelica.Icons.Example; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.MultiZone.Controller conAHU( numZon=2, AFlo={50,50}, minZonPriFlo={(50*3/3600)*6,(50*3/3600)*6}, maxSysPriFlo=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( each height=4, each duration=3600, each 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(TSetRooHeaOn.y, conAHU.THeaSet); connect(TSetRooCooOn.y, conAHU.TCooSet); connect(TOut.y, conAHU.TOut); connect(TZon.y, conAHU.TZon); connect(TDis.y, conAHU.TDis); 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.VBox_flow[1]); connect(vavBoxFlo2.y, conAHU.VBox_flow[2]); connect(TMixMea.y, conAHU.TMix); connect(opeMod.y, conAHU.uOpeMod); connect(maxSupResReq.y, conAHU.uZonTemResReq); connect(ducPreResReq.y, conAHU.uZonPreResReq); end Controller;