Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Validation
Collection of validation models
Information
This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.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 |
---|---|
Controller | Validation of the top-level controller |
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Validation.Controller
Validation of the top-level controller
Information
This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller.
Modelica definition
model Controller "Validation of the top-level controller"
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.Controller conVAV(
final eneStd=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1_2016,
final venStd=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1_2016,
final ecoHigLimCon=Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb,
final ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A,
final freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat,
final have_winSen=true,
final have_CO2Sen=false,
final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper,
final VAreBreZon_flow=0.015,
final VPopBreZon_flow=0.0075,
final kHea=1,
final have_occSen=true,
final TSup_max=297.15,
final TSup_min=285.15,
final TSupDew_max=297.15,
final maxHeaSpe=0.7,
final maxCooSpe=1,
final minSpe=0.1,
final kMod=1,
final VOutMin_flow=6e-3,
final VOutDes_flow=0.25,
final relDam_min=0.1,
final relDam_max=0.6) "Validate the cooling case";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TZon(
final duration=86400,
final height=6,
final offset=273.15 + 16)
"Measured zone temperature";
Buildings.Controls.SetPoints.OccupancySchedule occSch(
final occupancy=3600*{4,20})
"Occupancy schedule";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TOut(
final k=273.15 +17)
"Outdoor air dry bulb temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooDowTim(
final k=1800)
"Cooling down time";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant warUpTim(
final k=1800)
"Warm-up time";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine cooSetAdj(
final freqHz=1/28800)
"Cooling setpoint adjustment";
Buildings.Controls.OBC.CDL.Continuous.Sources.Sine heaSetAdj(
final freqHz=1/28800,
final amplitude=0.5)
"Heating setpoint adjustment";
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta(
final period=14400,
final shift=1200)
"Generate signal indicating window status";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zerAdj(
final k=0)
"Zero adjustment";
Buildings.Controls.OBC.CDL.Continuous.Switch swi1
"Switch to zero adjustment when window is open";
Buildings.Controls.OBC.CDL.Continuous.Switch swi2
"Switch to zero adjustment when window is open";
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse occSta(
final period=28800,
final width=0.95)
"Generate signal indicating occupancy status";
Buildings.Controls.OBC.CDL.Integers.Sources.Constant demLimLev(
final k=0)
"Demand limit level";
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse freRes(
final width=0.95,
final period=86400)
"Freeze protection reset";
Buildings.Controls.OBC.CDL.Logical.Not not1
"Logical not";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp mixTem(
final height=-5,
final offset=273.15 + 8,
final duration=3600)
"Mixed air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp outDam(
final height=0.6,
final offset=0.2,
final duration=86400)
"Outdoor damper position";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp cooCoi(
final height=-0.3,
final offset=0.96,
final duration=86400,
startTime=1000) "Cooling coil position";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant heaCoi(
final k=0)
"Heating coil position";
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TSup(
final height=2,
final duration=86400,
final offset=273.15 + 22.5)
"Terminal unit discharge air temperature";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSetOcc(
final k=293.15)
"Occupied heating setpoint";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TCooSetOcc(
final k=297.15)
"Occupied cooling setpoint";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant THeaSetUno(
final k=285.15)
"Unoccupied heating setpoint";
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TCooSetUno(
final k=303.15)
"Unoccupied cooling setpoint";
equation
connect(TZon.y, conVAV.TZon);
connect(TOut.y, conVAV.TOut);
connect(TSup.y, conVAV.TAirSup);
connect(cooDowTim.y, conVAV.cooDowTim);
connect(warUpTim.y, conVAV.warUpTim);
connect(occSch.tNexOcc, conVAV.tNexOcc);
connect(occSch.occupied, conVAV.u1Occ);
connect(winSta.y,swi2. u2);
connect(winSta.y,swi1. u2);
connect(zerAdj.y,swi2. u1);
connect(zerAdj.y,swi1. u1);
connect(cooSetAdj.y,swi2. u3);
connect(heaSetAdj.y,swi1. u3);
connect(swi2.y, conVAV.cooSetAdj);
connect(swi1.y, conVAV.heaSetAdj);
connect(occSta.y, conVAV.u1OccSen);
connect(demLimLev.y, conVAV.uCooDemLimLev);
connect(demLimLev.y, conVAV.uHeaDemLimLev);
connect(winSta.y, conVAV.u1Win);
connect(freRes.y, not1.u);
connect(not1.y, conVAV.u1SofSwiRes);
connect(mixTem.y, conVAV.TAirMix);
connect(outDam.y, conVAV.uOutDam);
connect(cooCoi.y, conVAV.uCooCoi_actual);
connect(heaCoi.y, conVAV.uHeaCoi_actual);
connect(THeaSetOcc.y,conVAV.TOccHeaSet);
connect(TCooSetOcc.y,conVAV.TOccCooSet);
connect(THeaSetUno.y,conVAV.TUnoHeaSet);
connect(TCooSetUno.y,conVAV.TUnoCooSet);
connect(conVAV.ySupFan, conVAV.uSupFan_actual);
end Controller;