Zählschleifen ($FOR)
Zählschleifen erlauben das n-malige Abarbeiten von Anweisungen. Die Anzahl der Schleifendurchgänge wird durch eine Zählvariable kontrolliert.
Syntax: |
Die Zählschleife beginnt mit:
$FOR P..= <expr1> , <expr2> , <expr3> |
und endet immer mit:
$ENDFOR |
Dabei ist P.. die Zählvariable, deren Startwert durch <expr1>, deren Endwert durch <expr2> und das Zählinkrement durch <expr3> festgelegt wird.
Hinweis
Als Zählvariable dürfen nur ganzzahlige Werte verwendet werden.
Bei der Verwendung von Dezimalzahlen kann die Schrittweite i.a. nicht exakt dargestellt werden (Ausnahme: Zweierpotenzen), da sich beim Aufsummieren ein Rundungsfehler akkumuliert. Dies kann dazu führen, dass eine Schleife einmal zu wenig durchlaufen wird.
Anstelle des P-Parameters können auch Variablen ("V.") mit Schreibzugriff verwendet werden.
Ist das Zählinkrement negativ, so erfolgt der Schleifenabbruch bei Unterschreitung des Endwertes, ist es positiv, so wird die Schleife bei Überschreitung des Endwertes abgebrochen. Die Programmierung des Zählinkrements 0 führt zu einer Endlosschleife und zur Ausgabe einer Warnung.
Programmierbeispiel
Zählschleifen
N100 $FOR P1= 10, 100, 2 P1 wird bei Schleifenbeginn mit 10 vorbelegt.
Die Zählschleife wird solange durchlaufen,
bis P1 den Wert 100 überschritten hat, wobei
P1 am Ende jedes Schleifendurchlaufs um 2
erhöht wird.
N110 X SIN [P1 * 5] Innerhalb der Zählschleife kommen die NC-Sätze
bis N130 zur Ausführung.
N120 Y COS [P1 * 5]
N130 ...
N150 $ENDFOR
Programmierbeispiel
Negative Schrittweite:
N100 $FOR P1= 100, 10, -2 P1 wird bei Schleifenbeginn mit 100 vorbelegt.
Die Zählschleife wird solange durchlaufen, bis
N110 X SIN [P1 * 5] P1 den Wert 10 unterschritten hat, wobei P1 am
Ende jedes Schleifendurchlaufs um 2 reduziert
wird. Innerhalb der Zählschleife kommen N110
bis N130 zur Ausführung.
N120 Y COS [P1 * 5]
N130 ...
N150 $ENDFOR
Nicht ausgeführte Schleife:
N100 $FOR P1= 100, 10, 1 P1 wird bei Schleifenbeginn mit 100 vorbelegt.
Die Zählschleife soll solange durchlaufen wer
den, bis P1 den Wert 10 überschritten hat.
N110 X SIN [P1 * 5] Hier jedoch nie, da P1 mit 100 vorbelegt ist.
N120 Y COS [P1 * 5]
N130 ...
N150 $ENDFOR
Endlosschleife:
N100 P2=20
N110 $FOR P1= 100, 10, 0 Endlosschleife
N120 $IF P2 == 50
N130 $BREAK
N140 $ENDIF
N150 $ENDFOR