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( kHea=1, yHeaMax=1, yMin=0.1, AFlo=50, controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSetMax=297.15, TSupSetMin=285.15, use_TMix=false, controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, kMod=1, VOutMin_flow=6e-3, VOutDes_flow=0.25) "Validate the heating case"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon( duration=86400, height=6, offset=273.15 + 16) "Measured zone temperature"; Buildings.Controls.SetPoints.OccupancySchedule occSch(occupancy=3600*{4,20}) "Occupancy schedule"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TCut(final k=273.15 + 16) "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(k=false) "Window status"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut(final k=273.15 + 17) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV1( kCoo=1, kHea=1, yHeaMax=1, yMin=0.1, AFlo=50, controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSetMax=297.15, TSupSetMin=285.15, use_TMix=false, controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, kMod=1, VOutMin_flow=6e-3, VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut1(final k=273.15 + 28) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon1( duration=86400, height=-3, offset=273.15 + 26) "Measured zone temperature"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV2( kCoo=1, kHea=1, yHeaMax=1, yMin=0.1, AFlo=50, controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSetMax=297.15, TSupSetMin=285.15, use_TMix=false, controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, kMod=1, VOutMin_flow=6e-3, VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut2( final k=273.15 + 22) "Outdoor air dry bulb temperature"; Buildings.Controls.OBC.ASHRAE.G36_PR1.AHUs.SingleZone.VAV.Controller conVAV3( kCoo=1, kHea=1, yHeaMax=1, yMin=0.1, AFlo=50, controllerTypeCoo=Buildings.Controls.OBC.CDL.Types.SimpleController.P, controllerTypeHea=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSetMax=297.15, TSupSetMin=285.15, use_TMix=false, controllerTypeMod=Buildings.Controls.OBC.CDL.Types.SimpleController.P, kMod=1, VOutMin_flow=6e-3, VOutDes_flow=0.25) "Validate the cooling case"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut3( final k=273.15 + 16) "Outdoor air dry bulb temperature"; protected Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup( height=2, duration=86400, offset=273.15 + 22.5) "Terminal unit discharge air temperature"; Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup1( height=-3, duration=86400, offset=273.15 + 24) "Terminal unit discharge air temperature"; equation connect(TZon.y, conVAV.TZon); connect(occSch.occupied, conVAV.uOcc); connect(occSch.tNexOcc, conVAV.tNexOcc); connect(TCut.y, conVAV.TCut); connect(win.y, conVAV.uWin); connect(nOcc.y, conVAV.nOcc); connect(TOut.y, conVAV.TOut); connect(TSup.y, conVAV.TSup); connect(win.y, conVAV1.uWin); connect(nOcc.y, conVAV1.nOcc); 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(win.y,conVAV2. uWin); connect(TSup1.y,conVAV2. TSup); connect(occSch.occupied,conVAV2. uOcc); connect(occSch.tNexOcc,conVAV2. tNexOcc); connect(TCut.y,conVAV2. TCut); connect(nOcc.y,conVAV2. nOcc); 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(nOcc.y, conVAV3.nOcc); connect(TZon1.y, conVAV3.TZon); connect(occSch.tNexOcc, conVAV3.tNexOcc); connect(TOut3.y, conVAV3.TOut); 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"; Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse uCoo( period=2, offset=0, startTime=1, amplitude=1) "Cooling control signal"; Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse uHea( period=2, offset=0, amplitude=1, startTime=2) "Heating control signal"; equation connect(uHea.y, zonSta.uHea); connect(uCoo.y, zonSta.uCoo); end ZoneState;