modelChillerGroup
Extends from Buildings.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models).
Information
This model represents a set of identical water-cooled compression chillers that are piped in parallel. Modulating isolation valves are included on condenser and evaporator side.
Control points
The following input and output points are available.
-
On/Off command
y1: DO signal dedicated to each unit, with a dimensionality of one -
CHW supply temperature setpoint
TSet: AO signal common to all units, with a dimensionality of zero -
Condenser and evaporator isolation valve commanded position
yVal(Con|Eva): AO signal dedicated to each unit, with a dimensionality of one -
Condenser and evaporator leaving temperature
T(Con|Eva)Lvg: AI signal dedicated to each unit, with a dimensionality of one -
Condenser and evaporator mass flow rate
m(Con|Eva)_flow: AI signal dedicated to each unit, with a dimensionality of one
Details
Modeling approach
In a parallel arrangement, all operating units have the same operating point, provided that the isolation valves are commanded to the same position. This allows modeling the heat transfer through the condenser and evaporator barrel with a single instance of Buildings.Fluid.Chillers.ElectricReformulatedEIR. Hydronics are resolved with mass flow rate multiplier components in conjunction with instances of Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.MultipleValves which represent the parallel network of valves and fixed resistances.
Actuators
By default, linear valve models are used. Those are configured with a pressure drop varying linearly with the flow rate, as opposed to the quadratic dependency usually considered for a turbulent flow regime. This is because the whole plant model contains large nonlinear systems of equations and this configuration limits the risk of solver failure while reducing the time to solution. This has no significant impact on the operating point of the circulation pumps when a control loop is used to modulate the valve opening and maintain the flow rate or the leaving temperature at setpoint. Then, whatever the modeling assumptions for the valve, the control loop ensures that the valve creates the adequate pressure drop and flow, which will simply be reached at a different valve opening with the above simplification.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | nUni | Number of units operating at design conditions | |
| Modelica.Units.SI.Temperature | TChiWatSup_nominal | dat.TEvaLvg_nominal | Design (minimum) CHW supply temperature |
| Modelica.Units.SI.Temperature | TConWatLvg_nominal | dat.TConLvg_nominal | Design (maximum) CW leaving temperature |
| Fluid.Chillers.Data.ElectricReformulatedEIR.Generic | dat | Chiller parameters (each unit) | |
| Assumptions | |||
| Boolean | allowFlowReversal1 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Boolean | allowFlowReversal2 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.MassFlowRate | m2_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.HeatFlowRate | QChiWatUni_flow_nominal | dat.QEva_flow_nominal | Design cooling heat flow rate (each unit, <0) |
| Modelica.Units.SI.HeatFlowRate | QConWatUni_flow_nominal | -dat.QEva_flow_nominal*(1 + 1/dat.COP_nominal*dat.etaMotor) | Design CW heat flow rate (each unit, >0) |
| Modelica.Units.SI.HeatFlowRate | QChiWat_flow_nominal | nUni*QChiWatUni_flow_nominal | Design cooling heat flow rate (all units, <0) |
| Modelica.Units.SI.HeatFlowRate | QConWat_flow_nominal | nUni*QConWatUni_flow_nominal | Design CW heat flow rate (all units, >0) |
| Modelica.Units.SI.MassFlowRate | mChiWatUni_flow_nominal | dat.mEva_flow_nominal | Design chiller CHW mass flow rate (each unit) |
| Modelica.Units.SI.MassFlowRate | mConWatUni_flow_nominal | dat.mCon_flow_nominal | Design chiller CW mass flow rate (each unit) |
| Modelica.Units.SI.MassFlowRate | mChiWat_flow_nominal | nUni*mChiWatUni_flow_nominal | Design CHW mass flow rate (all units) |
| Modelica.Units.SI.MassFlowRate | mConWat_flow_nominal | nUni*mConWatUni_flow_nominal | Design CW mass flow rate (all units) |
| Modelica.Units.SI.PressureDifference | dpEva_nominal | Design chiller evaporator pressure drop (each unit) | |
| Modelica.Units.SI.PressureDifference | dpCon_nominal | Chiller condenser design pressure drop (each unit) | |
| Advanced | |||
| Medium1.MassFlowRate | m1_flow_small (from PartialFourPortInterface) | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Medium2.MassFlowRate | m2_flow_small (from PartialFourPortInterface) | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Dynamics › Time needed to open or close valve | |||
| Boolean | use_strokeTime | energyDynamics <> Modelica.Fluid.Types.Dynamics.SteadyState | Set to true to continuously open and close valve |
| Modelica.Units.SI.Time | strokeTime | 120 | Time needed to open or close valve |
| Modelica.Blocks.Types.Init | init | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Real | y_start | 1 | Initial position of actuator |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a1 (from PartialFourPort) | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b1 (from PartialFourPort) | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_a | port_a2 (from PartialFourPort) | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b2 (from PartialFourPort) | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) | |
| Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nUni] | y1 | Chiller On/Off command | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | TSet | Supply temperature setpoint | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput | P | Power drawn | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni] | yValCon | Chiller condenser isolation valve commanded position | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nUni] | yValEva | Chiller evaporator isolation valve commanded position | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni] | TConLvg | Chiller condenser leaving temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni] | mCon_flow | Chiller condenser barrel mass flow rate | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni] | TEvaLvg | Chiller evaporator leaving temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nUni] | mEva_flow | Chiller evaporator barrel mass flow rate |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium1.MassFlowRate | m1_flow (from PartialFourPortInterface) | port_a1.m_flow | Mass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp1 (from PartialFourPortInterface) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium2.MassFlowRate | m2_flow (from PartialFourPortInterface) | port_a2.m_flow | Mass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp2 (from PartialFourPortInterface) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium1.ThermodynamicState | sta_a1 (from PartialFourPortInterface) | if allowFlowReversal1 then Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium1.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow)) | Medium properties in port_a1 |
| Medium1.ThermodynamicState | sta_b1 (from PartialFourPortInterface) | if allowFlowReversal1 then Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium1.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow) | Medium properties in port_b1 |
| Medium2.ThermodynamicState | sta_a2 (from PartialFourPortInterface) | if allowFlowReversal2 then Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium2.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow)) | Medium properties in port_a2 |
| Medium2.ThermodynamicState | sta_b2 (from PartialFourPortInterface) | if allowFlowReversal2 then Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium2.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow) | Medium properties in port_b2 |
| Fluid.Chillers.ElectricReformulatedEIR | chi | Chiller | |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulConInl | Flow rate multiplier | |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulConOut | Flow rate multiplier | |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulEvaInl | Flow rate multiplier | |
| Fluid.BaseClasses.MassFlowRateMultiplier | mulEvaOut | Flow rate multiplier | |
| Buildings.Templates.Components.Controls.MultipleCommands | com | Convert command signals | |
| BaseClasses.MultipleValves | valEva | Chiller evaporator isolation valves | |
| BaseClasses.MultipleValves | valCon | Chiller condenser isolation valves | |
| Buildings.Controls.OBC.CDL.Reals.Multiply | mulP | Scale power | |
| Fluid.Sensors.TemperatureTwoPort | temConLvg | Chiller condenser leaving temperature | |
| Fluid.Sensors.TemperatureTwoPort | temEvaLvg | Chiller evaporator leaving temperature | |
| Fluid.Sensors.MassFlowRate | floCon | Chiller condenser barrel mass flow rate | |
| Fluid.Sensors.MassFlowRate | floEva | Chiller evaporator barrel mass flow rate | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | rep | Replicate | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | rep1 | Replicate | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | rep2 | Replicate | |
| Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator | rep3 | Replicate |
Revisions
-
February 24, 2023, by Antoine Gautier:
First implementation.