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.)
Affecter les indicateurs d'état mathématique
Non
Conditions de défaut
Un défaut majeur se produira si
la construction fait des boucles
pendant trop longtemps
Exemple 1
Exemple 2
Publication Rockwell Automation 1756-RM003T-FR-P - Novembre 2018
Type de défaut
6
Saisissez ce texte structuré
pos := 0;
While ((pos <= 100) & structarray[pos].value <> targetvalue)) do
pos := pos + 2;
String_tag.DATA[pos] := SINT_array[pos];
end_while;
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;
Chapitre 24
Code de défaut
1
945