GetCurrentTaskCycle: Ruft das aktuelle Intervall für zyklische Tasks ab.

Funktionsbeschreibung

Diese Funktion gibt eine Diagnose und das aktuelle Intervall des mit dem Task verbundenen zyklische Tasks in Mikrosekunden (μs) an.

Graphische Darstellung

G-SE-0010246.1.jpg

 

 

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.

Beispiel

Das folgende Beispiel beschreibt das Abrufen des aktuellen Intervalls des mit einer POU GetTaskInterval verbundenen zyklischen Tasks in ST. Wenn die Funktion einen Betriebs­fehler 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;