A bug report. I've been aware of it for a long time. Now I posted just because I have time to do so.
When we try to control actuated components in AirLoop and PlantLoop with the built-In Unique Variable "Hour
" by EMS, the components are controlled one hour later than the "Hour" we specify.
I reprodued the bug with an ExampleFile 5ZoneCAV_MaxTemp.idf (Any ExampleFiles are fine). The idf file is here (V23-2-0). I added EMS to override Fan Air Mass Flow Rate
of Supply Fan 1 as follows.
Fan:VariableVolume,
Supply Fan 1, !- Name
FanAvailSched, !- Availability Schedule Name
0.7, !- Fan Total Efficiency
600.0, !- Pressure Rise {Pa}
autosize, !- Maximum Flow Rate {m3/s}
Fraction, !- Fan Power Minimum Flow Rate Input Method
0.25, !- Fan Power Minimum Flow Fraction
, !- Fan Power Minimum Air Flow Rate {m3/s}
0.9, !- Motor Efficiency
1.0, !- Motor In Airstream Fraction
0.35071223, !- Fan Power Coefficient 1
0.30850535, !- Fan Power Coefficient 2
-0.54137364, !- Fan Power Coefficient 3
0.87198823, !- Fan Power Coefficient 4
0.000, !- Fan Power Coefficient 5
Main Heating Coil 1 Outlet Node, !- Air Inlet Node Name
VAV Sys 1 Outlet Node; !- Air Outlet Node Name
EnergyManagementSystem:Actuator,
Fan_Flow, !- Name
Supply Fan 1, !- Actuated Component Unique Name
Fan, !- Actuated Component Type
Fan Air Mass Flow Rate; !- Actuated Component Control Type
EnergyManagementSystem:ProgramCallingManager,
EMS_PCM_Fan_Flow, !- Name
InsideHVACSystemIterationLoop, !- EnergyPlus Model Calling Point
EMS_Program_Fan_Flow; !- Program Name 1
EnergyManagementSystem:Program,
EMS_Program_Fan_Flow, !- Name
IF (Hour >10) && (Hour <= 15), !- Program Line 1
SET Fan_Flow = 0, !- Program Line 2
ELSE, !- A4
SET Fan_Flow = 0.480944716911248, !- A5
ENDIF; !- A6
TimeStep is set to 6. The original Fan Availability Schedule is 1 for 24h a day from Jan to Mar. Fan Air Mass Flow Rate
of Supply Fan 1 is supposed to be 0 kg/s from 10:10:00 to 15:00:00 aftter I added EMS above. However, the simulation result shows that it is 0 kg/s from 11:10:00 to 16:00:00.
The bug occurs in other actuated components in AirLoop and PlantLoop as well such as Pumps. I haven't tested all the Calling Points, but InsideHVACSystemIterationLoop
is often used to control HVAC systems, and the "Hour
" specification in that calling point should be correctly simulated as entered by users.