Programmieren Ablaufsystem/Tasks/Systemtakte
6.1 Ablaufsystem
6.1.6.3
Beispiel für Verwendung der Taskstati
Im folgenden Beispiel wird der Taskstatus einer MotionTask abgefragt, um zu entscheiden,
ob diese gestartet werden kann. Hierzu werden die relevanten Bits des Rückgabewerts
ausgewertet. Bei positivem Ergebnis wird die MotionTask gestartet.
Tabelle 6- 7 Beispiel für Abfrage, ob eine MotionTask gestartet werden kann
ret_dword := _getStateOfTaskId (id := _task.motionTask_1);
Für ein Beispiel mit MCC, siehe MCC-Programmierhandbuch unter Befehl Taskzustand.
6.1.7
MotionTask auf Erfüllung einer Bedingung warten lassen
6.1.7.1
Syntax der Bedingung der EXPRESSION
Nachfolgendes betrifft die Programmierung in ST. Bei MCC erfolgt die Definition der
Wartebedingung direkt in den Befehlen.
Mit dem Befehl WAITFORCONDITION können Sie in einer MotionTask auf die Erfüllung
einer Bedingung (z. B. Eintreten eines Ereignisses) warten. Die MotionTask, in der die
Anweisung aufgerufen wird, wird so lange in den Zustand TASK_STATE_WAITING versetzt,
bis die Bedingung erfüllt ist.
Bei Verwendung der Durchgangsparameter VAR_IN_OUT können Sie eine
Zeitüberwachung bei WAITFORCONDITION ermöglichen.
Diese Bedingung wird in Form einer EXPRESSION formuliert.
Die Expression ist ein Spezialfall einer Funktionsvereinbarung (zur Syntax siehe Kapitel
Expressions im ST Programmierhandbuch):
● Der Datentyp des Rückgabewerts kann als BOOL festgelegt werden und wird nicht
● Die Verwendung der Durchgangsparameter VAR_IN_OUT und Eingangsparameter
Eine Expression kann ausschließlich im Implementationsabschnitt der Unit vereinbart
werden.
Optional können im Deklarationsabschnitt lokale (temporäre) Variablen deklariert werden.
Andere Deklarationen (z. B. von Eingangsparametern oder Konstanten) sind nicht möglich.
256
IF (ret_dword AND
(TASK_STATE_STOPPED OR TASK_STATE_STOP_PENDING)
) <> 0 THEN
// MotionTask kann gestartet werden.
ret_dword := _restartTaskId (id := _task.motionTask_1);
ELSE
; // MotionTask kann nicht gestartet werden.
END_IF;
explizit angegeben.
VAR_INPUT ist möglich.
Basisfunktionen
Funktionshandbuch, 05/2009