ST-Anweisung ‘REPEAT’

Die REPEAT-Schleife verwenden Sie wie die WHILE-Schleife, jedoch mit dem Unterschied, dass CODESYS die Abbruchbedingung erst nach dem Ausführen der Schleife überprüft. Dieses Verhalten hat zur Folge, dass die REPEAT-Schleife mindestens einmal durchlaufen wird, egal wie die Abbruchbedingung lautet.

Syntax:

REPEAT
  <instructions>
UNTIL <boolean expression>
END_REPEAT;

CODESYS führt die Anweisungen <instructions> solange aus, bis der boolesche Ausdruck <boolean expression> TRUE ergibt.

Wenn der boolesche Ausdruck bereits bei der ersten Auswertung TRUE ergibt, dann führt CODESYS die Anweisungen genau einmal aus. Wenn der boolesche Ausdruck niemals den Wert TRUE annimmt, werden die Anweisungen endlos wiederholt, wodurch das Programm einen Laufzeitfehler verursacht.

Beispiel

REPEAT
 Var1 := Var1*2;
 iCounter := iCounter-1;
UNTIL
 iCounter = 0
END_REPEAT;

Die WHILE- und die REPEAT-Schleifen sind in gewissem Sinne mächtiger als die FOR-Schleife, da die Anzahl der Schleifendurchläufe nicht bereits vor Ausführung der Schleife bekannt sein muss. In manchen Fällen können Sie nur mit diesen beiden Schleifenarten arbeiten. Wenn jedoch die Anzahl der Schleifendurchläufe klar ist, dann ist eine FOR-Schleife zu bevorzugen, um Endlosschleifen zu vermeiden.

In Erweiterung zum Standard IEC 61131-3 können Sie innerhalb der WHILE-Schleife die CONTINUE-Anweisung verwenden.

Siehe auch