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

# How to develop an EMS program to control the water flow rate of a low temperature radiant system?

I am not sure if what I am trying to do is feasible and logic. I want to control a constant flow low temp radiant system based on the radiant surface temperature (in my case ceiling surface temperature). I tried to add a EMS sensor for Surface Inside Face Temperature for the Ceiling surface; for the actuator I am using "Constant Flow Low Temp Radiant” with the control type “Water Mass Flow Rate”. My problem is that I am not sure what should be the logic of my program. Basically, I want to provide chilled water only after the heat gains from a room have melted all the phase change material (PCM) in which the pipes of a radiant system are embedded. I am assuming that all the PCM is melted when the temperature of the ceiling is a couple of degrees above the melting point (around 23C). In my case, I want to run the chilled water when the surface temperature (which in the model should be the same as the PCM temperature) is above 25 C, which should be an indication that all the PCM is melted and needs to be regenerated. The chilled water is used to regenerate (solidify) the PCM by reducing its temperature to 21 C. When the temperature reaches 21 C, the chilled water stops and allows the system to work passively by absorbing internal heat gains until the surface temperature (PCM temperature) reaches 25C, when the system starts to work again.

Any suggestions???

edit retag close merge delete

Sort by » oldest newest most voted

If this is your first project using EMS, I would really recommend reviewing the EMS Application Guide.

An EMS Sensor can be used for anything that EnergyPlus calculates as an output variable or meter. So, anything that you can find in the .rdd or .mdd output files after an EnergyPlus simulation can be used as an EMS Sensor. You should be able to use the Surface Inside Face Temperature output variable for the zone's ceiling surface. An example of the IDF text for this EMS Sensor is below, with "**" to denote the input field where you will need to apply the actual name of the radiant ceiling surface object.

EnergyManagementSystem:Sensor,
Ceiling_Surface_Temp,                 !- Name
**  Radiant Ceiling Surface,             !- Output:Variable or Output:Meter Index Key Name
Surface Inside Face Temperature; !- Output:Variable or Output:Meter Name


Unlike an EMS Sensor, an EMS Actuator can only be used from a pre-defined list. Checking under the HVAC list of actuators, you are correct to use the actuator Constant Flow Low Temp Radiant with the control type “Water Mass Flow Rate”. Note that for this actuator, you should also use the name of the ZoneHVAC:LowTemperatureRadiant:ConstantFlow object that you are trying to alter water flow for -- not the name of the ceiling surface itself. An example of the IDF text for this EMS Sensor is below, with "**" to denote the input field where you will need to apply the actual name of the radiant ceiling object.

EnergyManagementSystem:Actuator,
**  Radiant Ceiling,                            !- Actuated Component Unique Name
Constant Flow Low Temp Radiant,   !- Actuated Component Type
Water Mass Flow Rate;                    !- Actuated Component Control Type


Since you want to have water flow through the radiant panel start when ceiling surface temp reaches 25C, then continue until the ceiling surface temp reaches 21C, you will need to add an EMS Trend Variable object to monitor the historical value of the ceiling surface temp. An example of the IDF text for this EMS Trend Variable is below, with "**" to denote the input field where you will need to apply the actual number of timesteps that you want to monitor. This will depend upon the Timestep object settings in your input file, as well as how long you want the radiant system to maintain 21 C for the ceiling surface temp before shutting off chilled water flow.

EnergyManagementSystem:TrendVariable,
Ceiling_Surface_Temp,                           !- EMS Variable Name
**  8;                                            !- Number of Timesteps to be Logged


The EMS Program is where you write the logic with the EnergyPlus Runtime Language (Erl) that uses the sensor information to override the actuator. In order to use the EMS Trend Variable in the EMS Program, you will need to use built-in trend variable functions. To check that the ceiling surface temp has been below 21C for some time, you will likely want to use the @TrendMax function. Your EMS Program will look something like this (assuming the desired water mass flow rate is 1 kg/s).

EnergyManagementSystem:Program,
IF Ceiling_Surface_Temp > 25,
SET Radiant_Ceiling_Water_Flow = 1 ...
more

@luisclv@Aaron Boranian Thank you for your answers. I already implemented what @luisclv suggested and it seems to work, although I got a severe error that says "Loads Initialization did not Converge". I will try to solve this by implementing what EnergyPlus suggested, which indicates "1) very high thermal mass such as very thick concrete (solution: increase max number of warmup days in the BUILDING object)". I will also try to implement what @Aaron Boranian suggested and compare both results. BTW, @Aaron Boranian thank you very much for your detailed response, it helped me a lot.

( 2019-04-15 12:32:40 -0500 )edit

@Aaron Boranian I recently tried to implement what you suggested in this post but apparently there are problems with this syntax: @TrendMax(Radiant_Ceiling_Surface_Temp_Trend, 8) < = 21, Is this the right way to use @TrendMax?

( 2019-05-30 10:51:40 -0500 )edit

First, make sure that your ZoneHVACLowTempRadiantConstFlow object has the following parameters:

• availabilitySchedule set to an Always Off schedule.
• temperatureControlType set to MeanRadiantTemperature and that temperature set to something substantially lower than your surface setpoint (in your case 21 C).

Then, write an EMS routine that will do the following:

• Read the Surface Inside Face Temperature for the ceiling in question.
• If the temperature is above 25 C (from your requirements), it will change the availability schedule an Always On schedule.
• If the temperature is below 21 C (from your requirements), it will change the availability schedule an Always Off schedule.

That should let you use the equipment as intended. You probably won't be able to autosize correctly the equipment to work under these conditions, so you should hard-size the parameters. Also, this would most likely only work for cooling.

more