This block predicts the shortest time for an HVAC system to meet
the occupied setpoint prior to the scheduled occupancy. The block
requires inputs of zone temperature, occupied zone setpoint(s) and
next occupancy. The two outputs are the optimal start duration
tOpt and the optimal start on signal
optOn for the HVAC system.
The block estimates the thermal mass of a zone using its measured air temperature gradient with respect to time. Once the temperature slope of a zone is known, the optimal start time can be calculated by the difference between the zone temperature and the occupied setpoint divided by the temperature slope, assuming the zone responds as if all thermal mass were concentrated in the room air.
The temperature slope is self-tuned based on past data. The
moving average of the temperature slope of the past
nDay days is calculated and used for the prediction of
the optimal start time in the current day.
The parameter nDay is used to compute the moving
average of the temperature slope; the first n days of
simulation is therefore used to initialize the block.
The parameter tOptMax is the maximum allowed
optimal start time.
The block includes two hysteresis parameters uLow
and uHigh. The parameter uLow is used to
determine if the zone temperature reaches the setpoint. The
algorithm assumes that the zone temperature has reached the
setpoint if TSetZonHea-TZon ≤ uLow for a heating
system, or TZon-TSetZonCoo ≤ uLow for a cooling
system, where TSetZonHea denotes the zone heating
setpoint during occupancy, TSetZonCoo denotes the zone
cooling setpoint during occupancy, and TZon denotes
the zone temperature. The parameter uHigh is used by
the algorithm to determine if there is a need to start the HVAC
system prior to occupancy. If TSetZonHea-TZon ≤ uHigh
for heating case or TZon-TSetZonCoo ≤ uHigh for
cooling case, then there is no need for the system to start before
the occupancy.
The optimal start is only active (i.e., the optimal start on
signal optOn becomes true) if the optimal start time
is larger than the parameter thrOptOn.
The block can be used for heating system only or cooling system
only or for both heating and cooling system. The two parameters
computeHeating and computeCooling are
used to configure the block for these three scenarios.
The block calculates the optimal start time separately for heating and cooling systems. The base class IDEAS.Controls.OBC.Utilities.BaseClasses.OptimalStartCalculation is used for the calculation.
The algorithm is as follows:
TSloOnce the HVAC system is started, a timer records the time
duration Δt for the zone temperature to reach the
setpoint. At the time when the timer starts, the zone temperature
TSam1 is sampled. The temperature slope is
approximated using the equation TSlo =
|TSetZonOcc-TSam1|/Δt, where TSetZonOcc is the
occupied zone setpoint. Note that if Δt is greater
than the maximum optimal start time tOptMax, then
tOptMax is used instead of Δt. This is to
avoid corner cases where the setpoint is never reached, e.g., the
HVAC system is undersized, or there is a steady-state error
associated with the HVAC control.
TSloMaAfter computing the temperature slope of each day, the moving
average of the temperature slope TSloMa during the
previous nDay days is calculated. Please refer to
IDEAS.Controls.OBC.CDL.Discrete.TriggeredMovingMean
for details about the moving average algorithm.
tOptEach day at a certain time before the occupancy, the algorithm
takes another sample of the zone temperature, denoted as
TSam2. The sample takes place tOptMax
prior to occupancy start time.
The optimal start time is then calculated as tOpt =
|TSetZonOcc-TSam2|/TSloMa.
Validation models can be found in the package IDEAS.Controls.OBC.Utilities.Validation.