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

Revision history [back]

Setting daily and hourly setpoint temperatures in EMS

Hi everyone,

The purpose of this question is to set daily temperatures in Designbuilder. I've been trying many ways to do this, and I actually achieved it by means of overriding the heating and cooling setpoint schedules in EMS, but as a result the model became so heavy and running simulations was quite time-consuming. So, I'm going to specify what I've tried:

  • By Compact Schedules in Detailed HVAC and Detailes HVAC data: the main problem is that there is a limit in the lenght of compact schedules, so I can't specify setpoints for a number of hours within a day because the lenght is larger than Designbuilder allows. Please see below an example of this.

Schedule:Compact, Heating Setpoint, Any Number, Through: 01/01, For: Alldays, Until: 7:00, 17.00, Until: 23:00, 20.00, Until: 24:00, 17.00, Through: 01/02, For: Alldays, Until: 7:00, 17.00, Until: 23:00, 20.00, Until: 24:00, 17.00, etc.

  • By overriding the heating and cooling setpoint schedules in EMS: it works, but the model becomes quite heavy and it's so tedious to work with it. Please see below an example of this:

<foralloccupiedzones> EnergyManagementSystem:Actuator, R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST, FORSCRIPT_ACST, Schedule:Compact, Schedule Value; <loopnextzone>

<foralloccupiedzones> EnergyManagementSystem:Actuator, R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_AHST, FORSCRIPT_AHST, Schedule:Compact, Schedule Value; <loopnextzone>

EnergyManagementSystem:ProgramCallingManager, R_Huesca_Cfa_CATIII_2018_OUT_CTE_Prog, BeginTimestepBeforePredictor, RHuescaCfaCATIII2018OUTCTEACSTProg, RHuescaCfaCATIII2018OUTCTEAHSTProg;

EnergyManagementSystem:Program, RHuescaCfaCATIII2018OUTCTEACSTProg, <foralloccupiedzones> IF (DayOfYear == 1) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 1) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 1) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 1) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 2) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 2) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, etc.

  • By overriding the heating and cooling actuators in zone temperature control in EMS: I think this might be the best way to achieve this, but the problem is that, even setting the zone control thermostat to operative temperature, the setpoints are applied to zone mean air temperature. Please see below an example of the EMS script below, and please find attached the output files from the simulation in EP-Launch in the following link, both of them only for the day 01/01:

Link: https://drive.google.com/open?id=1U_VuwBB98ZA95rDArMQuHbMtivgrL7d3

<foralloccupiedzones> EnergyManagementSystem:Actuator, Cooling_Setpoint_<loopzonevariablename>, <loopzoneidfname>, Zone Temperature Control, Cooling Setpoint; <loopnextzone>

<foralloccupiedzones> EnergyManagementSystem:Actuator, Heating_Setpoint_<loopzonevariablename>, <loopzoneidfname>, Zone Temperature Control, Heating Setpoint; <loopnextzone>

EnergyManagementSystem:ProgramCallingManager, AdaptiveSetpointProgram, BeginTimestepBeforePredictor, AdaptiveSetpointProgram;

EnergyManagementSystem:Program, AdaptiveSetpointProgram, if (DayOfYear == 1) && (CurrentTime < 7), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> = 27.35, set Heating_Setpoint_<loopzonevariablename> = 17, <loopnextzone> elseif (DayOfYear == 1) && (CurrentTime < 15), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> = 50, set Heating_Setpoint_<loopzonevariablename> = 17, <loopnextzone> elseif (DayOfYear == 1) && (CurrentTime < 23), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> = 27.35, set Heating_Setpoint_<loopzonevariablename> = 20, <loopnextzone> elseif (DayOfYear == 1) && (CurrentTime < 24), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> = 27.35, set Heating_Setpoint_<loopzonevariablename> = 17, <loopnextzone> endif;

Does anyone know why the setpoints are being applied to zone mean aire temperature insted of operative temperature, or otherwise, another way to achieve this? Thanks in advance.

P.S. I'm new in EMS, so i'm sorry if I didn't use suitable terms. Hope you have understood it though.

Setting daily and hourly setpoint temperatures in EMS

Hi everyone,

The purpose of this question is to set daily temperatures in Designbuilder. I've been trying many ways to do this, and I actually achieved it by means of overriding the heating and cooling setpoint schedules in EMS, but as a result the model became so heavy and running simulations was quite time-consuming. So, I'm going to specify what I've tried:

  • By Compact Schedules in Detailed HVAC and Detailes Detailed HVAC data: the main problem is that there is a limit in the lenght of compact schedules, so I can't specify setpoints for a number of hours within a day because the lenght is larger than Designbuilder allows. Please see below an example of this.

Schedule:Compact,
 Heating Setpoint,
 Any Number,
 Through: 01/01,
 For: Alldays,
 Until: 7:00, 17.00,
 Until: 23:00, 20.00,
 Until: 24:00, 17.00,
 Through: 01/02,
 For: Alldays,
 Until: 7:00, 17.00,
 Until: 23:00, 20.00,
 Until: 24:00, 17.00, etc.

  • etc.

By overriding the heating and cooling setpoint schedules in EMS: it works, but the model becomes quite heavy and it's so tedious to work with it. Please see below an example of this:

<foralloccupiedzones>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
   R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST,
  R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST,
 FORSCRIPT_ACST,
  Schedule:Compact,
  Schedule Value;
<loopnextzone>

<foralloccupiedzones> <LoopNextZone> <ForAllOccupiedZones> EnergyManagementSystem:Actuator, R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_AHST, R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_AHST, FORSCRIPT_AHST, Schedule:Compact, Schedule Value; <loopnextzone>

<LoopNextZone> EnergyManagementSystem:ProgramCallingManager, R_Huesca_Cfa_CATIII_2018_OUT_CTE_Prog, BeginTimestepBeforePredictor, RHuescaCfaCATIII2018OUTCTEACSTProg, RHuescaCfaCATIII2018OUTCTEAHSTProg; EnergyManagementSystem:Program, RHuescaCfaCATIII2018OUTCTEACSTProg, <ForAllOccupiedZones> IF (DayOfYear == 1) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 1) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 1) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 1) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 2) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 2) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, etc.

EnergyManagementSystem:ProgramCallingManager, R_Huesca_Cfa_CATIII_2018_OUT_CTE_Prog, BeginTimestepBeforePredictor, RHuescaCfaCATIII2018OUTCTEACSTProg, RHuescaCfaCATIII2018OUTCTEAHSTProg;

EnergyManagementSystem:Program, RHuescaCfaCATIII2018OUTCTEACSTProg, <foralloccupiedzones> IF (DayOfYear == 1) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 1) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 1) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 1) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 7), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, ELSEIF (DayOfYear == 2) && (CurrentTime < 15), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 50, ELSEIF (DayOfYear == 2) && (CurrentTime < 23), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 25, ELSEIF (DayOfYear == 2) && (CurrentTime < 24), Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<loopzonevariablename>_FORSCRIPT_ACST = 27, etc.

  • By overriding the heating and cooling actuators in zone temperature control in EMS: I think this might be the best way to achieve this, but the problem is that, even setting the zone control thermostat to operative temperature, the setpoints are applied to zone mean air temperature. Please see below an example of the EMS script below, and please find attached the output files from the simulation in EP-Launch in the following link, both of them only for the day 01/01:

Link: https://drive.google.com/open?id=1U_VuwBB98ZA95rDArMQuHbMtivgrL7d3

<foralloccupiedzones>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
   Cooling_Setpoint_<loopzonevariablename>,
   <loopzoneidfname>,
 Cooling_Setpoint_<LoopZoneVariableName>,
  <LoopZoneIDFName>,
  Zone Temperature Control,
   Cooling Setpoint;
<loopnextzone>

<foralloccupiedzones> <LoopNextZone> <ForAllOccupiedZones> EnergyManagementSystem:Actuator, Heating_Setpoint_<loopzonevariablename>, <loopzoneidfname>, Heating_Setpoint_<LoopZoneVariableName>, <LoopZoneIDFName>, Zone Temperature Control, Heating Setpoint; <loopnextzone>

<LoopNextZone> EnergyManagementSystem:ProgramCallingManager, AdaptiveSetpointProgram, BeginTimestepBeforePredictor, AdaptiveSetpointProgram;

AdaptiveSetpointProgram; EnergyManagementSystem:Program, AdaptiveSetpointProgram, if (DayOfYear == 1) && (CurrentTime < 7), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> <ForAllOccupiedZones> set Cooling_Setpoint_<LoopZoneVariableName> = 27.35, set Heating_Setpoint_<loopzonevariablename> set Heating_Setpoint_<LoopZoneVariableName> = 17, <loopnextzone> <LoopNextZone> elseif (DayOfYear == 1) && (CurrentTime < 15), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> <ForAllOccupiedZones> set Cooling_Setpoint_<LoopZoneVariableName> = 50, set Heating_Setpoint_<loopzonevariablename> set Heating_Setpoint_<LoopZoneVariableName> = 17, <loopnextzone> <LoopNextZone> elseif (DayOfYear == 1) && (CurrentTime < 23), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> <ForAllOccupiedZones> set Cooling_Setpoint_<LoopZoneVariableName> = 27.35, set Heating_Setpoint_<loopzonevariablename> set Heating_Setpoint_<LoopZoneVariableName> = 20, <loopnextzone> <LoopNextZone> elseif (DayOfYear == 1) && (CurrentTime < 24), <foralloccupiedzones> set Cooling_Setpoint_<loopzonevariablename> <ForAllOccupiedZones> set Cooling_Setpoint_<LoopZoneVariableName> = 27.35, set Heating_Setpoint_<loopzonevariablename> set Heating_Setpoint_<LoopZoneVariableName> = 17, <loopnextzone> endif;

<LoopNextZone> endif;

Does anyone know why the setpoints are being applied to zone mean aire temperature insted of operative temperature, or otherwise, another way to achieve this? Thanks in advance.

P.S. I'm new in EMS, so i'm sorry if I didn't use suitable terms. Hope you have understood it though.

Setting daily and hourly setpoint temperatures in EMS

Hi everyone,

The purpose of this question is to set daily temperatures in Designbuilder. I've been trying many ways to do this, and I actually achieved it by means of overriding the heating and cooling setpoint schedules in EMS, but as a result the model became so heavy and running simulations was quite time-consuming. So, I'm going to specify what I've tried:

By Compact Schedules in Detailed HVAC and Detailed HVAC data: the data

The main problem is that there is a limit in the lenght of compact schedules, so I can't specify setpoints for a number of hours within a day because the lenght is larger than Designbuilder allows. Please see below an example of this.

Schedule:Compact,
  Heating Setpoint,
  Any Number,
  Through: 01/01,
  For: Alldays,
  Until: 7:00, 17.00,
  Until: 23:00, 20.00,
  Until: 24:00, 17.00,
  Through: 01/02,
  For: Alldays,
  Until: 7:00, 17.00,
  Until: 23:00, 20.00,
  Until: 24:00, 17.00, etc.

By overriding the heating and cooling setpoint schedules in EMS: it EMS

It works, but the model becomes quite heavy and it's so tedious to work with it. Please see below an example of this:

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
 R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST,
 FORSCRIPT_ACST,
 Schedule:Compact,
 Schedule Value;
<LoopNextZone>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_AHST,
  FORSCRIPT_AHST,
  Schedule:Compact,
  Schedule Value;
<LoopNextZone>

EnergyManagementSystem:ProgramCallingManager,
  R_Huesca_Cfa_CATIII_2018_OUT_CTE_Prog,
  BeginTimestepBeforePredictor,
  RHuescaCfaCATIII2018OUTCTEACSTProg,
  RHuescaCfaCATIII2018OUTCTEAHSTProg;

EnergyManagementSystem:Program,
  RHuescaCfaCATIII2018OUTCTEACSTProg,
  <ForAllOccupiedZones>
  IF (DayOfYear == 1) && (CurrentTime < 7),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 15),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 23),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 24),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 7),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 15),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 23),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 24),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, etc.

By overriding the heating and cooling actuators in zone temperature control in EMS: EMS

I think this might be the best way to achieve this, but the problem is that, even setting the zone control thermostat to operative temperature, the setpoints are applied to zone mean air temperature. Please see below an example of the EMS script below, and please find attached the output files from the simulation in EP-Launch in the following link, both of them only for the day 01/01:

Link: https://drive.google.com/open?id=1U_VuwBB98ZA95rDArMQuHbMtivgrL7d3

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  Cooling_Setpoint_<LoopZoneVariableName>,
  <LoopZoneIDFName>,
  Zone Temperature Control,
  Cooling Setpoint;
   <LoopNextZone>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  Heating_Setpoint_<LoopZoneVariableName>,
  <LoopZoneIDFName>,
  Zone Temperature Control,
  Heating Setpoint;
   <LoopNextZone>

EnergyManagementSystem:ProgramCallingManager,
  AdaptiveSetpointProgram,
  BeginTimestepBeforePredictor,
   AdaptiveSetpointProgram;

EnergyManagementSystem:Program,
  AdaptiveSetpointProgram,
  if (DayOfYear == 1) && (CurrentTime < 7),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 15),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 50,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 23),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 20,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 24),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  endif;

Does anyone know why the setpoints are being applied to zone mean aire temperature insted of operative temperature, or otherwise, another way to achieve this? Thanks in advance.

P.S. I'm new in EMS, so i'm sorry if I didn't use suitable terms. Hope you have understood it though.

Setting daily and hourly setpoint temperatures in EMS

Hi everyone,

The purpose of this question is to set daily temperatures in Designbuilder. I've been trying many ways to do this, and I actually achieved it by means of overriding the heating and cooling setpoint schedules in EMS, but as a result the model became so heavy and running simulations was quite time-consuming. So, I'm going to specify what I've tried:

By Compact Schedules in Detailed HVAC and Detailed HVAC data

The main problem is that there is a limit in the lenght of compact schedules, so I can't specify setpoints for a number of hours within a day because the lenght is larger than Designbuilder allows. Please see below an example of this.

Schedule:Compact,
  Heating Setpoint,
  Any Number,
  Through: 01/01,
  For: Alldays,
  Until: 7:00, 17.00,
  Until: 23:00, 20.00,
  Until: 24:00, 17.00,
  Through: 01/02,
  For: Alldays,
  Until: 7:00, 17.00,
  Until: 23:00, 20.00,
  Until: 24:00, 17.00, etc.

By overriding the heating and cooling setpoint schedules in EMS

It works, but the model becomes quite heavy and it's so tedious to work with it. Please see below an example of this:

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
 R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST,
 FORSCRIPT_ACST,
 Schedule:Compact,
 Schedule Value;
<LoopNextZone>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_AHST,
  FORSCRIPT_AHST,
  Schedule:Compact,
  Schedule Value;
<LoopNextZone>

EnergyManagementSystem:ProgramCallingManager,
  R_Huesca_Cfa_CATIII_2018_OUT_CTE_Prog,
  BeginTimestepBeforePredictor,
  RHuescaCfaCATIII2018OUTCTEACSTProg,
  RHuescaCfaCATIII2018OUTCTEAHSTProg;

EnergyManagementSystem:Program,
  RHuescaCfaCATIII2018OUTCTEACSTProg,
  <ForAllOccupiedZones>
  IF (DayOfYear == 1) && (CurrentTime < 7),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 15),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 23),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25,
  ELSEIF (DayOfYear == 1) && (CurrentTime < 24),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 7),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 15),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 50,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 23),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 25,
  ELSEIF (DayOfYear == 2) && (CurrentTime < 24),
   Set R_Huesca_Cfa_CATIII_2018_OUT_CTE_<LoopZoneVariableName>_FORSCRIPT_ACST = 27, etc.

By overriding the heating and cooling actuators in zone temperature control in EMS

I think this might be the best way to achieve this, but the problem is that, even setting the zone control thermostat to operative temperature, the setpoints are applied to zone mean air temperature. Please see below an example of the EMS script below, and please find attached the output files from the simulation in EP-Launch in the following link, both of them only for the day 01/01:

Link: https://drive.google.com/open?id=1U_VuwBB98ZA95rDArMQuHbMtivgrL7d3

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  Cooling_Setpoint_<LoopZoneVariableName>,
  <LoopZoneIDFName>,
  Zone Temperature Control,
  Cooling Setpoint;
   <LoopNextZone>

<ForAllOccupiedZones>
EnergyManagementSystem:Actuator,
  Heating_Setpoint_<LoopZoneVariableName>,
  <LoopZoneIDFName>,
  Zone Temperature Control,
  Heating Setpoint;
   <LoopNextZone>

EnergyManagementSystem:ProgramCallingManager,
  AdaptiveSetpointProgram,
  BeginTimestepBeforePredictor,
   AdaptiveSetpointProgram;

EnergyManagementSystem:Program,
  AdaptiveSetpointProgram,
  if (DayOfYear == 1) && (CurrentTime < 7),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 15),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 50,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 23),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 20,
  <LoopNextZone>
  elseif (DayOfYear == 1) && (CurrentTime < 24),
  <ForAllOccupiedZones>
  set Cooling_Setpoint_<LoopZoneVariableName> = 27.35,
  set Heating_Setpoint_<LoopZoneVariableName> = 17,
  <LoopNextZone>
  endif;

Does anyone know why the setpoints are being applied to zone mean aire temperature insted of operative temperature, or otherwise, another way to achieve this? Thanks in advance.

P.S. I'm new in EMS, so i'm sorry if I didn't use suitable terms. Hope you have understood it though.