Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation

Collection of validation models

Information

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

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.AHUs.SingleZone.VAV.SetPoints.Validation.CoolingCoil CoolingCoil Validation of cooling coil model
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection FreezeProtection Validate model for implementing freeze protection
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection_Disable FreezeProtection_Disable Validate model for disabling freeze protection
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ModeAndSetPoints ModeAndSetPoints Validate block for specifying zone mode and setpoints
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.PlantRequests PlantRequests Validate model for calculating the plant requests
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefDamper ReliefDamper Validation of relief damper control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFan ReliefFan Validate model for controlling relief fan
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFanGroup ReliefFanGroup Validate model for calculating relief fans control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReturnFan ReturnFan Validation of return fan control
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_T Supply_T Validation model for outdoor minus room air temperature
Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_u Supply_u Validation model for temperature and fan speed

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.CoolingCoil Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.CoolingCoil

Validation of cooling coil model

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.CoolingCoil

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.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.AHUs.SingleZone.VAV.SetPoints.CoolingCoil cooCoi( final controllerTypeCooCoi=Buildings.Controls.OBC.CDL.Types.SimpleController.P, final kCooCoi=1) "Cooling coil controller"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TSup( final height=4, final offset=TSupSet - 2, final duration=3600*8) "Measured supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSupSetSig( final k=TSupSet) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant fanStatus( final k=true) "Fan is on"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse zonSta( final offset=2, final period=3600*2) "Zone state"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt "Real to integer conversion"; equation connect(TSup.y, cooCoi.TAirSup); connect(TSupSetSig.y, cooCoi.TSupCooSet); connect(fanStatus.y, cooCoi.u1SupFan); connect(zonSta.y, reaToInt.u); connect(reaToInt.y, cooCoi.uZonSta); end CoolingCoil;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection

Validate model for implementing freeze protection

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection for air handling unit serving single zone.

Modelica definition

model FreezeProtection "Validate model for implementing freeze protection" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection frePro(final buiPreCon=Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper, freSta=Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat) "Freeze protection control"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp outDamPos( final height=0.5, final offset=0.1, final duration=3600) "Outdoor air damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant outDamPosMin( final k=0.1) "Outdoor air damper minimum position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaCoiPos( final height=0.49, final offset=0.5, final duration=3000) "Heating coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp retDamPos( final height=0.2, final offset=0.7, final duration=3600) "Return air damper position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse freRes( final width=0.95, final period=3600) "Freeze protection reset"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supFanSpe( final height=0.2, final offset=0.5, final duration=3600) "Supply fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp cooCoiPos( final height=0.2, final offset=0.5, final duration=3600) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem( final height=-4, final offset=273.15 + 6, final duration=3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp mixTem( final height=-5, final offset=273.15 + 8, final duration=3600) "Mixed air temperature"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=0.05) "Supply fan command on"; equation connect(freRes.y, not1.u); connect(outDamPosMin.y,frePro. uOutDamPosMin); connect(outDamPos.y, frePro.uOutDam); connect(heaCoiPos.y,frePro. uHeaCoi); connect(retDamPos.y, frePro.uRetDam); connect(supTem.y, frePro.TAirSup); connect(not1.y, frePro.u1SofSwiRes); connect(supFanSpe.y, frePro.uSupFan); connect(cooCoiPos.y,frePro. uCooCoi); connect(mixTem.y, frePro.TAirMix); connect(supFanSpe.y, greThr.u); connect(greThr.y, frePro.u1SupFan); end FreezeProtection;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection_Disable Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection_Disable

Validate model for disabling freeze protection

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.FreezeProtection_Disable

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection for air handling unit serving single zones, when disabling the freeze protection.

Modelica definition

model FreezeProtection_Disable "Validate model for disabling freeze protection" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.FreezeProtection frePro( final have_frePro=false) "Freeze protection control"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp outDamPos( final height=0.5, final offset=0.1, final duration=3600) "Outdoor air damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaCoiPos( final height=0.46, final offset=0.5, final duration=3600) "Heating coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp retDamPos( final height=0.2, final offset=0.7, final duration=3600) "Return air damper position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supFanSpe( final height=0.2, final offset=0.5, final duration=3600) "Supply fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp cooCoiPos( final height=0.2, final offset=0.5, final duration=3600) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final h=0.01) "Check if the supply fan is proven on"; equation connect(outDamPos.y, frePro.uOutDam); connect(heaCoiPos.y,frePro. uHeaCoi); connect(retDamPos.y, frePro.uRetDam); connect(supFanSpe.y, frePro.uSupFan); connect(cooCoiPos.y,frePro. uCooCoi); connect(supFanSpe.y, greThr.u); connect(greThr.y, frePro.u1SupFan); end FreezeProtection_Disable;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ModeAndSetPoints Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ModeAndSetPoints

Validate block for specifying zone mode and setpoints

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ModeAndSetPoints

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints.

Modelica definition

model ModeAndSetPoints "Validate block for specifying zone mode and setpoints" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ModeAndSetPoints modSetPoi( final have_winSen=false, final have_occSen=true, have_locAdj=true, sepAdj=true, ignDemLim=false) "Operating mode and temperature setpoints"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin cooSetAdj( final freqHz=1/28800) "Cooling setpoint adjustment"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin heaSetAdj( final freqHz=1/28800, final amplitude=0.5) "Heating setpoint adjustment"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant cooDemLimLev( final k=0) "Cooling demand limit level"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant heaDemLimLev( final k=0) "Heating demand limit level"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse winSta( final period=14400, final shift=1200) "Generate signal indicating window status"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse occSta( final period=14400, final width=0.95) "Generate signal indicating occupancy status"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zerAdj( final k=0) "Zero adjustment"; Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch to zero adjustment when window is open"; Buildings.Controls.OBC.CDL.Reals.Switch swi2 "Switch to zero adjustment when window is open"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooDowTim( final k=1800) "Cooling down time"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant warUpTim( final k=1800) "Warm-up time"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( final offset=0, final height=6.2831852, final duration=24*3600) "Block that generates ramp signal"; Buildings.Controls.OBC.CDL.Reals.Sin sin2 "Block that outputs the sine of the input"; Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=12.5) "Gain factor"; Buildings.Controls.OBC.CDL.Reals.AddParameter zonTem( final p=273.15 + 22.5) "Current zone temperature"; Buildings.Controls.SetPoints.OccupancySchedule occSch "Occupancy schedule"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaSetOcc( final k=293.15) "Occupied heating setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TCooSetOcc( final k=297.15) "Occupied cooling setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaSetUno( final k=285.15) "Unoccupied heating setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TCooSetUno( final k=303.15) "Unoccupied cooling setpoint"; Buildings.Controls.OBC.CDL.Logical.Not winOpe "Window is open"; equation connect(zerAdj.y, swi2.u1); connect(zerAdj.y, swi1.u1); connect(cooSetAdj.y, swi2.u3); connect(heaSetAdj.y, swi1.u3); connect(cooDowTim.y, modSetPoi.cooDowTim); connect(warUpTim.y, modSetPoi.warUpTim); connect(ramp2.y, sin2.u); connect(sin2.y, gai.u); connect(gai.y, zonTem.u); connect(zonTem.y, modSetPoi.TZon); connect(occSch.tNexOcc, modSetPoi.tNexOcc); connect(occSch.occupied, modSetPoi.u1Occ); connect(swi2.y, modSetPoi.cooSetAdj); connect(swi1.y, modSetPoi.heaSetAdj); connect(occSta.y, modSetPoi.u1OccSen); connect(cooDemLimLev.y, modSetPoi.uCooDemLimLev); connect(heaDemLimLev.y, modSetPoi.uHeaDemLimLev); connect(THeaSetOcc.y,modSetPoi.TOccHeaSet); connect(TCooSetOcc.y,modSetPoi.TOccCooSet); connect(TCooSetUno.y,modSetPoi.TUnoCooSet); connect(THeaSetUno.y,modSetPoi.TUnoHeaSet); connect(winSta.y, winOpe.u); connect(winOpe.y, swi2.u2); connect(winOpe.y, swi1.u2); end ModeAndSetPoints;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.PlantRequests Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.PlantRequests

Validate model for calculating the plant requests

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.PlantRequests

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests for air handling unit serving single zone.

Modelica definition

model PlantRequests "Validate model for calculating the plant requests" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests plaReq "Calculate plant request"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.PlantRequests plaReq1( heaCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.None) "Calculate plant request"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem( final height=8, final offset=273.15 + 15, final duration=3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTemSet( final height=6, final offset=273.15 + 14.5, final duration=3600) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp cooCoi( final height=-0.3, final offset=0.96, final duration=3600, startTime=1000) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaCoi( final height=-0.3, final offset=0.96, final duration=3600, startTime=1000) "Heating coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem1( final height=8, final offset=273.15 + 12, final duration=3600) "Cooling supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTemSet1( final height=15, final offset=273.15 + 20, final duration=3600) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooCoi1( final k=0) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem2( final height=7, final offset=273.15 + 13, final duration=3600) "Supply air temperature"; equation connect(supTem.y, plaReq1.TAirSup); connect(cooCoi.y, plaReq1.uCooCoi_actual); connect(supTem1.y, plaReq.TAirSup); connect(cooCoi1.y, plaReq.uCooCoi_actual); connect(heaCoi.y, plaReq.uHeaCoi_actual); connect(supTemSet1.y, plaReq.TSupCoo); connect(supTemSet.y, plaReq1.TSupCoo); connect(supTem2.y, plaReq.TSupHeaEco); end PlantRequests;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefDamper Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefDamper

Validation of relief damper control

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefDamper

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefDamper.

Modelica definition

model ReliefDamper "Validation of relief damper control" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefDamper relDam(final relDam_min=0.1, final relDam_max=0.6) "Relief damper controller"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp outDamMin( final height=0.1, final offset=0.1, final duration=3600) "Outdoor damper minimum position"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse fanStatus(final width=0.8, final period=3600) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp outDam( final height=0.6, final offset=0.2, final duration=3600) "Outdoor damper position"; equation connect(fanStatus.y, relDam.u1SupFan); connect(outDam.y, relDam.uOutDam); connect(outDamMin.y, relDam.uOutDam_min); end ReliefDamper;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFan Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFan

Validate model for controlling relief fan

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFan

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan for controlling relief fan that is part of AHU.

Modelica definition

model ReliefFan "Validate model for controlling relief fan" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan relFanCon( final k=0.5) "Open relief damper"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan relFanCon1 "Turning on relief fan"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFan relFanCon2 "Turning off relief fan"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan(final width=0.8, final period=3600) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpBui( final height=40, final offset=0, final duration=1800) "Building static presure"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpBui1( final height=-15, final offset=20, final duration=1800, startTime=1800) "Building static presure"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant supFan1( final k=true) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpBui2( final height=3, final offset=11, final duration=1800) "Building static presure"; equation connect(dpBui.y, relFanCon1.dpBui); connect(dpBui1.y, relFanCon2.dpBui); connect(supFan.y, relFanCon.u1SupFan); connect(supFan1.y, relFanCon1.u1SupFan); connect(supFan1.y, relFanCon2.u1SupFan); connect(dpBui2.y, relFanCon.dpBui); end ReliefFan;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFanGroup Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFanGroup

Validate model for calculating relief fans control

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReliefFanGroup

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup for relief fans for systems with multiple zones.

Modelica definition

model ReliefFanGroup "Validate model for calculating relief fans control" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup relFanCon(final k=0.5) "Relief damper control, with staging up fans"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup relFanCon1 "Relief damper control, with staging up fans and the fan alarm"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReliefFanGroup relFanCon2 "Relief damper control, with the staging up and down fans"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan1( final width=1, final period=4000) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpBui( final height=40, final offset=0, final duration=1800) "Building static presure"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse supFan2( final width=1, final period=4000, shift=600) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr[4]( final t=fill(0.01, 4)) "Check if the relief fan is proven on"; Buildings.Controls.OBC.CDL.Logical.Pre pre[4] "Return relief fan status"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr1[4]( final t=fill(0.01, 4)) "Check if the relief fan is proven on"; Buildings.Controls.OBC.CDL.Logical.Pre pre1[4] "Return relief fan status"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt[4]( final k=fill(0, 4)) "Constant zero"; Buildings.Controls.OBC.CDL.Integers.Sources.Pulse intPul( final amplitude=2, final period=3600, final offset=0) "Fan 1 alarm level"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol[4]( final samplePeriod=fill(20, 4)) "Zero order hold"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol1[4]( final samplePeriod=fill(20, 4)) "Zero order hold"; Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr2[4]( final t=fill(0.01, 4)) "Check if the relief fan is proven on"; Buildings.Controls.OBC.CDL.Logical.Pre pre2[4] "Return relief fan status"; Buildings.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol2[4]( final samplePeriod=fill(20, 4)) "Zero order hold"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp dpBui1( final height=-15, final offset=20, final duration=1800, startTime=1800) "Building static presure"; equation connect(dpBui.y, relFanCon.dpBui); connect(dpBui.y, relFanCon1.dpBui); connect(greThr.y, pre.u); connect(supFan1.y, relFanCon.u1SupFan[1]); connect(supFan2.y, relFanCon.u1SupFan[2]); connect(supFan1.y, relFanCon1.u1SupFan[1]); connect(supFan2.y, relFanCon1.u1SupFan[2]); connect(pre.y, relFanCon.u1RelFan); connect(greThr1.y, pre1.u); connect(pre1.y, relFanCon1.u1RelFan); connect(conInt.y, relFanCon.uRelFanAla); connect(conInt[1].y, relFanCon1.uRelFanAla[2]); connect(conInt[2].y, relFanCon1.uRelFanAla[3]); connect(conInt[3].y, relFanCon1.uRelFanAla[4]); connect(intPul.y, relFanCon1.uRelFanAla[1]); connect(relFanCon.yRelFan, zerOrdHol.u); connect(zerOrdHol.y, greThr.u); connect(relFanCon1.yRelFan, zerOrdHol1.u); connect(zerOrdHol1.y, greThr1.u); connect(greThr2.y,pre2. u); connect(pre2.y,relFanCon2.u1RelFan); connect(relFanCon2.yRelFan, zerOrdHol2.u); connect(zerOrdHol2.y,greThr2. u); connect(dpBui1.y, relFanCon2.dpBui); connect(supFan1.y, relFanCon2.u1SupFan[1]); connect(supFan2.y, relFanCon2.u1SupFan[2]); connect(conInt.y, relFanCon2.uRelFanAla); end ReliefFanGroup;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReturnFan Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReturnFan

Validation of return fan control

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.ReturnFan

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReturnFan.

Modelica definition

model ReturnFan "Validation of return fan control" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.ReturnFan retFan "Cooling coil controller"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supFanSpe( final height=0.7, final offset=0.2, final duration=3600) "Supply fan speed"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse fanStatus( final period=3600) "Supply fan status"; Buildings.Controls.OBC.CDL.Reals.Multiply mul "Fan speed should be zero when it is disabled"; Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea "Boolean to real"; equation connect(fanStatus.y, retFan.u1SupFan); connect(fanStatus.y, booToRea.u); connect(booToRea.y, mul.u2); connect(supFanSpe.y, mul.u1); connect(mul.y, retFan.uSupFan_actual); end ReturnFan;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_T Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_T

Validation model for outdoor minus room air temperature

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_T

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply for a change in temperature difference between zone air and outdoor air. Hence, this model validates whether the adjustment of the fan speed for medium cooling load is correctly implemented.

Modelica definition

model Supply_T "Validation model for outdoor minus room air temperature" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply setPoiVAV( final TSup_max=303.15, final TSup_min=289.15, final TSupDew_max=292.15, final maxHeaSpe=0.7, final maxCooSpe=0.9, final minSpe=0.3) "Block that computes the setpoints for temperature and fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant uHea(k=0) "Heating control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant uCoo(k=0.6) "Cooling control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TOut( final duration=3600, final height=18, final offset=273.15 + 10) "Outdoor air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon( final k=273.15 + 22) "Zone temperature"; Buildings.Controls.OBC.CDL.Reals.Subtract dT "Difference zone minus outdoor temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonCooSet( final k=273.15 + 24) "Zone cooling set point"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) "AHU operation mode is occupied"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonHeaSet( final k=273.15 + 20) "Zone heating set point"; equation connect(uCoo.y, setPoiVAV.uCoo); connect(TZon.y, setPoiVAV.TZon); connect(TOut.y, setPoiVAV.TOut); connect(uHea.y, setPoiVAV.uHea); connect(dT.u1, TZon.y); connect(dT.u2, TOut.y); connect(opeMod.y, setPoiVAV.uOpeMod); connect(TZonCooSet.y, setPoiVAV.TCooSet); connect(TZonHeaSet.y, setPoiVAV.THeaSet); end Supply_T;

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_u Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_u

Validation model for temperature and fan speed

Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Validation.Supply_u

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply for different control signals. Each controller is configured identical, but the input signal for TZon differs in order to validate that the fan speed is increased correctly.

Modelica definition

model Supply_u "Validation model for temperature and fan speed" Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply setPoiVAV( final maxHeaSpe=0.7, final maxCooSpe=1, final minSpe=0.3, final TSup_max=303.15, final TSup_min=289.15, final TSupDew_max=297.15) "Block that computes the setpoints for temperature and fan speed"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply setPoiVAV1( final maxHeaSpe=0.7, final maxCooSpe=1, final minSpe=0.3, final TSup_max=303.15, final TSup_min=289.15, final TSupDew_max=297.15) "Block that computes the setpoints for temperature and fan speed"; Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.Supply setPoiVAV2( final maxHeaSpe=0.7, final maxCooSpe=1, final minSpe=0.3, final TSup_max=303.15, final TSup_min=289.15, final TSupDew_max=297.15) "Block that computes the setpoints for temperature and fan speed"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon( final k=273.15 + 28) "Zone air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOut( final k=273.15 + 22) "Outdoor temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uHea( final duration=900, final height=-1, final offset=1) "Heating control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp uCoo(final duration=900, final startTime=2700) "Cooling control signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZon1( final k=273.15 + 23) "Zone air temperature"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant opeMod( final k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) "AHU operation mode is occupied"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonHeaSet(final k=273.15 + 22) "Zone heating set point"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TZonCooSet( final k=273.15 + 24) "Zone cooling set point"; equation connect(TZon.y, setPoiVAV.TZon); connect(TOut.y, setPoiVAV.TOut); connect(uHea.y, setPoiVAV.uHea); connect(uCoo.y, setPoiVAV.uCoo); connect(TOut.y, setPoiVAV1.TOut); connect(uHea.y, setPoiVAV1.uHea); connect(uCoo.y, setPoiVAV1.uCoo); connect(TOut.y, setPoiVAV2.TOut); connect(uHea.y, setPoiVAV2.uHea); connect(uCoo.y, setPoiVAV2.uCoo); connect(TOut.y, setPoiVAV1.TZon); connect(TZon1.y, setPoiVAV2.TZon); connect(opeMod.y, setPoiVAV.uOpeMod); connect(opeMod.y, setPoiVAV1.uOpeMod); connect(opeMod.y, setPoiVAV2.uOpeMod); connect(TZonCooSet.y, setPoiVAV.TCooSet); connect(TZonCooSet.y, setPoiVAV1.TCooSet); connect(TZonCooSet.y, setPoiVAV2.TCooSet); connect(TZonHeaSet.y, setPoiVAV.THeaSet); connect(TZonHeaSet.y, setPoiVAV1.THeaSet); connect(TZonHeaSet.y, setPoiVAV2.THeaSet); end Supply_u;