Question-and-Answer Resource for the Building Energy Modeling Community
Get s tarted with the Help page

# On/Off HVAC Dynamics Issue

Hello, I'm a new poster here although I've been using the forum for awhile. I've run into the issue of erratic zone temperature dynamics while using EMS to implement an On/Off Furnace control with a 1C deadband.

This program just changes the availability of the loop through a Scheduled AVM 1) to off if zone temperature is 0.5C over the setpoint and 2) to available if it is 0.5C below the setpoint. Only heating season is being simulated. The setpoint used for the program is 21C and the setpoint being imposed on the zones is 30C (to ensure the furnace is at capacity whenever it is on). The program works fine, but whenever the action changes, the two timesteps afterwards show a massive, unrealistic jump in zone temperature, only to slow their rate of change afterwards to a more normal pace. This happens despite constant heat losses from the envelope and infiltration.

It has showed severe oscillation in the explained setup. I think it may be a timestep issue somewhere because when I widen the deadband is when I see the rate of temperature change go back to normal (given a few more timesteps before it triggers the control action).

I'm working in OpenStudio, and am inputting this IDF text through the EP measure to do so:

EnergyManagementSystem:Sensor,
tzacq,                      !- Name
MasterZone,                 !- Output:Variable or Output:Meter Index Key Name
Zone Air Temperature;           !- Output:Variable or Output:Meter Name

EnergyManagementSystem:Sensor,
tzsp,                   !Name
MyTzSP,                     ! Output:Variable Index Key Name
Schedule Value;             ! Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
Control Program,                !- Name
EndOfZoneTimestepAfterZoneReporting,    !- EnergyPlus Model Calling Point
controlprogram;                 !- Program Name 1

EnergyManagementSystem:Actuator,
HVACschavail,               !- Name
ChangeMe,           !- Component Name
Schedule:Year,              !- Component Type
Schedule Value;             !- Control Variable

EnergyManagementSystem:Program,
controlprogram,                 !- Name
SET diff = tzsp-tzacq,
IF (diff>=2),
SET HVACschavail = 1,
ELSEIF (diff<=(-2)),
SET HVACschavail = 0,
ENDIF;

Output:EnergyManagementSystem,
Verbose,
Verbose,
Verbose;


Here is the test case zone air temperature output with a 4C deadband instead for a day in January.

https://www.dropbox.com/s/vtjz4iq0foa...

https://www.dropbox.com/s/pejvagwk29k...

edit retag close merge delete

@morronini it looks like the image links that you provided aren't working. Can you share these with Dropbox or something similar?

( 2020-04-10 09:08:52 -0500 )edit

Sort by » oldest newest most voted

The rate of change in zone temperature is a function of the heating capacity and zone load. On the peak heating day the capacity and load should be similar (at the peak hour). Run this scenario for the design day. Then compare the heating capacity to the zone load. You are showing only zone temperature. Also look at heating capacity and zone predicted load to heating setpoint (see rdd file). The heating capacity may be oversized, if so, then make sure the Tstat temp during the winter design day is constant at 21C. Also use a load averaging window of, say, 2 hours.

Sizing:Parameters,
1.2,                     !- Heating Sizing Factor
1.2,                     !- Cooling Sizing Factor
8;                        !- Timesteps in Averaging Window


You can also look in the epluszsz.csv (zone loads) and eplusssz,csv (system loads) file and see the heating loads during the peak heating day for comparison.

more

The capacities of the heating coil, terminal units, and fan are hard sized at exactly 105% of the design load and flow. These design values were obtained through running the same model with the standard variable supply temperature furnace loop.

( 2020-04-10 11:47:20 -0500 )edit

That sounds good. You now need to determine the rate of change of zone temperature (C/hr) and decide if that is acceptable for your simulation. If using the peak heating design day then the zone temperature should not change quickly, in fact, very slowly at the peak hour. It may be easier to do this on the cooling design day depending on the heating coil type (i.e., heat pumps don't have rated capacity at very cold outdoor temps). You may need to adjust the zone thermal properties or use ZoneCapacitanceMultiplier:ResearchSpecial to give the zone some thermal lag.

( 2020-04-10 11:57:24 -0500 )edit

At the bottom of your first graph is when the zone temperature has become cold enough to turn on the furnace in your EMS program, so the furnace heating input is quickly raising the zone temperature. At the top of your first graph is when the zone temperature has become hot enough to turn off the furnace in your EMS program, and so removing the furnace heating input quickly cools down the zone. Even though you don't have cooling equipment, the zone temperature might drop that quickly because this is January and it's very cold outside. If you were to look at a summer day instead, you would likely see different zone temperature behavior.

Extending your thermostat deadband would cause less periods where the action changes, but you would still see this quick change in zone temperature for January during the timesteps when the action does change.

more

Thanks Aaron. I should have mentioned, this simulation is being run with climate zone 7 weather and constructions, etc. So it is very cold outside. The large decrease in temperature makes sense then but the manner in which it drops doesn't make sense to me. I would have expected to see a time delay due to the thermal mass of the air and constructions and another time delay due to natural convection off the interior surfaces, even if they are very cold, it should take some minutes at least to change the mean air temperature, right? Instead, it seems to setpoint track or follow a steady state.

( 2020-04-10 11:51:34 -0500 )edit