freilaufender Task von zyklischem geblockt?

Gegge

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

was passiert, wenn ein freilaufender Task (hier: PLC_PRG) von einem zyklischen Task mit höherer Priorität oft überschrieben wird?

Der zyklische Task läuft mit 1ms. Dieser wird immer wieder durchlaufen, jedoch nicht mein PLC_PRG? Dieses wird gar nicht ausgeführt?
 
Hallo,

was passiert, wenn ein freilaufender Task (hier: PLC_PRG) von einem zyklischen Task mit höherer Priorität oft überschrieben wird?

Der zyklische Task läuft mit 1ms. Dieser wird immer wieder durchlaufen, jedoch nicht mein PLC_PRG? Dieses wird gar nicht ausgeführt?

Erhöhe zum Testen den zyklischen Task auf 10ms. Wird dann der PLC_PRG angestossen?
 
ich würde das eh nicht mit 1ms laufen lassen, die reaktionszeit einer messung dürfte in aller regel schon höher sein. kommt auf die hw an. fakt ist das eine hardwarekomponente nicht öfters ansprechbar ist als ihre interne zykluszeit für die dd-übertragung/da-wandlung.

was das problem angeht das der zyklische task mit 1ms läuft kann es, je nach dem wie stark das system sonst noch belastet ist auch dazu kommen das PLC_PRG, obwohl freilaufend nicht mehr sauber abgearbeitet wird. ein blick in den plc-browser mit dem befehl "tsk" kann aufschluss über reele zykluszeiten und abarbeitungsverhalten geben.

schau dir das mal an.

dazu kommt die tatsache das bei aktiver watchdog-überwachung von PLC_PRG auch ein interrupt die abarbeitung unterbrechen kann (zykluszeitüberwachung)
hintergrund ist der das bei zeitgesteuerten tasks mit höherer priorität als PLC_PRG das PLC_PRG immer wieder für den höherpriorisierten task unterbrochen wird, dies kann zu exponenten zykluszeiten führen. wird hier dann noch der watchdog angewendet der evtl. zu klein dimensioniert ist, würde PLC_PRG unterbrochen und beim nächsten zyklus neu gestartet. Das Ergebniss wäre ein programm das niemals bis zum ende abgearbeitet wird.

grüße markus
 
Zurück
Oben