Skip to main content

SA0081: Il limite superiore non è un valore costante

Rileva il FOR istruzioni in cui il limite superiore non è definito con un valore costante

Motivo: se il limite superiore di un ciclo è un valore variabile, non è più possibile vedere la frequenza con cui viene eseguito un ciclo. Questo può portare a seri problemi in fase di esecuzione, nel peggiore dei casi a un ciclo infinito.

Importanza: Alta

Esempio 86. Esempio
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

Uscita in Messaggi vista:

  • sa_icon_message.png SA0081: Il bordo superiore di un ciclo for deve essere un valore costante