EMS: Failure to read Schedule value during Warmup
My end-goal is to load different Schedule values based on some conditions. I have setup a minimal complete and verifiable example (MCVE) to showcase a problem that you can find here (use Golden CO Epw file). For this I have basically set up some Sensors that read some schedule values (will end up being Schedule:File objects), and a "Shadow" schedule that has an EMS Actuator attached to it.
During the Warmup, I am facing a problem where the schedule value isn't initialized at the first ever occurrence, which causes Eplus to fatal out if I use said shadow chedule as my cooling thermostat schedule (because Cooling Setpoint ends up 0 and heating is 18). I have tried to use the BeginTimestepBeforePredictor
calling point.
My MCVE is based off of 1ZoneUncontrolled.idf
where I added an Ideal Loads Air Sytem, a Thermostat, and my EMS program. The important portions are recopied at the end of the post for convenience.
I also include a truncated extract from the eplusout.edd
(Full EDD also available here) showing that the first occurrence only doesn't have an initialized value.
How can I circumvent this problem? I do not want to have to hardcode the very first value of this shadow schedule.
eplusout.edd extract:
**** Begin EMS Language Processor Error and Trace Output ***
<Erl program name, line #, line text, result, occurance timing information ... >
COOLING_SCH_PROGRAM,Line 1,SET LOCCURRENTENV = CURRENTENVIRONMENT,1.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 2,SET LOCWEEKENDVALUE = COOLING_SCH_SENSOR,0.0, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 3,SET LOCWARMUP = WARMUPFLAG,1.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
[...]
COOLING_SCH_PROGRAM,Line 1,SET LOCCURRENTENV = CURRENTENVIRONMENT,1.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 2,SET LOCWEEKENDVALUE = COOLING_SCH_SENSOR,26.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 3,SET LOCWARMUP = WARMUPFLAG,0.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 00:00 - 00:15
[...]
COOLING_SCH_PROGRAM,Line 1,SET LOCCURRENTENV = CURRENTENVIRONMENT,1.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 23:45 - 24:00
COOLING_SCH_PROGRAM,Line 2,SET LOCWEEKENDVALUE = COOLING_SCH_SENSOR,26.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 23:45 - 24:00
COOLING_SCH_PROGRAM,Line 3,SET LOCWARMUP = WARMUPFLAG,1.000000, During Warmup & Sizing, Occurrence info=WINTER DD, 12/21 23:45 - 24:00
[...]
COOLING_SCH_PROGRAM,Line 1,SET LOCCURRENTENV = CURRENTENVIRONMENT,2.000000, During Warmup & Sizing, Occurrence info=SUMMER DD, 07/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 2,SET LOCWEEKENDVALUE = COOLING_SCH_SENSOR,26.000000, During Warmup & Sizing, Occurrence info=SUMMER DD, 07/21 00:00 - 00:15
COOLING_SCH_PROGRAM,Line 3,SET LOCWARMUP = WARMUPFLAG,1.000000, During Warmup & Sizing, Occurrence info=SUMMER DD, 07/21 00:00 - 00:15
[...]
Important part of IDF:
ScheduleTypeLimits,
no_limit, ! Name
-1000000000.0, ! Lower Limit Value
1000000000.0, ! Upper Limit Value
continuous ...