For Schleife SCL

Gucky_av

Level-1
Beiträge
48
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mein anliegen ist folgendes
IN SCL schreibe ich in einem FB
mit PLCM Sim getestet

FOR i := 1 TO 100 BY 1 DO
z1:=z1: +1;
END_FOR;

Ergebnis Ist
z1 zählt endlos hoch
i geht bis auf 100

meine Eklärung
FB wird durch OB1 zyklisch aufgerufen--> dadurch wird immer wieder die“ i“ Variable von 0 auf 100 hochgezähltà z1 zählt hoch.
Frage: Stimmt dies ?
Dadurch ist aber die For schleife nicht so zu gebrauchen wie ich das sehe.
Wie löst man die Aufgabe ein Programmteil soll nur X mal durch laufen werden wenn Bedingung erfüllt ist davor, mit einer For schleife ?
 
Wie verhinderst du, dass die Schleife nur einmal aufgerufen wird? Jetzt wird ja jeden Zykluss die Forschleife aufgerufen.

Entweder die Schleife einmal aufrufen (dann z.B. mit einem merker sperren) oder die Z variable beim Schleifenstart auf 0 setzen.
 
Dann doch lieber:

Code:
IF du_sollst_zaehlen THEN
   FOR i := 1 TO 100 BY 1 DO
      z1:=z1 +1;
   END_FOR;
   du_sollst_zaehlen := False;
END_IF;

Um ducht die For-Schleife zu laufen muß man (am besten mit einer Flanke) "du_sollst_zaehlen" auf True setzen.

Aber daran denken, keine Temp-Var dafür verwenden!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Beiträge,
das was mich erschreckt hat ist das, das die For Schleife immer wieder durchlaufen wird anstatt einmal bei einer Flanke beim Aufruf. ( Es muss also zusätzlich was geschaffen werden)
Der Beitrag von Ralle sehe ich auch als Lösungsweg. Ich dachte ich liege mit diesem Lösungsweg nicht so günstig
 
Es kommt ja auch immer darauf an, was Du machen willst. Die Lösung von Marcel liefert z.B. den letzten Treffer, falls es mehrere gibt.

Es kann auch gewünscht sein, dass die Schleife zyklisch nach einem Treffer sucht.

Wenn man die Formulierung
ein Programmteil soll nur X mal durch laufen werden wenn Bedingung erfüllt ist
beachtet, gehört in die Anweisung noch ein Schleifenabbruch mit "EXIT".
 
Zurück
Oben