Skip to main content

Freilaufende IEC-Task

Eine freilaufende Task ist eine Task, die zyklisch, aber ohne festen Taskzyklus ausgeführt wird. Es handelt sich um eine wiederkehrende Task im klassischen Sinn der SPS.

Die Ausführung erfolgt so oft wie möglich. Die Abarbeitung erfolgt aber nicht in einem festen Zyklus. Sie können für eine solche Task keine Taskzykluszeit definieren. Das Zeitverhalten wird automatisch gewählt und erfolgt so, dass möglichst keine Belastung für das Gesamtsystem entsteht.

Außerdem wird nach Beenden eines Durchlaufs eine bestimmte Zeit gewartet, bis die Task erneut ausgeführt wird. Die Dauer ist ein Prozentsatz der letzten Zyklusdauer.

Wichtig

Für die frei laufende Task wird keine feste Taskzykluszeit und kein festes Zeitverhalten garantiert.

Für eine freilaufende Task können Sie einen Watchdog konfigurieren.

Logik

Die Last aller freialufender IEC Tasks wird so vom Laufzeitsystem ausgelegt, dass diese Last die Hälfte der eingestellten maximalen Prozessorlast nicht übersteigt.

MaxCpuLoadFreewheeling = ((MIN( 100, MaxProcessorload) / 2) / NumOfFreeWheelingTasks);
SleeptimeAfterCycle = CycleTimeFreewheelingTask * ((100 - MaxCpuLoadFreewheeling) / 100)
if (SleeptimeAfterCycle < 1000) // Minimum sleeptime of 1ms is mandatory!   
SleeptimeAfterCycle = 1000;
Beispiel 26. Beispiel

Das Laufzeitsystem einer Applikation läuft wie folgt:

  • MaxProcessorload = 80

  • CycleTime = 20 ms

  • 1 freilaufende Task

Auswirkung

  • MaxCpuLoadFreewheeling = 40 %

  • SleeptimeAfterCycle = 30 ms

  • Gesamte Zykluszeit der freilaufenden Task = 50 ms

⇒ Insgesamt wird eine CPU-Auslastung von 60 % für das restliche System erreicht.