Buildings.Controls.OBC.Utilities
Package with utility functions
Information
This package contains utility blocks, base classes and validation models for the OpenBuildingControl (OBC) library.
Package Content
Name | Description |
---|---|
OptimalStart | Block that outputs the optimal start time for an HVAC system before occupancy |
SetPoints | Package with blocks for setpoint resets |
Validation | Collection of validation models |
BaseClasses | Package with base classes |
Buildings.Controls.OBC.Utilities.OptimalStart
Block that outputs the optimal start time for an HVAC system before occupancy
Information
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.
Parameters
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
.
Configuration for HVAC systems
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 Buildings.Controls.OBC.Utilities.BaseClasses.OptimalStartCalculation is used for the calculation.
Algorithm
The algorithm is as follows:
Step 1: Calculate temeperature slope TSlo
Once 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.
Step 2: Calculate temperature slope moving average TSloMa
After 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
Buildings.Controls.OBC.CDL.Discrete.TriggeredMovingMean for details about
the moving average algorithm.
Step 3: Calculate optimal start time tOpt
Each 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
Validation models can be found in the package Buildings.Controls.OBC.Utilities.Validation.
Parameters
Type | Name | Default | Description |
---|---|---|---|
Real | tOptMax | 10800 | Maximum optimal start time [s] |
Integer | nDay | 3 | Number of previous days used to compute the optimal start up time |
Boolean | computeHeating | false | Set to true to compute optimal start for heating |
Boolean | computeCooling | false | Set to true to compute optimal start for cooling |
Real | uLow | 0 | Threshold to determine if the zone temperature reaches the occupied setpoint, must be a non-negative number [K] |
Real | uHigh | 0.5 | Threshold to determine the need to start the HVAC system before occupancy, must be greater than uLow [K] |
Real | thrOptOn | 60 | Threshold time, optimal start on signal becomes true when tOpt larger than thrOptOn [s] |
Connectors
Type | Name | Description |
---|---|---|
input RealInput | TSetZonHea | Zone heating setpoint temperature during occupancy [K] |
input RealInput | TZon | Zone temperature [K] |
input RealInput | TSetZonCoo | Zone cooling setpoint temperature during occupancy [K] |
input RealInput | tNexOcc | Time until next occupancy [s] |
output RealOutput | tOpt | Optimal start time duration of HVAC system [s] |
output BooleanOutput | optOn | Outputs true if the HVAC system remains in the optimal start period |