| Name | Description |
|---|---|
| Package with base classes for example models | |
| HydronicHeating | Test model |
| VAVSystemCTControl | VAV system model of MIT building with continuous time control for static pressure reset |
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | nRoo | 2 | Number of rooms |
| Volume | VRoo | 8*5*3 | Volume of one room [m3] |
| Real | ACH | 0.5 | Outside air exchange per hour |
| Area | AHeaTra | (8 + 5)*3 | Heat transfer area of one room [m2] |
| Power | Q_flow_nominal | 1500 | Nominal power [W] |
| Temperature | dT_nominal | 20 | Nominal temperature difference [K] |
| MassFlowRate | m_flow_nominal | Q_flow_nominal/dT_nominal/4200 | Nominal mass flow rate [kg/s] |
| Pressure | dpPip_nominal | 10000 | Pressure difference of pipe (without valve) [Pa] |
| Pressure | dpVal_nominal | 1000 | Pressure difference of valve [Pa] |
| Pressure | dpRoo_nominal | 6000 | Pressure difference of flow leg that serves a room [Pa] |
| Pressure | dpThrWayVal_nominal | 6000 | Pressure difference of three-way valve [Pa] |
| Pressure | dp_nominal | dpPip_nominal + dpVal_nomina... | Pressure difference of loop [Pa] |
model HydronicHeating "Test model"
// package Medium = Buildings.Media.ConstantPropertyLiquidWater "Medium model";
package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater
"Medium model";
//package Medium = Modelica.Media.Air.SimpleAir "Medium model";
//package Medium = Buildings.Media.GasesPTDecoupled.SimpleAir "Medium model";
parameter Integer nRoo = 2 "Number of rooms";
parameter Modelica.SIunits.Volume VRoo = 8*5*3 "Volume of one room";
parameter Real ACH = 0.5 "Outside air exchange per hour";
parameter Modelica.SIunits.Area AHeaTra=(8+5)*3
"Heat transfer area of one room";
parameter Modelica.SIunits.Power Q_flow_nominal = 1500 "Nominal power";
parameter Modelica.SIunits.Temperature dT_nominal = 20
"Nominal temperature difference";
parameter Modelica.SIunits.MassFlowRate m_flow_nominal = Q_flow_nominal/dT_nominal/4200
"Nominal mass flow rate";
parameter Modelica.SIunits.Pressure dpPip_nominal = 10000
"Pressure difference of pipe (without valve)";
parameter Modelica.SIunits.Pressure dpVal_nominal = 1000
"Pressure difference of valve";
parameter Modelica.SIunits.Pressure dpRoo_nominal = 6000
"Pressure difference of flow leg that serves a room";
parameter Modelica.SIunits.Pressure dpThrWayVal_nominal = 6000
"Pressure difference of three-way valve";
parameter Modelica.SIunits.Pressure dp_nominal = dpPip_nominal + dpVal_nominal + dpRoo_nominal
"Pressure difference of loop";
Buildings.Fluids.Boilers.BoilerPolynomial boi(
a={0.9},
effCur=Buildings.Fluids.Types.EfficiencyCurves.Constant,
Q_flow_nominal=Q_flow_nominal,
dT_nominal=dT_nominal,
redeclare package Medium = Medium,
allowFlowReversal=false,
dp_nominal=3000,
T_start=293.15) "Boiler";
inner Modelica_Fluid.System system;
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TAmb(T=288.15)
"Ambient temperature in boiler room";
Modelica_Fluid.Machines.PrescribedPump pumRad(
N_nominal=3000,
use_N_in=true,
redeclare package Medium = Medium,
redeclare function flowCharacteristic =
Modelica_Fluid.Machines.BaseClasses.PumpCharacteristics.linearFlow (
V_flow_nominal={m_flow_nominal/1000,0.5*m_flow_nominal/1000},
head_nominal=1.5*dp_nominal/9.81/1000*{1,2}),
allowFlowReversal=false,
checkValve=true,
V=0.01,
energyDynamics=Modelica_Fluid.Types.Dynamics.DynamicFreeInitial)
"Pump that serves the radiators";
Modelica_Fluid.Vessels.OpenTank expVes(
height=2,
crossArea=1,
level_start=1,
nPorts=1,
use_portsData=false,
redeclare package Medium = Medium,
massDynamics=Modelica_Fluid.Types.Dynamics.FixedInitial,
p_ambient=100000)
"Expansion vessel, used to set static pressure in water loop";
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
dp_nominal=dpPip_nominal/2);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
dp_nominal=dpPip_nominal/2);
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TRoo2;
Modelica.Blocks.Sources.Constant dpSet(k=dp_nominal) "Pressure set point";
Modelica.Blocks.Continuous.LimPID conPum(
controllerType=Modelica.Blocks.Types.SimpleController.P,
yMax=3000,
k=1,
yMin=0.3*3000,
Ti=60,
Td=5) "Controller for pump";
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor roo2(T(fixed=true), C=
10*30*1006) "Heat capacity of room";
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut2
"Outside temperature boundary condition";
Modelica.Blocks.Sources.Sine TOutBC(
freqHz=1/86400,
offset=283.15,
amplitude=5,
phase=-1.5707963267949) "Outside air temperature";
Modelica_Fluid.Sensors.RelativePressure dpSen(redeclare package Medium =
Medium);
Fluids.Actuators.Valves.TwoWayEqualPercentage val2(
redeclare package Medium = Medium,
dp_nominal(displayUnit="Pa") = dpVal_nominal,
Kv_SI=m_flow_nominal/nRoo/sqrt(dpVal_nominal),
m_flow_nominal=m_flow_nominal/2,
l=0.01) "Radiator valve";
Modelica.Blocks.Continuous.LimPID conRoo2(
controllerType=Modelica.Blocks.Types.SimpleController.P,
yMax=1,
yMin=0,
k=2) "Controller for room temperature";
Modelica.Blocks.Sources.Constant TRooSet2(k=273.15 + 20);
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TRoo1;
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor roo1( T(
fixed=true), C=VRoo*1006) "Heat capacity of room";
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut1
"Outside temperature boundary condition";
Fluids.Actuators.Valves.TwoWayEqualPercentage val1(
redeclare package Medium = Medium,
dp_nominal(displayUnit="Pa") = dpVal_nominal,
Kv_SI=m_flow_nominal/nRoo/sqrt(dpVal_nominal),
m_flow_nominal=m_flow_nominal/2,
l=0.01) "Radiator valve";
Modelica.Blocks.Continuous.LimPID conRoo1(
controllerType=Modelica.Blocks.Types.SimpleController.P,
yMax=1,
yMin=0,
k=2) "Controller for room temperature";
Modelica.Blocks.Sources.Constant TRooSet1(
k=273.15 + 20);
Buildings.Fluids.HeatExchangers.Radiators.RadiatorEN442_2 rad1(
Q_flow_nominal=Q_flow_nominal/nRoo,
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/nRoo,
dT_nominal=(60 + 40)/2 - 20) "Radiator";
Buildings.Fluids.HeatExchangers.Radiators.RadiatorEN442_2 rad2(
Q_flow_nominal=Q_flow_nominal/nRoo,
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/nRoo,
dT_nominal=(60 + 40)/2 - 20) "Radiator";
Buildings.Fluids.Actuators.Valves.ThreeWayEqualPercentageLinear thrWayVal(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
dp_nominal=dpThrWayVal_nominal,
l={0.01,0.01}) "Three-way valve";
Modelica.Blocks.Continuous.LimPID conVal(
k=1,
Ti=60,
yMax=1,
yMin=0,
initType=Modelica.Blocks.Types.InitPID.InitialState,
xi_start=1,
controllerType=Modelica.Blocks.Types.SimpleController.P)
"Controller for pump";
Fluids.Storage.StratifiedEnhanced tan(
m_flow_nominal=m_flow_nominal,
dIns=0.3,
redeclare package Medium = Medium,
hTan=2,
VTan=0.1,
nSeg=5) "Storage tank";
Modelica_Fluid.Machines.PrescribedPump pumBoi(
N_nominal=3000,
use_N_in=true,
redeclare package Medium = Medium,
checkValve=true,
allowFlowReversal=false,
redeclare function flowCharacteristic =
Modelica_Fluid.Machines.BaseClasses.PumpCharacteristics.linearFlow (
head_nominal=1.5*5000/9.81/1000*{1,2}, V_flow_nominal=2*{
m_flow_nominal/1000,0.5*m_flow_nominal/1000}));
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemBot
"Tank temperature";
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemTop
"Tank temperature";
Modelica.Blocks.Logical.GreaterThreshold greThr(threshold=273.15 + 52);
Modelica.Blocks.Math.BooleanToReal booToRea;
Buildings.Fluids.FixedResistances.FixedResistanceDpM res3(
redeclare package Medium = Medium,
allowFlowReversal=false,
m_flow_nominal=2*m_flow_nominal,
dp_nominal=2000);
Modelica.Blocks.Math.Gain gain( k=3000);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res4(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal,
dp_nominal=100);
Modelica.StateGraph.InitialStepWithSignal iniSte;
Modelica.StateGraph.TransitionWithSignal transition(enableTimer=false,
waitTime=0);
Modelica.StateGraph.StepWithSignal onSta(nIn=2) "State for furnace on";
inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
Modelica.Blocks.Logical.LessThreshold lesThr(threshold=273.15 + 50);
Modelica.StateGraph.TransitionWithSignal toOff(enableTimer=false);
Modelica.StateGraph.StepWithSignal offSta(nIn=1) "State for furnace off";
Modelica.StateGraph.TransitionWithSignal toOn(enableTimer=false);
Modelica_Fluid.Sensors.Temperature temSup(redeclare package Medium = Medium);
Modelica_Fluid.Sensors.Temperature temRet(redeclare package Medium = Medium);
Buildings.Controls.SetPoints.HotWaterTemperatureReset heaCha(
use_TRoo_in=false,
dTOutHeaBal=0,
TSup_nominal=333.15,
TRet_nominal=313.15,
TOut_nominal=268.15);
Buildings.HeatTransfer.ConductorSingleLayer conExt1(
n=3,
mat=Buildings.HeatTransfer.Data.Brick(),
A=AHeaTra,
x=0.24) "Conduction through exterior facing layer";
Buildings.HeatTransfer.ConductorSingleLayer conInt1(
n=3,
A=AHeaTra,
mat=Buildings.HeatTransfer.Data.InsulationBoard(),
x=0.2) "Conduction through interior facing layer";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor venLos1(G=VRoo*ACH/
3600*1.2*1006) "Ventilation heat loss";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor venLos2(G=VRoo*ACH/
3600*1.2*1006) "Ventilation heat loss";
Controls.SetPoints.OccupancySchedule occSch1(occupancy=3600*{7,8,10,11,11.5,
15,19,21}) "Occupancy schedule";
Modelica.Blocks.Logical.Switch switch1;
Modelica.Blocks.Sources.RealExpression occ1(y=200)
"Heat gain if occupied in room 1";
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo1
"Prescribed heat flow to model occupancy";
Modelica.Blocks.Sources.Constant zer(k=0) "Outputs zero";
Controls.SetPoints.OccupancySchedule occSch2(
firstEntryOccupied=false, occupancy=3600*{7,10,12,22})
"Occupancy schedule";
Modelica.Blocks.Logical.Switch switch2;
Modelica.Blocks.Sources.RealExpression occ2(y=200)
"Heat gain if occupied in room 2";
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo2
"Prescribed heat flow to model occupancy";
Buildings.HeatTransfer.ConductorSingleLayer conExt2(
n=3,
mat=Buildings.HeatTransfer.Data.Brick(),
A=AHeaTra,
x=0.24) "Conduction through exterior facing layer";
Buildings.HeatTransfer.ConductorSingleLayer conInt2(
n=3,
A=AHeaTra,
mat=Buildings.HeatTransfer.Data.InsulationBoard(),
x=0.2) "Conduction through interior facing layer";
Buildings.Fluids.FixedResistances.FixedResistanceDpM resRoo1(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/nRoo,
dp_nominal=dpRoo_nominal,
from_dp=false) "Resistance of pipe leg that serves the room";
Buildings.Fluids.FixedResistances.FixedResistanceDpM resRoo2(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/nRoo,
dp_nominal=dpRoo_nominal,
from_dp=false) "Resistance of pipe leg that serves the room";
Modelica.Thermal.HeatTransfer.Components.Convection con1
"Convective heat transfer";
Modelica.Thermal.HeatTransfer.Components.Convection con2
"Convective heat transfer";
Modelica.Blocks.Sources.RealExpression hACon1(y=8*AHeaTra)
"Convective heat transfer";
Modelica.Blocks.Sources.RealExpression hACon2(y=8*AHeaTra)
"Convective heat transfer";
equation
connect(TAmb.port,boi. heatPort);
connect(dpSet.y, conPum.u_s);
connect(TOutBC.y, TOut2.T);
connect(roo2.port, TRoo2.port);
connect(TRooSet2.y, conRoo2.u_s);
connect(TRoo2.T, conRoo2.u_m);
connect(pumRad.port_b, dpSen.port_a);
connect(roo1.port, TRoo1.port);
connect(TRoo1.T, conRoo1.u_m);
connect(rad1.heatPortCon, roo1.port);
connect(dpSen.port_b, pumRad.port_a);
connect(dpSen.p_rel, conPum.u_m);
connect(res1.port_b, val1.port_a);
connect(val1.port_b, rad1.port_a);
connect(res1.port_b, val2.port_a);
connect(val2.port_b, rad2.port_a);
connect(conRoo1.y, val1.y);
connect(conRoo2.y, val2.y);
connect(pumRad.port_a, thrWayVal.port_2);
connect(boi.port_b,pumBoi. port_a);
connect(tan.heaPorVol[1], tanTemTop.port);
connect(tanTemBot.port, tan.heaPorVol[tan.nSeg]);
connect(tanTemBot.T, greThr.u);
connect(pumBoi.port_b, res3.port_a);
connect(res4.port_b, tan.port_b);
connect(tanTemTop.T, lesThr.u);
connect(iniSte.outPort[1], transition.inPort);
connect(transition.outPort, onSta.inPort[1]);
connect(onSta.outPort[1], toOff.inPort);
connect(toOff.outPort, offSta.inPort[1]);
connect(toOn.outPort, onSta.inPort[2]);
connect(offSta.outPort[1], toOn.inPort);
connect(lesThr.y, toOn.condition);
connect(conPum.y, pumRad.N_in);
connect(gain.y,pumBoi. N_in);
connect(pumRad.port_b, res1.port_a);
connect(pumRad.port_b, temSup.port);
connect(temSup.T, conVal.u_m);
connect(res2.port_b, temRet.port);
connect(conVal.y, thrWayVal.y);
connect(onSta.active, booToRea.u);
connect(boi.port_a, expVes.ports[1]);
connect(lesThr.y, transition.condition);
connect(greThr.y, toOff.condition);
connect(heaCha.TSup, conVal.u_s);
connect(TOutBC.y, heaCha.TOut);
connect(TOutBC.y, TOut1.T);
connect(booToRea.y,boi. y);
connect(booToRea.y, gain.u);
connect(tan.port_b, boi.port_a);
connect(tan.port_a, thrWayVal.port_1);
connect(res3.port_b, tan.port_a);
connect(res4.port_a, res2.port_b);
connect(res2.port_b, thrWayVal.port_3);
connect(venLos1.port_a, TOut1.port);
connect(venLos1.port_b, roo1.port);
connect(venLos2.port_a, TOut2.port);
connect(venLos2.port_b, roo2.port);
connect(TOut1.port, conExt1.port_a);
connect(conExt1.port_b, conInt1.port_a);
connect(occSch1.occupied, switch1.u2);
connect(occ1.y, switch1.u1);
connect(switch1.y, preHeaFlo1.Q_flow);
connect(zer.y, switch1.u3);
connect(occSch2.occupied, switch2.u2);
connect(switch2.y, preHeaFlo2.Q_flow);
connect(occ2.y, switch2.u1);
connect(zer.y, switch2.u3);
connect(TRooSet1.y, conRoo1.u_s);
connect(conExt2.port_b, conInt2.port_a);
connect(TOut2.port, conExt2.port_a);
connect(rad1.port_b, resRoo1.port_a);
connect(resRoo1.port_b, res2.port_a);
connect(rad2.port_b, resRoo2.port_a);
connect(resRoo2.port_b, res2.port_a);
connect(conInt1.port_b, con1.solid);
connect(con1.fluid, roo1.port);
connect(conInt2.port_b, con2.solid);
connect(con2.fluid, roo2.port);
connect(hACon1.y, con1.Gc);
connect(hACon2.y, con2.Gc);
connect(preHeaFlo2.port, roo2.port);
connect(preHeaFlo1.port, roo1.port);
connect(rad2.heatPortCon, roo2.port);
connect(rad2.heatPortRad, conInt2.port_b);
connect(rad1.heatPortRad, conInt1.port_b);
end HydronicHeating;
| Type | Name | Default | Description |
|---|---|---|---|
| MassFlowRate | mMIT_flow | roo.m0Tot_flow | Nominal mass flow rate of MIT system model as in ASHRAE 825-RP [kg/s] |
| Pressure | dpSuiSup_nominal | 95 | Pressure drop supply air leg with splitters of one suite (obtained from simulation) [Pa] |
| Pressure | dpSuiRet_nominal | 233 | Pressure drop return air leg with splitters of one suite (obtained from simulation) [Pa] |
| Pressure | dpFanSupMIT_nominal | 1050 | Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa] |
| Pressure | dpFanRetMIT_nominal | 347 | Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa] |
| Real | scaM_flow | 1/3 | Scaling factor for mass flow rate |
| Real | scaDpFanSup_nominal | 1 | Scaling factor for supply fan pressure lift with NSui number of suites |
| Real | scaDpFanRet_nominal | 1 | Scaling factor for supply fan pressure lift with NSui number of suites |
model VAVSystemCTControl
"VAV system model of MIT building with continuous time control for static pressure reset"
// package Medium = Buildings.Media.IdealGases.SimpleAir;
package Medium = Buildings.Media.GasesPTDecoupled.SimpleAir(extraPropertiesNames={"CO2"});
// package Medium = Buildings.Media.GasesPTDecoupled.MoistAir;
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.Pressure dpSuiSup_nominal = 95
"Pressure drop supply air leg with splitters of one suite (obtained from simulation)";
parameter Modelica.SIunits.Pressure dpSuiRet_nominal = 233
"Pressure drop return air leg with splitters of one suite (obtained from simulation)";
parameter Modelica.SIunits.Pressure dpFanSupMIT_nominal = 1050
"Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)";
parameter Modelica.SIunits.Pressure dpFanRetMIT_nominal = 347
"Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)";
parameter Real scaM_flow = 1/3 "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.Fluids.FixedResistances.FixedResistanceDpM res31(
dp_nominal=0.546,
m_flow_nominal=scaM_flow*1,
dh=sqrt(scaM_flow)*1,
redeclare package Medium = Medium);
Buildings.Fluids.Movers.FlowMachinePolynomial fan32(
D=0.6858,
a={4.2904,-1.387,4.2293,-3.92920,0.8534},
b={0.1162,1.5404,-1.4825,0.7664,-0.1971},
mNorMin_flow=1,
mNorMax_flow=2,
scaM_flow=scaM_flow,
scaDp=scaDpFanSup_nominal,
redeclare package Medium = Medium,
m_flow_nominal=mMIT_flow);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res33(
dp_nominal=0.164,
dh=sqrt(scaM_flow)*1,
m_flow_nominal=scaM_flow*1,
redeclare package Medium = Medium);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res57(
dp_nominal=0.118000,
m_flow_nominal=scaM_flow*1,
dh=sqrt(scaM_flow)*1,
redeclare package Medium = Medium);
Buildings.Fluids.Movers.FlowMachinePolynomial fan56(
D=1.13,
a={4.19370,-1.63370,12.2110,-23.9619,9.81620},
b={0.619000E-01,3.14170,-5.75510,6.16760,-3.37480},
mNorMin_flow=0.7,
mNorMax_flow=1.0,
scaM_flow=scaM_flow,
scaDp=scaDpFanRet_nominal,
redeclare package Medium = Medium,
m_flow_nominal=mMIT_flow);
BaseClasses.Suite roo(redeclare package Medium = Medium, scaM_flow=scaM_flow);
Buildings.Fluids.Actuators.Dampers.OAMixingBoxMinimumDamper mixBox(
dpOut_nominal=0.467,
dpRec_nominal=0.665,
dpExh_nominal=0.164,
dpOutMin_nominal=0.467,
AOutMin=scaM_flow*0.38,
AOut=scaM_flow*1.32,
AExh=scaM_flow*1.05,
ARec=scaM_flow*1.05,
m0OutMin_flow=scaM_flow*0.1*1,
m0Out_flow=scaM_flow*1,
m0Rec_flow=scaM_flow*1,
m0Exh_flow=scaM_flow*1,
redeclare package Medium = Medium) "mixing box";
Modelica_Fluid.Sources.Boundary_pT bouIn(
redeclare package Medium = Medium,
use_p_in=true,
nPorts=3,
T=293.15);
Modelica.Blocks.Continuous.FirstOrder gaiSup(
k=22.333,
y_start=0.01,
initType=Modelica.Blocks.Types.Init.InitialOutput,
T=120) "Gain for supply air fan";
Modelica.Blocks.Continuous.FirstOrder gaiRet(
k=8,
y_start=0.01,
initType=Modelica.Blocks.Types.Init.InitialOutput,
T=120) "Gain for return air fan";
inner Modelica_Fluid.System system;
Modelica.Blocks.Continuous.LimPID PID(
Ti=60,
yMax=1,
yMin=0,
initType=Modelica.Blocks.Types.InitPID.InitialState,
k=0.01,
controllerType=Modelica.Blocks.Types.SimpleController.PI);
Modelica.Blocks.Sources.Constant const(k=120);
Buildings.Fluids.Delays.DelayFirstOrder delSup(
redeclare package Medium = Medium,
m_flow_nominal=mMIT_flow,
tau=120) "Delay to break algebraic loop";
Buildings.Fluids.Delays.DelayFirstOrder delRet(
redeclare package Medium = Medium,
m_flow_nominal=mMIT_flow,
tau=120) "Delay to break algebraic loop";
equation
connect(PAtm.y, bouIn.p_in);
connect(bouIn.ports[1], mixBox.port_OutMin);
connect(bouIn.ports[2], mixBox.port_Out);
connect(bouIn.ports[3], mixBox.port_Exh);
connect(res57.port_a, fan56.port_b);
connect(fan32.N_in, gaiSup.y);
connect(fan56.N_in, gaiRet.y);
connect(const.y, PID.u_s);
connect(roo.p_rel, PID.u_m);
connect(PID.y, gaiSup.u);
connect(PID.y, gaiRet.u);
connect(yDam.y, mixBox.yOutMin);
connect(yDam.y, mixBox.y);
connect(roo.p, PAtm.y);
connect(res31.port_b, fan32.port_a);
connect(mixBox.port_Sup, res31.port_a);
connect(fan32.port_b, res33.port_a);
connect(res33.port_b, delSup.ports[1]);
connect(delSup.ports[2], roo.port_aSup);
connect(roo.port_bExh, delRet.ports[1]);
connect(delRet.ports[2], fan56.port_a);
connect(res57.port_b, mixBox.port_Ret);
end VAVSystemCTControl;