MinReplacementCurrentWidth (Setze Minimale Breite Ersatzstrombereich)

Dieser Baustein gehört zum Paket „PV“.

Paket-Preis: 29,50€

Kurzbeschreibung

Diese Logik steuert die minimale Breite eines Strombereichs, der auf Basis von Sonnenaufgang, Sonnenuntergang, Wetterprognosen und Akkuverbrauch automatisch angepasst wird. Ziel ist es, die Energieeffizienz zu verbessern und die Akkuladung intelligent zu nutzen. Die Methode erkennt Tageszeiten, berücksichtigt manuelle Einstellungen, prognostiziert den Energiebedarf und speichert relevante Daten auf einer SD-Karte. Abhängig von verschiedenen Faktoren wie Sommer-/Winterbetrieb oder Heiz-/Kühlbedarf wird automatisch entschieden, wie weit der Strombereich reduziert werden kann, ohne Komfort oder Funktionalität zu beeinträchtigen.

Besonderheit

  • Funktionale Flexibilität:

    • Die Steuerung kann automatisch oder manuell betrieben werden.

    • Stromprognosen, Akkustand und Zeitsteuerungen ermöglichen eine feinabgestimmte Regelung.

    • Unterschiedliche Betriebsmodi (Sommer/Winter, Heizen/Kühlen) werden berücksichtigt.

    Fehlerbehandlung:

    • Mehrstufige Fehlererkennung (z. B. fehlerhafte Prognosen, SD-Karten-Zugriffsfehler)

    • Protokollierung aller Schritte und Fehler im Log

    • Standardwerte (z. B. 1000 W bei Stromdifferenzfehler) werden automatisch gesetzt

    Grenzen und Validierungen:

    • Akkumaximalwert ist auf 10 begrenzt

    • Zeitwerte wie „TimeBeforeSunrise…“ haben definierte Mindestwerte

    • Stromverbrauchsdifferenzen unter 1 W werden als Fehler erkannt

    SD-Karte:

    • Eine SD-Karte ist zwingend erforderlich, um Prognosen, Zeitwerte und Statusdaten zu speichern oder wiederherzustellen.

    • Ohne SD-Karte erfolgt keine Langzeitspeicherung.

Dieses Modul dient der intelligenten Steuerung der minimal zulässigen Strombandbreite basierend auf aktuellen Systemdaten, Nutzerentscheidungen und externen Einflüssen wie Sonnenaufgang, Sonnenuntergang sowie Wetter- und Stromverbrauchsprognosen.

Bei Aktivierung wird ein Tagesplan erstellt, der stündlich relevante Zustände auswertet, darunter der Ladezustand des Akkus, vorhergesagte Stromerzeugung, tatsächlicher Stromverbrauch, sowie manuelle Benutzereingaben. Der Ablauf ist fein abgestimmt auf die Tageszeit: Beispielsweise wird nach Sonnenuntergang der Akkuzustand auf einen konservativen Minimalwert gesetzt. Gegen Mitternacht folgen detaillierte Auswertungen zur Stromprognose, die beeinflussen, wie stark die Strombandbreite am Folgetag reduziert werden kann.

Zusätzlich erkennt das System, ob es sich um Sommer oder Winter handelt und ob aktuell ein Heiz- oder Kühlmodus benötigt wird. Diese Information fließt direkt in die Berechnung des minimalen Energiebedarfs ein. Sollte die Prognose sehr gut ausfallen, wird der Wert auf 0 gesetzt, um maximale Energieeinsparung zu ermöglichen.

Ein weiteres zentrales Element ist die Speicherfunktion. Alle berechneten und ermittelten Werte werden auf einer SD-Karte abgelegt. Dadurch bleibt der Zustand auch nach einem Neustart erhalten. Fehlerfälle wie fehlende Prognosedaten oder unplausible Verbrauchswerte werden erkannt, dokumentiert und durch Standardannahmen (z. B. 1000 W) kompensiert.

  • Activate (bool):
    Aktiviert oder deaktiviert den Baustein.
  • Summer(bool):
    Gibt an, ob Sommerbetrieb aktiv ist
  • HeatingCooling (bool): 
    Gibt an, ob Heiz-/Kühlmodus aktiv ist
  • SetManual (bool):
    Wenn aktiviert, wird die manuelle Einstellung übernommen.
  • TakeAccuPowerConsumptionCalculation (bool):
    Aktiviert die Berechnung anhand des aktuellen Verbrauchs
  • Sunrise (timespan):
    Zeitpunkt des Sonnenaufgangs
  • Sunset (timespan):
    Zeitpunkt des Sonnenuntergangs
  • MinimumWidthManual (int) [%}:
    Minimale Ersatzstrombreite, welche gesetzt wird, wenn „SetManual“ ausgelöst wird.
  • MinimumWidthNight (int) [%]:
    Minimale Ersatzstrombreite, welche gesetzt wird, wenn die Sonne untergeht.
  • PowerConsumption (int) [Wh]:
     Aktuell gemessener Stromverbrauch.
  • AccuActual (double) [kWh]:
    Aktueller Akkuladestand in Prozent.
  • AccuMaximal (double) [kWh]:
     Maximal möglicher Ladezustand des Akkus.
  • ForecastElectricityGeneration (double):
    Erwartete Stromerzeugung (kWh) des nächsten Tages.
  • StoragePath (string):
    Unterordner für SD-Karten-Speicherung.
  • TimeBeforeSunriseToSetAccuToZeroWinter (timespan):
    Dieser Eingang definiert eine feste Zeitspanne vor dem Sonnenaufgang im Winter, zu der – bei sehr guter Stromerzeugungsprognose – der Akkustand gezielt auf 0 % gesetzt wird. Hintergrund ist, dass im Winter morgens oft ein höherer Energiebedarf besteht (z. B. für Heizung), aber gleichzeitig weniger Sonnenenergie zur Verfügung steht. Die Logik nutzt diesen Wert, um möglichst spät – aber noch rechtzeitig vor Sonnenaufgang – zu entscheiden, ob eine vollständige Entladung des Akkus sinnvoll ist. Wenn beispielsweise der Sonnenaufgang um 7:00 Uhr stattfindet und dieser Eingang auf „01:00:00“ gesetzt ist, wird ab 6:00 Uhr geprüft, ob die Bedingungen für eine vollständige Entladung erfüllt sind. Diese Funktion wird insbesondere dann aktiviert, wenn keine exakte Verbrauchsberechnung möglich ist, oder ein Stromverbrauchsfehler erkannt wurde. Der Winterwert ermöglicht somit eine abgesicherte, aber vorsichtige Entladung, ohne den Komfort zu beeinträchtigen.
  • TimeBeforeSunriseToSetAccuToZeroSummer (timespan):
    Dieser Eingang legt fest, wie viele Stunden vor Sonnenaufgang im Sommer der Akkustand auf 0 % gesetzt werden darf – sofern eine sehr gute Wetterprognose vorliegt. Im Sommer ist morgens oft bereits früh mit Sonnenenergie zu rechnen, daher kann der Akku auch früher komplett entladen werden. Der Vorteil liegt darin, dass der Akku bei Tagesbeginn wieder vollständig aufgeladen werden kann, wodurch das Energiesystem effizienter arbeitet. Wenn der Sonnenaufgang beispielsweise um 5:30 Uhr stattfindet und dieser Eingang auf „03:00:00“ gesetzt ist, dann beginnt die Logik bereits ab 2:30 Uhr mit der Prüfung, ob der Akkustand auf 0 % gesetzt werden kann. Diese Funktion ist besonders dann hilfreich, wenn der Stromverbrauch in der Nacht nicht zuverlässig gemessen werden kann, oder wenn ein Verbrauchsfehler erkannt wurde. Durch die getrennte Zeitangabe für Sommer kann die Logik früher reagieren und das volle Ladepotenzial des Tages optimal ausschöpfen.
  • MinimumWidth (int):
    Gibt die aktuelle minimale Ersatzstrombreite an.
  • ResetSetManual (bool):
    Gibt an, ob eine manuelle Einstellung zurückgesetzt wurdes.
  • LogExecute (string):
    Protokolliert die Hauptausführung der Logik.
  • LogSchedule (string):
     Protokolliert den Ablauf des Tagesplans inkl. Prognosen und Berechnungen.

Beispiel 1 – Verhalten des Bausteins bei mittlerer Prognose (9 kWh) im Sommer mit Kühlbetrieb:

  • Eingabe:
    • Activate: true
    • Summer: true
    • HeatingCooling: false
    • SetManual: false
    • TakeAccuPowerConsumptionCalculation: true
    • MinimumWidthNight: 30
    • MinimumWidthManual: 0
    • AccuMaximal: 10
    • MinimumWidthNight: 30
    • ForecastElectricityGeneration: 9
    • Sunset: 20:30Uhr
    • Sunrise: 06:00Uhr
    • TimeBeforeSunriseToSetAccuToZeroSummer: 3h

🌇 1. Sonnenuntergang (20:30 Uhr)

    • Der Baustein erkennt, dass es Nacht wird (Sunset erreicht).

    • Es ist kein manueller Modus aktiv → automatische Regelung läuft.

    • Die Ersatzstrombreite wird auf den Nachtwert gesetzt:
      MinimumWidth = 30 %

    • Dieser Wert wird gespeichert und im Log festgehalten.

🌙 2. Nacht (ab 00:10 Uhr): Prognoseverarbeitung

    • Die Prognose für den nächsten Tag beträgt: 9 kWh

    • Die Logik prüft nun:

      • Sommerbetrieb aktiv (Summer = true)

      • Kühlbetrieb aktiv (HeatingCooling = false)

    • In der Entscheidungstabelle für Sommer + Kühlung gilt:

      Prognose [kWh]Ergebnis
      >130 %
      >1110 %
      >820 %
      >630 %
      >340 %
      ≤350 %

       

    • Da 9 kWh > 8 kWh → Zielwert für nächsten Tag: 20 %

🕒 3. Sommer-Zeitfenster (03:00 Uhr)

    • Die Logik prüft: Ist es Zeit für das Entladen auf Zielwert?

    • Ja: Sunrise = 06:00TimeBeforeSunriseToSetAccuToZeroSummer = 3h
      → Jetzt ist 03:00 Uhr, also Beginn des Sommer-Zeitfensters.

    • Es wird geprüft:

      • Ist TakeAccuPowerConsumptionCalculation = 1? → ✅ Ja

      • Ist Zielwert bekannt? → ✅ Ja → 20 %

      • Kann Akku rechtzeitig entladen werden? → Angenommen: ✅ Ja

Ergebnis:
MinimumWidth wird von 30 % auf 20 % gesenkt.
Der Akku kann also am nächsten Tag mehr Sonnenstrom aufnehmen, ohne komplett leer zu sein.

🌅 4. Sonnenaufgang (06:00 Uhr)

    • Tagesbetrieb beginnt.

    • MinimumWidth bleibt bei 20 %, bis neue Werte am nächsten Abend berechnet werden.

    • System läuft effizient und speichert alles auf SD-Karte.

💬 Warum ist das gut?

  • Das System erkennt, dass 9 kWh eine mittelgute Prognose ist.

  • Der Akku bleibt teilweise geladen – ein Kompromiss zwischen Sicherheit und Effizienz.

  • Bei besserer Prognose (>13 kWh) hätte er auf 0 % gesetzt.

  • Bei schlechter Prognose (z. B. 5 kWh) wären es 40 % oder 50 % geworden.

Beispiel 2 – Verhalten des Bausteins im Winterbetrieb bei mittlerer Prognose (9 kWh):

  • Eingabe:
    • Activate: true
    • Summer: false
    • HeatingCooling: true
    • SetManual: false
    • TakeAccuPowerConsumptionCalculation: true
    • MinimumWidthNight: 30
    • MinimumWidthManual: 0
    • AccuMaximal: 10
    • MinimumWidthNight: 30
    • ForecastElectricityGeneration: 9
    • Sunset: 16:45Uhr
    • Sunrise: 07:30Uhr
    • TimeBeforeSunriseToSetAccuToZeroWinter: 1h

 

🌇 1. Sonnenuntergang (16:45 Uhr)

    • Die Logik erkennt: Die Sonne ist untergegangen.

    • Es ist kein manueller Wert gesetzt → die Nachtsteuerung wird aktiviert.

    • MinimumWidth wird auf 30 % gesetzt → aus dem Wert von MinimumWidthNight

    • Dieser Wert wird gespeichert und ins SD-Log geschrieben.

🌙 2. Nacht (ab 00:10 Uhr): Prognoseverarbeitung

    • Die Wetterprognose (ForecastElectricityGeneration) liegt bei 9 kWh

    • Jetzt wird der Tageswert für morgen berechnet – je nach Betriebsmodus.

    • In der Entscheidungstabelle für Winter + Heizung gilt:

      Prognose [kWh]Ergebnis
      >170 %
      >1510 %
      >1220 %
      >1030 %
      >740 %
      sonst50 %
    • Da 9 kWh > 7 kWh → Zielwert für nächsten Tag: 40 %

🕒 3. Winter-Zeitfenster (06:30 Uhr)

    • Sunrise = 07:30 Uhr, TimeBeforeSunriseToSetAccuToZeroWinter = 1h

    • → Also beginnt das Zeitfenster um 06:30 Uhr

    • Die Logik prüft nun:

      • Ist TakeAccuPowerConsumptionCalculation aktiv? ✅

      • Ist der Zielwert bestimmt? ✅ → 40 %

      • Kann Akku entsprechend geregelt werden? ✅ angenommen ja

Ergebnis:
MinimumWidth wird von 30 % auf 40 % angepasst.

Warum höher? → Im Winter wird morgens mehr Energie gebraucht (z. B. für Heizung), daher geht das System auf Nummer sicher.

🌅 4. Sonnenaufgang (0

07:30 Uhr)

  • Tagesbetrieb startet.

  • MinimumWidth bleibt auf 40 %

  • Erst am nächsten Abend startet ein neuer Regelzyklu

💬 Warum ist das gut?

  • Im Winter ist Energiebedarf morgens hoch (z. B. Heizung).

  • Trotz mittlerer Prognose (9 kWh) setzt die Logik auf 40 % Sicherheitswert.

  • Bei noch schlechterer Prognose (<7 kWh) wären es 50 % geworden.

  • Nur bei exzellenten Prognosen (>17 kWh) wird auf 0 % entladen.

Was passiert, wenn keine SD-Karte vorhanden ist?

Ohne SD-Karte kann das System keine Werte speichern. Alle gespeicherten Einstellungen und Prognosedaten gehen nach einem Neustart verloren. Die Logik zeigt dies auch im Protokoll an.

Wie genau ist die Steuerung der minimalen Bandbreite?

Die Bandbreite wird in 10%-Schritten angepasst. Die Entscheidung basiert auf Wetterprognose, Akkuladestand und Betriebsmodus.

Wann wird eine manuelle Einstellung wieder zurückgesetzt?

Wenn SetManual aktiviert wurde, bleibt die manuelle Einstellung bis 17:00 Uhr aktiv. Danach erfolgt automatisch ein Rücksprung zur automatischen Steuerung.

  • Version 3.0.18
    • First Release

Baustein-Support

Wenn Sie X1-Logik-Baustein-Support benötigen, senden Sie uns bitte zusätzlich den Log (LogExecute und LogSchedule, welcher als Ausgang des Bausteins ausgegeben wird) und eine detaillierte Beschreibung des Problems zu!