-> Hier kostenlos registrieren
Hallo Forum,
dies ist mein erster Beitrag hier und ich hoffe ihr könnt mir weiterhelfen. Ich habe zwar schon Zeitverzögerung in SCL gefunden und Schrittkette mit case unter SCL. Aber beides in Kombination noch nicht. Deshalb meine Frage:
Ich will eine Schrittkette in SCL mit der Case-Anweisung programmieren und jeden Schritt verzögern. Mein Code funktioniert im ersten Durchlauf wunderbar aber im zweiten Durchlauf springt er ohne Verzögerung weiter, weil er laut meiner Analyse den Timer nicht zurücksetzt.
Ich habe auch schon versucht am Ende der ersten Case-Anweisung den Timer zurückzusetzen doch das funktioniert auch nicht. Beispiel fogt hier:
dies ist mein erster Beitrag hier und ich hoffe ihr könnt mir weiterhelfen. Ich habe zwar schon Zeitverzögerung in SCL gefunden und Schrittkette mit case unter SCL. Aber beides in Kombination noch nicht. Deshalb meine Frage:
Ich will eine Schrittkette in SCL mit der Case-Anweisung programmieren und jeden Schritt verzögern. Mein Code funktioniert im ersten Durchlauf wunderbar aber im zweiten Durchlauf springt er ohne Verzögerung weiter, weil er laut meiner Analyse den Timer nicht zurücksetzt.
Code:
CASE #SelectStep OF
0:
#ActualStep[1] := TRUE; //Setzen des Timers des aktuellen Schritts
#ActualStep[3] := FALSE; //Rücksetzen des Timers des vorherigen Schritts
#StepNumber := 1;
#StepText := 1;
#LocalTimer[1](IN := #ActualStep[1],
PT := #StepTime,
Q => #SelectNextStep[1],
ET => #tempStepTime[1]);
#actualStepTime := #tempStepTime[1];
IF #SelectNextStep[1] THEN //Weiterschaltbedingung
#SelectStep := #SelectStep + 1;
END_IF;
// Statement section case 1
;
1:
#ActualStep[2] := TRUE; //Setzen des Timers des aktuellen Schritts
#ActualStep[1] := FALSE; //Rücksetzen des Timers des vorherigen Schritts
#StepNumber := 2;
#StepText := 2;
#LocalTimer[2](IN := #ActualStep[2],
PT := #StepTime,
Q => #SelectNextStep[2],
ET => #tempStepTime[2]);
#actualStepTime := #tempStepTime[2];
IF #SelectNextStep[2] THEN //Weiterschaltbedinugng
#SelectStep := #SelectStep + 1;
END_IF;
// Statement section case 2
;
2:
#ActualStep[3] := TRUE; //Setzen des Timers des aktuellen Schritts
#ActualStep[2] := FALSE; //Rücksetzen des Timers des vorherigen Schritts
#StepNumber := 3;
#StepText :=3;
#LocalTimer[3](IN := #ActualStep[3],
PT := #StepTime,
Q => #SelectNextStep[3],
ET => #tempStepTime[3]);
#actualStepTime := #tempStepTime[3];
IF #SelectNextStep[3] THEN //Weiterschaltbedingung
#SelectStep := 0;
END_IF;
// Statement section case 3
;
END_CASE
Ich habe auch schon versucht am Ende der ersten Case-Anweisung den Timer zurückzusetzen doch das funktioniert auch nicht. Beispiel fogt hier:
Code:
CASE #SelectStep OF
0:
#ActualStep[1] := TRUE; //Setzen des Timers des aktuellen Schritts
#ActualStep[3] := FALSE; //Rücksetzen des Timers des vorherigen Schritts
#StepNumber := 1;
#StepText := 1;
#LocalTimer[1](IN := #ActualStep[1],
PT := #StepTime,
Q => #SelectNextStep[1],
ET => #tempStepTime[1]);
#actualStepTime := #tempStepTime[1];
IF #SelectNextStep[1] THEN //Weiterschaltbedingung
#SelectStep := #SelectStep + 1;
END_IF;
#ActualStep[1] := FALSE; //Rücksetzen des Timers
// Statement section case 1
;