This package includes chiller plant that uses ASHRAE Guideline 36 sequences.
| Name |
Description |
ClosedLoop
|
|
BaseClasses
|
Package with base classes for chilled plant closed loop test model |
This example demonstrates the implementation of a primary-only chiller plant
with two identical chillers, two headed variable speed chilled water pumps,
and two headed constant speed condenser water pumps.
The system schematics is as shown below.
model ClosedLoop
extends Modelica.Icons.Example;
package MediumW =
Buildings.Media.Water;
package MediumA =
Buildings.Media.Air;
parameter Modelica.Media.Interfaces.Types.Temperature TRet=301.15
;
parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=10
;
parameter Modelica.Units.SI.MassFlowRate mWater_flow_nominal=6
;
parameter Modelica.Units.SI.ThermalConductance UA_nominal=4748
;
Buildings.Examples.ChillerPlant.Guideline36.BaseClasses.Guideline36 chiPla(
final mChi_flow_nominal=mWater_flow_nominal,
final mCon_flow_nominal=mWater_flow_nominal,
final dTChi=7) ;
Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU cooCoi(
redeclare package Medium1 = MediumW,
redeclare package Medium2 = MediumA,
final m1_flow_nominal=mWater_flow_nominal,
final m2_flow_nominal=mAir_flow_nominal,
final show_T=true,
final dp1_nominal=3000,
final dp2_nominal=600,
final UA_nominal=UA_nominal) ;
Buildings.Fluid.Sources.Boundary_pT sinAir(
redeclare package Medium = MediumA,
nPorts=1) ;
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(
filNam=
Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"),
computeWetBulbTemperature=true)
;
Buildings.BoundaryConditions.WeatherData.Bus weaBus ;
Buildings.Fluid.Actuators.Valves.TwoWayLinear cooCoiVal(
redeclare package Medium = MediumW,
final m_flow_nominal=mWater_flow_nominal,
final show_T=true,
final dpValve_nominal=20000,
final dpFixed_nominal=60000) ;
Buildings.Fluid.FixedResistances.Junction mixAir(
redeclare package Medium = MediumA,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
final m_flow_nominal={0.7*mAir_flow_nominal,mAir_flow_nominal,0.3*mAir_flow_nominal},
final dp_nominal=
fill(0, 3))
;
Buildings.Fluid.Sources.MassFlowSource_T outAir(
redeclare package Medium = MediumA,
final m_flow=0.3*mAir_flow_nominal,
final use_T_in=true,
nPorts=1) ;
Buildings.Fluid.Sources.MassFlowSource_T retAir(
redeclare package Medium = MediumA,
final m_flow=0.7*mAir_flow_nominal,
final T=TRet,
nPorts=1) ;
Buildings.Fluid.Sensors.TemperatureTwoPort supAirTem(
redeclare package Medium = MediumA,
final m_flow_nominal=mAir_flow_nominal)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant airSupTemSet(
final k=273.15 + 18)
;
Buildings.Controls.OBC.CDL.Reals.Subtract temDif
;
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys(
uLow=2.9,
uHigh=3.1)
;
Buildings.Controls.OBC.CDL.Reals.Hysteresis hys1(
uLow=1.9,
uHigh=2.1)
;
Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel(
delayTime=120)
;
Buildings.Controls.OBC.CDL.Logical.TrueDelay truDel1(
delayTime=120)
;
Buildings.Controls.OBC.CDL.Integers.Switch chiWatResReq
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt(
final k=3) ;
Buildings.Controls.OBC.CDL.Integers.Switch intSwi1
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt1(
final k=2) ;
Buildings.Controls.OBC.CDL.Reals.PID conPID(
k=0.1,
Ti=5,
final reverseActing=false)
;
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr(
t=0.95,
h=0.1)
;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt2(
final k=1) ;
Buildings.Controls.OBC.CDL.Integers.Sources.Constant conInt3(
final k=0) ;
Buildings.Controls.OBC.CDL.Integers.Switch intSwi2
;
Buildings.Fluid.Sources.Boundary_pT bou(
redeclare package Medium = MediumW, nPorts=1)
;
Buildings.Controls.OBC.CDL.Integers.Switch chiPlaReq
;
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr1(
t=0.95,
h=0.85)
;
equation
connect(weaDat.weaBus, weaBus);
connect(chiPla.portCooCoiSup, cooCoiVal.port_a);
connect(cooCoiVal.port_b, cooCoi.port_a1);
connect(chiPla.portCooCoiRet, cooCoi.port_b1);
connect(retAir.ports[1], mixAir.port_1);
connect(outAir.ports[1], mixAir.port_3);
connect(mixAir.port_2, cooCoi.port_a2);
connect(weaBus.TDryBul, outAir.T_in);
connect(cooCoi.port_b2, supAirTem.port_a);
connect(supAirTem.port_b, sinAir.ports[1]);
connect(conInt.y, chiWatResReq.u1);
connect(truDel.y, chiWatResReq.u2);
connect(temDif.y, hys.u);
connect(temDif.y, hys1.u);
connect(hys1.y, truDel1.u);
connect(hys.y, truDel.u);
connect(conInt1.y, intSwi1.u1);
connect(truDel1.y, intSwi1.u2);
connect(intSwi1.y, chiWatResReq.u3);
connect(airSupTemSet.y, conPID.u_s);
connect(conPID.y, greThr.u);
connect(greThr.y, intSwi2.u2);
connect(conInt2.y, intSwi2.u1);
connect(conInt3.y, intSwi2.u3);
connect(intSwi2.y, intSwi1.u3);
connect(weaDat.weaBus, chiPla.weaBus);
connect(cooCoi.port_b1, bou.ports[1]);
connect(airSupTemSet.y, temDif.u2);
connect(supAirTem.T, conPID.u_m);
connect(supAirTem.T, temDif.u1);
connect(conPID.y, cooCoiVal.y);
connect(conPID.y, greThr1.u);
connect(greThr1.y, chiPlaReq.u2);
connect(conInt2.y, chiPlaReq.u1);
connect(conInt3.y, chiPlaReq.u3);
connect(chiPlaReq.y, chiPla.chiPlaReq);
connect(chiWatResReq.y, chiPla.TChiWatSupResReq);
end ClosedLoop;