SendByDifferenceMaxMin Sendet nach Differenz und Max Min Value)

Dieser Baustein gehört zum Paket „Calculate/Time (Berechnung/Zeit)“.

Paket-Preis: 22,50€

Kurzbeschreibung

Diese Funktion überwacht eine eingehende Zahl und prüft, ob sich deren Wert ausreichend stark verändert hat oder bestimmte Grenzwerte erreicht wurden. Nur wenn diese Bedingungen erfüllt sind, wird der neue Wert gespeichert und weitergegeben. Zusätzlich kann eine zeitgesteuerte Überprüfung aktiviert werden, bei der die Ausgabe regelmäßig unabhängig von Veränderungen erfolgt. Optional wird der zuletzt ausgegebene Wert auf einer SD-Karte gespeichert und beim nächsten Start wieder eingelesen.

Besonderheit

  • Funktionale Flexibilität:

    • Die Schwelle für Veränderungen (Difference) kann dynamisch angepasst werden.

    • Der Zeitpunkt der Ausgaben kann durch den Zeitfilter verzögert und regelmäßig wiederholt werden.

    • Die Speicherpfade für Daten können frei definiert werden.

  • Fehlerbehandlung:

    • Es existieren interne Absicherungen für alle Abläufe.

    • Fehler werden aufgezeichnet und sind über die Protokoll-Ausgänge einsehbar.

  • Grenzen und Validierungen:

    • Werte mit exakt definiertem Minimum oder Maximum werden stets ausgegeben.

    • Die speziellen Default-Werte 1000 und -1000 deaktivieren die jeweiligen Grenzprüfungen automatisch.

  • SD-Karte:

    • Wird eine SD-Karte erkannt, kann der zuletzt ausgegebene Wert dauerhaft gespeichert und beim Neustart wiederhergestellt werden.

    • Ohne SD-Karte erfolgt keine persistente Speicherung – dies wird im Protokoll kenntlich gemacht.

Diese Funktion dient zur Überwachung eines Zahlenwertes, der beispielsweise von einem Sensor stammen kann. Die Ausgabe erfolgt nur unter bestimmten Bedingungen:

  1. Wertänderung: Die Ausgabe erfolgt, wenn sich der eingehende Wert um mehr als einen festgelegten Schwellenwert verändert hat. Diese Schwelle wird über den Parameter Difference definiert.

  2. Grenzwerte: Die Ausgabe erfolgt ebenfalls, wenn der eingehende Wert exakt einem definierten Minimal- oder Maximalwert entspricht. Damit können besonders wichtige Werte hervorgehoben werden.

  3. Zeitfilter (optional): Wird der Zeitfilter aktiviert, erfolgt die Ausgabe nicht sofort, sondern verzögert in regelmäßigen Abständen, auch wenn keine Änderung erkannt wurde.

  4. Initialisierung mit gespeicherten Daten: Bei der ersten Ausführung wird geprüft, ob ein zuvor gespeicherter Ausgabewert auf der SD-Karte vorhanden ist. Falls ja, wird dieser verwendet, um unnötige Wiederholungen zu vermeiden.

  5. Speicherung auf SD-Karte: Ist eine SD-Karte vorhanden, wird der aktuell ausgegebene Wert dauerhaft gespeichert. Beim nächsten Start kann der vorherige Zustand wiederhergestellt werden.

  6. Protokollierung: Für Diagnosezwecke werden zwei Protokolle geführt – eines für reguläre Ausführungen und eines für zeitgesteuerte Vorgänge.

  7. Fehlerbehandlung: Sämtliche Vorgänge sind durch Fehlerbehandlungsmechanismen abgesichert, sodass bei auftretenden Problemen entsprechende Fehlermeldungen im Protokoll erscheinen.

  • Activate (bool):
    Aktiviert oder deaktiviert die gesamte Funktion.
  • ActivateTimeFiler (bool):
    Aktiviert den zeitgesteuerten Modus. Wenn aktiviert, wird der Ausgang in regelmäßigen Abständen aktualisiert – unabhängig davon, ob sich der Eingangswert verändert hat.
  • Input (bool): 
    Der aktuelle Zahlenwert, der überwacht werden soll (z. B. Messwert eines Sensors).
  • Difference (double):
    Gibt an, wie stark sich der Eingabewert verändern muss, damit er erneut ausgegeben wird. Kleine Schwellenwerte führen zu häufigeren Ausgaben, größere Schwellenwerte reduzieren die Anzahl der Aktualisierungen.
  • MinValue (double):
    Wenn der Eingabewert genau diesem Wert entspricht, wird er auch ohne relevante Veränderung sofort ausgegeben.
    Hinweis:
    Wird dieser Eingang auf 1000 gesetzt, bedeutet das:
    👉 Die Prüfung auf diesen Minimalwert ist deaktiviert.
    Es erfolgt dann keine Sonderausgabe bei Erreichen dieses Wertes.
  • MaxValue (double):
    Wenn der Eingabewert genau diesem Wert entspricht, wird er ebenfalls unabhängig von der Differenzregel sofort ausgegeben.
    Hinweis:
    Wird dieser Eingang auf -1000 gesetzt, bedeutet das:
    👉 Die Prüfung auf diesen Maximalwert ist deaktiviert.
    Der Wert hat dann keine Sonderbehandlung, auch wenn er erreicht wird.
  • Delay (timespan):
    Gibt die Zeitverzögerung für die periodische Ausgabe an, wenn der Zeitfilter aktiv ist.
    (Standard: 10 Sekunden)
  • StoragePath (string):
    Pfad auf der SD-Karte, unter dem der zuletzt ausgegebene Wert gespeichert bzw. gelesen werden soll. Falls keine SD-Karte vorhanden ist, wird der Speicherweg ignoriert.
  • Output (bool):
    Gibt den aktuellen verarbeiteten Wert aus, wenn eine relevante Änderung erkannt oder ein Grenzwert erreicht wurde.
  • LogExecute (string):
    Protokolliert Abläufe oder Fehler aus der direkten Ausführung.
  • LogSchedule (string):
    Protokolliert Abläufe oder Fehler, die aus dem zeitgesteuerten Prozess stammen.Such dir ein Thema aus und amche 2 Beispeile einmal mit TimeFilte rund einmal ohne

Beispiel 1 – Überwachung der Leistungsaufnahme eines Haushaltsgeräts (in Watt):

Die Leistungsaufnahme eines größeren Haushaltsgeräts (z. B. eines Wäschetrockners oder einer Wärmepumpe) wird überwacht. Der Wert soll nur dann übertragen oder gespeichert werden, wenn sich die Leistungsaufnahme deutlich verändert oder bestimmte kritische Schwellen erreicht werden (z. B. besonders hoher Verbrauch).

  • Eingabe:
    • Activate: true
    • ActivateTimeFiler: false
    • Input: 2200
    • Difference: 300
    • MinValue: 100
    • MaxValue: 4000
    • Delay: –
    • StoragePath: stromverbrauch_geraet
  • Ausgabe:
    • Die aktuelle Leistungsaufnahme wird nur dann ausgegeben, wenn sich der Wert um mehr als 300 Watt vom zuletzt ausgegebenen Wert unterscheidet.

    • Oder wenn der Wert genau 100 Watt (Standby) oder genau 4000 Watt (Grenze zur Überlastung) erreicht – in diesen Fällen erfolgt eine sofortige Ausgabe, unabhängig von der Differenzregel.

    • Es findet keine regelmäßige Ausgabe statt, wenn sich der Wert nur geringfügig verändert oder stabil bleibt.

Beispiel 1 – Mit Zeitfilter – Regelmäßige Leistungsmeldung, unabhängig von Änderungen:

Der Energieverbrauch eines Haushaltsgeräts wird regelmäßig an eine Visualisierung oder Auswertung gesendet – auch wenn sich der Verbrauch aktuell nicht verändert hat. Dies ist z. B. sinnvoll, um Verbrauchskurven zu dokumentieren oder Trends zu erkennen.

  • Eingabe:
    • Activate: true
    • ActivateTimeFiler: true
    • Input: 1500
    • Difference: 500
    • MinValue: 1000
    • MaxValue: -1000
    • Delay: 10s
    • StoragePath: stromverbrauch_geraet_02
  • Ausgabe:
      • Alle 10 Sekunden wird der aktuelle Wert der Leistungsaufnahme ausgegeben – auch wenn sich der Wert nicht geändert hat.

      • Die Difference-Einstellung ist in diesem Modus sekundär, da die Ausgabe zeitgesteuert unabhängig von Änderungen erfolgt.

      • Sonderregel bei MinValue: Wird der Wert genau 1000 Watt, erfolgt zusätzlich eine sofortige Ausgabe, selbst wenn der Zeitpunkt der nächsten geplanten Ausgabe noch nicht erreicht ist.

      • Da MaxValue = -1000, ist die Maximalwertprüfung deaktiviert – hohe Verbrauchswerte führen nicht zu einer gesonderten Ausgabe.

 

✅ Warum das sinnvoll ist:

  • Ohne Zeitfilter werden nur wirklich relevante Änderungen oder Zustände weitergegeben → ideal zur Vermeidung unnötiger Datenflut.

  • Mit Zeitfilter ist eine kontinuierliche und gleichmäßige Erfassung möglich, z. B. für Logging, Monitoring oder visuelle Darstellung.

  • Durch die Grenzwerte können besondere Zustände erkannt und hervorgehoben werden, z. B. Standby oder Überlast.

Warum wird der Wert nicht ausgegeben, obwohl sich etwas verändert hat?

Wahrscheinlich liegt die Änderung unterhalb der definierten Schwelle (Difference). Nur bei größeren Abweichungen wird eine Ausgabe ausgelöst.

Wofür stehen die Werte 1000 und -1000 bei MinValue und MaxValue?

Diese Werte sind Platzhalter und deaktivieren die jeweilige Grenzprüfung. Sobald andere Werte gesetzt werden, werden diese aktiv berücksichtigt.

Funktioniert die Speicherung auch ohne SD-Karte?

Nein, ohne SD-Karte wird der Wert nur temporär verarbeitet. Die Speicherung erfolgt ausschließlich, wenn ein entsprechender Pfad auf einer SD-Karte vorhanden ist.

  • Version 3.0.10
    • 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!