modelCoolingTowersWithBypass
Cooling tower system with bypass valve
Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).
Information
This model simulates parallel connected cooling tower subsystem with a bypass valve.
The bypass valve is controlled to enforce that the leaving condenser water
temperature does not drop below the minimum temperature TMin.
By default, the condenser water setpoint is the ambient wet bulb temperature
TWetBul plus the approach temperature dTApp.
Inside the model, a cooling tower fan speed controller is also implemented to maintain the condenser water at its setpoint.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | num | 2 | Number of cooling towers |
| Modelica.Units.SI.PressureDifference | dpValve_nominal | Nominal pressure difference of the valve | |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.Pressure | dp_nominal | Nominal pressure difference of the tower | |
| Real | ratWatAir_nominal | 0.625 | Design water-to-air ratio |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamics.FixedInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Dynamics › Time needed to open or close valve | |||
| Boolean | use_strokeTime | true | Set to true to continuously open and close valve |
| Dynamics | |||
| Modelica.Units.SI.Time | strokeTime | 30 | Time needed to change valve position from 0 to 1 |
| Heat transfer | |||
| Modelica.Units.SI.Temperature | TAirInWB_nominal | Nominal outdoor (air inlet) wetbulb temperature | |
| Modelica.Units.SI.Temperature | TWatIn_nominal | Nominal water inlet temperature | |
| Modelica.Units.SI.TemperatureDifference | dT_nominal | Temperature difference between inlet and outlet of the tower | |
| Fan | |||
| Modelica.Units.SI.Power | PFan_nominal | Fan power | |
| Control Settings | |||
| Modelica.Units.SI.TemperatureDifference | dTApp | 3 | Approach temperature |
| Modelica.Units.SI.Temperature | TMin | Minimum allowed water temperature entering chiller | |
| Modelica.Blocks.Types.SimpleController | controllerType | Modelica.Blocks.Types.SimpleController.PI | Type of fan speed controller |
| Real | k | 1 | Gain of the tower PID controller |
| Modelica.Units.SI.Time | Ti | 60 | Integrator time constant of the tower PID controller |
| Modelica.Units.SI.Time | Td | 0.1 | Derivative time constant of the tower PID controller |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.BooleanInput[num] | on | On signal for cooling towers | |
| Modelica.Blocks.Interfaces.RealInput | TWetBul | Entering air wetbulb temperature | |
| Modelica.Blocks.Interfaces.RealOutput[num] | PFan | Electric power consumed by fan | |
| Modelica.Blocks.Interfaces.RealOutput | TLvg | Leaving water temperature |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow)) | Medium properties in port_b |
| Buildings.DHC.Plants.Cooling.Subsystems.CoolingTowersParallel | cooTowSys | Cooling tower system | |
| Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage | valByp | Condenser water bypass valve | |
| Buildings.Fluid.Sensors.TemperatureTwoPort | senTCWSup | Temperature sensor | |
| Buildings.Controls.OBC.CDL.Reals.Sources.Constant | TSetByp | Bypass loop temperature setpoint | |
| Buildings.Controls.OBC.CDL.Reals.PIDWithReset | bypValCon | Bypass valve controller | |
| Buildings.Controls.OBC.CDL.Reals.PID | cooTowSpeCon | Cooling tower fan speed controller | |
| Buildings.Controls.OBC.CDL.Reals.Switch | swi | Output the input of higher value | |
| Buildings.Controls.OBC.CDL.Reals.Hysteresis | hys | Compare if (TWetBul+dTApp) is greater than TMin | |
| Buildings.Controls.OBC.CDL.Reals.AddParameter | addPar | Add approach temperature on top of wetbulb temperature | |
| Buildings.Fluid.FixedResistances.Junction | jun | Upstream mixing point of cooTowSys and valByp |
Revisions
-
January 2, 2023, by Kathryn Hinkelman:
Setdp_fixed = 0for the bypass valve because the pressure drop in this leg will be significantly less than the cooling towers.
PropagatedriseTimefor the valve signal filters. -
November 16, 2022, by Michael Wetter:
Changed rise time of valve to 30 seconds so that it is the same as the one for the pumps, and setuse_inputFilter = falsefor shut-off valve in cooling tower. This avoids a sharp rise in pressure near t=35 seconds. - May 19, 2020 by Jing Wang:
First implementation.