Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Validation

Package of validation models for fan coil unit controls

Information

This package contains the validation model for the fan coil unit controller.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Validation.Controller Controller Validation of the top-level controller

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Validation.Controller Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Validation.Controller

Validation of the top-level controller

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Validation.Controller

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Controller.

conFCU represents an instance of the controller with heating mode operation, with the open-loop signals for measured zone temperature and measured supply air temperature increasing with time.

conFCU1 represents an instance of the controller with cooling mode operation, with the open-loop signals for measured zone temperature and measured supply air temperature decreasing with time.

conFCU2 and conFCU3 represent instances of the controller with cooling mode operation, with different parameter settings for the window and occupancy sensors.

Modelica definition

model Controller "Validation of the top-level controller" Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Controller conFCU( cooCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.WaterBased, heaCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased, have_winSen=false, kHea=1, cooConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, heaConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSet_max=297.15, TSupSet_min=285.15, heaSpe_max=0.6, heaSpe_min=0.2, cooSpe_min=0.2, have_locAdj=false) "Validate the heating case"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Controller conFCU1( cooCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.WaterBased, heaCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased, have_winSen=true, kCoo=1, kHea=1, cooConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, heaConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=false, TSupSet_max=297.15, TSupSet_min=285.15, heaSpe_max=0.6, heaSpe_min=0.2, cooSpe_min=0.2, have_locAdj=false) "Validate the cooling case for a system with a window sensor but no occupancy sensor"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Controller conFCU2( cooCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.WaterBased, heaCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased, have_winSen=false, kCoo=1, kHea=1, cooConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, heaConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSet_max=297.15, TSupSet_min=285.15, heaSpe_max=0.6, heaSpe_min=0.2, cooSpe_min=0.2, have_locAdj=false) "Validate the cooling case for a system with an occupancy sensor but no window sensor"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Controller conFCU3( cooCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.WaterBased, heaCoi=Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased, have_winSen=true, kCoo=1, kHea=1, cooConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, heaConTyp=Buildings.Controls.OBC.CDL.Types.SimpleController.P, have_occSen=true, TSupSet_max=297.15, TSupSet_min=285.15, heaSpe_max=0.6, heaSpe_min=0.2, cooSpe_min=0.2, have_locAdj=false) "Validate the cooling case for a system with both a window sensor and an occupancy sensor"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOccHeaSet( k=293.15) "Occupied heating setpoint temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TOccCooSet( k=297.15) "Occupied cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TUnoHeaSet( k=285.15) "Unoccupied heating setpoint temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant TUnoCooSet( k=303.15) "Unoccupied cooling setpoint temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TZon( duration=86400, height=6, offset=273.15 + 16, y(unit="K")) "Measured zone temperature"; Buildings.Controls.SetPoints.OccupancySchedule occSch( occupancy=3600*{4,20}) "Occupancy schedule"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant nOcc( k=2) "Number of occupants"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant win( k=true) "True window status"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TZon1( duration=86400, height=-3, offset=273.15 + 26, y(unit="K")) "Measured zone temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TSup( height=2, duration=86400, offset=273.15 + 22.5, y(unit="K")) "Terminal unit discharge air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp TSup1( height=-3, duration=86400, offset=273.15 + 24, y(unit="K")) "Terminal unit discharge air temperature"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant demLim( k=0) "Cooling and heating demand imit level"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooWarTim( k=0) "Cooldown and warm-up time"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant win1( k=false) "Negative window status"; equation connect(TZon.y,conFCU. TZon); connect(occSch.occupied,conFCU. u1Occ); connect(occSch.tNexOcc,conFCU. tNexOcc); connect(TSup.y,conFCU. TSup); connect(win.y,conFCU1. u1Win); connect(occSch.tNexOcc,conFCU1. tNexOcc); connect(occSch.occupied,conFCU1. u1Occ); connect(TZon1.y,conFCU1. TZon); connect(TSup1.y,conFCU1. TSup); connect(TSup1.y,conFCU2. TSup); connect(occSch.occupied,conFCU2. u1Occ); connect(occSch.tNexOcc,conFCU2. tNexOcc); connect(TZon1.y,conFCU2. TZon); connect(occSch.occupied,conFCU3. u1Occ); connect(TSup1.y,conFCU3. TSup); connect(TZon1.y,conFCU3. TZon); connect(occSch.tNexOcc,conFCU3. tNexOcc); connect(cooWarTim.y,conFCU. warUpTim); connect(cooWarTim.y,conFCU. cooDowTim); connect(cooWarTim.y,conFCU1. warUpTim); connect(cooWarTim.y,conFCU1. cooDowTim); connect(cooWarTim.y,conFCU2. warUpTim); connect(cooWarTim.y,conFCU2. cooDowTim); connect(cooWarTim.y,conFCU3. warUpTim); connect(cooWarTim.y,conFCU3. cooDowTim); connect(demLim.y,conFCU3. uHeaDemLimLev); connect(demLim.y,conFCU3. uCooDemLimLev); connect(demLim.y,conFCU2. uHeaDemLimLev); connect(demLim.y,conFCU2. uCooDemLimLev); connect(demLim.y,conFCU1. uHeaDemLimLev); connect(demLim.y,conFCU1. uCooDemLimLev); connect(demLim.y,conFCU. uCooDemLimLev); connect(demLim.y,conFCU. uHeaDemLimLev); connect(nOcc.y, conFCU.nOcc); connect(nOcc.y, conFCU2.nOcc); connect(TOccHeaSet.y, conFCU.TOccHeaSet); connect(TOccCooSet.y, conFCU.TOccCooSet); connect(TUnoHeaSet.y, conFCU.TUnoHeaSet); connect(TUnoCooSet.y, conFCU.TUnoCooSet); connect(TOccHeaSet.y, conFCU1.TOccHeaSet); connect(TOccCooSet.y, conFCU1.TOccCooSet); connect(TUnoHeaSet.y, conFCU1.TUnoHeaSet); connect(TUnoCooSet.y, conFCU1.TUnoCooSet); connect(TOccHeaSet.y, conFCU2.TOccHeaSet); connect(TOccCooSet.y, conFCU2.TOccCooSet); connect(TUnoHeaSet.y, conFCU2.TUnoHeaSet); connect(TUnoCooSet.y, conFCU2.TUnoCooSet); connect(TOccHeaSet.y, conFCU3.TOccHeaSet); connect(TOccCooSet.y, conFCU3.TOccCooSet); connect(TUnoHeaSet.y, conFCU3.TUnoHeaSet); connect(TUnoCooSet.y, conFCU3.TUnoCooSet); connect(conFCU1.y1Fan, conFCU1.u1Fan); connect(conFCU2.y1Fan, conFCU2.u1Fan); connect(conFCU3.y1Fan, conFCU3.u1Fan); connect(conFCU.y1Fan, conFCU.u1Fan); connect(nOcc.y, conFCU3.nOcc); connect(win1.y, conFCU3.u1Win); end Controller;