modelNonIntegrated
Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialChillerWSE (Partial model for chiller and WSE package).
Information
This model implements a non-integrated water-side economizer (WSE) in the chilled water system, as shown in the following figure. In the configuration, users can model multiple chillers with only one integrated WSE. This model can be used in both primary-only and primary-secondary pumping system.
Implementation
The WSE is in parallel with chillers on both the condenser and chilled water sides. If the economizer cannot meet the entire load then it must be shut off. Otherwise, the relatively warm economier leaving water will be mixed with the cold chiller leaving water and hence the plant leaving water temperature will be above setpoint. For this configuration, there are only two cooling modes: free cooling (FC) mode and fully mechanical cooling (FMC) mode.
There are 4 valves for on/off use only, which can be controlled in order to switch between FC and FMC mode.
- V1 and V2 are associated with the chiller. When the chiller is commanded to run, V1 and V2 will be open, and vice versa. Note that when the number of chillers are larger than 1, V1 and V2 are vectored models with the same dimension as the chillers.
- V3 and V4 are associated with the WSE. When the WSE is commanded to run, V3 and V4 will be open, and vice versa.
The details about how to switch among different cooling modes are shown as:
For Free Cooling (FC) Mode:
- V1 and V2 are closed, and V3 and V4 are open;
For Fully Mechanical Cooling (FMC) Mode:
- V1 and V2 are open, and V3 and V4 are closed;
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | num (from PartialChillerWSEInterface) | 2 | Total number of chillers and waterside economizer |
| Boolean | use_controller (from PartialControllerInterface) | true | Set to ture if the built-in controller is enabled to maintain the outlet temperature on the load side of a heat exchanger |
| Integer | numVal (from ValvesParameters) | Number of valves | |
| Integer | numAct (from SignalFilterParameters) | 4 | Number of filters |
| Boolean | activate_ThrWayVal (from ThreeWayValveParameters) | Activate the use of three-way valve: True-use three-way valve; False-not use the three-way valve | |
| Boolean | homotopyInitialization (from PartialChillerWSE) | true | = true, use homotopy method |
| 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 |
| Chiller | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_chi_nominal (from PartialChillerWSEInterface) | Nominal mass flow rate on the medium 1 side in the chiller | |
| Modelica.Units.SI.MassFlowRate | m2_flow_chi_nominal (from PartialChillerWSEInterface) | Nominal mass flow rate on the medium 2 side in the chiller | |
| Modelica.Units.SI.PressureDifference | dp1_chi_nominal (from FourPortResistanceChillerWSE) | Pressure difference on medium 1 side in the chillers | |
| Modelica.Units.SI.PressureDifference | dp2_chi_nominal (from FourPortResistanceChillerWSE) | Pressure difference on medium 2 side in the chillers | |
| Integer | numChi (from PartialChillerWSE) | Number of chillers | |
| Buildings.Fluid.Chillers.Data.ElectricEIR.Generic[numChi] | perChi (from PartialChillerWSE) | Performance data for chillers | |
| Waterside economizer | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_wse_nominal (from PartialChillerWSEInterface) | Nominal mass flow rate on the medium 1 side in the waterside economizer | |
| Modelica.Units.SI.MassFlowRate | m2_flow_wse_nominal (from PartialChillerWSEInterface) | Nominal mass flow rate on the medium 2 side in the waterside economizer | |
| Modelica.Units.SI.PressureDifference | dp1_wse_nominal (from FourPortResistanceChillerWSE) | Pressure difference on medium 1 side in the waterside economizer | |
| Modelica.Units.SI.PressureDifference | dp2_wse_nominal (from FourPortResistanceChillerWSE) | Pressure difference on medium 2 side in the waterside economizer | |
| Modelica.Units.SI.Efficiency | eta (from PartialChillerWSE) | 0.8 | Heat exchange effectiveness |
| Advanced | |||
| Medium1.MassFlowRate | m1_flow_small (from PartialChillerWSEInterface) | 1E-4*abs(m1_flow_chi_nominal) | Small mass flow rate for regularization of zero flow |
| Medium2.MassFlowRate | m2_flow_small (from PartialChillerWSEInterface) | 1E-4*abs(m2_flow_chi_nominal) | Small mass flow rate for regularization of zero flow |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_1 (from ThreeWayValveParameters) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_1 in the three-way valve |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_2 (from ThreeWayValveParameters) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_2 in the three-way valve |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_3 (from ThreeWayValveParameters) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_3 in the three-way valve |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialChillerWSEInterface) | false | = true, if actual temperature at port is computed |
| Flow resistance › Medium 1 | |||
| Boolean | computeFlowResistance1 (from FourPortResistanceChillerWSE) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp1 (from FourPortResistanceChillerWSE) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n1 (from FourPortResistanceChillerWSE) | 2 | Flow exponent, n1=1 for laminar, n1=2 for turbulent |
| Boolean | linearizeFlowResistance1 (from FourPortResistanceChillerWSE) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM1 (from FourPortResistanceChillerWSE) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Flow resistance › Medium 2 | |||
| Boolean | computeFlowResistance2 (from FourPortResistanceChillerWSE) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp2 (from FourPortResistanceChillerWSE) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n2 (from FourPortResistanceChillerWSE) | 2 | Flow exponent, n2=1 for laminar, n2=2 for turbulent |
| Boolean | linearizeFlowResistance2 (from FourPortResistanceChillerWSE) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM2 (from FourPortResistanceChillerWSE) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Controller | |||
| Modelica.Blocks.Types.SimpleController | controllerType (from PartialControllerInterface) | Modelica.Blocks.Types.SimpleController.PID | Type of controller |
| Real | k (from PartialControllerInterface) | 1 | Gain of controller |
| Modelica.Units.SI.Time | Ti (from PartialControllerInterface) | 0.5 | Time constant of integrator block |
| Modelica.Units.SI.Time | Td (from PartialControllerInterface) | 0.1 | Time constant of derivative block |
| Real | yMax (from PartialControllerInterface) | 1 | Upper limit of output |
| Real | yMin (from PartialControllerInterface) | 0 | Lower limit of output |
| Real | wp (from PartialControllerInterface) | 1 | Set-point weight for Proportional block (0..1) |
| Real | wd (from PartialControllerInterface) | 0 | Set-point weight for Derivative block (0..1) |
| Real | Ni (from PartialControllerInterface) | 0.9 | Ni*Ti is time constant of anti-windup compensation |
| Real | Nd (from PartialControllerInterface) | 10 | The higher Nd, the more ideal the derivative block |
| Boolean | reverseActing (from PartialControllerInterface) | false | Set to true for throttling the water flow rate through a cooling coil controller |
| Controller › Initialization | |||
| Modelica.Blocks.Types.Init | initType (from PartialControllerInterface) | Modelica.Blocks.Types.Init.InitialState | Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output) |
| Real | xi_start (from PartialControllerInterface) | 0 | Initial or guess value value for integrator output (= integrator state) |
| Real | xd_start (from PartialControllerInterface) | 0 | Initial or guess value for state of derivative block |
| Real | yCon_start (from PartialControllerInterface) | 0 | Initial value of output from the controller |
| Controller › Integrator reset | |||
| Buildings.Types.Reset | reset (from PartialControllerInterface) | Buildings.Types.Reset.Disabled | Type of controller output reset |
| Real | y_reset (from PartialControllerInterface) | xi_start | Value to which the controller output is reset if the boolean trigger has a rising edge, used if reset == Buildings.Types.Reset.Parameter |
| Two-way valve | |||
| Buildings.Fluid.Types.CvTypes | CvData (from ValvesParameters) | Buildings.Fluid.Types.CvTypes.OpPoint | Selection of flow coefficient |
| Real | Kv (from ValvesParameters) | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
| Real | Cv (from ValvesParameters) | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
| Modelica.Units.SI.Area | Av (from ValvesParameters) | Av (metric) flow coefficient | |
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from ValvesParameters) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dpValve_nominal (from ValvesParameters) | fill(6000, numVal) | Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint |
| Real | lValChi (from PartialChillerWSE) | {0.0001, 0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
| Real | lValWSE (from PartialChillerWSE) | {0.0001, 0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
| Pressure-flow linearization | |||
| Real | deltaM (from ValvesParameters) | 0.02 | Fraction of nominal flow rate where linearization starts, if y=1 |
| Advanced › Two-way valve | |||
| Modelica.Units.SI.Density | rhoStd (from ValvesParameters) | Inlet density for which valve coefficients are defined | |
| Dynamics › Time needed to open or close valve | |||
| Boolean | use_strokeTime (from SignalFilterParameters) | false | = true, if opening is filtered to avoid a step change in actuator position |
| Modelica.Units.SI.Time | strokeTime (from SignalFilterParameters) | 30 | Time needed to open or close valve |
| Modelica.Blocks.Types.Init | initValve (from SignalFilterParameters) | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Real | yValve_start (from SignalFilterParameters) | fill(1, numAct) | Initial value of output:0-closed, 1-fully opened |
| Real | yValChi_start (from PartialChillerWSE) | fill(0, numChi) | Initial value of output from on/off valves in chillers |
| Real | yValWSE_start (from PartialChillerWSE) | 0 | Initial value of output from on/off valve in WSE |
| Real | yThrWayValWSE_start (from PartialChillerWSE) | 0 | Initial value of output from three-way bypass valve in WSE |
| Three-way Valve | |||
| Modelica.Units.SI.PressureDifference | dpThrWayVal_nominal (from ThreeWayValveParameters) | 6000 | Nominal pressure drop of fully open valve |
| Real | fraK_ThrWayVal (from ThreeWayValveParameters) | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2)for the three-way valve |
| Real[2] | l_ThrWayVal (from ThreeWayValveParameters) | {0.0001, 0.0001} | Bypass valve leakage, l=Kv(y=0)/Kv(y=1) |
| Real | R (from ThreeWayValveParameters) | 50 | Rangeability, R=50...100 typically for the three-way valve |
| Real | delta0 (from ThreeWayValveParameters) | 0.01 | Range of significant deviation from equal percentage law for the three-way valve |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialChillerWSE) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Dynamics › Chiller | |||
| Modelica.Units.SI.Time | tauChi1 (from PartialChillerWSE) | 30 | Time constant at nominal flow in chillers |
| Modelica.Units.SI.Time | tauChi2 (from PartialChillerWSE) | 30 | Time constant at nominal flow in chillers |
| Dynamics › Waterside economizer | |||
| Modelica.Units.SI.Time | tauWSE (from PartialChillerWSE) | 10 | Time constant at nominal flow for dynamic energy and momentum balance of the three-way valve |
| Initialization › Medium 1 | |||
| Medium1.AbsolutePressure | p1_start (from PartialChillerWSE) | Medium1.p_default | Start value of pressure |
| Medium1.Temperature | T1_start (from PartialChillerWSE) | Medium1.T_default | Start value of temperature |
| Medium1.MassFraction[Medium1.nX] | X1_start (from PartialChillerWSE) | Medium1.X_default | Start value of mass fractions m_i/m |
| Medium1.ExtraProperty[Medium1.nC] | C1_start (from PartialChillerWSE) | fill(0, Medium1.nC) | Start value of trace substances |
| Medium1.ExtraProperty[Medium1.nC] | C1_nominal (from PartialChillerWSE) | fill(1E-2, Medium1.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Initialization › Medium 2 | |||
| Medium2.AbsolutePressure | p2_start (from PartialChillerWSE) | Medium2.p_default | Start value of pressure |
| Medium2.Temperature | T2_start (from PartialChillerWSE) | Medium2.T_default | Start value of temperature |
| Medium2.MassFraction[Medium2.nX] | X2_start (from PartialChillerWSE) | Medium2.X_default | Start value of mass fractions m_i/m |
| Medium2.ExtraProperty[Medium2.nC] | C2_start (from PartialChillerWSE) | fill(0, Medium2.nC) | Start value of trace substances |
| Medium2.ExtraProperty[Medium2.nC] | C2_nominal (from PartialChillerWSE) | fill(1E-2, Medium2.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Dynamics › Temperature Sensor | |||
| Modelica.Units.SI.Time | tauSenT (from PartialChillerWSE) | 1 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) |
| Modelica.Blocks.Types.Init | initTSenor (from PartialChillerWSE) | Modelica.Blocks.Types.Init.InitialState | Type of initialization of the temperature sensor (InitialState and InitialOutput are identical) |
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) | |
| Modelica.Blocks.Interfaces.RealInput | TSet (from PartialChillerWSEInterface) | Set point for leaving water temperature | |
| Modelica.Blocks.Interfaces.BooleanInput[num] | on (from PartialChillerWSEInterface) | Set to true to enable equipment, or false to disable equipment | |
| Modelica.Blocks.Interfaces.BooleanInput | trigger (from PartialControllerInterface) | Resets the controller output when trigger becomes true | |
| Modelica.Blocks.Interfaces.RealInput | y_reset_in (from PartialControllerInterface) | Input signal for state to which integrator is reset, enabled if reset = Buildings.Types.Reset.Input | |
| Modelica.Blocks.Interfaces.RealOutput | TCHWSupWSE (from PartialChillerWSE) | Chilled water supply temperature in the waterside economizer | |
| Modelica.Blocks.Interfaces.RealOutput[numChi] | powChi (from PartialChillerWSE) | Electric power consumed by chiller compressor |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium1.MassFlowRate | m1_flow (from PartialChillerWSEInterface) | 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 PartialChillerWSEInterface) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium2.MassFlowRate | m2_flow (from PartialChillerWSEInterface) | 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 PartialChillerWSEInterface) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium1.ThermodynamicState | sta_a1 (from PartialChillerWSEInterface) | Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) | Medium properties in port_a1 |
| Medium1.ThermodynamicState | sta_b1 (from PartialChillerWSEInterface) | Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) | Medium properties in port_b1 |
| Medium2.ThermodynamicState | sta_a2 (from PartialChillerWSEInterface) | Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) | Medium properties in port_a2 |
| Medium2.ThermodynamicState | sta_b2 (from PartialChillerWSEInterface) | Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) | Medium properties in port_b2 |
| Buildings.Applications.BaseClasses.Equipment.ElectricChillerParallel | chiPar (from PartialChillerWSE) | Chillers with identical nominal parameters but different performance curves | |
| Buildings.Applications.DataCenters.ChillerCooled.Equipment.WatersideEconomizer | wse (from PartialChillerWSE) | Waterside economizer | |
| Buildings.Fluid.Sensors.TemperatureTwoPort | senTem (from PartialChillerWSE) | Temperature sensor | |
| Fluid.FixedResistances.Junction | spl1 (from PartialChillerWSE) | Splitter | |
| Fluid.FixedResistances.Junction | jun1 (from PartialChillerWSE) | Junction | |
| Fluid.FixedResistances.Junction | spl2 | Splitter | |
| Fluid.FixedResistances.Junction | jun2 | Junction |
Revisions
-
April 13, 2021, by Kathryn Hinkelman:
Added junctions. -
July 1, 2017, by Yangyang Fu:
First implementation.