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.