GetCurrentTaskCycle: Ruft das aktuelle Intervall für zyklische Tasks ab.
Diese Funktion gibt eine Diagnose und das aktuelle Intervall des mit dem Task verbundenen zyklische Tasks in Mikrosekunden (μs) an.
Darstellung in AWL (IL) und ST
Sie finden eine allgemeine Darstellung in AWL (IL) oder ST im Kapitel Darstellung von Funktionen und Funktionsbausteinen.
Beschreibung der E/A-Variablen
Die folgende Tabelle beschreibt die Ausgangsvariable:
Ausgang |
Typ |
Beschreibung |
---|---|---|
GetCurrentTaskCycle |
UDINT |
Betriebsdiagnose der Funktion: 0 = Kein Fehler erkannt oder kein zyklischer Task 2 = Ungültiger Parameter erkannt 12 = Funktion nicht in der Steuerung implementiert |
Die folgende Tabelle beschreibt die Ein-/Ausgangsvariable:
Ein-/Ausgang |
Typ |
Beschreibung |
---|---|---|
currentTime |
UDINT |
Aktuelles Intervall des mit der POU verbundenen Tasks in Mikrosekunden (μs). HINWEIS: Gibt 0 zurück, wenn ein Fehler festgestellt wurde. |
HINWEIS: Wenn diese Funktion in einer mit einem nicht-zyklischen Task verbundenen POU aufgerufen wird, gibt sie 0 zurück, und currentTime wird auf 0 gesetzt.
Das folgende Beispiel beschreibt das Abrufen des aktuellen Intervalls des mit einer POU GetTaskInterval verbundenen zyklischen Tasks in ST. Wenn die Funktion einen Betriebsfehler erkennt, wird das Diagnoseflag auf TRUE gesetzt und ein Fehlercode gespeichert.
Wenn kein Fehler erkannt wurde, wird das Diagnoseflag auf FALSE gesetzt und das gültige Taskintervall wird gespeichert.
Variablendeklaration:
PROGRAM GetTaskInterval
VAR
// Letztes Taskintervall
TaskInterval: UDINT := 0;
Letztes gültiges Taskintervall
TaskInterval_Memo: UDINT := 0;
// Betriebsdiagnose der Funktion GetCurrentTaskCycle
GetTaskCycle_Diag: UDINT := 0;
// Speichern des letzten von GetCurrentTaskCycle erkannten Fehlers
Code
GetTaskCycle_Diag_Memo: UDINT := 0;
// GetCurrentTaskCycle Fehler-erkannt-Flag
GetTaskCycle_Err: BOOL := FALSE;
END_VAR
Programm:
// Ruft das letzte Intervall für zyklische Tasks ab.
GetTaskCycle_Diag:=GetCurrentTaskCycle(TaskInterval);
// Diagnoseergebnis prüfen
IF TaskInterval=0 OR GetTaskCycle_Diag<>0
THEN // Fehler erkannt
GetTaskCycle_Diag_Memo:=GetTaskCycle_Diag;
GetTaskCycle_Err:=TRUE;
ELSE // Gültiges Taskintervall
TaskInterval_Memo:=TaskInterval;
GetTaskCycle_Err:=FALSE;
END_IF;