SetCurrentTaskCycle: Legt das Intervall für zyklische Tasks fest.

Funktionsbeschreibung

Diese Funktion legt das Intervall für zyklische Tasks fest. Sie erhält den Wert in Mikrosekunden (μs) als Eingangsparameter und gibt ein Diagnoseergebnis zurück. Wenn die Funktion erfolgreich ausgeführt wurde, wirkt sich das neue Intervall mit Beginn der nächsten Iteration des zyklischen Tasks aus (kein Einfluss auf die aktuelle Ausführung).

HINWEIS: Der an die Funktion übergebene Wert muss ein Vielfaches von Tausend sein, Anderenfalls wird ein Fehlercode zurückgegeben.

Wenn Sie ein zu kurzes Intervall für einen zyklischen Tasks definieren (kürzer als die effektive Dauer des Tasks und eventueller weiterer anwendungsbedingter Verarbeitungsschritte), wird der Task sofort nach dem Schreiben der Ausgänge wiederholt, ohne dass Tasks mit niedrigerer Priorität oder andere Systemverarbeitungsschritte ausgeführt wurden. Dies hat eine Auswirkung auf die Ausführung aller Tasks und kann dazu führen, dass die Steuerung die System-Watchdog-Grenzwerte überschreitet und so eine System-Watchdog-Ausnahme erzeugt, durch die die Steuerung angehalten wird.

HINWEIS

UNBEABSICHTIGTE UNTERBRECHUNG DER PROGRAMMAUSFÜHRUNG

Testen Sie das neue Intervall für zyklische Tasks auf ausreichende Dauer, um eine System-Watchdog-Ausnahme zu verhindern, bevor Sie die Funktion SetCurrentTaskCycle ausführen.

Die Nichtbeachtung dieser Anweisungen kann Sachschäden zur Folge haben.

HINWEIS: Sie müssen die möglichen Wertebereiche vor Inbetriebnahme Ihrer Applikation prüfen und sicherstellen, dass Ihr Code das neue Intervall gegen diese Testbedingungen validiert.

Graphische Darstellung

G-SE-0010249.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 Eingangsvariable:

Eingang

Typ

Beschreibung

newTime

UDINT

Neuer Intervallwert des mit der POU verbundenen Tasks in Mikrosekunden (μs).

HINWEIS: Wenn gültig, wird der neue Wert ab dem nächsten Zyklus wirksam.

Die folgende Tabelle beschreibt die Ausgangsvariable:

Ausgang

Typ

Beschreibung

SetCurrentTaskCycle

UDINT

Betriebsdiagnose der Funktion:

0 = Kein Fehler erkannt

1 = Allgemeiner (interner) Fehler erkannt

2 = Ungültiger Parameter erkannt (Wert außerhalb des Bereichs)

12 = Funktion nicht in der Steuerung implementiert

24 = Funktion nicht unterstützt (zum Beispiel kein zyklischer Task)

HINWEIS: Diese Funktion ändert das aktuelle Intervall für zyklische Tasks. Sie überschreibt nicht den Intervallparameter für zyklische Tasks, der in der Taskkonfiguration festgelegt ist. Die ursprünglichen Konfigurationsparameter werden bei einem Reset, Neustart oder Download-Befehl wiederhergestellt.

Weitere Informationen zum Status und Verhalten Ihrer Steuerung finden Sie im Programmier­handbuch Ihrer Steuerung.

HINWEIS: Verwenden Sie die Funktion SetCurrentTaskCycle nicht im gleichen Task, der als Buszyklus-Task des CANopen-Managers definiert ist. Änderung der Zykluszeit für diesen Task wirkt sich auf den Heartbeat oder das Nodeguarding aus. Dies kann u. U. dazu führen, dass CANopen-Geräte einen Fehler erkennen in den Fallback-Zustand wechseln.

Caution_Color.gifVORSICHT

UNBEABSICHTIGTE UNTERBRECHUNG DER PROGRAMMAUSFÜHRUNG

Verwenden Sie die Funktion SetCurrentTaskCycle in keinem Task, der als Buszyklus-Task definiert ist.

Die Nichtbeachtung dieser Anweisungen kann Verletzungen oder Sachschäden zur Folge haben.

Beispiel

Das folgende Beispiel beschreibt das Festlegen des aktuellen Intervalls des mit einer POU SetTaskInterval verbundenen zyklischen Tasks in CFC, FBD oder LD.

Die Funktion SetCurrentTaskCycle wird ausgeführt, wenn das Flag SetTaskInter­val_Flag auf gesetzt TRUE ist. Das Flag wird nach der Ausführung automatisch auf FALSE zurückgesetzt. Das Ergebnisse der Betriebsdiagnose wird in der Variable SetTaskInter­val_Diag abgelegt.

HINWEIS:

Der Freigabe-Eingang/Ausgang (EN/ENO) der Funktion wird aktiviert:

oIn CFC: Rechtsklicken Sie auf die Funktion und wählen Sie den Befehl EN/ENO.

oIn FBD: Fügen Sie die Funktion mit dem Befehl Bausteinaufruf mit EN/ENO einfügen aus dem Menü AWL, FUP, KOP hinzu.

oIn LD: Wechseln Sie mit dem Befehl Ansicht des Menüs AWL, FUP, KOP zur FBD-Ansicht, fügen Sie die Funktion wie oben beschrieben ein und kehren Sie zur LD-Ansicht zurück.

Variablendeklaration:

PROGRAM SetTaskInterval

VAR

  // Neues Taskintervall-Befehlsflag setzen

  SetTaskInterval_Flag: BOOL := FALSE;

  // Wert des neuen zyklischen Taskintervalls (μs)

  newTaskInterval: UDINT;

  //Betriebsdiagnose der Funktion SetCurrentTaskCycle

  SetTaskInterval_Diag: UDINT := 0;

END_VAR

Programm in CFC:

G-SE-0010251.1.jpg

 

 

Programm in FBD:

G-SE-0010255.1.jpg

 

 

Programm in LD:

G-SE-0010259.1.jpg