# AverageTime

## `AverageTime` (FB)

FUNCTION\_BLOCK AverageTime

### Short description

> Averaging of an analog value over four different time periods\
> Averaging method: Arithmetic mean\
> Typical application: Temporal averaging of outside temperature

### Representation

<figure><img src="/files/6783294acea039edaa4299ed28fb522b67268f7a" alt=""><figcaption></figcaption></figure>

### Interfaces

#### Inputs

| Name  | Data type | Value range | Initial value | Function           |
| ----- | --------- | ----------- | ------------- | ------------------ |
| *rIn* | REAL      |             |               | Analog value input |

#### Outputs

| Name             | Data type       | Value range | Initial value | Function                                  |
| ---------------- | --------------- | ----------- | ------------- | ----------------------------------------- |
| *rOutCH0*        | REAL            |             |               | Average value period 1                    |
| *rOutCH1*        | REAL            |             |               | Average value period 2                    |
| *rOutCH2*        | REAL            |             |               | Average value period 3                    |
| *rOutCH3*        | REAL            |             |               | Average value period 4                    |
| *rOutMin*        | REAL            |             |               | Minimum of all measurements               |
| *rOutMax*        | REAL            |             |               | Maximum of all measurements               |
| *dtLastNewValue* | DATE\_AND\_TIME |             |               | Storage timestamp of the last measurement |
| *sErr*           | STRING          |             |               | Current error text                        |

#### Setpoints / parameters

| Name                  | Data type | Value range | Initial value    | Function                                                                                                            |
| --------------------- | --------- | ----------- | ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| **xCalculation**      | BOOL      |             | TRUE             | Enable / disable data recording                                                                                     |
| **xResetOnInput**     | BOOL      |             | FALSE            | Initialization of the measurement storage and the average value outputs with *rIn*                                  |
| **rInitValue**        | REAL      |             | 10               | Initialization value for the measurement storage and the average value outputs when **eInitial** = eInit2.InitValue |
| **tInitDelay**        | TIME      |             | 10s              | Delay time for measurement storage when **eInitial** = eInit2.InputValueDelayed                                     |
| **eInitial**          | eInit2    |             | eInit2.LastValue | Specification of the type of initialization                                                                         |
| **wCH3Time**          | WORD      |             | 72               | Definition of period 4                                                                                              |
| **wCH2Time**          | WORD      |             | 48               | Definition of period 3                                                                                              |
| **wCH1Time**          | WORD      | 1           | 36               | Definition of period 2                                                                                              |
| **wCH0Time**          | WORD      |             | 12               | Definition of period 1                                                                                              |
| **eTimeBaseCh0to3**   | eTime     |             | eTime.Hour       | Specification of the time unit for the periods                                                                      |
| **wInterval**         | WORD      |             | 30               | Specification of the recording interval                                                                             |
| **rTimeBaseInterval** | eTime     |             | eTime.Minute     | Specification of the time unit for the recording interval                                                           |

### Function description

#### General

Measurement value storage\
\
The value at the analog value input *rIn* is stored at the recording interval in a measurement value storage (storage depth = 221 entries).\
The recording interval is determined by the time value **wInterval** and the time unit **rTimeBaseInterval** specified.\
Default setting: Recording interval = 30 minutes\
\
\
Periods 0 … 3 (X = 0 … 3)\
\
Each of the four periods is defined by the respective time value **wCHXTime** and the time unit **rTimeBaseCh0to3** is defined.\
These periods are reduced to the maximum possible size if exceeding the storage depth is imminent.\
If an overflow occurs, a corresponding error text is generated at the output *sErr* .\
\
The correct arithmetic means are available at the average value outputs for the first time after the respective periods have elapsed.\
Default setting: Period 0 = 12 hours, Period 1 = 36 hours, Period 3 = 48 hours, Period 4 = 72 hours

#### Average value outputs *rOutCHX* (X = 0 … 3)

At the average value output *rOutCHX* (X = 0 … 3) the correct arithmetic mean of the\
corresponding entries in the measurement value storage is available for the first time after the duration **wCHXTime** has elapsed.

#### Minimum value output *rOutMin*

At the minimum value output *rOutMin* the absolute minimum of all entries in the measurement value storage\
is available for the first time after one recording interval.

#### Maximum value output *rOutMax*

At the maximum value output *rOutMax* the absolute maximum of all entries in the measurement value storage\
is available for the first time after one recording interval.

#### Timestamp *dtLastNewValue*

At the timestamp output *dtLastNewValue* the timestamp of the last storage in the measurement value storage\
is available for the first time after one recording interval.

#### Error text *sErr*

At the output for the current error text *sErr* a descriptive text is available in case of error. If there is no error, an empty string is output.

#### Type of initialization **eInitial**

This setpoint / parameter determines the type of initialization of the measurement storage and the average value outputs. The following options are possible:

| Type                     | Initialization value                                                   | Note                       |
| ------------------------ | ---------------------------------------------------------------------- | -------------------------- |
| eInit2.InitValue         | *rInitValue*                                                           | Configurable initial value |
| eInit2.InputValue        | *rIn*                                                                  | Input value                |
| eInit2.InputValueDelayed | *rIn*                                                                  | Delayed input value        |
| eInit2.LastValue         | Average - measurement value storage (measurement value storage filled) | Last value                 |
| eInit2.LastValue         | *rIn* (measurement value storage empty)                                | Input value                |

#### Enable / disable data recording **xCalculation**

This setpoint / parameter enables (= TRUE) or disables (= FALSE) data recording

#### Reset of the measurement value storage / the average value outputs **xResetOnInput**

With this setpoint / parameter the measurement value storage / the average value outputs are reset to the value 'rIn' (= TRUE).

### CODESYS

InOut:

| Scope       | Name                | Type     | Initial          |
| ----------- | ------------------- | -------- | ---------------- |
| Input       | `rIn`               | `REAL`   |                  |
| Input Const | `xCalculation`      | `BOOL`   | TRUE             |
| Input Const | `xResetOnInput`     | `BOOL`   | FALSE            |
| Input Const | `rInitValue`        | `REAL`   | 10               |
| Input Const | `tInitDelay`        | `TIME`   | TIME#10s0ms      |
| Input Const | `eInitial`          | eInit2   | eInit2.LastValue |
| Input Const | `wCH3Time`          | `WORD`   | 72               |
| Input Const | `wCH2Time`          | `WORD`   | 48               |
| Input Const | `wCH1Time`          | `WORD`   | 36               |
| Input Const | `wCH0Time`          | `WORD`   | 24               |
| Input Const | `eTimeBaseCh0to3`   | eTime    | eTime.Hour       |
| Input Const | `wInterval`         | `WORD`   | 30               |
| Input Const | `eTimeBaseInterval` | eTime    | eTime.Minute     |
| Output      | `rOutCH0`           | `REAL`   |                  |
| Output      | `rOutCH1`           | `REAL`   |                  |
| Output      | `rOutCH2`           | `REAL`   |                  |
| Output      | `rOutCH3`           | `REAL`   |                  |
| Output      | `rOutMin`           | `REAL`   |                  |
| Output      | `rOutMax`           | `REAL`   |                  |
| Output      | `dtLastNewValue`    | `DT`     |                  |
| Output      | `sErr`              | `STRING` |                  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.powerio.com/hub/codesys-hvac/en/hvac-library/functionblocks/damping/averagetime.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
