Boucles – ST

Le langage Structured Text (ST) supporte 3 sortes de boucles:

  • FOR ... DO ... END_FOR: Répète un traitement pour un nombre d’itérations donné
  • WHILE ... DO ... END_WHILE: Répète un traitement tant qu’une condition est vraie
  • REPEAT ... UNTIL ... END_REPEAT
    : Effectue un traitement au moins une fois puis le repète jusqu’à ce qu’une condition devienne vraie

Bien que ces instructions soient définie dans la norme IEC 61131, leur usage est en général déconseillé. Elles rallongent le temps de cycle. On peut même se retrouver avec des boucles infinies si on utilise des entrées dans les conditions !  Un article dédié explique en détail pourquoi il faut les éviter ces instructions et donne un exemple de solution alternative à base de compteurs et de temporisations.

Néanmoins, par soucis de respect de la la norme, PLC3000 permet d’écrire des boucles. Le programme suivant en constitue une illustration.

PROGRAM demoLoops
VAR
	continue : BOOL;
	stopCount, index, maxCount : INT;
END_VAR
	continue := TRUE;
	WHILE continue  DO
		continue := FALSE;
	END_WHILE
	stopCount := 5;
	REPEAT
		stopCount := stopCount - 1;
	UNTIL stopCount = 0
	END_REPEAT
	maxCount := 0;
	FOR index := 1 TO 42 BY 3 DO
	    maxCount := maxCount + 11;
	END_FOR;
	IF maxCount < 1000 THEN
		%C0.PV := maxCount;
	ELSE
		%C0.PV := 321;
	END_IF
END_PROGRAM