Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.

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
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.Controller Controller Validation of the top-level controller
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.CoolingCoil CoolingCoil Validation of cooling coil model
Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.ZoneState ZoneState Validation models of determining zone state

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.Controller Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.Controller

Validation of the top-level controller

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.Controller

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller.

Modelica definition

model Controller "Validation of the top-level controller" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV( final have_winSen=false, final kHea=1, final yHeaMax=1, final yMin=0.1, final AFlo=50, final controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final have_occSen=true, final TSupSetMax=297.15, final TSupSetMin=285.15, final use_TMix=false, final controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final kMod=1, final VOutMin_flow=6e-3, final VOutDes_flow=0.25) "Validate the heating case"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV1( final have_winSen=true, final kCoo=1, final kHea=1, final yHeaMax=1, final yMin=0.1, final AFlo=50, final controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final have_occSen=false, final TSupSetMax=297.15, final TSupSetMin=285.15, final use_TMix=false, final controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final kMod=1, final VOutMin_flow=6e-3, final VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV2( final have_winSen=false, final kCoo=1, final kHea=1, final yHeaMax=1, final yMin=0.1, final AFlo=50, final controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final have_occSen=true, final TSupSetMax=297.15, final TSupSetMin=285.15, final use_TMix=false, final controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final kMod=1, final VOutMin_flow=6e-3, final VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV3( final have_winSen=true, final kCoo=1, final kHea=1, final yHeaMax=1, final yMin=0.1, final AFlo=50, final controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final have_occSen=false, final TSupSetMax=297.15, final TSupSetMin=285.15, final use_TMix=false, final controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final kMod=1, final VOutMin_flow=6e-3, final VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon( final duration=86400, final height=6, final offset=273.15 + 16, y(unit="K")) "Measured zone temperature"; Buildings.Controls.SetPoints.OccupancySchedule occSch( final occupancy=3600*{4,20}) "Occupancy schedule"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TCut( final k=289.15, y(unit="K")) "Fixed dry bulb temperature high limit cutoff for economizer"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant nOcc(final k=2) "Number of occupants"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant win(final k=false) "Window status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut( final k=290.15, y(unit="K")) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut1( final k=301.15, y(unit="K")) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon1( final duration=86400, final height=-3, final offset=273.15 + 26, y(unit="K")) "Measured zone temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut2( final k=295.15, y(unit="K")) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut3( final k=289.15, y(unit="K")) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup( final height=2, final duration=86400, final offset=273.15 + 22.5, y(unit="K")) "Terminal unit discharge air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup1( final height=-3, final duration=86400, final offset=273.15 + 24, y(unit="K")) "Terminal unit discharge air temperature"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant demLim( final k=0) "Cooling and heating demand imit level"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooWarTim( final k=0) "Cooldown and warm-up time"; equation connect(TZon.y, conVAV.TZon); connect(occSch.occupied, conVAV.uOcc); connect(occSch.tNexOcc, conVAV.tNexOcc); connect(TCut.y, conVAV.TCut); connect(nOcc.y, conVAV.nOcc); connect(TOut.y, conVAV.TOut); connect(TSup.y, conVAV.TSup); connect(win.y, conVAV1.uWin); connect(occSch.tNexOcc, conVAV1.tNexOcc); connect(occSch.occupied, conVAV1.uOcc); connect(TOut1.y, conVAV1.TOut); connect(TZon1.y, conVAV1.TZon); connect(TSup1.y, conVAV1.TSup); connect(TCut.y, conVAV1.TCut); connect(TSup1.y,conVAV2. TSup); connect(occSch.occupied,conVAV2. uOcc); connect(occSch.tNexOcc,conVAV2. tNexOcc); connect(TCut.y,conVAV2. TCut); connect(TZon1.y, conVAV2.TZon); connect(TOut2.y, conVAV2.TOut); connect(win.y, conVAV3.uWin); connect(occSch.occupied, conVAV3.uOcc); connect(TCut.y, conVAV3.TCut); connect(TSup1.y, conVAV3.TSup); connect(TZon1.y, conVAV3.TZon); connect(occSch.tNexOcc, conVAV3.tNexOcc); connect(TOut3.y, conVAV3.TOut); connect(nOcc.y, conVAV2.nOcc); connect(cooWarTim.y, conVAV.warUpTim); connect(cooWarTim.y, conVAV.cooDowTim); connect(cooWarTim.y, conVAV1.warUpTim); connect(cooWarTim.y, conVAV1.cooDowTim); connect(cooWarTim.y, conVAV2.warUpTim); connect(cooWarTim.y, conVAV2.cooDowTim); connect(cooWarTim.y, conVAV3.warUpTim); connect(cooWarTim.y, conVAV3.cooDowTim); connect(demLim.y, conVAV3.uHeaDemLimLev); connect(demLim.y, conVAV3.uCooDemLimLev); connect(demLim.y, conVAV2.uHeaDemLimLev); connect(demLim.y, conVAV2.uCooDemLimLev); connect(demLim.y, conVAV1.uHeaDemLimLev); connect(demLim.y, conVAV1.uCooDemLimLev); connect(demLim.y, conVAV.uCooDemLimLev); connect(demLim.y, conVAV.uHeaDemLimLev); end Controller;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.CoolingCoil Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.CoolingCoil

Validation of cooling coil model

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.CoolingCoil

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.CoolingCoil.

Modelica definition

model CoolingCoil "Validation of cooling coil model" final parameter Real TSupSet( final unit="K", final displayUnit="degC", final quantity="ThermodynamicTemperature")=291.15 "Supply air temperature setpoint"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.CoolingCoil cooCoi( controllerTypeCooCoi=Buildings.Controls.OBC.CDL.Types.SimpleController.P, kCooCoi=1) "Cooling coil controller"; CDL.Continuous.Sources.Ramp TSup( final height=4, final offset=TSupSet - 2, final duration=3600*8) "Measured supply air temperature"; CDL.Continuous.Sources.Constant TSupSetSig( final k=TSupSet) "Supply air temperature setpoint"; CDL.Logical.Sources.Constant fanStatus(k=true) "Fan is on"; CDL.Continuous.Sources.Pulse zonSta( offset=2, period=3600*2) "Zone state"; CDL.Conversions.RealToInteger reaToInt "Real to integer conversion"; equation connect(TSup.y, cooCoi.TSup); connect(TSupSetSig.y, cooCoi.TSupCoo); connect(fanStatus.y, cooCoi.uSupFan); connect(zonSta.y, reaToInt.u); connect(reaToInt.y, cooCoi.uZonSta); end CoolingCoil;

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.ZoneState Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.ZoneState

Validation models of determining zone state

Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Validation.ZoneState

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.ZoneState.

Modelica definition

model ZoneState "Validation models of determining zone state" Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.ZoneState zonSta "Zone state"; CDL.Continuous.Sources.TimeTable uHeaCoo( table=[ 0,0,0; 1,0,1; 2,1,0], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Control signal for heating and cooling"; equation connect(zonSta.uHea, uHeaCoo.y[1]); connect(zonSta.uCoo, uHeaCoo.y[2]); end ZoneState;