FOR_DO
Use el lazo FOR_DO para realizar una acción un número de veces específico antes de hacer cualquier otra cosa.
Si se habilita, la instrucción FOR ejecuta la Rutina repetidamente hasta que el valor Index excede el Terminal value. El valor del paso puede ser positivo o negativo. Si es negativo, el lazo finaliza cuando el índice sea menor que el valor terminal. Si es positivo, el lazo finaliza cuando el índice es mayor que el valor terminal.
Cada vez que la instrucción FOR ejecuta la rutina, añade el Step size al Index.
No haga demasiados lazos en un solo escaneado. Un número excesivo de repeticiones puede provocar que la vigilancia del controlador exceda el tiempo de espera, lo que provocaría un fallo mayor.
Operandos
FOR count:= initial_value TO
final_value BY increment DO
<statement>;
END_FOR;
Operando | Tipo | Formato | Descripción |
count | SINT INT DINT | Etiqueta | Etiqueta para almacenar la posición de conteo a medida que se ejecuta el lazo FOR_DO. |
initial_ value | SINT INT DINT | Etiqueta Expresión Inmediato | Debe evaluar hasta un número Especifica el valor inicial de counteo |
final_ value | SINT INT DINT | Etiqueta Expresión Inmediato | Especifica el valor final de counteo, que determina cuándo salir del lazo |
increment | SINT INT DINT | Etiqueta Expresión Inmediato | (Opcional) cantidad en la que se debe incrementar el conteo cada vez que se pasa el lazo Si no especifica un valor de incremento, el conteo se aumentará de 1 en 1. |
IMPORTANTE:
- No realice demasiadas iteraciones del lazo en un mismo escaneado.
- El controlador no ejecuta otras instrucciones de la rutina hasta completar el lazo.
- Se produce un fallo grave si la ejecución del lazo supera el temporizador de vigilancia para la tarea.
- Considere la posibilidad de usar otro construción, como IF_THEN.
Descripción
La sintaxis se describe en la tabla.

Los siguientes diagramas muestran cómo se ejecuta un lazo FOR_DO y cómo una instrucción EXIT sale del lazo de forma prematura.
![]() | ![]() |
El lazo FOR_DO se ejecuta un número de veces específico. | Para detener el lazo antes de que el counteo alcance el último valor, use una instrucción EXIT. |
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
Se producirá un fallo mayor si | Tipo de fallo | Código de fallo |
El lazo de la construcción es demasiado largo. | 6 | 1 |
Ejemplo 1
Si se lleva a cabo lo siguiente, | Introduzca este texto estructurado |
Borrar el valor de bits 0…31 en una matriz de valores de tipo BOOL: Inicializar la etiqueta de subíndice a 0. Borrar i. Por ejemplo, cuando subscript = 5, borrar array[5]. Añadir 1 a subscript. Si subscript es ≤ 31, repetir 2 y 3. De lo contrario, detener. | Para subscript:=0 a 31 por 1, hacer |
array[subscript] := 0; | |
End_for; |
Ejemplo 2
Si se lleva a cabo lo siguiente, | Introduzca este texto estructurado |
Un tipo de datos definido por el usuario (estructura) almacena la siguiente información sobre un elemento en su inventario:
Una matriz de la estructura anterior contiene un elemento para cada elemento diferente de su inventario. Debe buscar la matriz de un producto específico (use su código de barras) y determine la cantidad que hay en depósito.
Inicialice la etiqueta position a 0.
Establecer la etiqueta Quantity = Inventory[position].Qty. Esto produce la cantidad que hay en depósito del elemento. Detener. Barcode es una etiqueta de cadena que almacena el código de barras del elemento que está buscando. Por ejemplo , cuando position = 5, comparar Barcode con Inventory[5].ID.
De lo contrario, detener. | SIZE(Inventory,0,Inventory_Items); |
For position:=0 to Inventory_Items - 1 do | |
If Barcode = Inventory[position].ID then | |
Quantity := Inventory[position].Qty; | |
Exit; | |
End_if; | |
End_for; |
Entregue su opinión

