Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Condenser water flow rate with EMS: EnergyPlus

asked 2019-08-26 08:04:25 -0500

Gio's avatar

My question is related to this issue ( ticket: where the condenser pump is not working as expected.

Is there a way to control the condenser water flow rate with an EMS program? I guess it could be done using the "Chiller Condenser Heat Transfer Rate [W]" output as sensor and a "SetpointManager:Scheduled" as actuator. Unfortunately it is not possible since the condenser loop requires a temperature setpoint.

Is there another way?

edit retag flag offensive close merge delete

3 Answers

Sort by » oldest newest most voted

answered 2019-08-30 05:23:30 -0500

There is an actuator for pumps called Pump Mass Flow Rate [kg/s] (cf EMS Application Guide) that you should use for this.

Chiller Condenser Heat Transfer Rate [W] as a sensor would probably work if you have only one chiller on the demand side of your condenser loop. Otherwise you can probably use the Plant Supply Side Cooling Demand Rate [W] as a sensor.

You'll probably also need to get the Entering Water Temperature (EWT) too, for eg looking at Plant Supply Side Inlet Temperature. If your SetpointManager:Scheduled isn't using a fixed value that you can hardcode in your EMS program, you also need to define a Sensor on the Schedule Value for the corresponding schedule, that will give you the Leaving Water Temperature (LWT).

I think Plant Supply Side Cooling Demand Rate is a positive number, in which case I guess you could try this:

$$ \dot{Q}_{demand} = \dot{m} \cdot C_p \cdot (T_{EWT} - T_{LWT})$$

Dimensional analysis:

$$ [W = J \cdot s^{-1}] = [kg.s^{-1}] \cdot [^{-1}.K^{-1}] \cdot [K]$$

So, solving for your mass flow rate:

$$ \Leftrightarrow \dot{m} = \frac{\dot{Q}_{demand}}{C_p \cdot (T_{EWT} - T_{LWT})}$$

You can use @CpCW(Temperature) in ERL if you'd like, but it's pointless since it'll always return 4180.0 anyways (source code: Psychrometrics.hh)

Disclaimer: I have not tested any of the above, not sure whether it'll work, integrate well with what the cooling tower is doing, nor what calling point would be appropriate.

edit flag offensive delete link more


uh yes, those equations are exactly what I was thinking about: the pump actuator is what I was missing. I guess I will try with a fixed leaving water temperature at 30°C and using the entering water temperature as sensor. I'm going to try it as soon as possible and I'll post some results here.

Gio's avatar Gio  ( 2019-08-30 05:36:29 -0500 )edit

I think it works....! Thanks a lot, I'll add the results in another answer below.

Gio's avatar Gio  ( 2019-09-05 02:04:33 -0500 )edit

answered 2019-09-05 02:30:32 -0500

Gio's avatar

updated 2019-09-05 02:32:36 -0500

Following the previous answer by Julien Marrec I tried the following:

  1. I used the example file "CoolingTower_TwoSpeed"
  2. Run period 01/05 to 20/05 and Weather file "USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw"
  3. I created a model with EMS called "CoolingTower_TwoSpeed_EMS"
  4. I added a sensor using the variable "Plant Supply Side Cooling Demand Rate" with the name "PSSCDR"
  5. I added an actuator on the pump variable "Pump Mass Flow Rate" with the name "PMFR"
  6. I added a simple program with the line "set PMFR=PSSCDR/4180/5+1.1*0.025"

Note that it is a very rough control: I used a fixed temperature difference of 5 degrees. The main problem is that with this method the plant temperatures are getting too hot during the warm-up and you will get an error. Therefore I added a constant value equal to the 2.5% of the design pump mass flow rate (1.1 kg/s): it solved the temperatures error in my case.

I obtained: -21.88% pump energy consumption and -1% in cooling energy consumption (beacause the chiller condensed inlet temperature is lower in the EMS case). The energy saving is related to this specific example.

image description

edit flag offensive delete link more

answered 2023-11-09 23:49:59 -0500

Keigo's avatar

updated 2023-11-30 01:59:52 -0500

Surprisingly, EnergyPlus still lacks a feature of variable condenser water flow as of V23-2-0. I referred to @Julien Marrec and @Gio 's 4 year old answers.

My case is as follows. The condenser water loop has 6 nos. of CoolingTower:SingleSpeed and one HeaderedPumps:VariableSpeed with 6 pumps in bank.

image description

After much consideration, my EMS was finally as follows.

    CHWloop CndW Temp Manager,  !- Name
    Temperature,             !- Control Variable
    OutdoorAirWetBulb,       !- Reference Temperature Type
    3.6,                     !- Offset Temperature Difference {deltaC}
    32,                      !- Maximum Setpoint Temperature {C}
    5,                       !- Minimum Setpoint Temperature {C}
    CHWloop CndW Supply Setpoint Nodes;  !- Setpoint Node or NodeList Name

    ChW_Supply_Cooling_Demand,  !- Name
    CHWloop Chilled Water Loop,  !- Output:Variable or Output:Meter Index Key Name
    Plant Supply Side Cooling Demand Rate;  !- Output:Variable or Output:Meter Name

    CndW_Supply_Inlet_Temp,  !- Name
    CHWloop Condenser Water Loop,  !- Output:Variable or Output:Meter Index Key Name
    Plant Supply Side Inlet Temperature ;  !- Output:Variable or Output:Meter Name

    Site_OA_WB,              !- Name
    Environment,             !- Output:Variable or Output:Meter Index Key Name
    Site Outdoor Air Wetbulb Temperature ;  !- Output:Variable or Output:Meter Name

    CndW_Demand_Outlet_Temp,  !- Name
    CHWloop CndW Demand Outlet,  !- Output:Variable or Output:Meter Index Key Name
    System Node Temperaure ;  !- Output:Variable or Output:Meter Name

    CndW_Supply_Pump_Mass_Flow,  !- Name
    CndW Supply Pump,!- Actuated Component Unique Name
    Pump,                    !- Actuated Component Type
    Pump Mass Flow Rate;     !- Actuated Component Control Type

    EMS_PCM_CndW_Supply_Pump_Mass_Flow_Override,  !- Name
    InsideHVACSystemIterationLoop,  !- EnergyPlus Model Calling Point
    EMS_Program_CndW_Supply_Pump_Mass_Flow_Override;  !- Program Name 1

    EMS_Program_CndW_Supply_Pump_Mass_Flow_Override,  !- Name
    IF ChW_Supply_Cooling_Demand == 0,  !- Program Line 1
    SET CndW_Supply_Pump_Mass_Flow = 0,  !- Program Line 2
    ELSEIF CndW_Supply_Inlet_Temp <= 5,  !- A4
    SET CndW_Supply_Pump_Mass_Flow = 80.3,  !- A5
    ELSEIF CndW_Demand_Outlet_Temp >= 40,  !- A6
    SET CndW_Supply_Pump_Mass_Flow = 963.8,  !- A7
    ELSEIF Site_OA_WB <= 1.4,  !- A8
    SET CndW_Supply_Pump_Mass_Flow = @MIN (@MAX 20.075 (ChW_Supply_Cooling_Demand * 1.25 / 4180 / (CndW_Supply_Inlet_Temp - 5))) 963.8,  !- A9
    ELSE,                    !- A10
    SET CndW_Supply_Pump_Mass_Flow = @MIN (@MAX 20.075 (ChW_Supply_Cooling_Demand * 1.25 / 4180 / (CndW_Supply_Inlet_Temp - (Site_OA_WB + 3.6)))) 963.8,  !- A11
    ENDIF;                   !- A12

The chart below shows the condensor water pump flow rate of two cases (No EMS and With EMS) in May as an example. The building has retails, restaurants and plant rooms, and chillers run 24h/day. Please note that since the condenser water pump is a headered pump with 6 pumps in bank, the condenser water flow rate varies to some extent according to the number of cooling towers in operation even if there is no EMS. HeaderedPumps:VariableSpeed acts as if it is HeaderedPumps:ConstantSpeed if there is no EMS.

image description

The annual electricity end uses are -51.4% condenser water pump, +8.8% heat rejection, +0.3% cooling, and -0.1% chilled water pump in my case. The total end use of above 4 categories is -10.3%. No increase in the cooling unmet hours.

Here are some findings.

  1. I had to use Plant Supply Side Cooling Demand Rate [W] of Chilled water loop instead of Condenser water loop to calculate Pump Mass Flow Rate of the condenser water pump. When I used Plant Supply Side Cooling Demand Rate [W] of Condenser ...

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops


Question Tools



Asked: 2019-08-26 08:04:25 -0500

Seen: 864 times

Last updated: Nov 30 '23