Buildings.Templates.ZoneEquipment.Components.Interfaces

Interface classes

Information

This package contains interface classes.

Extends from Modelica.Icons.InterfacesPackage (Icon for packages containing interfaces).

Package Content

Name Description
Buildings.Templates.ZoneEquipment.Components.Interfaces.ControllerG36VAVBox ControllerG36VAVBox Guideline 36 controller for VAV terminal unit
Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController PartialController Interface class for terminal unit controller
Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox PartialControllerVAVBox Interface class for VAV terminal unit controller

Buildings.Templates.ZoneEquipment.Components.Interfaces.ControllerG36VAVBox Buildings.Templates.ZoneEquipment.Components.Interfaces.ControllerG36VAVBox

Guideline 36 controller for VAV terminal unit

Buildings.Templates.ZoneEquipment.Components.Interfaces.ControllerG36VAVBox

Information

Description

This is an implementation of the control sequence specified in ASHRAE (2021) for VAV terminal units with reheat. It contains the following components.

References

Extends from Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox (Interface class for VAV terminal unit controller).

Parameters

TypeNameDefaultDescription
VAVBoxControllerdatredeclare Buildings.Template...Design and operating parameters
Configuration
Controllertyp Type of controller
Booleanhave_CO2SenfalseSet to true if the zone has CO2 sensor
Booleanhave_occSenfalseSet to true if the zone has occupancy sensor
Booleanhave_winSenfalseSet to true if the zone has window status sensor

Connectors

TypeNameDescription
BusbusTerminal unit control bus

Modelica definition

block ControllerG36VAVBox "Guideline 36 controller for VAV terminal unit" extends Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox; parameter Boolean have_occSen=false "Set to true if the zone has occupancy sensor"; parameter Boolean have_winSen=false "Set to true if the zone has window status sensor"; final parameter Boolean have_hotWatCoi= coiHea.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating "Set to true if the system has hot water coil"; final parameter Modelica.Units.SI.VolumeFlowRate VAirCooSet_flow_max= dat.VAirCooSet_flow_max "Zone maximum cooling airflow setpoint"; final parameter Modelica.Units.SI.VolumeFlowRate VAirSet_flow_min= dat.VAirSet_flow_min "Zone minimum airflow setpoint"; final parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_max= dat.VAirHeaSet_flow_max "Zone maximum heating airflow setpoint"; final parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_min= dat.VAirHeaSet_flow_min "Zone minimum heating airflow setpoint"; final parameter Modelica.Units.SI.TemperatureDifference dTAirDisHea_max( displayUnit="K")= dat.dTAirDisHea_max "Zone maximum discharge air temperature above heating setpoint"; final parameter Modelica.Units.SI.VolumeFlowRate VOutMinOcc_flow( final min=0, start=1)=dat.VOutMinOcc_flow "Zone minimum outdoor airflow for occupants"; final parameter Modelica.Units.SI.VolumeFlowRate VOutMinAre_flow( final min=0, start=1)=dat.VOutMinAre_flow "Zone minimum outdoor airflow for building area"; final parameter Real VOutAre_flow( final unit = "m3/s")= dat.VOutAre_flow "Outdoor air flow rate per unit area"; final parameter Real VOutOcc_flow( final unit = "m3/s")= dat.VOutOcc_flow "Outdoor air flow rate per occupant"; final parameter Real effAirDisHea= dat.effAirDisHea "Zone air distribution effectiveness during heating"; final parameter Real effAirDisCoo= dat.effAirDisCoo "Zone air distribution effectiveness during cooling"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller ctlReh( final venStd=stdVen, final have_winSen=have_winSen, final have_occSen=have_occSen, final have_CO2Sen=have_CO2Sen, final have_hotWatCoi=have_hotWatCoi, final VOccMin_flow=VOutMinOcc_flow, final VAreMin_flow=VOutMinAre_flow, final VAreBreZon_flow=VOutAre_flow, final VPopBreZon_flow=VOutOcc_flow, final VMin_flow=VAirSet_flow_min, final VCooMax_flow=VAirCooSet_flow_max, final VHeaMin_flow=VAirHeaSet_flow_min, final VHeaMax_flow=VAirHeaSet_flow_max, final dTDisZonSetMax=dTAirDisHea_max, final zonDisEff_cool=effAirDisCoo, final zonDisEff_heat=effAirDisHea) if typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat "Terminal unit with reheat controller"; Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller ctlCoo( final venStd=stdVen, final have_winSen=have_winSen, final have_occSen=have_occSen, final have_CO2Sen=have_CO2Sen, final VOccMin_flow=VOutMinOcc_flow, final VAreMin_flow=VOutMinAre_flow, final VAreBreZon_flow=VOutAre_flow, final VPopBreZon_flow=VOutOcc_flow, final VMin_flow=VAirSet_flow_min, final VCooMax_flow=VAirCooSet_flow_max, final zonDisEff_cool=effAirDisCoo, final zonDisEff_heat=effAirDisHea) if typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly "Terminal unit cooling only controller"; Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints TZonSet( final have_occSen=have_occSen, final have_winSen=have_winSen) "Compute zone temperature setpoints"; Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneStatus zonSta( final have_winSen=have_winSen) "Evaluate zone temperature status"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooDowWarUpTim(k=3600) "RFE: Optimal start (using global OA temperature not associated with any AHU) not implemented"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant setAdj(k=0) "RFE: Setpoint adjustment by the occupant is not implemented in the template"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooSetAdj(k=0) "RFE: Setpoint adjustment by the occupant is not implemented in the template"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant heaSetAdj(k=0) "RFE: Setpoint adjustment by the occupant is not implemented in the template"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant uCooDemLimLev(k=0) "RFE: Setpoint adjustment by demand limit is not implemented in the template"; Buildings.Controls.OBC.CDL.Integers.Sources.Constant uHeaDemLimLev(k=0) "RFE: Setpoint adjustment by demand limit is not implemented in the template"; equation /* Control point connection - start */ // Inputs from bus connect(bus.TZon, ctlReh.TZon); connect(bus.y1Win, ctlReh.u1Win); connect(bus.y1Occ, ctlReh.u1Occ); connect(bus.ppmCO2, ctlReh.ppmCO2); connect(bus.ppmCO2Set, ctlReh.ppmCO2Set); connect(bus.yOpeMod, ctlReh.uOpeMod); connect(bus.TAirDis, ctlReh.TDis); connect(bus.VAirDis_flow, ctlReh.VDis_flow); connect(bus.TAirSup, ctlReh.TSup); connect(bus.TAirSupSet, ctlReh.TSupSet); connect(bus.y1FanSup_actual, ctlReh.u1Fan); connect(bus.y1PlaHeaWat, ctlReh.u1HotPla); connect(bus.yOveFloSet, ctlReh.oveFloSet); connect(bus.yOveDamPos, ctlReh.oveDamPos); connect(bus.y1OveHeaOff, ctlReh.uHeaOff); connect(bus.TZon, ctlCoo.TZon); connect(bus.y1Win, ctlCoo.u1Win); connect(bus.y1Occ, ctlCoo.u1Occ); connect(bus.ppmCO2, ctlCoo.ppmCO2); connect(bus.ppmCO2Set, ctlCoo.ppmCO2Set); connect(bus.yOpeMod, ctlCoo.uOpeMod); connect(bus.TAirDis, ctlCoo.TDis); connect(bus.VAirDis_flow, ctlCoo.VDis_flow); connect(bus.TAirSup, ctlCoo.TSup); connect(bus.y1FanSup_actual, ctlCoo.u1Fan); connect(bus.yOveFloSet, ctlCoo.oveFloSet); connect(bus.yOveDamPos, ctlCoo.oveDamPos); connect(bus.y1Occ, TZonSet.u1Occ); connect(bus.y1Win, TZonSet.u1Win); connect(bus.y1Win, zonSta.u1Win); connect(bus.TZon, zonSta.TZon); connect(bus.TZonCooOccSet, zonSta.TOccCooSet); connect(bus.TZonCooUnoSet, zonSta.TUnoCooSet); connect(bus.TZonHeaOccSet, zonSta.TOccHeaSet); connect(bus.TZonHeaUnoSet, zonSta.TUnoHeaSet); connect(bus.yOpeMod, TZonSet.uOpeMod); connect(bus.dTSetAdj, TZonSet.setAdj); connect(bus.dTHeaSetAdj, TZonSet.heaSetAdj); connect(bus.uCooDemLimLev, TZonSet.uCooDemLimLev); connect(bus.uHeaDemLimLev, TZonSet.uHeaDemLimLev); connect(bus.TZonCooOccSet, TZonSet.TOccCooSet); connect(bus.TZonCooUnoSet, TZonSet.TUnoCooSet); connect(bus.TZonHeaOccSet, TZonSet.TOccHeaSet); connect(bus.TZonHeaUnoSet, TZonSet.TUnoHeaSet); // Outputs to bus connect(ctlReh.yDam, bus.damVAV.y); connect(ctlReh.yVal, bus.coiHea.y); connect(ctlReh.VAdjPopBreZon_flow, bus.VAdjPopBreZon_flow); connect(ctlReh.VAdjAreBreZon_flow, bus.VAdjAreBreZon_flow); connect(ctlReh.VMinOA_flow, bus.VMinOA_flow); connect(ctlReh.VZonAbsMin_flow, bus.VZonAbsMin_flow); connect(ctlReh.VZonDesMin_flow, bus.VZonDesMin_flow); connect(ctlReh.yCO2, bus.yCO2); connect(ctlReh.yZonTemResReq, bus.yReqZonTemRes); connect(ctlReh.yZonPreResReq, bus.yReqZonPreRes); connect(ctlCoo.yDam, bus.damVAV.y); connect(ctlCoo.VAdjPopBreZon_flow, bus.VAdjPopBreZon_flow); connect(ctlCoo.VAdjAreBreZon_flow, bus.VAdjAreBreZon_flow); connect(ctlCoo.VMinOA_flow, bus.VMinOA_flow); connect(ctlCoo.VZonAbsMin_flow, bus.VZonAbsMin_flow); connect(ctlCoo.VZonDesMin_flow, bus.VZonDesMin_flow); connect(ctlCoo.yCO2, bus.yCO2); connect(ctlCoo.yZonTemResReq, bus.yZonTemResReq); connect(ctlCoo.yZonPreResReq, bus.yZonPreResReq); connect(zonSta.yCooTim, bus.yCooTim); connect(zonSta.yWarTim, bus.yWarTim); connect(zonSta.yOccHeaHig, bus.yOccHeaHig); connect(zonSta.yHigOccCoo, bus.yHigOccCoo); connect(zonSta.yUnoHeaHig, bus.yUnoHeaHig); connect(zonSta.yEndSetBac, bus.yEndSetBac); connect(zonSta.yHigUnoCoo, bus.yHigUnoCoo); connect(zonSta.yEndSetUp, bus.yEndSetUp); /* Control point connection - end */ connect(TZonSet.TCooSet, ctlReh.TCooSet); connect(TZonSet.THeaSet, ctlReh.THeaSet); connect(uCooDemLimLev.y, TZonSet.uCooDemLimLev); connect(uHeaDemLimLev.y, TZonSet.uHeaDemLimLev); connect(cooSetAdj.y, TZonSet.cooSetAdj); connect(heaSetAdj.y, TZonSet.heaSetAdj); connect(setAdj.y, TZonSet.setAdj); connect(TZonSet.TCooSet, ctlCoo.TCooSet); connect(TZonSet.THeaSet, ctlCoo.THeaSet); connect(cooDowWarUpTim.y, zonSta.cooDowTim); connect(cooDowWarUpTim.y, zonSta.warUpTim); end ControllerG36VAVBox;

Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController

Interface class for terminal unit controller

Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController

Information

This partial class provides a standard interface for terminal unit controllers.

Parameters

TypeNameDefaultDescription
PartialControllerdatdat(final typ=typ)Design and operating parameters
Configuration
Controllertyp Type of controller

Connectors

TypeNameDescription
BusbusTerminal unit control bus

Modelica definition

partial block PartialController "Interface class for terminal unit controller" parameter Buildings.Templates.ZoneEquipment.Types.Controller typ "Type of controller"; replaceable parameter Buildings.Templates.ZoneEquipment.Components.Data.PartialController dat( final typ=typ) "Design and operating parameters"; outer parameter Buildings.Templates.Data.AllSystems datAll "Top-level (whole building) system parameters"; Buildings.Templates.ZoneEquipment.Interfaces.Bus bus "Terminal unit control bus"; end PartialController;

Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox

Interface class for VAV terminal unit controller

Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox

Information

This partial class provides a standard interface for VAV terminal unit controllers.

Extends from Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController (Interface class for terminal unit controller).

Parameters

TypeNameDefaultDescription
Configuration
Controllertyp Type of controller
Booleanhave_CO2SenfalseSet to true if the zone has CO2 sensor

Connectors

TypeNameDescription
BusbusTerminal unit control bus

Modelica definition

partial block PartialControllerVAVBox "Interface class for VAV terminal unit controller" extends Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController ( redeclare Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController dat( stdVen=stdVen)); parameter Boolean have_CO2Sen=false "Set to true if the zone has CO2 sensor"; final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen= datAll.stdVen "Ventilation standard"; outer replaceable Buildings.Templates.Components.Dampers.Modulating damVAV "VAV damper"; outer replaceable Buildings.Templates.Components.Coils.None coiHea "Heating coil"; end PartialControllerVAVBox;