FOR_DO

Utilisez la boucle FOR_DO pour effectuer une action un certain nombre de fois avant de faire quoi que ce soit d’autre.
Lorsqu’elle est activée, l'instruction FOR exécute la routine de façon répétée jusqu'à ce que la valeur Index dépasse la valeur Terminal. La valeur Step peut être positive ou négative. Si la valeur est négative, la boucle se termine lorsque Index est inférieur à Terminal value. Si la valeur est positive, la boucle se termine lorsque Index est supérieur à Terminal value.
Chaque fois que l'instruction FOR exécute la routine, elle ajoute la taille de l'incrément à Index.
Ne faites pas trop de boucles lors d’une seule scrutation. Un nombre excessif de répétitions provoque un délai d’expiration du chien de garde d’un automate et entraîne un défaut majeur.
Opérandes
FOR count:= initial_value TO
final_value BY increment DO
<statement>;
END_FOR;
Opérande
Type
Format
Description
count
SINT INT DINT
Balise
Étiquette pour stocker la position du comptage durant l’exécution de FOR_DO
initial_ value
SINT INT DINT
Expression de balise immédiate
Son évaluation doit produire un nombre
Spécifie la valeur initiale du comptage
final_ value
SINT INT DINT
Expression de balise immédiate
Spécifier la valeur finale du comptage, qui détermine à quel moment sortir de la boucle
increment
SINT INT DINT
Expression de balise immédiate
(Facultatif) quantité utilisée pour incrémenter le comptage après chaque fin de boucle
Si vous ne spécifiez pas un incrément, le compteur est incrémenté de 1.
IMPORTANT:
  • N’exécutez pas la boucle un trop grand nombre de fois lors d’une seule scrutation.
  • L’automate n’exécute aucune autre instruction de la routine tant qu’il n’a pas terminé la boucle.
  • Un défaut majeur survient lorsque l’achèvement de la boucle prend plus de temps que le temporisateur du chien de garde pour la tâche.
  • Envisagez d’utiliser une construction différente, telle que IF_THEN.
Description
La syntaxe est décrite dans le tableau.
FOR_DO_syntax
Le diagramme explique comment s’exécute une boucle FOR_DO et comment une instruction EXIT peut permettre de sortir plus tôt de la boucle.
FOR_DO Executes
FOR DO exits
La boucle FOR_DO est exécutée un nombre spécifique de fois.
Pour arrêter la boucle avant que le comptage n’atteigne la dernière value, utilisez une instruction EXIT.
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Un défaut majeur se produira si
Type de défaut
Code de défaut
La construction fait des boucles pendant trop longtemps.
6
1
Exemple 1
Si vous exécutez les actions suivantes,
Saisissez ce texte structuré
Mis à zéro les bits 0...31 d’un tableau de BOOL :
Initialiser l’étiquette de l’indice à 0.
Mettre i à zéro. Par exemple, lorsque l’indice = 5, mettre array[5] à zéro.
Ajouter 1 à l’indice.
Si l’indice est ≤ 31, répéter 2 et 3.
Sinon, arrêter.
For subscript:=0 to 31 by 1 do
array[subscript] := 0;
End_for;
Exemple 2
Si vous exécutez les actions suivantes,
Saisissez ce texte structuré
Un type de données défini par l’utilisateur (structure) stocke les informations suivantes au sujet d’un article dans votre inventaire :
  • ID de code-barres de l’article (type de données chaîne)
  • Quantité pour la quantité en stock de l’article (type de données DINT)
Un tableau de la structure ci-dessus contient un élément pour chaque article différent de votre inventaire. Vous voulez faire une recherche dans le tableau pour trouver un produit spécifique (en utilisant le code-barres) et déterminer la quantité en stock pour cet article.
  1. Déterminer la dimension (nombre des articles) du tableau Inventaire et stocker le résultat dans
  2. Inventory_Items (balise DINT).
Initialiser la balise de position à 0.
  1. Si Code-barres correspond à l’ID de l’article dans le tableau, alors :
Définir la balise Quantity = Inventory[position].Qty. Cela produit la quantité en stock de l’article.
Arrêt.
Code-barres est une balise de chaîne qui stocke le code-barres de l’article que vous recherchez. Par exemple, lorsque
position = 5, compare Barcode à Inventory[5].ID.
  1. Ajouter 1 à la position.
  2. Si la position est ≤ à (Inventory_Items -1), répéter 3 et 4. Comme la numérotation des éléments commence à 0, le dernier élément correspond à un indice égal au nombre d’éléments du tableau moins 1.
Sinon, arrêter.
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;
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal