Buildings.Templates.ZoneEquipment.Interfaces
Interface classes
Information
This package contains interface classes.
Extends from Modelica.Icons.InterfacesPackage (Icon for packages containing interfaces).
Package Content
Name | Description |
---|---|
Bus | Control bus for zone equipment |
PartialAirTerminal | Interface class for air terminal unit |
VAVBox | Interface class for VAV terminal unit |
Buildings.Templates.ZoneEquipment.Interfaces.Bus
Control bus for zone equipment
Information
This expandable connector provides a standard interface for all control signals required by a terminal unit controller.
Extends from Modelica.Icons.SignalBus (Icon for signal bus).
Contents
Type | Name | Description |
---|---|---|
Bus | damVAV | VAV damper points |
Bus | coiHea | Heating coil points |
Modelica definition
expandable connector Bus "Control bus for zone equipment"
extends Modelica.Icons.SignalBus;
Buildings.Templates.Components.Interfaces.Bus damVAV
"VAV damper points";
Buildings.Templates.Components.Interfaces.Bus coiHea
"Heating coil points";
end Bus;
Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal
Interface class for air terminal unit
Information
This partial class provides a standard interface for air terminal unit templates.
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package MediumAir | Buildings.Media.Air | Air medium | |
replaceable package MediumHeaWat | Buildings.Media.Water | HHW medium | |
PartialAirTerminal | cfg | cfg(final typ=typ, final hav... | Configuration parameters |
PartialAirTerminal | dat | redeclare parameter Building... | Design and operating parameters |
Configuration | |||
Configuration | typ | Type of system | |
Boolean | have_souChiWat | Set to true if system uses CHW | |
Boolean | have_souHeaWat | Set to true if system uses HHW | |
Nominal condition | |||
MassFlowRate | mAirPri_flow_nominal | Primary air mass flow rate [kg/s] | |
MassFlowRate | mChiWat_flow_nominal | Total CHW mass flow rate [kg/s] | |
MassFlowRate | mHeaWat_flow_nominal | Total HHW mass flow rate [kg/s] | |
HeatFlowRate | QChiWat_flow_nominal | Total CHW heat flow rate [W] | |
HeatFlowRate | QHeaWat_flow_nominal | Total HHW heat flow rate [W] | |
Dynamics | |||
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Assumptions | |||
Boolean | allowFlowReversalLiq | true | = true to allow flow reversal, false restricts to design direction - CHW and HW side |
Advanced | |||
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at ports of subcomponents is computed |
Connectors
Type | Name | Description |
---|---|---|
replaceable package MediumAir | Air medium | |
replaceable package MediumHeaWat | HHW medium | |
FluidPort_a | port_Sup | Supply air from AHU |
FluidPort_a | port_SupCol | Dual duct cold deck air supply from AHU |
FluidPort_a | port_SupHot | Dual duct hot deck air supply from AHU |
FluidPort_b | port_Dis | Discharge air |
FluidPort_a | port_Ret | Return air |
FluidPort_a | port_aHeaWat | HHW supply port |
FluidPort_b | port_bHeaWat | HHW return port |
Bus | bus | Terminal unit control bus |
Modelica definition
partial model PartialAirTerminal
"Interface class for air terminal unit"
replaceable package MediumAir=Buildings.Media.Air
constrainedby Modelica.Media.Interfaces.PartialMedium
"Air medium";
replaceable package MediumHeaWat=Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
"HHW medium";
parameter Buildings.Templates.ZoneEquipment.Types.Configuration typ
"Type of system";
replaceable parameter Buildings.Templates.ZoneEquipment.Configuration.PartialAirTerminal
cfg(
final typ=typ,
final have_souChiWat=have_souChiWat,
final have_souHeaWat=have_souHeaWat)
"Configuration parameters";
final parameter String id=dat.id
"System tag";
parameter Boolean have_souChiWat
"Set to true if system uses CHW";
parameter Boolean have_souHeaWat
"Set to true if system uses HHW";
replaceable parameter Buildings.Templates.ZoneEquipment.Data.PartialAirTerminal
dat
"Design and operating parameters";
// Design parameters
final parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=
dat.mAir_flow_nominal
"Discharge air mass flow rate";
parameter Modelica.Units.SI.MassFlowRate mAirPri_flow_nominal
"Primary air mass flow rate";
parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal
"Total CHW mass flow rate";
parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal
"Total HHW mass flow rate";
parameter Modelica.Units.SI.HeatFlowRate QChiWat_flow_nominal
"Total CHW heat flow rate";
parameter Modelica.Units.SI.HeatFlowRate QHeaWat_flow_nominal
"Total HHW heat flow rate";
parameter Modelica.Fluid.Types.Dynamics energyDynamics=
Modelica.Fluid.Types.Dynamics.DynamicFreeInitial
"Type of energy balance: dynamic (3 initialization options) or steady state";
final parameter Boolean allowFlowReversalAir=true
"= true to allow flow reversal, false restricts to design direction - Air side";
parameter Boolean allowFlowReversalLiq=true
"= true to allow flow reversal, false restricts to design direction - CHW and HW side";
parameter Boolean show_T = false
"= true, if actual temperature at ports of subcomponents is computed";
Modelica.Fluid.Interfaces.FluidPort_a port_Sup(
redeclare final package Medium = MediumAir,
m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0),
h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default))
if typ <> Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct
"Supply air from AHU";
Modelica.Fluid.Interfaces.FluidPort_a port_SupCol(
redeclare final package Medium = MediumAir,
m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0),
h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default))
if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct
"Dual duct cold deck air supply from AHU";
Modelica.Fluid.Interfaces.FluidPort_a port_SupHot(
redeclare final package Medium = MediumAir,
m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0),
h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default))
if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct
"Dual duct hot deck air supply from AHU";
Modelica.Fluid.Interfaces.FluidPort_b port_Dis(
redeclare final package Medium =MediumAir,
m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0),
h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default))
"Discharge air";
Modelica.Fluid.Interfaces.FluidPort_a port_Ret(
redeclare final package Medium =MediumAir,
m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0),
h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default))
if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.FanPowered
or typ == Buildings.Templates.ZoneEquipment.Types.Configuration.Induction
"Return air";
Modelica.Fluid.Interfaces.FluidPort_a port_aHeaWat(
redeclare final package Medium = MediumHeaWat,
m_flow(min=if allowFlowReversalLiq then -Modelica.Constants.inf else 0),
h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default))
if have_souHeaWat
"HHW supply port";
Modelica.Fluid.Interfaces.FluidPort_b port_bHeaWat(
redeclare final package Medium = MediumHeaWat,
m_flow(max=if allowFlowReversalLiq then +Modelica.Constants.inf else 0),
h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default))
if have_souHeaWat
"HHW return port";
Buildings.Templates.ZoneEquipment.Interfaces.Bus bus
"Terminal unit control bus";
end PartialAirTerminal;
Buildings.Templates.ZoneEquipment.Interfaces.VAVBox
Interface class for VAV terminal unit
Information
This partial class provides a standard interface for VAV terminal unit templates.
Extends from Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal (Interface class for air terminal unit).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package MediumAir | Air | Air medium | |
replaceable package MediumHeaWat | Water | HHW medium | |
Configuration | |||
Configuration | typ | Type of system | |
Boolean | have_souChiWat | false | Set to true if system uses CHW |
Boolean | have_souHeaWat | coiHea.have_sou | Set to true if system uses HHW |
WaterBasedHeating | coiHea | coiHea(redeclare final packa... | Heating coil |
Damper | damVAV | damVAV(redeclare final packa... | VAV damper |
Nominal condition | |||
MassFlowRate | mAirPri_flow_nominal | mAir_flow_nominal | Primary air mass flow rate [kg/s] |
MassFlowRate | mChiWat_flow_nominal | 0 | Total CHW mass flow rate [kg/s] |
MassFlowRate | mHeaWat_flow_nominal | if coiHea.have_sou then dat.... | Total HHW mass flow rate [kg/s] |
HeatFlowRate | QChiWat_flow_nominal | 0 | Total CHW heat flow rate [W] |
HeatFlowRate | QHeaWat_flow_nominal | if coiHea.have_sou then dat.... | Total HHW heat flow rate [W] |
Controller | |||
OpenLoop | ctl | redeclare inner Buildings.Te... | Control selections |
Dynamics | |||
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Assumptions | |||
Boolean | allowFlowReversalLiq | true | = true to allow flow reversal, false restricts to design direction - CHW and HW side |
Advanced | |||
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at ports of subcomponents is computed |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_Sup | Supply air from AHU |
FluidPort_a | port_SupCol | Dual duct cold deck air supply from AHU |
FluidPort_a | port_SupHot | Dual duct hot deck air supply from AHU |
FluidPort_b | port_Dis | Discharge air |
FluidPort_a | port_Ret | Return air |
FluidPort_a | port_aHeaWat | HHW supply port |
FluidPort_b | port_bHeaWat | HHW return port |
Bus | bus | Terminal unit control bus |
Modelica definition
model VAVBox "Interface class for VAV terminal unit"
extends Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal(
redeclare final Buildings.Templates.ZoneEquipment.Configuration.VAVBox cfg(
typCoiHea=coiHea.typ,
typValCoiHea=coiHea.typVal,
typDamVAV=damVAV.typ,
typCtl=ctl.typ,
stdVen=ctl.stdVen),
redeclare Buildings.Templates.ZoneEquipment.Data.VAVBox dat,
final have_souChiWat=false,
final have_souHeaWat=coiHea.have_sou,
final mAirPri_flow_nominal=mAir_flow_nominal,
final mChiWat_flow_nominal=0,
final mHeaWat_flow_nominal=if coiHea.have_sou then dat.coiHea.mWat_flow_nominal else 0,
final QChiWat_flow_nominal=0,
final QHeaWat_flow_nominal=if coiHea.have_sou then dat.coiHea.Q_flow_nominal else 0);
inner replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHea(
redeclare final package MediumHeaWat=MediumHeaWat,
final typVal=Buildings.Templates.Components.Types.Valve.TwoWayModulating)
constrainedby Buildings.Templates.Components.Interfaces.PartialCoil(
redeclare final package MediumAir = MediumAir,
final dat=datCoiHea,
final energyDynamics=energyDynamics,
final allowFlowReversalAir=allowFlowReversalAir,
final allowFlowReversalLiq=allowFlowReversalLiq,
final show_T=show_T)
"Heating coil";
Buildings.Templates.Components.Actuators.Damper damVAV(
redeclare final package Medium = MediumAir,
final typ=Buildings.Templates.Components.Types.Damper.Modulating,
use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState,
final allowFlowReversal=allowFlowReversalAir,
final show_T=show_T,
final dat=datDamVAV,
typBla=Buildings.Templates.Components.Types.DamperBlades.VAV)
"VAV damper";
inner replaceable Buildings.Templates.ZoneEquipment.Components.Controls.OpenLoop
ctl
constrainedby Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox
( final dat=dat.ctl)
"Control selections";
Buildings.Templates.Components.Sensors.Temperature TAirDis(
redeclare final package Medium = MediumAir,
final allowFlowReversal=allowFlowReversalAir,
final have_sen=ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or
ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly,
final m_flow_nominal=mAir_flow_nominal,
final typ=Buildings.Templates.Components.Types.SensorTemperature.Standard)
"Discharge air temperature sensor";
Buildings.Templates.Components.Sensors.VolumeFlowRate VAirDis_flow(
redeclare final package Medium = MediumAir,
final allowFlowReversal=allowFlowReversalAir,
final have_sen=ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or
ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly,
final m_flow_nominal=mAir_flow_nominal,
final typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.FlowCross)
"Airflow sensor";
protected
parameter Buildings.Templates.Components.Data.Damper datDamVAV(
final typ=damVAV.typ,
final m_flow_nominal=dat.damVAV.m_flow_nominal,
final dp_nominal=dat.damVAV.dp_nominal,
final dpFixed_nominal=if damVAV.typ == Buildings.Templates.Components.Types.Damper.None
then 0 else dat.coiHea.dpAir_nominal)
"Local record for VAV damper with lumped flow resistance";
parameter Buildings.Templates.Components.Data.Coil datCoiHea(
final typ=coiHea.typ,
final typVal=coiHea.typVal,
final have_sou=coiHea.have_sou,
final mAir_flow_nominal=dat.coiHea.mAir_flow_nominal,
final mWat_flow_nominal=dat.coiHea.mWat_flow_nominal,
final dpWat_nominal=dat.coiHea.dpWat_nominal,
final dpValve_nominal=dat.coiHea.dpValve_nominal,
final cap_nominal=dat.coiHea.cap_nominal,
final TWatEnt_nominal=dat.coiHea.TWatEnt_nominal,
final TAirEnt_nominal=dat.coiHea.TAirEnt_nominal,
final dpAir_nominal=if damVAV.typ == Buildings.Templates.Components.Types.Damper.None
then dat.coiHea.dpAir_nominal else 0)
"Local record for coil with lumped flow resistance";
equation
/* Control point connection - start */
connect(damVAV.bus, bus.damVAV);
connect(coiHea.bus, bus.coiHea);
connect(TAirDis.y, bus.TAirDis);
connect(VAirDis_flow.y, bus.VAirDis_flow);
/* Control point connection - end */
connect(port_aHeaWat, coiHea.port_aSou);
connect(coiHea.port_bSou, port_bHeaWat);
connect(damVAV.port_b,coiHea. port_a);
connect(bus,ctl. bus);
connect(coiHea.port_b, TAirDis.port_a);
connect(TAirDis.port_b, port_Dis);
connect(port_Sup, VAirDis_flow.port_a);
connect(VAirDis_flow.port_b, damVAV.port_a);
end VAVBox;