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 vraieREPEAT ... 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