SA0081 : La bordure supérieure n'est pas une constante
Détecte le FOR
instructions où la limite supérieure n'est pas définie avec une valeur constante
Justification : Si la borne supérieure d'une boucle est une valeur variable, il n'est plus possible de voir à quelle fréquence une boucle est exécutée. Cela peut entraîner de graves problèmes lors de l'exécution. Le pire des cas est une boucle infinie.
Importance : Élevée
Exemple 86. Exemple
PROGRAM PLC_PRG VAR i:INT; iBorder1: INT := 10; iBorder2: INT := 10; iCounter: INT; END_VAR VAR CONSTANT ciBorder:INT := 10; END_VAR
FOR i:=0 TO 10 DO //OK iCounter := i; END_FOR FOR i:=0 TO ciBorder DO // OK iCounter := i; END_FOR FOR i:=0 TO iBorder1 DO // SA0081 iCounter := i; END_FOR FOR i:=0 TO iBorder2 DO // SA0081 iCounter := i; IF iCounter = 10 THEN iBorder2 := 50; END_IF END_FOR
Sortie dans le messages voir:
SA0081 : La bordure supérieure d'une boucle for doit être une valeur constante