Chapitre 10
Programmation de texte structuré
Si vous exécutez les actions suivantes,
La boucle WHILE_DO évalue d'abord ses conditions. Si les conditions sont vraies,
l'automate exécute alors les instructions à l'intérieur de la boucle.
Cela diffère de la boucle REPEAT_UNTIL car la boucle REPEAT_UNTIL exécute
d'abord les instructions de la construction, et ce n'est qu'ensuite qu'elle détermine
si les conditions sont vraies avant d'exécuter à nouveau les instructions. Les
instructions dans la boucle REPEAT_UNTIL sont toujours exécutées au moins une
fois. Les instructions dans une boucle WHILE_DO peuvent ne jamais être
exécutées.
Si vous exécutez les actions suivantes,
Déplacer les caractères ASCII d'un tableau SINT dans une étiquette de la chaîne.
(Dans un tableau SINT, chaque élément contient un seul caractère.) Arrêter quand
vous atteignez le retour chariot.
Initialiser Element_number à 0.
Compter le nombre d'éléments dans SINT_array (tableau contenant les caractères
ASCII) et stocker le résultat dans SINT_array_size (étiquette DINT).
Si le caractère SINT_array[element_number] = 13 (valeur décimale du retour
chariot), alors arrête.
Définir String_tag[element_number] = le caractère stocké dans
SINT_array[element_number].
Ajouter 1 à element_number. Cela permet à l'automate de vérifier le prochain
caractère dans SINT_array.
Définir le membre Longueur de String_tag = element_number. (Cela enregistre
le nombre de caractères stockés dans String_tag jusqu'à présent.)
If element_number = SINT_array_size, alors arrêter. (Vous êtes à la fin du
tableau et il ne contient pas de retour chariot.)
Attributs de texte structuré
554
Conditions de défaut
Un défaut majeur se produira si
la construction fait des boucles pendant trop
longtemps
Exemple 1
Saisissez ce texte structuré
pos := 0;
While ((pos <= 100) & structarray[pos].value <> targetvalue)) do
end_while;
Exemple 2
Saisissez ce texte structuré
element_number := 0;
SIZE(SINT_array, 0, SINT_array_size);
While SINT_array[element_number] <> 13 do
String_tag.DATA[element_number] := SINT_array[element_number];
element_number := element_number + 1;
String_tag.LEN := element_number;
If element_number = SINT_array_size then
exit;
end_if;
end_while;
Cliquez sur une rubrique ci-dessous pour obtenir plus d'informations sur des
problèmes qui sont uniques à la programmation de texte structuré. Revoyez ces
informations pour vous assurer de bien comprendre comment votre texte
structuré va être exécuté.
Voir aussi
Composants de texte structuré : Affectations
Publication Rockwell Automation 1756-RM006K-FR-P - Novembre 2018
Type de défaut
6
pos := pos + 2;
String_tag.DATA[pos] := SINT_array[pos];
Code de défaut
1
sur la
page 529