1756-pm007-fr, texte structuré des automates logix5000€¦ · l’entrée doit avoir le même...
Post on 24-Oct-2020
1 Views
Preview:
TRANSCRIPT
-
Manuel de programmation
(Références 1756 ControlLogix, 1769 CompactLogix, 1789 SoftLogix,
1794 FlexLogix, PowerFlex 700S avec DriveLogix)
Texte structuré des automates Logix5000
-
Informations importantes destinées à l’utilisateurLes équipements électroniques possèdent des caractéristiques de fonctionnement différentes de celles des équipements électromécaniques. La publication SGI-1.1, « Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls » (disponible auprès de votre agence commerciale Rockwell Automation ou en ligne sur le site http://www.literature.rockwellautomation.com) décrit certaines de ces différences. En raison de ces différences et de la diversité des utilisations des équipements électroniques, les personnes qui en sont responsables doivent s’assurer de l’acceptabilité de chaque application.
La société Rockwell Automation, Inc. ne saurait en aucun cas être tenue pour responsable ni être redevable des dommages indirects ou résultant de l’utilisation ou de l’application de cet équipement.
Les exemples et schémas contenus dans ce manuel sont présentés à titre indicatif seulement. En raison du nombre important de variables et d’impératifs associés à chaque installation, la société Rockwell Automation, Inc. ne saurait être tenue pour responsable ni être redevable des suites d’utilisation réelle basée sur les exemples et schémas présentés dans ce manuel.
La société Rockwell Automation, Inc. décline également toute responsabilité en matière de propriété intellectuelle et industrielle concernant l’utilisation des informations, circuits, équipements ou logiciels décrits dans ce manuel.
Toute reproduction totale ou partielle du présent manuel sans autorisation écrite de la société Rockwell Automation, Inc. est interdite.
Des remarques sont utilisées tout au long du manuel pour attirer votre attention sur les mesures de sécurité à prendre en compte :
Allen-Bradley, Rockwell Automation et TechConnect sont des marques commerciales de Rockwell Automation, Inc.
Les marques commerciales n’appartenant pas à Rockwell Automation sont la propriété de leurs sociétés respectives.
AVERTISSEMENTActions ou situations risquant de provoquer une explosion dans un environnement dangereux et d’entraîner des blessures pouvant être mortelles, des dégâts matériels ou des pertes financières.
IMPORTANT Informations particulièrement importantes dans le cadre de l’utilisation du produit.
ATTENTION Actions ou situations risquant d’entraîner des blessures pouvant être mortelles, des dégâts matériels ou des pertes financières. Ces mises en garde vous aident à identifier un danger, à éviter un danger et à en discerner les conséquences.
DANGER D’ELECTROCUTION
Les étiquettes ci-contre, placées sur l’équipement ou à l’intérieur (un variateur ou un moteur, par ex.), signalent la présence éventuelle de tensions électriques dangereuses.
RISQUE DE BRULURE
Les étiquettes ci-contre, placées sur l’équipement ou à l’intérieur (un variateur ou un moteur, par ex.) indiquent au personnel que certaines surfaces peuvent atteindre des températures particulièrement élevées.
http://literature.rockwellautomation.com
-
Table des matièresPréface Objet de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Conventions utilisées dans ce manuel . . . . . . . . . . . . . . . . . . 5
Chapter 1Programmation en texte structuré Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Affectations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Spécification d’une affectation non rémanente. . . . . . . . . 10Attribution d’un caractère ASCII à une chaîne de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Utilisation des opérateurs et des fonctions arithmétiques . 13Utilisation des opérateurs relationnels. . . . . . . . . . . . . . . 14Utilisation des opérateurs logiques . . . . . . . . . . . . . . . . . 16Utilisation des opérateurs sur bits . . . . . . . . . . . . . . . . . . 17Détermination de l’ordre d’exécution . . . . . . . . . . . . . . . 17
Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Instructions de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Certains mots clés sont réservés pour une utilisation future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Commentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Publication 1756-PM007B-FR-P – Juillet 2008 3
-
Table des matières
4 Publication 1756-PM007B-FR-P – Juillet 2008
-
Préface
Objet de ce manuel Ce manuel indique comment programmer les automates Logix5000 à l’aide du langage de programmation en texte structuré. Il fait partie d’un ensemble de manuels relatifs aux procédures communes de programmation et d’exploitation des automates Logix5000. Pour connaître la liste complète des manuels de procédures communes, reportez-vous à la publication 1756-PM001, « Logix 5000 Controllers Common Procedures Programming Manual ».
Le terme « automate Logix5000 » désigne tout automate basé sur le système d’exploitation Logix5000, tels que les automates :
• CompactLogix ;• ControlLogix ;• DriveLogix ;• FlexLogix ;• SoftLogix5800.
Conventions utilisées dans ce manuel
La typographie de certains textes est différente de celle utilisée pour le reste du texte.
Un texte en Identifie Par exemple : Signifie :
Italique le nom réel d’un élément que vous voyez sur votre écran ou dans un exemple
clic-droit Défini par l’utilisateur …
Cliquez avec la touche droite de la souris sur l’élément dénommé « Défini par l’utilisateur ».
courier information que vous devez fournir en fonction de votre application (une variable)
clic-droit nom_du_programme …
Vous devez identifier le programme spécifique dans votre application. Habituellement, c’est un nom ou une variable que vous avez défini(e).
entre crochets une touche du clavier Appuyez sur [Entrée]. Appuyez sur la touche Entrée.
Publication 1756-PM007B-FR-P – Juillet 2008 5
-
Préface
Notes :
6 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapter 1
Programmation en texte structuré
Introduction Le texte structuré est un langage de programmation textuel qui utilise des déclarations pour définir ce qui doit être exécuté.
• Le texte structuré n’est pas sensible à la casse.• Utilisez des tabulations et des retours chariot (lignes séparées)
pour faciliter la lecture de votre texte structuré. Ils n’ont pas d’effet sur l’exécution du texte structuré.
Le texte structuré n’est pas sensible à la casse. Le texte structuré peut contenir les éléments suivants :
Terme Définition Exemples
Affectation
(voir page 9)
Utilisez une instruction d’affectation pour attribuer des valeurs à des points.
L’opérateur := est l’opérateur d’affectation.
Terminez l’affectation par un point virgule « ; ».
point := expression;
Expression
(voir page 11)
Une expression est une partie d’une instruction complète d’affectation ou de test. Une expression génère un nombre (expression numérique) ou un état vrai ou faux (expression booléenne).
Une expression comporte :
Des points Une zone de mémoire dénommée dans laquelle sont stockées des données (BOOL, SINT,INT,DINT, REAL, chaîne).
valeur1
Des immédiats Une valeur constante 4
Des opérateurs Un symbole ou une mnémonique qui définit une opération dans une expression.
point1 + point2
point1 >= valeur1
Des fonctions Quand elle est exécutée, une fonction génère une valeur. Utilisez des parenthèses pour contenir l’opérande d’une fonction.
Bien que leur syntaxe soit similaire, les fonctions se différencient des instructions car les fonctions ne peuvent être utilisées que dans des expressions. Les instructions ne peuvent pas être utilisées dans des expressions.
fonction(point1)
Publication 1756-PM007B-FR-P – Juillet 2008 7
-
Programmation en texte structuré Chapitre1
Instruction
(voir page 18)
Une instruction est une déclaration autonome.
Une instruction utilise des parenthèses pour contenir ses opérandes.
Selon l’instruction, il peut y avoir zéro, une ou plusieurs opérandes.
Lorsqu’elle est exécutée, une instruction peut générer une ou plusieurs valeurs appartenant à une structure de données.
Terminez l’instruction par un point virgule « ; ».
Bien que leur syntaxe soit similaire, les instructions se différencient des fonctions car les instructions ne peuvent pas être utilisées que dans des expressions. Les fonctions ne sont utilisables que dans des expressions.
instruction();
instruction(opérande);
instruction(opérande1, opérande2, opérande3);
Instruction de test
(voir page 19)
Une instruction conditionnelle utilisée pour déclencher un code de texte structuré (c.-à-d. d’autres déclarations).
Terminez l’instruction de test par un point virgule « ; ».
IF...THEN
CASE
FOR...DO
WHILE...DO
REPEAT...UNTIL
EXIT
Commentaire
(voir page 35)
Texte expliquant ou clarifiant la finalité d’une section de texte structuré.
• Utilisez les commentaires pour faciliter l’interprétation du texte structuré.• Les commentaires n’affectent pas l’exécution du texte structuré.• Les commentaires peuvent apparaître n’importe où dans le texte structuré.
//commentaire
(*début du commentaire. . . fin du commentaire*)
/*début du commentaire. . . fin du commentaire*/
Terme Définition Exemples
8 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Affectations Utilisez une affectation pour modifier la valeur stockée dans un point. La syntaxe d’une affectation est la suivante :
point := expression;
où :
Le point conserve la valeur attribuée jusqu’à ce qu’une autre affectation modifie la valeur.
L’expression peut être simple, par ex. une constante ou un autre nom de point ; ou l’expression peut être complexe et comprendre plusieurs opérateurs et/ou fonctions.
Elément Description
point Représente le point qui reçoit la nouvelle valeur.
Le point doit être de type BOOL, SINT, INT, DINT ou REAL.
:= C’est le symbole de l’affectation.
expression Représente la nouvelle valeur attribuée au point.
Si le type de donnée du point est
Utilisez ce type d’expression
BOOL Expression booléenne
SINT
INT
DINT
REAL
Expression numérique
; Termine l’affectation.
CONSEIL La mise à jour des données de module d’E/S est asynchrone par rapport à l’exécution de la logique. Si vous référencez une entrée de nombreuse fois dans votre logique, l’entrée pourrait changer d’état entre des références séparées. Si l’entrée doit avoir le même état à chaque référencement, mettez la valeur d’entrée en mémoire tampon et prenez comme référence ce point tampon.
Publication 1756-PM007B-FR-P – Juillet 2008 9
-
Programmation en texte structuré Chapitre1
Spécification d’une affectation non rémanente
L’affectation non rémanente est différente de l’affectation standard décrite précédemment car le point d’une affectation non rémanente est remis à zéro chaque fois que l’automate :
• passe en mode d’exécution ;• quitte une étape de graphe de fonctionnement séquentiel si
vous configurez ce dernier pour une remise à zéro automatique. (Ceci s’applique uniquement si vous imbriquez l’affectation dans l’action de l’étape ou utilisez l’action pour appeler un sous-programme de texte structuré à l’aide d’une instruction JSR).
La syntaxe d’une affectation non rémanente est la suivante :
point [:=] expression;
où :
Elément Description
point Représente le point qui reçoit la nouvelle valeur.
Le point doit être de type BOOL, SINT, INT, DINT ou REAL.
[:=] C’est le symbole de l’affectation non rémanente.
expression Représente la nouvelle valeur attribuée au point.
Si le type de donnée du point est
Utilisez ce type d’expression
BOOL Expression booléenne
SINT
INT
DINT
REAL
Expression numérique
; Termine l’affectation.
10 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Attribution d’un caractère ASCII à une chaîne de caractères
Utilisez l’opérateur d’affectation pour attribuer un caractère ASCII à un élément du membre de données d’un point de chaîne. Pour attribuer un caractère, spécifiez la valeur du caractère ou spécifiez le nom du point, le membre de données et l’élément du caractère.
Pour ajouter ou insérer une chaîne de caractères à un point de chaîne, utilisez une de ces instructions de chaîne ASCII.
Expressions Une expression peut être un nom de point, une équation ou une comparaison. Pour écrire une expression, utilisez l’un de ces éléments :
• nom de point stockant la valeur (variable) ;• nombre que vous entrez directement dans l’expression (valeur
immédiate) ;
• fonctions, telles que : ABS, TRUNC ;• opérateurs, tels que : +, –, , Et, Ou.
Lorsque vous écrivez des expressions, suivez ces règles générales :
• utilisez n’importe quelle combinaison de lettres majuscules et minuscules. Par exemple, ces trois variantes de « AND » sont acceptables : AND, And, and ;
• pour des critères plus complexes, utilisez des parenthèses pour regrouper des expressions à l’intérieur d’expressions. Ceci facilite la lecture de l’expression globale et garantit que l’expression s’exécute selon la séquence désirée.
Ceci est valable Ceci n’est pas valable
chaîne1.DATA[0]:= 65; chaîne1.DATA[0]:= A;
chaîne1.DATA[0]:= chaîne2.DATA[0]; chaîne1 := chaîne2;
Pour : Utilisez cette instruction
ajouter des caractères à la fin d’une chaîne CONCAT
insérer des caractères dans une chaîne INSERT
IMPORTANT Vous pouvez ajouter des commentaires utilisateur en ligne. Par conséquent, la commutation de langue locale ne s’applique pas à votre langage de programmation.
Publication 1756-PM007B-FR-P – Juillet 2008 11
-
Programmation en texte structuré Chapitre1
En texte structuré, vous utilisez deux types d’expression :
Expression booléenne : une expression qui produit la valeur booléenne 1 (vrai) ou 0 (faux).
• Une expression booléenne utilise des points booléens, des opérateurs relationnels et logiques pour comparer des valeurs ou vérifier si des conditions sont vraies ou fausses. Par exemple, point1>65.
• Une expression booléenne simple peut être constituée d’un seul point BOOL.
• Habituellement, vous utiliserez des expressions booléennes pour conditionner l’exécution d’autres logiques.
Expression numérique : une expression permettant de calculer une valeur entière ou en virgule flottante.
• Une expression numérique utilise des opérateurs arithmétiques, des fonctions arithmétiques et des opérateurs sur bit. Par exemple, point1+5.
• Souvent, vous inclurez une expression numérique dans une expression booléenne. Par exemple, (point1+5)>65.
Utilisez le tableau suivant pour choisir les opérateurs de vos expressions.
Si vous voulez Alors
calculer une valeur arithmétique Utilisation des opérateurs et des fonctions arithmétiques en page 13.
comparer deux valeurs ou chaînes Utilisation des opérateurs relationnels en page 14.
contrôler si des conditions sont vraies ou fausses
Utilisation des opérateurs logiques en page 16.
comparer des bits à l’intérieur de valeurs Utilisation des opérateurs sur bits en page 17.
12 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Utilisation des opérateurs et des fonctions arithmétiques
Vous pouvez combiner de nombreux opérateurs et fonctions dans des expressions arithmétiques.
Les opérateurs arithmétiques calculent de nouvelles valeurs.
Les fonctions arithmétiques exécutent des opérations mathématiques spécifiant ainsi une constante, un point non booléen ou une expression pour la fonction.
Pour : Utilisez cet opérateur Type de données optimal
additionner + DINT, REAL
soustraire/inverser – DINT, REAL
multiplier * DINT, REAL
élever à une puissance (x à la puissance y)
** DINT, REAL
diviser / DINT, REAL
diviser modulo MOD DINT, REAL
Pour Utilisez cette fonction Type de données optimal
Valeur absolue ABS (expression_numérique) DINT, REAL
Cosinus d’arc ACOS (expression_numérique) REAL
Sinus d’arc ASIN (expression_numérique) REAL
Tangente d’arc ATAN (expression_numérique) REAL
Cosinus COS (expression_numérique) REAL
Radians en degrés DEG (expression_numérique) DINT, REAL
Logarithme naturel LN (expression_numérique) REAL
Logarithme décimal LOG (expression_numérique) REAL
Degrés en radians RAD (expression_numérique) DINT, REAL
Sinus SIN (expression_numérique) REAL
Racine carrée SQRT (expression_numérique) DINT, REAL
Tangente TAN (expression_numérique) REAL
Tronquer TRUNC (expression_numérique) DINT, REAL
Publication 1756-PM007B-FR-P – Juillet 2008 13
-
Programmation en texte structuré Chapitre1
Par exemple :
Utilisation des opérateurs relationnels
Les opérateurs relationnels comparent deux valeurs ou chaînes pour fournir un résultat vrai ou faux. Le résultat d’une opération relationnelle est une valeur booléenne.
Utilisez ces opérateurs opérationnels.
Utilisez ce format Exemple
Dans cette situation Vous écririez
valeur1 opérateur valeur2 Si gain_4 et gain_4_adj sont des points DINT et que votre spécification indique : « Ajouter 15 à gain_4 et stocker le résultat dans gain_4_adj ».
gain_4_adj := gain_4+15;
opérateur valeur1 Si alarme et alarme_haute sont des points DINT et que votre spécification indique :« Inverser alarme_haute et stocker le résultat dans alarme ».
alarme:= -alarme_haute;
fonction(expression_numérique) Si surcourse et surcourse_POS sont des points DINT et que votre spécification indique : « Calculer la valeur absolue de surcourse et stocker le résultat dans surcourse_POS ».
surcourse_POS := ABS(surcourse);
valeur1 opérateur (fonction((valeur2+valeur3)/2) Si réglage et position sont des points DINT, si capteur1 et capteur2 sont des points REAL et que votre spécification indique : « Trouver la valeur absolue de la moyenne de capteur1 et capteur2, ajouter la valeur de réglage et stocker le résultat dans position ».
position := réglage + ABS((capteur1 + capteur2)/2);
Si la comparaison est Le résultat est
Vraie 1
Fausse 0
Pour cette comparaison : Utilisez cet opérateur : Type de données optimal :
Egal à = DINT, REAL, chaîne
Inférieur à < DINT, REAL, chaîne
Inférieur ou égal à DINT, REAL, chaîne
Supérieur ou égal à >= DINT, REAL, chaîne
Négation DINT, REAL, chaîne
14 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Par exemple :
Comment les chaînes sont-elles évaluées
Les valeurs hexadécimales des caractères ASCII déterminent si une chaîne est inférieure ou supérieure à une autre chaîne.
• Quand deux chaînes sont triées comme dans un annuaire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
• Des chaînes sont égales si leurs caractères correspondent.• Les caractères sont sensibles à la casse. « A » majuscule ($41)
n’est pas égal à « a » minuscule ($61).
Utilisez ce format EXEMPLE
Dans cette situation Vous écririez
valeur1 opérateur valeur2 Si temp est un point DINT et que votre spécification dit : « Si temp est inférieur à 100° alors…»
IF temp= longueur);
Caractères ASCII Codes Hexa
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
AB $61$62
supérieur
inféri eur
AB < B
a > B
Publication 1756-PM007B-FR-P – Juillet 2008 15
-
Programmation en texte structuré Chapitre1
Utilisation des opérateurs logiques
Les opérateurs logiques vous permettent de contrôler si de multiples conditions sont vraies ou fausses. Le résultat d’une opération logique est une valeur booléenne.
Utilisez ces opérateurs logiques :
Par exemple :
Si la comparaison est Le résultat est
Vraie 1
Fausse 0
Pour Utilisez cet opérateur Type de données
ET logique &, AND BOOL
OU logique OR BOOL
OU exclusif logique XOR BOOL
Complément logique NOT BOOL
Utilisez ce format EXEMPLE
Dans cette situation Vous écririez
pointBOOL Si cellule-photo est un point BOOL et que votre spécification indique : « Si cellule-photo_1 est vraie alors…»
IF cellule-photo THEN...
NOT pointBOOL Si cellule-photo est un point BOOL et que votre spécification indique : « Si cellule-photo est fausse alors…»
IF NOT cellulephoto THEN...
expression1 & expression2 Si cellule-photo est un point booléen, temp est un point DINT et que votre spécification indique : « Si cellule-photo est vraie et que temp est inférieur à 100° alors…»
IF cellulephoto & (temp
-
Chapitre1 Programmation en texte structuré
Utilisation des opérateurs sur bits
Les opérateurs sur bits manipulent les bits inclus dans une valeur en fonction de deux valeurs.
Par exemple :
Détermination de l’ordre d’exécution
Les opérations que vous écrivez dans une expression sont exécutées dans un ordre prescrit, pas nécessairement de gauche à droite.
• Des opérations de même ordre sont exécutées de gauche à droite.
• Si une expression contient plusieurs opérateurs ou fonctions, groupez les conditions entre parenthèses « ( ) ». Ceci garantit l’ordre d’exécution correct et facilite la lecture de l’expression.
Pour Utilisez cet opérateur Type de données optimal
ET sur bits &, AND DINT
OU sur bits OR DINT
Ou exclusif sur bits XOR DINT
Complément de bits NOT DINT
Utilisez ce format Exemple
Dans cette situation Vous écririez
valeur1 opérateur valeur2 Si entrée1, entrée2 et résultat1 sont des points DINT et que votre spécification indique : « Calculer le résultat au niveau du bit d’entrée1 et d’entrée2. Stocker le résultat dans résultat1. »
résultat1 := entrée1 AND entrée2;
Ordre Fonctionnement
1. ()
2. fonction (…)
3. **
4. – (négation)
5. NOT
6. *, /, MOD
7. +, – (soustraction)
8. =
9. =,
10. &, AND
11. XOR
12. OR
Publication 1756-PM007B-FR-P – Juillet 2008 17
-
Programmation en texte structuré Chapitre1
Instructions Les déclarations de texte structuré peuvent aussi être des instructions. Une instruction de texte structuré s’exécute chaque fois qu’elle est scrutée. Une instruction de texte structuré incluse dans une instruction de test s’exécute chaque fois que les conditions de l’instruction de test sont vraies. Si les conditions de l’instruction de test sont fausses, les déclarations incluses dans l’instruction de test ne sont pas scrutées. Il n’y a pas de condition de ligne ou de transition d’état pouvant déclencher l’exécution.
Ceci est différent des instructions de bloc fonctionnel qui utilisent « EnableIn » pour déclencher l’exécution. Les instructions de texte structuré s’exécutent comme si « EnableIn » était toujours vrai.
Ceci est différent aussi des instructions de logique à relais qui utilisent la condition d’entrée de ligne pour déclencher l’exécution. Certaines instructions de logique à relais s’exécutent seulement quand la condition d’entrée de ligne bascule de fausse à vraie. Ce sont des instructions de logique à relais transitoires. En texte structuré, les instructions seront exécutées à chaque scrutation sauf si vous en pré-conditionnez l’exécution.
Par exemple, l’instruction ABL est une instruction transitoire en logique à relais. Dans cet exemple, l’instruction ABL est exécutée uniquement pendant une scrutation lorsque point_xic passe de zéro à un. L’instruction ABL ne s’exécute pas lorsque point_xic reste à un ou à zéro.
En texte structuré, si vous écrivez cet exemple ainsi :
IF point_xic THEN ABL(0,contrôle_série);
END_IF;
l’instruction ABL sera exécutée à chaque scrutation pour laquelle point_xic est vrai, et non pas uniquement lorsque point_xic passe de zéro à un.
Si vous souhaitez que l’instruction ABL soit exécutée seulement lorsque point_xic passe de zéro à un, vous devez conditionner
18 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
l’instruction en texte structuré. Utilisez un monostable pour déclencher l’exécution.
Instructions de test Les instructions de test peuvent être programmées isolément ou imbriqués à l’intérieur d’autres instructions de test.
Certains mots clés sont réservés pour une utilisation future
Ces instructions de test ne sont pas disponibles :
• GOTO• REPEAT
Le logiciel RSLogix 5000 ne vous permettra pas de les utiliser.
osri_1.InputBit := point_xic;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ABL(0,contrôle_série);
END_IF;
Si vous voulez Utilisez cette instruction de test
Effectuer une action si ou quand des conditions spécifiques se produisent
IF...THEN
Sélectionner une action en fonction d’une valeur numérique
CASE...OF
Effectuer une action un nombre de fois spécifique avant d’effectuer une autre action
FOR...DO
Poursuivre les actions tant que certaines conditions sont vraies
WHILE...DO
Poursuivre les actions jusqu’à ce qu’une condition soit vraie
REPEAT...UNTIL
Publication 1756-PM007B-FR-P – Juillet 2008 19
-
Programmation en texte structuré Chapitre1
IF...THEN Utilisez IF…THEN pour effectuer des actions si ou quand des conditions spécifiques se produisent.
Opérandes :
Texte structuré
Description : La syntaxe est :
Pour utiliser ELSIF ou ELSE, suivez ces recommandations
1. Pour choisir parmi plusieurs groupes de déclarations possibles, ajoutez une ou plusieurs déclarations ELSIF.
• Chaque ELSIF représente un chemin alternatif.• Spécifiez autant de chemins ELSIF que nécessaire.• L’automate exécute le premier IF ou ELSIF vrai et saute le
reste des ELSIF et l’ELSE.
2. Pour effectuer des actions quand toutes les conditions IF ou ELSIF sont fausses, ajoutez une déclaration ELSE.
Opérande Type Format Entrer
Expression_booléenne
BOOL Point
Expression
point ou expression boléen(ne) qui génère une valeur booléenne (expression booléenne)
IF expression_booléenne THEN
;
END_IF;
IF expression_booléenne1 THEN
; Déclarations à exécuter quand expression_booléenne1 est vraie.
.
.
FacultatifELSIF expression_booléenne2 THEN
; Déclarations à exécuter quand expression_booléenne2 est vraie.
.
.
FacultatifELSE
; Déclarations à exécuter quand les deux expressions sont fausses.
.
.
END_IF;
20 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Ce tableau résume les combinaisons de IF, THEN, ELSIF et ELSE.
Drapeaux d’état arithmétiques : pas affectés
Conditions de défaut : Aucune
Exemple 1 : IF…THEN
Exemple 2 : IF…THEN…ELSE
Le symbole [:=] indique à l’automate d’éteindre le voyant lorsqu’il :
• passe en mode d’exécution ;• quitte une étape de graphe de fonctionnement séquentiel si
vous configurez ce dernier pour une remise à zéro automatique. (Ceci s’applique uniquement si vous imbriquez l’affectation dans l’action de l’étape ou utilisez l’action pour appeler un sous-programme de texte structuré à l’aide d’une instruction JSR).
Si vous voulez Et Alors utilisez cette instruction de test
effectuer une action si ou quand des conditions sont vraies
ne pas effectuer d’action quand les conditions sont fausses
IF…THEN
effectuer une autre action si les conditions sont fausses
IF…THEN…ELSE
choisir parmi des déclarations alternatives (ou des groupes de déclarations) en fonction des conditions d’entrée
ne pas effectuer d’action quand les conditions sont fausses
IF…THEN…ELSE
exécuter des déclarations par défaut si toutes les conditions sont fausses
IF…THEN…ELSIF…ELSE
Si vous voulez ceci Saisissez ce texte structuré
IF rebuts > 3 alors IF rebuts > 3 THEN
convoyeur = off (0) convoyeur := 0;
alarme = on (1) alarme:= 1;
END_IF;
Si vous voulez ceci Saisissez ce texte structuré
Si le contact de sens du convoyeur = avant (1) alors IF sens_convoyeur THEN
voyant = off voyant := 0;
Sinon voyant = on ELSE
voyant [:=] 1;
END_IF;
Publication 1756-PM007B-FR-P – Juillet 2008 21
-
Programmation en texte structuré Chapitre1
Exemple 3 : IF…THEN…ELSE
Le symbole [:=] indique à l’automate de remettre à zéro Domino. Entrée lorsqu’il :
• passe en mode d’exécution ;• quitte une étape de graphe de fonctionnement séquentiel si
vous configurez ce dernier pour une remise à zéro automatique. (Ceci s’applique uniquement si vous imbriquez l’affectation dans l’action de l’étape ou utilisez l’action pour appeler un sous-programme de texte structuré à l’aide d’une instruction JSR).
Exemple 4 : IF…THEN…ELSIF…ELSE
Si vous voulez ceci Saisissez ce texte structuré
Si le détecteur domino bas = bas (On) et que le détecteur domino haut = non haut (On) alors
IF Domino.Bas & Domino.Haut THEN
vanne entrée = ouvert (On) Domino.Entrée [:=] 1;
Jusqu’à ce que le détecteur domino haut = haut (Off) ELSIF NOT(Sucre.Haut) THEN
Domino.Entrée := 0;
END_IF;
Si vous souhaitez ceci Saisissez ce texte structuré
Si la température du réservoir > 100 IF temp.réservoir > 200 THEN
alors pompe = lente pompe.rapide :=1; pompe.lente :=0; pompe.off :=0;
Si la température du réservoir > 200 ELSIF temp.réservoir > 100 THEN
alors pompe = rapide pompe.rapide :=0; pompe.lente :=1; pompe.off :=0;
sinon pompe = off ELSE
pompe.rapide :=0; pompe.lente :=0; pompe.off :=1;
END_IF;
22 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
CASE...OF Utilisez CASE pour choisir l’action à effectuer en fonction d’une valeur numérique.
Opérandes :
texte structuré
Description : La syntaxe est :
Opérande Type Format Entrer
expression_
numérique
SINT
INT
DINT
REAL
Point
Expression
point ou expression qui génère un nombre (expression numérique)
sélecteur SINT
INT
DINT
REAL
Immédiat Même type qu’expression_numérique
IMPORTANT Si vous utilisez des valeurs REAL, choisissez une plage de valeurs pour un sélecteur, car une valeur réelle est plus probablement comprise entre les limites d’une plage de valeurs qu’exactement égale à une valeur spécifique.
CASE expression_numérique OF
sélecteur1: déclaration;
sélecteurN: déclaration;
ELSE
déclaration;
END_CASE;
CASE expression_numérique OF
Définissez autant de valeurs alternatives de
sélection (chemins) que nécessaire
sélecteur1 : ;...
Déclarations à exécuter quand expression_numérique = sélecteur1
sélecteur2 : ;...
Déclarations à exécuter quand expression_numérique = sélecteur2
sélecteur3 : ;...
Déclarations à exécuter quand expression_numérique = sélecteur3
Facultatif
ELSE
;...
Déclarations à exécuter quand expression_numérique ne correspond à aucun sélecteur
END_CASE;
Publication 1756-PM007B-FR-P – Juillet 2008 23
-
Programmation en texte structuré Chapitre1
La syntaxe de saisie des valeurs de sélection est :
La structure CASE est similaire à la déclaration de commutation des langages de programmation C ou C++. Toutefois, avec la structure CASE l’automate exécute uniquement les déclarations qui sont associées avec la première valeur de sélection correspondante. L’exécution s’interrompt toujours après les déclarations associées à ce sélecteur et se dirige vers la déclaration END_CASE.
Drapeaux d’état arithmétiques : pas affectés
Conditions de défaut : Aucune
Exemple
Quand le sélecteur est Entrer
une valeur valeur : déclaration
plusieurs valeurs distinctes valeur1, valeur2, valeurN : ;
Utilisez une virgule (,) pour séparer chaque valeur.
une plage de valeurs valeur1...valeurN : ;
Utilisez deux points (..) pour identifier la plage.
des valeurs distinctes plus une plage de valeurs
valeura, valeurb, valeur1...valeurN : ;
24 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Exemple
Le symbole [:=] indique à l’automate d’effacer aussi les points des sorties lorsqu’il :
• passe en mode d’exécution ;• quitte une étape de graphe de fonctionnement séquentiel si
vous configurez ce dernier pour une remise à zéro automatique. (Ceci s’applique uniquement si vous imbriquez l’affectation dans l’action de l’étape ou utilisez l’action pour appeler un sous-programme de texte structuré à l’aide d’une instruction JSR).
Si vous souhaitez ceci Saisissez ce texte structuré
Si numéro de recette = 1 alors CASE numéro_recette OF
Ingrédient A sortie 1 = ouverte (1) 1: Ingrédient_A.Sortie_1 :=1;
Ingrédient B sortie 4 = ouverte (1) Ingrédient_B.Sortie_4 :=1;
Si numéro de recette = 2 ou 3 alors 2,3: Ingrédient_A.Sortie_4 :=1;
Ingrédient A sortie 4 = ouverte (1) Ingrédient_B.Sortie_2 :=1;
Ingrédient B sortie 2 = ouverte (1)
Si numéro de recette = 4, 5, 6, ou 7 alors 4..7: Ingrédient_A.Sortie_4 :=1;
Ingrédient A sortie 4 = ouverte (1) Ingrédient_B.Sortie_2 :=1;
Ingrédient B sortie 2 = ouverte (1)
Si numéro de recette = 8, 11, 12, ou 13 alors 8,11..13 Ingrédient_A.Sortie_1 :=1;
Ingrédient A sortie 1 = ouverte (1) Ingrédient_B.Sortie_4 :=1;
Ingrédient B sortie 4 = ouverte (1)
Sinon toutes les sorties = fermées (0) ELSE
Ingrédient_A.Sortie_1 [:=]0;
Ingrédient_A.Sortie_4 [:=]0;
Ingrédient_A.Sortie_2 [:=]0;
Ingrédient_A.Sortie_4 [:=]0;
END_CASE;
Publication 1756-PM007B-FR-P – Juillet 2008 25
-
Programmation en texte structuré Chapitre1
FOR…DO Utilisez la boucle FOR…DO pour exécuter quelque chose un nombre de fois spécifique avant de faire autre chose.
Opérandes :
texte structuré
Opérande Type Format Description
comptage SINT
INT
DINT
Point Point de stockage de la position de comptage pendant l’exécution de FOR…DO
valeur_initiale SINT
INT
DINT
Point
Expression
Immédiat
Doit générer un nombre
Définit la valeur initiale de comptage
valeur_finale SINT
INT
DINT
Point
Expression
Immédiat
Définit la valeur finale de comptage et détermine quand quitter la boucle
incrément SINT
INT
DINT
Point
Expression
Immédiat
(facultatif) Quantité d’augmentation de comptage à chaque passage dans la boucle.
Si vous n’indiquez pas d’incrément, le comptage s’incrémente de 1.
FOR comptage:= valeur_initiale TO valeur_finale BY incrément DO
;
END_FOR;
IMPORTANT Assurez-vous que vous n’itérez pas la boucle un trop grand nombre de fois pendant une scrutation.
• L’automate n’exécute aucune autre déclaration du sous-programme tant que la boucle n’est pas terminée.
• Si le temps mis pour terminer la boucle est supérieur à la temporisation du chien de garde, un défaut majeur se produit.
• Envisagez d’utiliser une autre structure, telle qu’IF...THEN.
26 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Description : La syntaxe est :
Ces schémas montrent comment une boucle FOR...DO s’exécute et comment une déclaration EXIT permet de quitter la boucle prématurément.
Drapeaux d’état arithmétiques : pas affectés
Conditions de défaut :
FOR comptage := valeur_initiale
TO valeur_finale
Facultatif { BY incrément Si vous n’indiquez pas d’incrément, la boucle s’incrémente de 1.
DO
;
Facultatif
IF expression_booléenne THEN
EXIT; Si vous voulez quitter la boucle prématurément sous certaines conditions, utilisez d’autres déclarations, tel qu’une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
END_FOR;
déclaration 1
déclaration 2
déclaration 3
Exécutée x nombre de fois ?
non
Oui
Reste du sous-programme
déclaration 1
déclaration 2
déclaration 3
Exécutée x nombre de fois ?
non
Oui
Reste du sous-programme
Oui
non
La boucle FOR…DO s’exécute un nombre de fois spécifique.
Pour arrêter la boucle avant que le comptage atteigne la dernière valeur, utilisez une déclaration EXIT.
Un défaut majeur se produira si Type de défaut Code de défaut
La structure se reboucle trop longtemps 6 1
Publication 1756-PM007B-FR-P – Juillet 2008 27
-
Programmation en texte structuré Chapitre1
Exemple 1 :
Exemple 2 :
Si vous voulez ceci Saisissez ce texte structuré
effacer les bits 0 – 31 dans un tableau de booléens :
1. Initialiser le point d’indexage à 0.
2. Effacer tableau[indexage]. Par exemple, quand indexage = 5, effacer tableau[5].
3. Ajouter 1 à l’indexage.
4. Si l’indexage va £ à 31, répéter les étapes 2 et 3.
Sinon, arrêter.
FOR indexage:=0 TO 31 BY 1 DO
tableau[indexage] := 0;
END_FOR;
Si vous voulez ceci Saisissez ce texte structuré
Un type de données utilisateur (structure) stocke cette information à propos d’un article de votre inventaire.
• ID Code_Barres de l’article (type de données chaîne)• Quantité en stock de cet article (type de données DINT)
Un tableau de la structure ci-dessus contient un élément pour chacun des articles différents de votre inventaire. Vous souhaitez rechercher un produit spécifique dans le tableau (en utilisant son code à barres) et déterminer la quantité en stock.
1. Obtenez la taille (nombre d’articles) du tableau d’inventaire et stockez le résultat dans Articles_Inventaire (point DINT).
2. Initialiser le point de position à 0.
3. Si Code_Barres correspond à l’ID d’un article dans le tableau, alors :
a. Réglez le point Quantité = Inventaire[position].Qté. Ceci produit la quantité en stock pour cet article.
b. Arrêt.
Code_Barre est un point de chaîne qui stocke le code à barres de l’article que vous recherchez. Par exemple, quand position = 5, comparez Code_Barre à Inventaire[5].ID.
4. Ajouter 1 à la position.
5. Si position va de £ à (Articles_Inventaire – 1), répétez les étapes 3 et 4. Comme les numéros d’élément commence à 0, le dernier élément est inférieur de 1 au nombre d’éléments du tableau.
Sinon, arrêter.
SIZE(Inventaire,0,Articles_Inventaire);
FOR position:=0 TO Articles_Inventaire – 1 DO
Si Code_Barre = Inventaire[position].ID alors
Quantité := Inventaire[position].Qté;
EXIT;
END_IF;
END_FOR;
28 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
WHILE…DO Utilisez la boucle WHILE…DO pour continuer de faire quelque chose tant que certaines conditions sont vraies.
Opérandes :
Texte structuré
Description : La syntaxe est :
Opérande Type Format Entrer
Expression_booléenne
BOOL Point
Expression
Point ou expression booléen qui génère une valeur booléenne
WHILE expression_booléenne DO
;
END_WHILE;
IMPORTANT Assurez-vous que vous n’itérez pas la boucle un trop grand nombre de fois pendant une scrutation.
• L’automate n’exécute aucune autre déclaration du sous-programme tant que la boucle n’est pas terminée.
• Si le temps mis pour terminer la boucle est supérieur à la temporisation du chien de garde, un défaut majeur se produit.
• Envisagez d’utiliser une autre structure, telle qu’IF...THEN.
WHILE expression_booléenne1 DO
; Déclarations à exécuter tant qu’expression_booléenne1 est vraie
Facultatif
IF expression_booléenne2 THEN
EXIT; Si vous voulez quitter la boucle prématurément sous certaines conditions, utilisez d’autres déclarations, tel qu’une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
END_WHILE;
Publication 1756-PM007B-FR-P – Juillet 2008 29
-
Programmation en texte structuré Chapitre1
Ces schémas montrent comment une boucle WHILE...DO s’exécute et comment une déclaration EXIT permet de quitter la boucle prématurément.
Drapeaux d’état arithmétiques : pas affectés
Conditions de défaut :
Exemple 1 :
Tant que expression_booléenne est vraie, l’automate exécute seulement les déclarations comprises dans la boucle WHILE…DO.
Pour arrêter la boucle avant que les conditions soient vraies, utilisez une déclaration EXIT.
déclaration 1
déclaration 2
déclaration 3
Expression booléenne
Vraie
Fausse
Reste du sous-programme
Oui
non
déclaration 1
déclaration 2
déclaration 3
Expression booléenne
Vraie
Fausse
Reste du sous-programme
Un défaut majeur se produira si Type de défaut Code de défaut
La structure se reboucle trop longtemps 6 1
Si vous voulez ceci Saisissez ce texte structuré
La boucle WHILE...DO évalue d’abord ses conditions. Si les conditions sont vraies, l’automate exécute ensuite les déclarations incluses dans la boucle.
Ceci diffère de la boucle REPEAT...UNTIL car cette dernière exécute les déclarations de la structure et détermine ensuite si les conditions sont vraies avant d’exécuter à nouveau les déclarations. Les déclarations d’une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les déclarations d’une boucle WHILE...DO peuvent ne jamais être exécutées.
pos := 0;
WHILE ((pos
-
Chapitre1 Programmation en texte structuré
Exemple 2 :
Si vous voulez ceci Saisissez ce texte structuré
Déplacer des caractères ASCII depuis un tableau SINT vers un point de chaîne. (Dans un tableau SINT, chaque élément contient un caractère). Arrêtez quand vous atteignez le retour chariot.
1. Initialisez numéro_élément à 0.
2. Comptez le nombre d’éléments dans tableau_SINT (le tableau qui contient les caractères ASCII) et stockez le résultat dans taille_tableau_SINT (point DINT).
3. Si le caractère dans tableau_SINT[numéro_élément] = 13 (valeur décimale du retour chariot), alors arrêtez.
4. Réglez Point_chaîne[numéro_élément] = le caractère contenu dans tableau_SINT[numéro_élément].
5. Ajoutez 1 à numéro_élément. Ceci permet à l’automate contrôler le caractère suivant dans le tableau_SINT.
6. Réglez le membre longueur du point_chaîne = numéro_élément. (Ceci enregistre le nombre de caractères dans point_chaîne jusqu’à présent).
7. Si numéro_élément = taille_tableau_SINT, alors arrêtez. (Vous êtes à la fin du tableau et il ne contient pas de retour chariot).
8. Allez à 3.
numéro_élément := 0;
SIZE(tableau_SINT, 0, taille_tableau_SINT);
WHILE tableau_SINT[numéro_élément] 13 DO
Point_chaîne.DATA[numéro_élément] := tableau_SINT[numéro_élément];
numéro_élément := numéro_élément + 1;
Point_chaîne.LEN := numéro_élément;
Si numéro_élément = taille_tableau_SINT, alors
EXIT;
END_IF;
END_WHILE;
Publication 1756-PM007B-FR-P – Juillet 2008 31
-
Programmation en texte structuré Chapitre1
REPEAT…UNTIL Utilisez la boucle REPEAT…UNTIL pour continuer à effectuer une action jusqu’à ce que les conditions soient vraies.
Opérandes :
texte structuré
Description : La syntaxe est :
Opérande Type Format Entrer
Expression_booléenne
BOOL Point
Expression
point ou expression booléen qui génère une valeur booléenne (expression booléenne)
REPEAT
;
UNTIL expression_booléenne
END_REPEAT;
IMPORTANT Assurez-vous que vous n’itérez pas la boucle un trop grand nombre de fois pendant une scrutation.
• L’automate n’exécute aucune autre déclaration du sous-programme tant que la boucle n’est pas terminée.
• Si le temps mis pour terminer la boucle est supérieur à la temporisation du chien de garde, un défaut majeur se produit.
• Envisagez d’utiliser une autre structure, telle qu’IF...THEN.
REPEAT
; Déclarations à exécuter tant que expression_booléenne1 est fausse
Facultatif
IF expression_booléenne2 THEN
EXIT; Si vous voulez quitter la boucle prématurément sous certaines conditions, utilisez d’autres déclarations, tel qu’une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
UNTIL expression_booléenne1
END_REPEAT;
32 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Ces schémas montrent comment une boucle REPEAT...UNTIL s’exécute et comment une déclaration EXIT permet de quitter la boucle prématurément.
Drapeaux d’état arithmétiques : pas affectés
Conditions de défaut :
Exemple 1 :
Tant qu’expression_booléenne est fausse, l’automate exécute seulement les déclarations comprises dans la boucle REPEAT…UNTIL.
Pour arrêter la boucle avant que les conditions soient fausses, utilisez une déclaration EXIT.
déclaration 1
déclaration 2
déclaration 3Expression booléenne
Fausse
Vraie
Reste du sous-programmeExpression booléenne
Fausse
Vraie
Reste du sous-programme
déclaration 1
déclaration 2
déclaration 3 Oui
non
Un défaut majeur se produira si Type de défaut Code de défaut
La structure se reboucle trop longtemps 6 1
Si vous voulez ceci Saisissez ce texte structuré
La boucle REPEAT...UNTIL exécute les déclarations de la structure puis détermine si les conditions sont vraies avant de recommencer l’exécution des déclarations.
Ceci est différent de la boucle WHILE...DO car cette dernière commence par évaluer ses conditions. Si les conditions sont vraies, l’automate exécute ensuite les déclarations incluses dans la boucle. Les déclarations d’une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les déclarations d’une boucle WHILE...DO peuvent ne jamais être exécutées.
pos := -1;
REPEAT
pos := pos + 2;
UNTIL ((pos
-
Programmation en texte structuré Chapitre1
Exemple 2 :
Si vous voulez ceci Saisissez ce texte structuré
Déplacer des caractères ASCII depuis un tableau SINT vers un point de chaîne. (Dans un tableau SINT, chaque élément contient un caractère). Arrêtez quand vous atteignez le retour chariot.
1. Initialisez numéro_élément à 0.
2. Comptez le nombre d’éléments dans tableau_SINT (le tableau qui contient les caractères ASCII) et stockez le résultat dans taille_tableau_SINT (point DINT).
3. Réglez Point_chaîne[numéro_élément] = le caractère contenu dans tableau_SINT[numéro_élément].
4. Ajoutez 1 à numéro_élément. Ceci permet à l’automate contrôler le caractère suivant dans le tableau_SINT.
5. Réglez le membre longueur du point_chaîne = numéro_élément. (Ceci enregistre le nombre de caractères dans point_chaîne jusqu’à présent).
6. Si numéro_élément = taille_tableau_SINT, alors arrêtez. (Vous êtes à la fin du tableau et il ne contient pas de retour chariot).
7. Si le caractère dans tableau_SINT[numéro_élément] = 13 (valeur décimale du retour chariot), alors arrêtez.
Sinon, aller à 3.
numéro_élément := 0;
SIZE(tableau_SINT, 0, taille_tableau_SINT);
REPEAT
Point_chaîne.DATA[numéro_élément] := tableau_SINT[numéro_élément];
numéro_élément := numéro_élément + 1;
Point_chaîne.LEN := numéro_élément;
Si numéro_élément = taille_tableau_SINT, alors
EXIT;
END_IF;
UNTIL tableau_SINT[numéro_élément] 13
END_REPEAT;
34 Publication 1756-PM007B-FR-P – Juillet 2008
-
Chapitre1 Programmation en texte structuré
Commentaires Pour faciliter l’interprétation de votre texte structuré, ajoutez-y des commentaires.
• Les commentaires vous permettent d’utiliser un langage clair pour décrire le fonctionnement de votre texte structuré.
• Les commentaires n’affectent pas l’exécution du texte structuré.
Les commentaires de texte structuré sont chargés dans la mémoire de l’automate et sont accessibles pour le transfert. Pour ajouter des commentaires à votre texte structuré :
Pour ajouter un commentaire Utilisez un des ces formats
Sur une seule ligne //commentaire
(*commentaire*)
/*commentaire*/
A la fin d’une ligne de texte structuré
A l’intérieur d’une ligne de texte structuré
(*commentaire*)
/*commentaire*/
Qui s’étend sur plusieurs lignes (*début du commentaire. . . fin du commentaire*)
/*début du commentaire. . . fin du commentaire*/
Publication 1756-PM007B-FR-P – Juillet 2008 35
-
Programmation en texte structuré Chapitre1
Par exemple :
Format EXEMPLE
//commentaire Au début d’une ligne
//Contrôler le sens de déplacement du convoyeur
IF sens_convoyeur THEN...
A la fin d’une ligne
ELSE //Si le convoyeur ne se déplace pas, activer le voyant d’alarme
voyant := 1;
END_IF;
(*commentaire*) Entrée_Domino[:=]1;(*ouvrir l’entrée*)
IF Domino.bas (*détecteur de niveau bas*)& Sucre.haut (*détecteur de niveau haut*) THEN...
(*Commande la vitesse de la pompe de recirculation. La vitesse dépend de la température dans le réservoir.*)
IF temp.réservoir > 200 THEN...
/*commentaire*/ Entrée.Domino:=0;/*fermer l’entrée*/
IF Code_barre=65 /*A*/ THEN...
/*Obtient le nombre d’articles dans le tableau d’inventaire et stocke la valeur dans le point Articles_Inventaire*/
SIZE(Inventaire,0,Articles_Inventaire);
36 Publication 1756-PM007B-FR-P – Juillet 2008
-
Publication 1756-PM007B-FR-P – Juillet 2008 40Remplace la publication 1756-PM007A-FR-P – Juillet 2007 Copyright © 2008 Rockwell Automation, Inc. Tous droits réservés. Imprimé aux Etats-Unis.
Assistance Rockwell Automation
Rockwell Automation fournit des informations techniques sur Internet pour vous aider à utiliser ses produits. Sur le site http://support.rockwellautomation.com, vous trouverez des manuels techniques, une foire aux questions, des notes techniques et des profils d’application, des exemples de code et des liens vers des mises à jour de logiciels (service pack). Vous y trouverez également la rubrique « MySupport », que vous pouvez personnaliser pour utiliser au mieux ces outils.
Si vous souhaitez une assistance technique supplémentaire par téléphone pour l’installation, la configuration et le dépannage de vos produits, nous proposons les programmes d’assistance TechConnect. Pour de plus amples informations, contactez votre distributeur ou votre représentant Rockwell Automation, ou allez sur le site http://support.rockwellautomation.com.
Aide à l’installation
En cas de problème sur un module matériel dans les 24 heures suivant son installation, consultez les informations fournies dans le présent manuel. Vous pouvez également appeler l’Assistance Rockwell Automation à un numéro spécial, afin d’obtenir de l’aide pour la mise en service de votre module :
Procédure de retour d’un nouveau produit
Rockwell Automation teste tous ses produits pour en garantir le parfait fonctionnement à leur sortie d’usine. Cependant, si votre produit ne fonctionne pas et doit faire l’objet d’un retour :
Pour les Etats-Unis
1.440.646.3434du lundi au vendredi, de 8h00 à 17h00 (heure de la côte est)
Pour les autres pays
Contactez votre représentant Rockwell Automation pour tout problème technique.
Pour les Etats-Unis
Contactez votre distributeur. Vous devrez lui fournir le numéro de dossier que le Centre d’assistance vous aura communiqué (appelez le numéro de téléphone ci-dessus), afin de procéder au retour.
Pour les autres pays
Contactez votre représentant Rockwell Automation pour savoir comment procéder.
http://support.rockwellautomation.comhttp://support.rockwellautomation.com
1756-PM007-FR, Texte structuré des automatesLogix5000Table des matièresPréfaceObjet de ce manuelConventions utilisées dans ce manuel
Programmation en texte structuréIntroductionAffectationsExpressionsInstructionsInstructions de testIF...THENCASE...OFFOR…DOWHILE…DOREPEAT…UNTILCommentaires
4ème de couverture
/ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 150 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth 8 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.00000 /EncodeGrayImages true /GrayImageFilter /FlateEncode /AutoFilterGrayImages false /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.00000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects true /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile (None) /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName (http://www.color.org) /PDFXTrapped /False
/CreateJDFFile false /SyntheticBoldness 1.000000 /Description >>> setdistillerparams> setpagedevice
top related