.Buildings.Controls.OBC.Utilities.OptimalStart

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.

Revisions


Generated at 2024-05-18T18:16:21Z by OpenModelicaOpenModelica 1.22.4 using GenerateDoc.mos