Buildings.Examples.VAVCO2

Variable air volume flow system of MIT building with continuous time control for static pressure reset

Information

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Examples.VAVCO2.VAVSystemCTControl VAVSystemCTControl Variable air volume flow system of MIT building with CO2 control and continuous time control for static pressure reset
Buildings.Examples.VAVCO2.BaseClasses BaseClasses Package with base classes for Buildings.Examples.VAVCO2

Buildings.Examples.VAVCO2.VAVSystemCTControl Buildings.Examples.VAVCO2.VAVSystemCTControl

Variable air volume flow system of MIT building with CO2 control and continuous time control for static pressure reset

Buildings.Examples.VAVCO2.VAVSystemCTControl

Information

This examples demonstrates the implementation of CO2 control for a variable air volume flow system. Each room has a CO2 source. Depending on the CO2 concentrations, the air dampers in the room open or close. The supply and return fans are controlled to provide a constant static pressure.

Note that this example does not control the room temperature and the heat flow through the building envelope. It only implements the CO2 source and the damper and fan control to maintain a CO2 concentration in the room below 700 PPM.

Because the building envelope is idealized as having no leakage, the supply and return fan are controlled so that they both receive the same control signal. If the return fan were controlled so that it tracks the volume flow rate of the supply fan, then there would be multiple solutions for the control signal as the split between pressure raise of the supply fan and pressure raise of the return fan is arbitrary.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
MassFlowRatemMIT_flowroo.m0Tot_flowNominal mass flow rate of MIT system model as in ASHRAE 825-RP [kg/s]
PressureDifferencedpSuiSup_nominal95Pressure drop supply air leg with splitters of one suite (obtained from simulation) [Pa]
PressureDifferencedpSuiRet_nominal233Pressure drop return air leg with splitters of one suite (obtained from simulation) [Pa]
PressureDifferencedpFanSupMIT_nominal1050Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa]
PressureDifferencedpFanRetMIT_nominal347Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa]
RealscaM_flow1Scaling factor for mass flow rate
RealscaDpFanSup_nominal1Scaling factor for supply fan pressure lift with NSui number of suites
RealscaDpFanRet_nominal1Scaling factor for supply fan pressure lift with NSui number of suites

Modelica definition

model VAVSystemCTControl "Variable air volume flow system of MIT building with CO2 control and continuous time control for static pressure reset" extends Modelica.Icons.Example; package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}); parameter Modelica.SIunits.MassFlowRate mMIT_flow = roo.m0Tot_flow "Nominal mass flow rate of MIT system model as in ASHRAE 825-RP"; parameter Modelica.SIunits.PressureDifference dpSuiSup_nominal(displayUnit="Pa") = 95 "Pressure drop supply air leg with splitters of one suite (obtained from simulation)"; parameter Modelica.SIunits.PressureDifference dpSuiRet_nominal(displayUnit="Pa") = 233 "Pressure drop return air leg with splitters of one suite (obtained from simulation)"; parameter Modelica.SIunits.PressureDifference dpFanSupMIT_nominal(displayUnit="Pa") = 1050 "Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)"; parameter Modelica.SIunits.PressureDifference dpFanRetMIT_nominal(displayUnit="Pa") = 347 "Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)"; parameter Real scaM_flow = 1 "Scaling factor for mass flow rate"; parameter Real scaDpFanSup_nominal = 1 "Scaling factor for supply fan pressure lift with NSui number of suites"; parameter Real scaDpFanRet_nominal = 1 "Scaling factor for supply fan pressure lift with NSui number of suites"; Modelica.Blocks.Sources.Constant PAtm(k=101325); Modelica.Blocks.Sources.Constant yDam(k=0.5); Buildings.Fluid.FixedResistances.PressureDrop res31( dp_nominal=0.546, m_flow_nominal=scaM_flow*1, redeclare package Medium = Medium, from_dp=true); Buildings.Fluid.FixedResistances.PressureDrop res33( dp_nominal=0.164, m_flow_nominal=scaM_flow*1, redeclare package Medium = Medium); Buildings.Fluid.FixedResistances.PressureDrop res57( dp_nominal=0.118000, m_flow_nominal=scaM_flow*1, redeclare package Medium = Medium, from_dp=true); Buildings.Examples.VAVCO2.BaseClasses.Suite roo(redeclare package Medium = Medium, scaM_flow=scaM_flow); Fluid.Actuators.Dampers.MixingBox mixBox( dpOut_nominal=0.467, dpRec_nominal=0.665, mOut_flow_nominal=scaM_flow*1, mRec_flow_nominal=scaM_flow*1, mExh_flow_nominal=scaM_flow*1, redeclare package Medium = Medium, dpExh_nominal=0.467, allowFlowReversal=true, from_dp=false, use_inputFilter=false) "mixing box"; Buildings.Fluid.Sources.Boundary_pT bouIn( redeclare package Medium = Medium, use_p_in=true, T=293.15, nPorts=2); Buildings.Controls.Continuous.LimPID conSupFan( Ti=60, yMax=1, yMin=0, Td=60, k=0.1, initType=Modelica.Blocks.Types.InitPID.InitialState, controllerType=Modelica.Blocks.Types.SimpleController.P) "Controller for supply fan"; Buildings.Fluid.Movers.FlowControlled_dp fan32( redeclare package Medium = Medium, per(pressure(final V_flow={0,11.08,14.9}, dp={1508,743,100})), use_inputFilter=false, init=Modelica.Blocks.Types.Init.InitialState, m_flow_nominal=mMIT_flow, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Buildings.Fluid.Movers.FlowControlled_dp fan56( redeclare package Medium = Medium, per(pressure(final V_flow={2.676,11.05}, dp={600,100})), use_inputFilter=false, init=Modelica.Blocks.Types.Init.InitialState, m_flow_nominal=mMIT_flow, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.BooleanPulse onSig( period=86400, startTime=6*3600, width=50) "On/off signal for plant"; Modelica.Blocks.Math.Gain dp32(k=150) "Gain for fan"; Modelica.Blocks.Math.Gain dp56(k=60) "Gain for fan"; Modelica.Blocks.Logical.Switch switch1; Modelica.Blocks.Sources.Constant off(k=0) "Off signal"; Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue=120) "Boolean to real conversion, outputs static pressure set point"; Controls.OBC.CDL.Continuous.SlewRateLimiter ramLim(raisingSlewRate=1/120) "Ramp limiter for fan control signal"; equation connect(PAtm.y, bouIn.p_in); connect(roo.p_rel, conSupFan.u_m); connect(yDam.y, mixBox.y); connect(roo.p, PAtm.y); connect(mixBox.port_Sup, res31.port_a); connect(res31.port_b, fan32.port_a); connect(res57.port_b, mixBox.port_Ret); connect(res33.port_b, roo.port_aSup); connect(bouIn.ports[1], mixBox.port_Out); connect(bouIn.ports[2], mixBox.port_Exh); connect(fan56.port_b, res57.port_a); connect(fan32.port_b, res33.port_a); connect(fan56.port_a, roo.port_bExh); connect(dp32.y, fan32.dp_in); connect(dp56.y, fan56.dp_in); connect(switch1.u1, conSupFan.y); connect(off.y, switch1.u3); connect(conSupFan.u_s, booToRea.y); connect(onSig.y, booToRea.u); connect(onSig.y, switch1.u2); connect(switch1.y, ramLim.u); connect(dp32.u, ramLim.y); connect(dp56.u, ramLim.y); end VAVSystemCTControl;