Skip to main content

Dichiarazione ST: FOR

Il FOR loop viene utilizzato per eseguire istruzioni con un certo numero di ripetizioni.

Sintassi:

FOR <counter> := <start value> TO <end value> {BY <increment> } DO
  <instructions>
END_FOR;

La sezione all'interno delle parentesi graffe {} è facoltativa.

CODESYS esegue il <instructions> fintanto che il <counter> non è maggiore di - o in caso di negativo increment passo meno di – il <end value>. Questo viene verificato prima dell'esecuzione del <instructions>.

Ogni volta il <instructions> istruzione sono state eseguite, il contatore <counter> viene automaticamente aumentato dell'incremento <increment>. L'incremento <increment> può avere qualsiasi valore integrale. Se non si specifica un incremento, l'incremento standard è 1.

Esempio 71. Esempio
FOR iCounter := 1 TO 5 BY 1 DO
  iVar1 := iVar1*2;
END_FOR;
Erg := iVar1;

Se hai preconfigurato iVar1 con 1, iVar1 ha il valore 32 dopo il ciclo FOR.



Attenzione

Il valore finale <valore finale> non deve assumere lo stesso valore del limite superiore del tipo di dati del contatore.

Se il valore finale del contatore è uguale al limite superiore del tipo di dati del contatore, si ottiene un ciclo infinito. Ad esempio, un ciclo infinito risulta nell'esempio precedente if iCounter è del tipo di dati SINT e il <end value> equivale 127, poiché il tipo di dati SINT ha il limite superiore 127.

Come estensione della norma IEC 61131-3 è possibile utilizzare il CONTINUA dichiarazione all'interno del FOR ciclo continuo.