EMS: Failure to read Schedule value during Warmup

asked 2019-04-15 06:55:24 -0500

updated 2019-04-15 06:57:51 -0500

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 ...
(more)
edit retag flag offensive close merge delete