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_V...
<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 ...