Zum Hauptinhalt springen

Beispiel 7 - Grenzwertüberwachung, Hysterese & Haltedauer

Aufgabe:

Ein Messwert eines Gerätes soll auf Grenzwertverletzungen überwacht werden, es sollen auch Störungen im Messwert unterdrückt werden. Des Weiteren soll auch festgehalten werden, wie lange der Grenzwert verletzt wurde - insgesamt und für das jeweils letzte Ereignis.

Lösung:

$"Math.Trigger_Thresh" = threshold($'FuncGen.Sinus', 0.0, -0.1, {delayOn: 0.5});
$"Math.Trigger_Trig" = trigger($'FuncGen.Sinus', 0.0, -0.1, {stableOn: 0.5}); // alternative Funktion

// Gesamt-Zeit aufsummieren wenn Grenzwert verletzt
$"Math.TimeArc_s" = integrate($"Math.Trigger_Thresh", {storage: 'T_Arcs'});

// Dauer der letzten Grenzwertverletzung
$"Math.TimeArcEvent_s" = stopwatch($"Math.Trigger_Trig", {latch: false, period: false, hold: false});
info

threshold() und trigger() können beide zur Grenzwertüberwachung verwendet werden, funktionieren jedoch leicht unterschiedlich. Mehr Details finden sie in der Erläuterung unten, oder in der Dokumentation der Funktionen.

Verwendete Funktionen:

Erläuterung:

  • Math.Trigger_Thresh: Mithilfe der threshold-Funktion wird eine Grenzwertverletzung detektiert. Dabei wird auch eine Hysterese von -0.1 spezifiziert, sodass kleine Störungen im Messwert unterdrückt werden. Für eine weitere Störungsunterdrückung wird der Parameter delayOn auf 0.5 gesetzt, sodass der Output erst auf true gesetzt wird, sobald das überwachte Signal für 0,5 Sekunden den Grenzwert überschritten hat.

  • Math.Trigger_Trig: Die trigger-Funktion als Alternative zu threshold() ähnelt sich in den meisten Aspekten, gibt jedoch die originellen Start- und Endzeiten der Grenzwertverletzung zurück, sobald stableOn bzw. stableOff erfüllt sind.

  • Math.TimeArc_s: Die gesamte Zeit, für die der Grenzwert verletzt wurde wird hier mithilfe eines Integrals (integrate()) über Math.Trigger_Thresh ermittelt. Mithilfe des Parameters storage: ... wird der Wert persistent auf dem Gerät gespeichert und gibt somit die Gesamtdauer der Grenzwertüberschreitung für den Lebenszyklus des Gerätes an.

  • Math.TimeArcEvent_s: Die Dauer der letzten Grenzwertverletzung wird mithilfe der Funktion stopwatch() festgehalten. Der optionale Parameter hold: false sorgt dafür, dass bei jeder positiven Kante von Math.Trigger_Trig die gemessene Zeit auf 0 zurückgesetzt wird. Mithilfe des Parameters period: false wird die Messmethode der Funktion von der Zeit zwischen zwei steigenden Flanken zu der Zeit, für die Math.Trigger_Trig == true ist, umgestellt. Der Parameter latch: false bewirkt, dass die gemessene Zeit kontinuierlich ausgegeben wird.