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

Revision history [back]

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_Water_Flow,          !- Name
**  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,
  Radiant_Ceiling_Surface_Temp_Trend,   !- Name
  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,
  Radiant_Ceiling_Program,         ! Name
  IF Ceiling_Surface_Temp > 25,
  SET Radiant_Ceiling_Water_Flow = 1.0, ! Water flows if ceiling temp is > 25C this timestep
  ELSEIF @TrendMax(Radiant_Ceiling_Surface_Temp_Trend, 8) < = 21,
  SET Radiant_Ceiling_Water_Flow = 1.0, ! Water flows if max ceiling temp over last 8 timesteps is <= 21C this timestep
  ELSE,
  SET Radiant_Ceiling_Water_Flow = 0.0, ! Water doesn't flow for all other cases
  ENDIF;

You will likely need to analyze the impact of changing the number of timesteps that you want the chilled water to "charge" the PCM and re-solidify it, as well as the desired flow rate for the chilled water to pass through the radiant ceiling during this charging period.

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_Water_Flow,          !- Name
**  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,
  Radiant_Ceiling_Surface_Temp_Trend,   !- Name
  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,
  Radiant_Ceiling_Program,         ! Name
  SET Max_Ceiling_Temp = @TrendMax Radiant_Ceiling_Surface_Temp_Trend 8,
  IF Ceiling_Surface_Temp > 25,
  SET Radiant_Ceiling_Water_Flow = 1.0, ! Water flows if ceiling temp is > 25C this timestep
  ELSEIF @TrendMax(Radiant_Ceiling_Surface_Temp_Trend, 8) Max_Ceiling_Temp < = 21,
  SET Radiant_Ceiling_Water_Flow = 1.0, ! Water flows if max ceiling temp is <= 21C over last 8 timesteps is <= 21C this timestep
timesteps
  ELSE,
  SET Radiant_Ceiling_Water_Flow = 0.0, ! Water doesn't flow for all other cases
  ENDIF;

You will likely need to analyze the impact of changing the number of timesteps that you want the chilled water to "charge" the PCM and re-solidify it, as well as the desired flow rate for the chilled water to pass through the radiant ceiling during this charging period.