TC3: Task per Programm anhalten und starten

Beiträge
5.754
Reaktionspunkte
1.201
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vermutlich war ich wieder zu ungeduldig, aber Tante Google und das Infosys haben bei mir leider für keine Erleuchtung sorgen können. Gibt es in TC3 Befehle mit denen man einen Task stoppen und wieder starten kann, natürlich nicht den Task der den Befehl ausführen soll, so schlau war gerade auch noch.
 
Wirklich anhalten kannst Du eine Task m. W. nur indirekt mit dem FB_IecCriticalSection aus der Tc2System Lib. Ist bei zyklisch laufenden Tasks aber nur mit äußerster Vorsicht zu geniessen.
 
Ist ja auch nicht vorrangig zu diesem Zweck gedacht, müsste aber etwa so gehen:
Die steuernde Task betritt die Critical section mit FB_IecCriticalSection.Enter und setzt eine globale Variable, um die zu stoppende Task davon zu informieren.
Die zu stoppende Task fragt die Variable in jedem Zyklus ab. Ist sie True, ruft die Task ebenfalls FB_IecCriticalSection.Enter auf auf wird dann blockiert.
Nachdem die steuernde Task die Critical section mit FB_IecCriticalSection.Leave verlassen hat, betritt die zuvor blockierte Task die Critical section.
Sie ruft ebenfalls FB_IecCriticalSection.Leave auf und setzt danach die globale Variable zurück. Damit weiss die steuernde Task, dass das Spiel von vorn beginnen kann.
 
Hallo StructuredTrash,
vielen Dank für Deine Ideen. Sorry, ich hatte diese Info bisher nicht erwähnt, die Task die ich anhalten möchte ist eine Visu Task und da kann ich kein eigenes Programm ausführen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lasst die Finger davon weg. Da hängt gegebenenfalls zu viel hinten dran.
Oder als Primitivlösung: Mach in deinem Code von der Task ein bedingtes "Return" rein. Dann wird die Task zwar abgearbeitet, ist aber gleich zu Ende.

Als Ausblick: Ich gehe davon aus das die Worker-Task die aktuell nur in C++ funktionieren irgendwann auch in der PLC unterstützt werden (also eine Task die du eventmaessig antriggerst).
Eventuell hilft dir das ja für deinen usecase.

Guga
 
Zurück
Oben