Taskabarbeitung

bla222

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Freunde,

könnte mir jemand erklären wie das Abarbeiten zyklischer Tasks funktioniert. Beispielsweise habe ich 3 Taks:
Task 1: 10 ms und höchste Priorität
Task 2: 20 ms und zweithöchste Priorität
Task 3: 50 ms und geringste Priorität

Wie werden die Tasks abgearbeitet? Wann könnte es zu Konflikten bei der Gewährleistung von Echtzeit kommen?

Grüße und Danke
 
Hallo!

Deine drei Task werden entsprechend der eingestellten Priorität abgearbeitet.
Task1
Task2
Task3

Probleme können nur auftreten, wenn eine höher priore Task nicht fertig wird.

Gruß,
mac203
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Probleme kann es geben wenn:

1. wenn ein Task länger braucht, als die eingestellte Zykluszeit
2. wenn ein höherpriorer Task dem niederprioren Task Zykluszeit wegnimmt.

Für den zweite Fall noch ein kleines Beispiel:

Task1 braucht 5ms um seinen Task abzuarbeiten.
Task2 braucht 5ms um seinen Task abzuarbeiten.
Task3 braucht 20ms um seinen Task abzuarbeiten.

Zykluszeiten und Prioritäten sind so wie von dir beschrieben eingestellt.

Alle drei Werte sehen auf den ersten Blick vernünftig aus:
Aber wenn man das mal durchdenkt kommt folgendes raus:

1. Task 1 wird abgearbeitet (5ms Gesamtlaufzeit)
2. Task2 wird abgearbeitet (10ms Gesamtlaufzeit)
3. Task1 wird abgearbeitet (15ms Gesamtlaufzeit)
4. Task 3 wird 5 ms lang abgearbeitet, dannach von höherprioren Task 1 unterbrochen (20ms Gesamtlaufzeit)
5. Task 1 wird abgearbeitet (25ms Gesamtlaufzeit)
6. Task2 wird abgearbeitet (30ms Gesamtlaufzeit)
7. Task 1 wird abgearbeitet (35ms Gesamtlaufzeit)
8. Task 3 wird 5 ms lang abgearbeitet, dannach von höherprioren Task 1 unterbrochen (40ms Gesamtlaufzeit)
9. Task 1 wird abgearbeitet (45ms Gesamtlaufzeit)
10. Task2 wird abgearbeitet (50ms Gesamtlaufzeit)
11. Task 1 wird abgearbeitet (55ms Gesamtlaufzeit)
12. Task 3 wird 5 ms lang abgearbeitet, danach von höherprioren Task 1 unterbrochen (60ms Gesamtlaufzeit)
13. Task 1 wird abgearbeitet (65ms Gesamtlaufzeit)
14. Task2 wird abgearbeitet (70ms Gesamtlaufzeit)
--> Zykluszeitüberschreitung Task3 weil sie nicht innerhalb von 50 ms abgearbeitet wurde.

Gruß
wonderfulworld

P.S. Ich hoffe in meinen Beispiel ist kein Flüchtigkeitsfehler drin. Aber ich denke selbst mit einem kleinen Flüchtigkeitsfehler sollte die Problematik klar sein. :)
 
Zuletzt bearbeitet:
Zurück
Oben