# HeatpumpGasboilerSelection

## `HeatpumpGasboilerSelection` (FB)

FUNCTION\_BLOCK HeatpumpGasboilerSelection

### Kurzbeschreibung

Freigabe des Gaskessels oder der Wärmepumpe in Abhängigkeit von verschiedenen Einflussgrössen.\
Einflussgrössen:

1. Aktueller COP-Wert der Wärmepumpe
2. Kosten für elektrische Energie (Wärmepumpe) in Euro je kWh
3. Kosten für Erdgasbezug (Gaskessel) in Euro je kWh
4. Wirkungsgrad der Wärmepumpe (0.0 - 1.0)
5. Wirkungsgrad des Gaskessels (0.0 - 1.0)

Die Voreinstellungen der internen Kennlinie stimmen mit der COP-Kennlinie W35-Heizfall der WP Remeha E-HP AW 84 überein.\
\
Typische Anwendung: Entscheidung über die Freigabe des Gaskessels bzw. der Wärmepumpe je nach Betriebssituation

### Darstellung

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

### Schnittstellen

#### Eingänge

| Name             | Datentyp                               | Wertebereich | Initialwert                                            | Funktion                                                                                  |
| ---------------- | -------------------------------------- | ------------ | ------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| *xEn*            | BOOL                                   |              | TRUE                                                   | Freigabe / Sperrung des Funktionsbausteins (TRUE = Freigabe)                              |
| *eCOPSource*     | eHeatpumpGasboilerSelection\_COPSource |              | eHeatpumpGasboilerSelection\_COPSource.Internal\_Curve | Auswahl der COP-Quelle (Internal\_Curve, External\_Input)                                 |
| *rSourceTempCOP* | REAL                                   |              | 2.0                                                    | Aktuelle Temperatur der Wärmequelle für die Wärmepumpe (Luft-Wasser-WP: Aussentemperatur) |
| *rExtCOP*        | REAL                                   |              | 4.0                                                    | Externer Wert des ‘Coefficient of Performance’ (COP) der Wärmepumpe (typisch: 2.0 - 7.0)  |
| *xExtError*      | BOOL                                   |              | FALSE                                                  | Externer Fehlerzustand (FALSE = kein Fehler, TRUE = Fehler)                               |
| *xExtValidData*  | BOOL                                   |              | FALSE                                                  | Externer Eingang für die Gültigkeit der Daten der Kennlinie (n) (FALSE = ungültig)        |

#### Ausgänge

| Name                          | Datentyp | Wertebereich | Initialwert | Funktion                                                                                       |
| ----------------------------- | -------- | ------------ | ----------- | ---------------------------------------------------------------------------------------------- |
| *tRemainingTimeTestIntervall* | TIME     |              | T#0s        | Restzeit bis zum nächsten Prüfzeitpunkt                                                        |
| *rCOPLimit*                   | REAL     |              | 0.0         | Grenzwert des COP für die Freigabe der Wärmepumpe (rCOP >= rCOPLimit: Freigabe der Wärmepumpe) |
| *rCOP*                        | REAL     |              | 0.0         | Aktueller Wert des ‘Coefficient of Performance’ (COP) der Wärmepumpe (typisch: 2.0 - 7.0)      |
| *xCmdGasboiler*               | BOOL     |              | FALSE       | Freigabe / Sperrung des Gaskessels (TRUE = Freigabe)                                           |
| *xCmdHeatpump*                | BOOL     |              | FALSE       | Freigabe / Sperrung der Wärmepumpe (TRUE = Freigabe)                                           |
| *xError*                      | BOOL     |              | FALSE       | Fehlerzustand (FALSE = kein Fehler, TRUE = Fehler)                                             |

#### Sollwerte / Parameter

| Name                      | Datentyp | Wertebereich | Initialwert | Funktion                                                   |
| ------------------------- | -------- | ------------ | ----------- | ---------------------------------------------------------- |
| **rEfficiencyGasboiler**  | REAL     |              | 0.9         | Gesamtwirkungsgrad der Wärmeerzeugung mit dem Gaskessel    |
| **rEfficiencyHeatpump**   | REAL     |              | 0.9         | Gesamtwirkungsgrad der Wärmeerzeugung mit der Wärmepumpe   |
| **rEnergyPriceGasboiler** | REAL     |              | 0.20        | Energiekosten - Gas (in Euro / kWh erzeugter Wärmeenergie) |
| **rEnergyPriceHeatpump**  | REAL     |              | 0.45        | Energiekosten - Strom (in Euro / kWh)                      |
| **tTimeTestIntervall**    | TIME     |              | T#30M       | Zeitdauer des Test-Intervalls                              |
| **rCOP\_Subst**           | REAL     |              | 3.5         | Ersatzwert für den COP im Fehlerfall                       |
| **rCOP\_Min**             | REAL     |              | 1.0         | Absoluter minimaler Wert des COP                           |
| **rCOP\_Max**             | REAL     |              | 10.0        | Absoluter maximaler Wert des COP                           |
| **rSP1\_X**               | REAL     |              | 1.0         | Stützstelle 1 - X-Wert                                     |
| **rSP1\_Y**               | REAL     |              | 2.0         | Stützstelle 1 - Y-Wert                                     |
| **rSP2\_X**               | REAL     |              | 2.0         | Stützstelle 2 - X-Wert                                     |
| **rSP2\_Y**               | REAL     |              | 4.0         | Stützstelle 2 - Y-Wert                                     |
| **rSP3\_X**               | REAL     |              | 3.0         | Stützstelle 3 - X-Wert                                     |
| **rSP3\_Y**               | REAL     |              | 6.0         | Stützstelle 3 - Y-Wert                                     |
| **rSP4\_X**               | REAL     |              | 4.0         | Stützstelle 4 - X-Wert                                     |
| **rSP4\_Y**               | REAL     |              | 8.0         | Stützstelle 4 - Y-Wert                                     |
| **rSP5\_X**               | REAL     |              | 5.0         | Stützstelle 5 - X-Wert                                     |
| **rSP5\_Y**               | REAL     |              | 10.0        | Stützstelle 5 - Y-Wert                                     |
| **rSP6\_X**               | REAL     |              | 6.0         | Stützstelle 6 - X-Wert                                     |
| **rSP6\_Y**               | REAL     |              | 12.0        | Stützstelle 6 - Y-Wert                                     |
| **rSP7\_X**               | REAL     |              | 7.0         | Stützstelle 7 - X-Wert                                     |
| **rSP7\_Y**               | REAL     |              | 14.0        | Stützstelle 7 - Y-Wert                                     |
| **rSP8\_X**               | REAL     |              | 8.0         | Stützstelle 8 - X-Wert                                     |
| **rSP8\_Y**               | REAL     |              | 16.0        | Stützstelle 8 - Y-Wert                                     |
| **rSP9\_X**               | REAL     |              | 9.0         | Stützstelle 9 - X-Wert                                     |
| **rSP9\_Y**               | REAL     |              | 18.0        | Stützstelle 9 - Y-Wert                                     |
| **rSP10\_X**              | REAL     |              | 10.0        | Stützstelle 10 - X-Wert                                    |
| **rSP10\_Y**              | REAL     |              | 20.0        | Stützstelle 10 - Y-Wert                                    |

### Funktionsbeschreibung

\
Die Freigabe der Wärmeerzeuger Gaskessel oder Wärmepumpe erfolgt aufgrund einer Berechnung unter Berücksichtigung der folgenden Einflussgrössen:\
\
1\) Aktueller COP-Wert der Wärmepumpe\
2\) Kosten für elektrische Energie (Wärmepumpe) in Euro je kWh\
3\) Kosten für Erdgasbezug (Gaskessel) in Euro je kWh\
4\) Wirkungsgrad der Wärmepumpe (0.0 - 1.0)\
5\) Wirkungsgrad des Gaskessels (0.0 - 1.0)\
\
Es ist immer nur ein Wärmeerzeuger freigegeben, der jeweils andere ist automatisch gesperrt.\
\
Diese Berechnung erfolgt (Bedingung: xEn = TRUE), falls mindestens eine der nachfolgend beschriebenen Situationen vorliegt:\
\
1\) Zyklisch im Intervall tTimeTestIntervall\
2\) Einmalig bei einer ansteigenden Flanke am Eingang xEn\
3\) Einmalig nach jedem Neustart\
4\) Einmalig bei jedem Wechsel der Auswahl der COP-Quelle eCOPSource\
\
Der COP-Wert der Wärmepumpe kann durch eine intern hinterlegte Kennlinie mit 10 Wertepaaren (eCOPSource = Internal\_Curve, Temperatur der Wärmequelle rSourceTempCOP) oder\
den externen Eingang rExtCOP (eCOPSource = External\_Input, xExtError = FALSE, xExtValidData = TRUE) bestimmt werden. Er wird durch die absoluten Grenzwerte **rCOP\_Min** bzw.\
**rCOP\_Max** begrenzt, bei Fehlerfreiheit am Ausgang rCOP ausgegeben und für die Berechnung verwendet.\
Im Fehlerfall (eCOPSource = Internal\_Curve: Fehler bei der Eingabe der Wertepaare) bzw. (eCOPSource = External\_Input: xExtError = TRUE oder xExtValidData = FALSE) wird\
der Ersatzwert **rCOP\_Subst** verwandt.\
\
Die X-Werte der 10 Stützstellen der internen COP-Kennlinie müssen folgenden Randbedingungen genügen:\
\
1\) Die X-Werte müssen fortlaufend entweder streng ansteigend oder streng abfallend sein\
2\) Jeder X-Wert darf nur einmal vorhanden sein\
3\) Zwei benachbarte Stützstellen werden jeweils durch eine Gerade verbunden\
\
Am Ausgang tRemainingTimeTestIntervall steht die Restzeit bis zur nächsten zyklischen Berechnung zur Verfügung.\
Am Ausgang rCOPLimit steht der Grenzwert für die Umschaltung zum Gaskessel zur Verfügung (rCOP < rCOPLimit: Freigabe des Gaskessels)\
\
Im gesperrten Zustand (xEn = FALSE) nehmen die Ausgänge sinnvolle, konstante Wert an, es findet keine Berechnung mehr statt.\
\
Am Ausgang \*xError\* steht der aktuelle Fehlerzustand zur Verfügung (xError = TRUE: Fehler aktiv). Er ist aktiv, falls entweder die interne\
COP-Kennlinie fehlerhaft oder der externe Fehlereingang xExtError aktiv (= TRUE) ist.

### CODESYS

InOut:

| Scope       | Name                          | Type                                   | Initial                                                |
| ----------- | ----------------------------- | -------------------------------------- | ------------------------------------------------------ |
| Input       | `xEn`                         | `BOOL`                                 | TRUE                                                   |
| Input       | `eCOPSource`                  | eHeatpumpGasboilerSelection\_COPSource | eHeatpumpGasboilerSelection\_COPSource.Internal\_Curve |
| Input       | `rSourceTempCOP`              | `REAL`                                 | 2.0                                                    |
| Input       | `rExtCOP`                     | `REAL`                                 | 4.0                                                    |
| Input       | `xExtError`                   | `BOOL`                                 | FALSE                                                  |
| Input       | `xExtValidData`               | `BOOL`                                 | FALSE                                                  |
| Output      | `tRemainingTimeTestIntervall` | `TIME`                                 | TIME#0ms                                               |
| Output      | `rCOPLimit`                   | `REAL`                                 | 0.0                                                    |
| Output      | `rCOP`                        | `REAL`                                 | 0.0                                                    |
| Output      | `xCmdGasboiler`               | `BOOL`                                 | FALSE                                                  |
| Output      | `xCmdHeatpump`                | `BOOL`                                 | FALSE                                                  |
| Output      | `xError`                      | `BOOL`                                 | FALSE                                                  |
| Input Const | `rSP10_Y`                     | `REAL`                                 | 6.8                                                    |
| Input Const | `rSP10_X`                     | `REAL`                                 | 20.0                                                   |
| Input Const | `rSP9_Y`                      | `REAL`                                 | 5.85                                                   |
| Input Const | `rSP9_X`                      | `REAL`                                 | 16.1                                                   |
| Input Const | `rSP8_Y`                      | `REAL`                                 | 5.25                                                   |
| Input Const | `rSP8_X`                      | `REAL`                                 | 12.2                                                   |
| Input Const | `rSP7_Y`                      | `REAL`                                 | 4.65                                                   |
| Input Const | `rSP7_X`                      | `REAL`                                 | 8.3                                                    |
| Input Const | `rSP6_Y`                      | `REAL`                                 | 4.2                                                    |
| Input Const | `rSP6_X`                      | `REAL`                                 | 4.4                                                    |
| Input Const | `rSP5_Y`                      | `REAL`                                 | 3.7                                                    |
| Input Const | `rSP5_X`                      | `REAL`                                 | 0.5                                                    |
| Input Const | `rSP4_Y`                      | `REAL`                                 | 3.35                                                   |
| Input Const | `rSP4_X`                      | `REAL`                                 | -3.3                                                   |
| Input Const | `rSP3_Y`                      | `REAL`                                 | 3.1                                                    |
| Input Const | `rSP3_X`                      | `REAL`                                 | -7.2                                                   |
| Input Const | `rSP2_Y`                      | `REAL`                                 | 2.95                                                   |
| Input Const | `rSP2_X`                      | `REAL`                                 | -11.1                                                  |
| Input Const | `rSP1_Y`                      | `REAL`                                 | 2.8                                                    |
| Input Const | `rSP1_X`                      | `REAL`                                 | -15.0                                                  |
| Input Const | `rCOP_Max`                    | `REAL`                                 | 10.0                                                   |
| Input Const | `rCOP_Min`                    | `REAL`                                 | 1.0                                                    |
| Input Const | `rCOP_Subst`                  | `REAL`                                 | 3.5                                                    |
| Input Const | `tTimeTestIntervall`          | `TIME`                                 | TIME#30m0s0ms                                          |
| Input Const | `rEnergyPriceHeatpump`        | `REAL`                                 | 0.45                                                   |
| Input Const | `rEnergyPriceGasboiler`       | `REAL`                                 | 0.2                                                    |
| Input Const | `rEfficiencyHeatpump`         | `REAL`                                 | 0.9                                                    |
| Input Const | `rEfficiencyGasboiler`        | `REAL`                                 | 0.9                                                    |

Methods:

> mCalculateCurveSectionValue\_Real\_Real

> mCalculateCurveValue\_Real\_Real

Structure:

* mCalculateCurveSectionValue\_Real\_Real (Method)
* mCalculateCurveValue\_Real\_Real (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/heatpumpgasboilerselection.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.
