# Verbraucher Pufferspeicher > Status: implementiert fuer IP-Symcon 8.0+ und den Enelix-2-Vertrag `4.0`. Das Modul bindet elektrische Heizstufen eines Pufferspeichers an den Enelix-Manager an. Die Freigabe wird aus Puffer- und Aussentemperatur, Heizkurve, Hysterese, lokaler Aktivierung und aktueller Betriebsart berechnet. Es ist eine gezielte Adaption des Enelix-1-Moduls `Puffer_Speicher`. Leistungsstufen, Temperaturquellen, optionale PT1-Glaettung und Heizkurve wurden uebernommen und ueberarbeitet. Zyklische Altlogik, alte Kommunikationsvariablen, `Idle` und `PowerSteps` als Symcon-Variable wurden verworfen. | Technisches Merkmal | Wert | | --- | --- | | Modulname | `VerbraucherPufferspeicher` | | Alias | `Pufferspeicher` | | Modul-ID | `{C92D5EEF-9632-47A5-9659-4B02BF40FBE9}` | | Enelix-Vertrag | `4.0` | ## Regelverhalten Die Solltemperatur wird berechnet als: `FusspunktVorlauftemperatur + HeizkurvenSteigung * (20 - Aussentemperatur)` Anschliessend wird sie auf `HeizkurveMinimaltemperatur` und `HeizkurveMaximaltemperatur` begrenzt. Die Einschaltschwelle wird je nach `MindesttemperaturModus` bestimmt: - `Aus`: Solltemperatur minus Hysterese, - `Statisch`: konfigurierte absolute Mindesttemperatur, - `Differenz`: Solltemperatur minus konfigurierte Differenz. Es gilt: - im PV-Betrieb unter der Einschaltschwelle: `[0, ...Leistungsstufen]`, - im PV-Betrieb an oder oberhalb der Einschaltschwelle: `[0]`, - im Peakbetrieb unabhaengig von der Temperatur: `[0]`, - bei `Aktiv=false`: immer `[0]`, - bei ungueltigen Temperaturen: `[0]` und nicht verfuegbar. Der Pufferspeicher ist im Peakbetrieb damit pauschal gesperrt. Beim Wechsel in Peak wird eine aktive Stufe sicher ausgeschaltet. ## Properties Die Properties erscheinen im Formular in dieser Reihenfolge. ### Manager und Zeitverhalten | Ident | Standard | Beschreibung | | --- | ---: | --- | | `PrioritaetPV` | `0` | Prioritaet im PV-Betrieb | | `PrioritaetPeak` | `0` | Prioritaet im Peakbetrieb | | `Meldeintervall` | `10 s` | Vollstaendige Rueckmeldung | | `VorgabeTimeout` | `120 s` | Gueltigkeit einer Vorgabe | | `LastwechselSperrzeit` | `5 s` | Mindestzeit zwischen Lastwechseln | ### Pufferspeicher | Ident | Standard | Beschreibung | | --- | ---: | --- | | `LeistungsStufen` | `[]` | Stufe, Leistung und Boolean-Schaltkontakt | | `PufferfuehlerVariableID` | `0` | Integer- oder Floatvariable | | `AussentemperaturVariableID` | `0` | Integer- oder Floatvariable | ### Heizkurve | Ident | Standard | Beschreibung | | --- | ---: | --- | | `FusspunktVorlauftemperatur` | `35.0 C` | Vorlauf bei 20 C aussen | | `HeizkurvenSteigung` | `1.0` | Anhebung je Kelvin fallender Aussentemperatur | | `HeizkurveMinimaltemperatur` | `20.0 C` | Untere Sollwertbegrenzung | | `HeizkurveMaximaltemperatur` | `80.0 C` | Obere Sollwertbegrenzung | | `Hysterese` | `5.0 K` | Abstand zur Einschaltschwelle | | `MindesttemperaturModus` | `Aus` | Aus, statisch oder Differenz | | `Mindesttemperatur` | `20.0 C` | Wert im statischen Modus | | `MindesttemperaturDifferenz` | `5.0 K` | Wert im Differenzmodus | | `WaermepumpenSolltemperaturVariableID` | `0` | Optionale Quelle fuer die WP-Uebernahme | Der Button **Wert von Waermepumpe uebernehmen** berechnet den Fusspunkt so, dass die lokale Heizkurve beim aktuellen Aussenwert durch den aktuellen WP-Sollwert verlaeuft. Es entsteht keine dauerhafte Laufzeitkopplung. ### Erweiterte Einstellungen | Ident | Standard | Beschreibung | | --- | ---: | --- | | `TemperaturMaxAlter` | `120 s` | Maximal zulaessiges Alter beider Messwerte | | `PuffertemperaturGlaetten` | `false` | Aktiviert PT1-Glaettung | | `ZeitKonstante` | `120 s` | PT1-Zeitkonstante | | `EinstellungenInVisu` | `false` | Gemeinsame Verbraucheroption | | `DiagnosevariablenAnzeigen` | `false` | Diagnosevariablen einblenden | | `LoggingEin` | `false` | Debug-Protokoll aktivieren | ## Variablen Immer vorhanden: | Ident | Typ | Beschreibung | | --- | --- | --- | | `Aktiv` | Boolean / bedienbar | Lokale Ein-/Aus-Freigabe | | `Puffertemperatur` | Float | Aktueller, gegebenenfalls geglaetteter Wert | | `Aussentemperatur` | Float | Heizkurveneingang | | `Solltemperatur` | Float | Berechneter und begrenzter Sollwert | | `Heizbedarf` | Boolean | Temperatur liegt unter der Einschaltschwelle | Optional sichtbar sind die gemeinsamen Verbraucher-Diagnosevariablen sowie `AktiveStufe`, `BezogeneEnergie` und `TemperaturenGueltig`. ## Managerkommunikation Das Modul implementiert `VerbraucherSchnittstelle` und Vertrag `4.0`. Es uebernimmt zuerst die vom Manager angekuendigte Betriebsart, berechnet das passende Leistungsangebot und meldet es mit derselben Betriebsart zurueck. Erst danach wird eine Sollleistung angenommen. Die Rueckmeldung enthaelt zusaetzlich: - `Puffertemperatur_C`, - `Aussentemperatur_C`, - `Solltemperatur_C`, - `Heizbedarf`, - `AktiveStufe`, - `Fuehlerfehler` und `Schaltfehler`. ## Sicherheit und Schaltung Die Kontakte werden Break-before-make geschaltet: zuerst alle aus, danach hoechstens eine Stufe ein. Ein Schaltfehler fuehrt zu einem Ausschaltversuch aller Kontakte und einer Stoerungsmeldung. Hardwareseitige Verriegelungen, Temperaturbegrenzer und Schutzorgane bleiben erforderlich. ## Tests - `PufferspeicherReglerTest` prueft Heizkurve, Hysterese, Ein/Aus, Peak und alle Mindesttemperatur-Modi. - `PufferspeicherModulstrukturTest` prueft Metadaten, Properties, Formular, Vertrag und Schaltfolge. - Der standardisierte Symcon-Test prueft die reale Modulinstanz und ist im gemeinsamen Manifest sowie in der Manager-Matrix registriert.