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});
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 ParameterdelayOn
auf0.5
gesetzt, sodass der Output erst auftrue
gesetzt wird, sobald das überwachte Signal für 0,5 Sekunden den Grenzwert überschritten hat. -
Math.Trigger_Trig
: Die trigger-Funktion als Alternative zuthreshold()
ähnelt sich in den meisten Aspekten, gibt jedoch die originellen Start- und Endzeiten der Grenzwertverletzung zurück, sobaldstableOn
bzw.stableOff
erfüllt sind. -
Math.TimeArc_s
: Die gesamte Zeit, für die der Grenzwert verletzt wurde wird hier mithilfe eines Integrals (integrate()
) überMath.Trigger_Thresh
ermittelt. Mithilfe des Parametersstorage: ...
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 Funktionstopwatch()
festgehalten. Der optionale Parameterhold: false
sorgt dafür, dass bei jeder positiven Kante vonMath.Trigger_Trig
die gemessene Zeit auf 0 zurückgesetzt wird. Mithilfe des Parametersperiod: false
wird die Messmethode der Funktion von der Zeit zwischen zwei steigenden Flanken zu der Zeit, für dieMath.Trigger_Trig == true
ist, umgestellt. Der Parameterlatch: false
bewirkt, dass die gemessene Zeit kontinuierlich ausgegeben wird.