Flanken zwischen Tasks übergeben

Frage:
Wie kann man eine Flanke zwischen zwei Tasks mit unterschiedlichen Laufzeiten übergeben?

Antwort:
Zur Flankenerkennung eines binären Signals können die Funktionsbausteine R_TRIG und F_TRIG eingesetzt werden. Wird an deren Eingang eine Flanke erkannt, dann wird deren Ausgang für einen Abarbeitungszyklus auf TRUE gesetzt. Dieses Ausgangssignal kann nur sicher in dem Task verwendet werden, in dem auch dieser Funktionsbaustein aufgerufen wird. Soll das Ausgangssignal auch in einem langsameren Task verwendet werden, dann kann es passieren, dass das Ausgangssignal durch die schnellere Task zurückgesetzt wird, bevor der langsamere Task gestartet und die Flanke dort erkannt wird.

Lösung:
Wenn vom Funktionsbaustein R_TRIG bzw. F_TRIG eine Flanke erkannt wird, dann wird eine globale Hilfsvariabe (z. B. g_bTranferEdgeInformation, siehe unten) auf TRUE gesetzt. Im langsameren Task wird diese globale Variable ausgewertet und dann wieder auf FALSE zurückgesetzt. Damit wird die Flanke auch im langsameren Task sicher erkannt.

Bei dieser Lösung muss sichergestellt sein, dass der zeitliche Abstand zwischen zwei Flanken nicht kleiner ist als die Intervallzeit der langsamen Task.

URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/200701265/0/
Kontaktformular