Buildings.Examples.DualFanDualDuct.ThermalZones
Package with models for the thermal zones
Information
Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).
Package Content
| Name | Description | 
|---|---|
| Supply branch of a dual duct system | 
Buildings.Examples.DualFanDualDuct.ThermalZones.SupplyBranch
Supply branch of a dual duct system
Parameters
| Type | Name | Default | Description | 
|---|---|---|---|
| replaceable package MediumA | Modelica.Media.Interfaces.Pa... | Medium model for air | |
| Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) | 
| Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate | 
| MassFlowRate | m_flow_nominal | Mass flow rate cold air deck [kg/s] | |
| MassFlowRate | mAirHot_flow_nominal | 0.3*m_flow_nominal | Mass flow rate hot air deck [kg/s] | 
| MassFlowRate | mAirCol_flow_nominal | m_flow_nominal | Mass flow rate cold air deck [kg/s] | 
| Volume | VRoo | Room volume [m3] | |
Connectors
| Type | Name | Description | 
|---|---|---|
| replaceable package MediumA | Medium model for air | |
| FluidPort_a | port_aHot | Connector for hot deck | 
| FluidPort_a | port_aCol | Connector for cold deck | 
| FluidPort_a | port_b | Fluid connector b (positive design flow direction is from port_a1 to port_b1) | 
| ControlBus | controlBus | |
| input RealInput | TRoo | Measured room temperature | 
| output RealOutput | p_relCol | Pressure signal of cold deck | 
| output RealOutput | p_relHot | Pressure signal of hot deck | 
| input BooleanInput | yFan | Fan operation, true if fan is running | 
Modelica definition
model SupplyBranch "Supply branch of a dual duct system"
  replaceable package MediumA = Modelica.Media.Interfaces.PartialMedium
    "Medium model for air";
  Modelica.Fluid.Interfaces.FluidPort_a port_aHot(redeclare package Medium =
        MediumA) "Connector for hot deck";
  Modelica.Fluid.Interfaces.FluidPort_a port_aCol(redeclare package Medium =
        MediumA) "Connector for cold deck";
  Modelica.Fluid.Interfaces.FluidPort_a port_b(redeclare package Medium =
        MediumA)
    "Fluid connector b (positive design flow direction is from port_a1 to port_b1)";
  parameter Boolean from_dp=false
    "= true, use m_flow = f(dp) else dp = f(m_flow)";
  parameter Boolean linearizeFlowResistance=false
    "= true, use linear relation between m_flow and dp for any flow rate";
  parameter Modelica.Units.SI.MassFlowRate m_flow_nominal
    "Mass flow rate cold air deck";
  parameter Modelica.Units.SI.MassFlowRate mAirHot_flow_nominal=0.3*
      m_flow_nominal "Mass flow rate hot air deck";
  parameter Modelica.Units.SI.MassFlowRate mAirCol_flow_nominal=m_flow_nominal
    "Mass flow rate cold air deck";
  parameter Modelica.Units.SI.Volume VRoo "Room volume";
  Controls.RoomMixingBox con(m_flow_min=VRoo*3*1.2/3600)
    "Room temperature controller";
  VAVReheat.BaseClasses.Controls.ControlBus controlBus;
  Buildings.Fluid.Actuators.Dampers.Exponential vavHot(
    redeclare package Medium = MediumA,
    m_flow_nominal=mAirHot_flow_nominal,
    from_dp=from_dp,
    linearized=linearizeFlowResistance,
    y_start=0,
    dpDamper_nominal=0.27,
    dpFixed_nominal=40 - 0.27) "VAV damper for hot deck";
  Buildings.Fluid.Actuators.Dampers.Exponential vavCol(
    redeclare package Medium = MediumA,
    m_flow_nominal=mAirCol_flow_nominal,
    from_dp=from_dp,
    linearized=linearizeFlowResistance,
    y_start=0,
    dpDamper_nominal=0.27,
    dpFixed_nominal=40 - 0.27) "VAV damper for cold deck";
  Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium =
        MediumA) "Sensor for mass flow rate";
  Modelica.Blocks.Math.Gain fraMasFlo(k=1/m_flow_nominal)
    "Fraction of mass flow rate, relative to nominal flow";
  Modelica.Blocks.Math.Gain ACH(k=1/VRoo/1.2*3600) "Air change per hour";
  Modelica.Blocks.Interfaces.RealInput TRoo "Measured room temperature";
  Buildings.Fluid.FixedResistances.Junction mix(
    redeclare package Medium = MediumA,
    m_flow_nominal={mAirCol_flow_nominal,mAirHot_flow_nominal,
        mAirCol_flow_nominal + mAirHot_flow_nominal},
    from_dp=from_dp,
    linearized=linearizeFlowResistance,
    dp_nominal=20*{0,0,0},
    energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState)
    "Mixer for hot and cold air deck";
  Buildings.Fluid.Sensors.RelativePressure senRelPreHot(redeclare package Medium =
        MediumA) "Relative pressure hot deck (compared to room pressure)";
  Buildings.Fluid.Sensors.RelativePressure senRelPreCol(redeclare package Medium =
        MediumA) "Relative pressure cold deck (compared to room pressure)";
  Modelica.Blocks.Interfaces.RealOutput p_relCol "Pressure signal of cold deck";
  Modelica.Blocks.Interfaces.RealOutput p_relHot "Pressure signal of hot deck";
  Buildings.Fluid.Sensors.TemperatureTwoPort TSup(redeclare package Medium = MediumA,
      m_flow_nominal=m_flow_nominal) "Supply air temperature";
  Buildings.Controls.OBC.CDL.Interfaces.BooleanInput yFan
    "Fan operation, true if fan is running";
equation 
  connect(fraMasFlo.u, senMasFlo.m_flow);
  connect(ACH.u, senMasFlo.m_flow);
  connect(con.TRoo, TRoo);
  connect(vavHot.port_a, port_aHot);
  connect(vavHot.port_b, mix.port_2);
  connect(mix.port_1, vavCol.port_b);
  connect(mix.port_3, senMasFlo.port_a);
  connect(senMasFlo.m_flow, con.mAir_flow);
  connect(con.yHot, vavHot.y);
  connect(con.yCol, vavCol.y);
  connect(senRelPreHot.port_a, port_aHot);
  connect(senRelPreCol.port_a, port_aCol);
  connect(vavCol.port_a, port_aCol);
  connect(senRelPreHot.port_b, mix.port_3);
  connect(senRelPreCol.port_b, mix.port_3);
  connect(senRelPreCol.p_rel, p_relCol);
  connect(senRelPreHot.p_rel, p_relHot);
  connect(con.TRooSetHea, controlBus.TRooSetHea);
  connect(con.TRooSetCoo, controlBus.TRooSetCoo);
  connect(senMasFlo.port_b, TSup.port_a);
  connect(TSup.port_b, port_b);
  connect(con.yFan, yFan);
end SupplyBranch;