# ForecastOutsideTemp

## `ForecastOutsideTemp` (FB)

FUNCTION\_BLOCK ForecastOutsideTemp

### Kurzbeschreibung

> > Vorhersage der Außentemperatur (Vorhersagezeitraum und Funktion einstellbar)\
> > Voraussetzung: FB ‘WeatherForecast’ aus der Weather Forecast Library\
> > Randbedingung: Die Wettervorhersagedaten müssen mindestens alle 12 Stunden aktualisiert werden\
> > Index \_FC: Wetter-Vorhersagedaten extern
>
> Index \_Int: Wetter-Vorhersagedaten intern | Typische Anwendung: Berechnung der Außentemperatur einer Heiz-/Kühlkurve

### Darstellung

<figure><img src="/files/fhfFNMbtd4SkYzcGksqY" alt=""><figcaption></figcaption></figure>

### Schnittstellen

#### Eingänge

<table><thead><tr><th width="160">Name</th><th>Datentyp</th><th>Wertebereich</th><th>Initialwert</th><th>Funktion</th></tr></thead><tbody><tr><td><em>xEn</em></td><td>BOOL</td><td></td><td>FALSE</td><td>Freigabe - Wettervorhersage (FALSE = Aus, TRUE = Ein)</td></tr><tr><td>*rOutsideTemp_In’</td><td>REAL</td><td></td><td>-10.0</td><td>Ersatzwert für die Aussentemperatur</td></tr><tr><td><em>xOutsideTempError_In</em></td><td>BOOL</td><td></td><td>FALSE</td><td>Fehlerzustand - Ersatzwert für die Aussentemperatur (FALSE = kein Fehler, TRUE = Fehler)</td></tr><tr><td><em>rFixedValue</em></td><td>REAL</td><td></td><td>0.0</td><td>Festwert für die Aussentemperatur</td></tr><tr><td><em>xError_FC</em></td><td>BOOL</td><td></td><td>FALSE</td><td>Fehlerzustand - Wetter-Vorhersagedaten (FALSE = kein Fehler, TRUE = Fehler)</td></tr><tr><td><em>xDone_FC</em></td><td>BOOL</td><td></td><td>FALSE</td><td>Signal nach dem erfolgreichen Abschluss der Übertragung der Wetter-Vorhersagedaten (ansteigende Flanke)</td></tr><tr><td><em>arData_FC</em></td><td>ARRAY[*] OF WEATHER_FORECAST.WeatherData</td><td></td><td></td><td>Array mit den Wetter-Vorhersagedaten (Ausgang ‘aForecast’ vom FB ‘WeatherForecast’)</td></tr></tbody></table>

#### Ausgänge

<table><thead><tr><th width="177">Name</th><th>Datentyp</th><th>Wertebereich</th><th>Initialwert</th><th>Funktion</th></tr></thead><tbody><tr><td>*eMode’</td><td>eForecastOutsideTempMode</td><td></td><td>eForecastOutsideTempMode.Invalid_Mode</td><td>Betriebsart (0 = keine, 1 = Vorhersage, 2 = Außentemperatur, 3 = Festwert)</td></tr><tr><td>*eFBPeriod_Int’</td><td>eForecastOutsideTempPeriod</td><td></td><td>eForecastOutsideTempPeriod.Invaild_Period</td><td>Rückmeldung - Vorhersagebereich - Interne Wetter-Vorhersagedaten (0 = keine, 1 = 3 Stunden, 2 = 6 Stunden, 3 = 9 Stunden, 4 = 12 Stunden, 5 = 24 Stunden, 6 = 36 Stunden, 7 = 48 Stunden, 8 = 72 Stunden, 9 = 96 Stunden)</td></tr><tr><td>*eFBFunction_Int’</td><td>eForecastOutsideTempFunction</td><td></td><td>eForecastOutsideTempFunction.Ivalid_Function</td><td>Rückmeldung - Funktion - Interne Wetter-Vorhersagedaten (0 = keine, 1 = Minimalwert 2 = Maximalwert, 3 = Durchschnittswert)</td></tr><tr><td>*rOutsideTemp_Out’</td><td>REAL</td><td></td><td></td><td>Berechnete Aussentemperatur</td></tr><tr><td><em>xError</em></td><td>BOOL</td><td></td><td>FALSE</td><td>Fehlerzustand (FALSE = kein Fehler, TRUE = Fehler)</td></tr></tbody></table>

#### Sollwerte / Parameter

<table><thead><tr><th width="175">Name</th><th>Datentyp</th><th>Wertebereich</th><th>Initialwert</th><th>Funktion</th></tr></thead><tbody><tr><td>**eFBPeriod_Int’*</td><td>eForecastOutsideTempPeriod</td><td></td><td>eForecastOutsideTempPeriod.Time_24_Hours</td><td>Vorhersagebereich - Interne Wetter-Vorhersagedaten (0 = keine, 1 = 3 Stunden, 2 = 6 Stunden, 3 = 9 Stunden, 4 = 12 Stunden, 5 = 24 Stunden, 6 = 36 Stunden, 7 = 48 Stunden, 8 = 72 Stunden, 9 = 96 Stunden)</td></tr><tr><td>**eFBFunction_Int’*</td><td>eForecastOutsideTempFunction</td><td></td><td>eForecastOutsideTempFunction.Average</td><td>Funktion - Interne Wetter-Vorhersagedaten (0 = keine, 1 = Minimalwert 2 = Maximalwert, 3 = Durchschnittswert)</td></tr></tbody></table>

### Funktionsbeschreibung

Der Ausgang rOutsideTemp\_Out wird in Abhängigkeit vom Zustand am Eingang ‘xEn’ berechnet / festgelegt:\
\
xEn = FALSE:\
\
Der Ausgang rOutsideTemp\_Out nimmt den Zustand des Ersatzwerts (rOutsideTemp\_Out = rOutsideTemp\_In) an, falls der Ersatzwert\
fehlerfrei (xOutsideTempError\_In = FALSE) ist.\
Der Ausgang rOutsideTemp\_Out nimmt den Zustand des Festwerts (rOutsideTemp\_Out = rFixedValue) an, falls der Ersatzwert fehlerhaft (xOutsideTempError\_In = TRUE) ist.

\
Der Ausgang eMode wird entsprechend aktualisiert.\
Der Ausgang xError nimmt den Zustand FALSE an.\
Der Ausgang eFBPeriod\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an.\
Der Ausgang eFBFunction\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an\
\
xEn = TRUE:\
\
Der Ausgang *rOutsideTemp\_Out* wird aufgrund der Parameter ‘ePeriod\_Int’ (ePriodInt <> eForecastOutsideTempPeriod.Invalid\_Period) und\
‘eFunction\_Int’ (eFunctionInt <> eForecastOutsideTempFunction.Invalid\_Function) festgelegt, falls der Eingang ‘xError\_FC’ den Wert FALSE und die interne Fehlervariable ebenfalls den Wert FALSE annehmen. Die Ausgänge eFBPeriod\_Int bzw. eFBFunction\_Int übernehmen die aktuellen\
Einstellwerte der Parameter ePeriod\_Int bzw. eFBFunction\_Int.\
\
Der Ausgang *rOutsideTemp\_Out* nimmt den Zustand des Ersatzwerts (*rOutsideTemp\_Out* = ‘rOutsideTemp\_In) an, falls der Ersatzwert fehlerfrei (xOutsideTempError\_In = FALSE) ist.\
Der Ausgang eFBPeriod\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an.\
Der Ausgang eFBFunction\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an\
\
Der Ausgang *rOutsideTemp\_Out* nimmt den Zustand des Festwerts\
(*rOutsideTemp\_Out* = ‘rFixedValue) an, falls der Ersatzwert\
fehlerhaft (xOutsideTempError\_In = TRUE) ist.\
Der Ausgang eFBPeriod\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an.\
Der Ausgang eFBFunction\_Int nimmt den Zustand eForecastOutsideTempFunction.Ivalid\_Function an\
\
Der Ausgang eMode wird entsprechend aktualisiert.\
Der Ausgang xError wird entsprechend aktualisiert.

#### Aktualisierung des Ausgangs *rOutsideTemp\_Out*

Der Ausgang *rOutsideTemp\_Out* wird (Voraussetung: xEn = TRUE) aktualisiert, falls mindestens eines der folgenden Kriterien zutrifft:\
\
Kriterium 1: Aktualisierung der Wetter-Vorhersagedaten (ansteigende Flanke am Eingang xDone\_FC)\
Kriterium 2: Änderung des Startindexes\
Kriterium 3: Änderung des Vorhersagebereichs (Parameter ePeriod\_Int)\
Kriterium 4: Änderung der Funktion (Parameter eFunction\_Int)\
Kriterium 5: Ansteigende Flanke am Eingang xEn\
\
Der Startindex ändert sich, falls der aktuelle Zeitstempel (= Systemzeit) den Zeitstempel des nächsten Elements der Wetter-Vorhersagedaten erreicht.\
Der Ausgang *rOutsideTemp\_Out* wird daher mindestens alle 3 Stunden aktualisiert.\
Der Ausgang *rOutsideTemp\_Out* wird stets zeitrichtig berechnet, d.h. es werden alle Elemente der Wetter-Vorhersagedaten zur Berechnung heran gezogen,\
die sich zwischen dem Zeitpunkt der Aktualisierung und dem Zeitpunkt der Aktualisierung + Vorhersagebereich befinden.\
\
Im Falle eines internen Datenfehlers (fehlende Daten, fehlerhafte Daten) wird der Ausgang *rOutsideTemp\_Out* mit einer intern festgelegten Konstante\
(aktuell: -1000.0) beschrieben und der Zustand der internen Fehlervariable auf TRUE gesetzt.

#### Typische Anwendung

Dieser Funktionsbaustein kann wie folgt angewendet werden:

<figure><img src="/files/VjB4G03geVgyZidr3gTV" alt=""><figcaption></figcaption></figure>

### CODESYS

InOut:

| Scope       | Name                   | Type                                               | Initial                                       |
| ----------- | ---------------------- | -------------------------------------------------- | --------------------------------------------- |
| Input       | `xEn`                  | `BOOL`                                             | TRUE                                          |
| Input       | `rOutsideTemp_In`      | `REAL`                                             |                                               |
| Input       | `xOutsideTempError_In` | `BOOL`                                             | FALSE                                         |
| Input       | `rFixedValue`          | `REAL`                                             | 0.0                                           |
| Input       | `xError_FC`            | `BOOL`                                             | FALSE                                         |
| Input       | `xDone_FC`             | `BOOL`                                             | FALSE                                         |
| Input       | `arData_FC`            | <p>POINTER TO<br>WEATHER\_FORECAST.WeatherData</p> |                                               |
| Output      | `eMode`                | eForecastOutsideTempMode                           | eForecastOutsideTempMode.Invalid\_Mode        |
| Output      | `eFBPeriod_Int`        | eForecastOutsideTempPeriod                         | eForecastOutsideTempPeriod.Invaild\_Period    |
| Output      | `eFBFunction_Int`      | eForecastOutsideTempFunction                       | eForecastOutsideTempFunction.Ivalid\_Function |
| Output      | `rOutsideTemp_Out`     | `REAL`                                             |                                               |
| Output      | `xError`               | `BOOL`                                             | FALSE                                         |
| Input Const | `eFunction_Int`        | eForecastOutsideTempFunction                       | eForecastOutsideTempFunction.Average          |
| Input Const | `ePeriod_Int`          | eForecastOutsideTempPeriod                         | eForecastOutsideTempPeriod.Time\_24\_Hours    |

Methods:

> mApplyFunction\_Int

> mCalculateOutsideTempOut\_Int

> mCalculateStartIndex\_Int

> mResetData\_Int

> mUpdateData\_Int

Structure:

* mApplyFunction\_Int (Method)
* mCalculateOutsideTempOut\_Int (Method)
* mCalculateStartIndex\_Int (Method)
* mResetData\_Int (Method)
  * Rücksetzung aller internen Wetter-Vorhersagedaten auf ungültige Werte \*\*\*
* mUpdateData\_Int (Method)


---

# 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/hvac-library/functionblocks/components/forecastoutsidetemp.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.
