1756-rm003k-fr-p, automates logix5000™ – instructions
TRANSCRIPT
Manuel de référence
Numéros de catalogue 1756-L1x,1756-L5x, 1756-L6x, 1768-L4x,
1769-L30, 1769-L31, 1769-L32C, 1769-L32E, 1769-L35CR, 1769-L35E,
1789-L60, 1794-L34, 20D
Automates Logix5000™ –Instructions
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 sitehttp://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 encompte :
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. Les messages « Attention » vous aident à identifier un danger ; éviter ce danger ; en discerner les conséquences.
DANGERD’ELECTROCUTION
Les étiquettes ci-contre, placées sur l’équipement ou à l’intérieur, par exemple, un variateur ou un moteur, signalent la présence de tensions électriques dangereuses.
RISQUE DEBRULURE
Les étiquettes ci-contre, placées sur l’équipement ou à l’intérieur, par exemple, un variateur ou un moteur, indiquent au personnel que certaines surfaces peuvent être à des températures particulièrement élevées.
Table des matières
PréfaceAutomates Logix5000™ – Instructions
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23A qui s’adresse ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . 23Objet de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Informations communes à toutes les instructions . . . . . . . . . 25Conventions et terminologie . . . . . . . . . . . . . . . . . . . . . . . . 25
Activer et effacer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Condition de ligne de logique à relais. . . . . . . . . . . . . . . 26Etats des blocs fonctionnels . . . . . . . . . . . . . . . . . . . . . . 27
Chapitre 1Instructions Logix d’alarmes et d’événements FactoryTalk(ALMD, ALMA)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Alarme TOR (ALMD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Schémas d’état lorsque l’acquittement est requis . . . . . . . 36Schémas d’état lorsque l’acquittement n’est pas requis . . . 37ALMD Alarme avec acquittement requis et verrouillée . . . 38ALMD Alarme avec acquittement requis et non verrouillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39ALMD Alarme avec acquittement non requis et verrouillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39ALMD Alarme avec acquittement non requis et non verrouillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Alarme analogique (ALMA) . . . . . . . . . . . . . . . . . . . . . . . . . 42Schémas d’état lorsque l’acquittement est requis . . . . . . . 54Schémas d’état lorsque l’acquittement n’est pas requis . . . 55ALMA Acquittement de la condition de seuil requis . . . . . 57ALMA Acquittement de la condition de seuil non requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58ALMA Acquittement de la vitesse de variation requis . . . . 59ALMA Acquittement de la vitesse de variation non requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Configuration d’une instruction d’alarme . . . . . . . . . . . . . . . 62Saisie du texte du message d’alarme . . . . . . . . . . . . . . . . . . 65
Variables de la chaîne du message . . . . . . . . . . . . . . . . . 66Versions plurilingues des messages d’alarme. . . . . . . . . . 68
Surveillance de l’état d’alarme . . . . . . . . . . . . . . . . . . . . . . . 69Mise en mémoire tampon d’alarmes. . . . . . . . . . . . . . . . . . . 69Accès aux informations d’alarme par le programme . . . . . . . 70Suppression ou désactivation d’alarmes . . . . . . . . . . . . . . . . 72Exécution d’alarme d’automate . . . . . . . . . . . . . . . . . . . . . . 73
Utilisation de la mémoire automate. . . . . . . . . . . . . . . . . 74Temps de scrutation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3Publication 1756-RM003K-FR-P – Juillet 2008 3
Table des matières
Chapitre 2Instructions sur bit(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Examiner si fermé (XIC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Examiner si ouvert (XIO). . . . . . . . . . . . . . . . . . . . . . . . . . . 80Activation de sortie (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . . 82Verrouillage de sortie (OTL) . . . . . . . . . . . . . . . . . . . . . . . . 84Déverrouillage de sortie (OTU) . . . . . . . . . . . . . . . . . . . . . . 86Impulsion (ONS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Impulsion sur front montant (OSR) . . . . . . . . . . . . . . . . . . . 91Impulsion sur front descendant (OSF) . . . . . . . . . . . . . . . . . 94Impulsion sur front montant avec entrée (OSRI) . . . . . . . . . . 96Impulsion sur front descendant avec entrée (OSFI). . . . . . . . 99
Chapitre 3Instructions de temporisation et de comptage(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Temporisateur à l’enclenchement (TON) . . . . . . . . . . . . . . 104Temporisateur au déclenchement (TOF) . . . . . . . . . . . . . . 108Temporisateur rémanent (RTO) . . . . . . . . . . . . . . . . . . . . . 112Temporisateur à l’enclenchement avec RAZ (TONR). . . . . . 116Temporisateur au déclenchement avec RAZ (TOFR) . . . . . . 120Temporisateur rémanent avec RAZ (RTOR) . . . . . . . . . . . . 124Comptage progressif (CTU) . . . . . . . . . . . . . . . . . . . . . . . . 128Comptage dégressif (CTD). . . . . . . . . . . . . . . . . . . . . . . . . 132Comptage progressif/dégressif (CTUD) . . . . . . . . . . . . . . . 136Réinitialisation (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Chapitre 4Instructions d’entrée/de sortie(MSG, GSV, SSV, IOT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Message (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Codes d’erreur MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Codes d’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Codes d’erreur étendus . . . . . . . . . . . . . . . . . . . . . . . . 154Codes d’erreur PLC et SLC (.ERR) . . . . . . . . . . . . . . . . . 156Codes d’erreur de bloc-transfert . . . . . . . . . . . . . . . . . . 158
Spécification des détails de configuration . . . . . . . . . . . . . . 159Spécification des messages de lecture et d’écriture des fichiers de données CIP . . . . . . . . . . . . . . . . . . . . . 160Reconfiguration d’un module d’E/S. . . . . . . . . . . . . . . . 161Définition des messages CIP génériques . . . . . . . . . . . . 162Définition des messages PLC-5 . . . . . . . . . . . . . . . . . . . 163Définition des messages SLC . . . . . . . . . . . . . . . . . . . . 165Définition des messages de bloc-transfert . . . . . . . . . . . 165Définition des messages PLC-3 . . . . . . . . . . . . . . . . . . . 165Définition des messages PLC-2 . . . . . . . . . . . . . . . . . . . 167
Exemples de configuration MSG . . . . . . . . . . . . . . . . . . . . 168
4 Publication 1756-RM003K-FR-P – Juillet 2008
Table des matières
Définition de la communication. . . . . . . . . . . . . . . . . . . . . 169Définition d’un chemin . . . . . . . . . . . . . . . . . . . . . . . . 169Pour les blocs-transferts . . . . . . . . . . . . . . . . . . . . . . . . 172Définition d’une méthode de communication ou d’une adresse de module . . . . . . . . . . . . . . . . . . . . . . . 172Choix d’une option de cache . . . . . . . . . . . . . . . . . . . . 173Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Lire une valeur système (GSV) et écrire une valeur système (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . 176Objets GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Accéder à l’objet CONTROLLER . . . . . . . . . . . . . . . . . . 179Accéder à l’objet CONTROLLERDEVICE . . . . . . . . . . . . 181Accéder à l’objet CST . . . . . . . . . . . . . . . . . . . . . . . . . . 183Accéder à l’objet DF1. . . . . . . . . . . . . . . . . . . . . . . . . . 184Accéder à l’objet FAULTLOG . . . . . . . . . . . . . . . . . . . . 187Accéder à l’objet MESSAGE . . . . . . . . . . . . . . . . . . . . . 188Accéder à l’objet MODULE. . . . . . . . . . . . . . . . . . . . . . 190Accéder à l’objet MOTIONGROUP . . . . . . . . . . . . . . . . 191Accéder à l’objet PROGRAM. . . . . . . . . . . . . . . . . . . . . 192Accéder à l’objet ROUTINE . . . . . . . . . . . . . . . . . . . . . 193Accéder à l’objet SERIALPORT . . . . . . . . . . . . . . . . . . . 193Accéder à l’objet TASK. . . . . . . . . . . . . . . . . . . . . . . . . 195Accéder à l’objet WALLCLOCKTIME . . . . . . . . . . . . . . . 197
Exemple de programmation GSV/SSV . . . . . . . . . . . . . . . . 198Obtenir les informations sur les défauts . . . . . . . . . . . . 198Configuration d’indicateurs d’activation et de désactivation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Sortie immédiate (IOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Chapitre 5Instructions de comparaison(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Comparaison (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Expressions CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Formatage d’expressions . . . . . . . . . . . . . . . . . . . . . . . 209Déterminer l’ordre des opérations. . . . . . . . . . . . . . . . . 209Utilisation de chaînes dans une expression . . . . . . . . . . 210
Egal à (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Supérieur ou égal (GEQ). . . . . . . . . . . . . . . . . . . . . . . . . . 215Supérieur à (GRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Inférieur ou égal (LEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Inférieur à (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Limite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Masque égal à (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Entrée d’une valeur de masque immédiate . . . . . . . . . . 238Différent de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Publication 1756-RM003K-FR-P – Juillet 2008 5
Table des matières
Chapitre 6Instructions de calcul/mathématiques(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Calcul (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Formatage d’expressions . . . . . . . . . . . . . . . . . . . . . . . 250Déterminer l’ordre des opérations. . . . . . . . . . . . . . . . . 251
Addition (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Soustraction (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Multiplication (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Division (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Modulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Racine carrée (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Négation (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Valeur absolue (ABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Chapitre 7Instructions de transfert/logiques(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Transfert (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Transfert avec masque (MVM) . . . . . . . . . . . . . . . . . . . . . . 285
Entrée d’une valeur de masque immédiate . . . . . . . . . . 286Transfert masqué avec cible (MVMT) . . . . . . . . . . . . . . . . . 288Répartition champ de bits (BTD) . . . . . . . . . . . . . . . . . . . . 292Répartition champ de bits avec cible (BTDT) . . . . . . . . . . . 295Effacer (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Permutation d’octet (SWPB). . . . . . . . . . . . . . . . . . . . . . . . 300ET sur bits (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304OU sur bits (OR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307OU exclusif sur bits (XOR) . . . . . . . . . . . . . . . . . . . . . . . . 310NON sur bits (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313ET booléen (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316OU booléen (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319OU exclusif booléen (BXOR). . . . . . . . . . . . . . . . . . . . . . . 322NON booléen (BNOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Chapitre 8Instructions de tableau (fichier)/Instructions diverses(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Sélection du mode de fonctionnement . . . . . . . . . . . . . . . . 328
Mode Tout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Mode Numérique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Mode incrémental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Arithmétique et logique sur fichier (FAL) . . . . . . . . . . . . . . 333Expressions FAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Formatage d’expressions . . . . . . . . . . . . . . . . . . . . . . . 343Déterminer l’ordre des opérations. . . . . . . . . . . . . . . . . 343
6 Publication 1756-RM003K-FR-P – Juillet 2008
Table des matières
Recherche et comparaison sur fichier (FSC) . . . . . . . . . . . . 344Expressions FSC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Opérateurs valables . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Formatage d’expressions . . . . . . . . . . . . . . . . . . . . . . . 349Déterminer l’ordre des opérations. . . . . . . . . . . . . . . . . 350Utilisation de chaînes dans une expression . . . . . . . . . . 351
Copie de fichier (COP) Copie synchrone de fichier (CPS) . . 352Remplir un fichier (FLL) . . . . . . . . . . . . . . . . . . . . . . . . . . 358Moyenne de fichier (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . 362Tri sur fichier (SRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Ecart type de fichier (STD) . . . . . . . . . . . . . . . . . . . . . . . . 372Taille en éléments (SIZE). . . . . . . . . . . . . . . . . . . . . . . . . . 377
Chapitre 9Instructions de tableau (fichier)/décalage(BSL, BSR, FFL, FFU, LFL, LFU)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381Décalage binaire à gauche (BSL) . . . . . . . . . . . . . . . . . . . . 382Décalage binaire à droite (BSR) . . . . . . . . . . . . . . . . . . . . . 386Chargement FIFO (FFL). . . . . . . . . . . . . . . . . . . . . . . . . . . 390Déchargement de FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . 396Chargement LIFO (LFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Déchargement LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . 408
Chapitre 10Instructions séquenceurs(SQI, SQO, SQL)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415Entrée séquenceur (SQI) . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Entrée d’une valeur de masque immédiate . . . . . . . . . . 417Utiliser SQI sans SQO . . . . . . . . . . . . . . . . . . . . . . . . . 419
Sortie séquenceur (SQO). . . . . . . . . . . . . . . . . . . . . . . . . . 420Entrée d’une valeur de masque immédiate . . . . . . . . . . 421Utiliser SQI avec SQO . . . . . . . . . . . . . . . . . . . . . . . . . 423Réinitialisation de la position de SQO. . . . . . . . . . . . . . 423
Chargement de séquenceur (SQL) . . . . . . . . . . . . . . . . . . . 424
Chapitre 11Instructions de commande de programme(JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429Saut vers une étiquette (JMP)Etiquette (LBL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Saut vers sous-programme (JSR)Sous-programme (SBR) Retour (RET) . . . . . . . . . . . . . . . . . 432Saut vers sous-programme externe (JXR) . . . . . . . . . . . . . . 443Fin temporaire (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446Relais de contrôle maître (MCR). . . . . . . . . . . . . . . . . . . . . 448Désactivation d’interruption par l’utilisateur (UID) Activation d’interruption par l’utilisateur (UIE) . . . . . . . . . . 450Instruction toujours faux (AFI) . . . . . . . . . . . . . . . . . . . . . . 452
Publication 1756-RM003K-FR-P – Juillet 2008 7
Table des matières
Pas d’opération (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 453Fin de transition (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 454Pause SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Réinitialisation SFC (SFR). . . . . . . . . . . . . . . . . . . . . . . . . . 458Déclenchement de tâche événementielle (EVENT) . . . . . . . 460
Déterminer de façon programmatique si une instruction EVENT déclenche une tâche . . . . . . . 461
Chapitre 12Instructions pour/rupture(FOR, FOR...DO, BRK, EXIT, RET)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465Pour (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466Rupture (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469Retour (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Chapitre 13Instructions spéciales(FBC, DDT, DTR, PID)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473Comparaison de fichier de bits (FBC). . . . . . . . . . . . . . . . . 474
Sélection du mode de recherche. . . . . . . . . . . . . . . . . . 476Détection de diagnostic (DDT) . . . . . . . . . . . . . . . . . . . . . 481
Sélection du mode de recherche. . . . . . . . . . . . . . . . . . 483Transition de données (DTR). . . . . . . . . . . . . . . . . . . . . . . 488
Entrée d’une valeur de masque immédiate . . . . . . . . . . 489Proportionnel, intégral et dérivé (PID) . . . . . . . . . . . . . . . . 491Configuration d’une instruction PID . . . . . . . . . . . . . . . . . . 496
Spécification du réglage . . . . . . . . . . . . . . . . . . . . . . . . 497Spécification de la configuration. . . . . . . . . . . . . . . . . . 498Spécification des alarmes . . . . . . . . . . . . . . . . . . . . . . . 499Spécification de la mise à l’échelle . . . . . . . . . . . . . . . . 499
Utilisation des instructions PID . . . . . . . . . . . . . . . . . . . . . 500Anti-saturation de l’action intégrale et transfert sans à-coups entre manuel et auto . . . . . . . . . . . . . . . . 502Temporisation de l’instruction PID . . . . . . . . . . . . . . . . 503Redémarrage sans à-coups . . . . . . . . . . . . . . . . . . . . . . 507Lissage des dérivées. . . . . . . . . . . . . . . . . . . . . . . . . . . 508Réglage de la zone morte. . . . . . . . . . . . . . . . . . . . . . . 509Utilisation de la limitation de sortie. . . . . . . . . . . . . . . . 509Anticipation de vitesse ou polarisation de sortie . . . . . . 510Boucles en cascade . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Contrôle d’un rapport . . . . . . . . . . . . . . . . . . . . . . . . . 511
Théorie du PID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Processus PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Processus PID avec boucles maître/esclave . . . . . . . . . . 512
8 Publication 1756-RM003K-FR-P – Juillet 2008
Table des matières
Chapitre 14Instructions trigonométriques(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Sinus (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Cosinus (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Sinus d’arc (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523Cosinus d’arc (ACS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Tangente d’arc (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Chapitre 15Instructions mathématiques évoluées(LN, LOG, XPY)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Logarithme naturel (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . 534Logarithme décimal (LOG) . . . . . . . . . . . . . . . . . . . . . . . . 537X à la puissance Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . . 540
Chapitre 16Instructions de conversion mathématique(DEG, RAD, TOD, FRD, TRN, TRUNC)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Degrés (DEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Radians (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Conversion en DCB (TOD) . . . . . . . . . . . . . . . . . . . . . . . . 550Conversion en nombre entier (FRD) . . . . . . . . . . . . . . . . . 553Troncation (TRN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Chapitre 17Instructions du port série ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559Exécution de l’instruction . . . . . . . . . . . . . . . . . . . . . . . 560Codes d’erreur ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . 562Types de données de chaîne . . . . . . . . . . . . . . . . . . . . 562
Test ASCII pour ligne de mémoire tampon (ABL) . . . . . . . . 564Caractères ASCII dans la mémoire tampon (ACB) . . . . . . . . 567Effacement ASCII de la mémoire tampon (ACL) . . . . . . . . . 569Lignes d’échange ASCII (AHL) . . . . . . . . . . . . . . . . . . . . . . 571Lecture ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Ligne de lecture ASCII (ARL) . . . . . . . . . . . . . . . . . . . . . . . 579Ajout d’écriture ASCII (AWA). . . . . . . . . . . . . . . . . . . . . . . 583Ecriture ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Chapitre 18Instructions de chaîne ASCII(CONCAT, DELETE, FIND, INSERT, MID)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593Types de données de chaîne . . . . . . . . . . . . . . . . . . . . 594
Concaténation de chaîne (CONCAT) . . . . . . . . . . . . . . . . . 595Effacement de chaîne (DELETE) . . . . . . . . . . . . . . . . . . . . 597Rechercher une chaîne (FIND) . . . . . . . . . . . . . . . . . . . . . 599Insertion d’une chaîne (INSERT) . . . . . . . . . . . . . . . . . . . . 601Chaîne médiane (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Publication 1756-RM003K-FR-P – Juillet 2008 9
Table des matières
Chapitre 19Instructions de conversion ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605Types de données de chaîne . . . . . . . . . . . . . . . . . . . . 607
Chaîne vers DINT (STOD) . . . . . . . . . . . . . . . . . . . . . . . . . 608Chaîne vers REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . 611DINT vers chaîne (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 613REAL vers chaîne (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 615Haut de casse (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . . . 617Bas de casse (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Chapitre 20Instructions de débogage(BPT, TPT)
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621Points d’interruption (BPT) . . . . . . . . . . . . . . . . . . . . . . . . 621
Format de chaîne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622Points de suivi (TPT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Format de chaîne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Annexe AAttributs communs Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Valeurs immédiates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629Conversions de données . . . . . . . . . . . . . . . . . . . . . . . . . . 629
SINT ou INT vers DINT . . . . . . . . . . . . . . . . . . . . . . . . 631Nombre entier vers REAL . . . . . . . . . . . . . . . . . . . . . . . 633DINT vers SINT ou INT . . . . . . . . . . . . . . . . . . . . . . . . 634REAL vers nombre entier . . . . . . . . . . . . . . . . . . . . . . . 634
Annexe BAttributs de bloc fonctionnel Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Choix des éléments de bloc fonctionnel. . . . . . . . . . . . . . . 637Verrouillage de données . . . . . . . . . . . . . . . . . . . . . . . . . . 638Ordre d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Résolution d’une boucle. . . . . . . . . . . . . . . . . . . . . . . . 641Résolution du flux de données entre deux blocs . . . . . . 642Créer une temporisation d’une scrutation . . . . . . . . . . . 643Récapitulatif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Réponses du bloc fonctionnel aux conditions de dépassement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644Modes de temporisation . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Paramètres d’instruction communs pour les modes de temporisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647Présentation des modes de temporisations . . . . . . . . . . 649
Commande Programme/Opérateur . . . . . . . . . . . . . . . . . . 650
10 Publication 1756-RM003K-FR-P – Juillet 2008
Table des matières
Annexe CProgrammation en texte structuré Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Syntaxe du texte structuré . . . . . . . . . . . . . . . . . . . . . . . . . 655Affectations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Spécification d’une affectation non rémanente. . . . . . . . 658Affectation d’un caractère ASCII à une chaîne . . . . . . . . 659
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659Utilisation d’opérateurs et de fonctions arithmétiques . . 661Utilisation d’opérateurs relationnels . . . . . . . . . . . . . . . 662Utilisation des opérateurs logiques . . . . . . . . . . . . . . . . 664Utilisation d’opérateurs sur bits. . . . . . . . . . . . . . . . . . . 665Déterminer l’ordre d’exécution . . . . . . . . . . . . . . . . . . . 665
Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Certains mots-clés sont réservés à une utilisation ultérieure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
IF...THEN (si...alors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668CASE...OF (cas...de) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671FOR…DO (pour...faire) . . . . . . . . . . . . . . . . . . . . . . . . . . . 674WHILE…DO (pendant...faire) . . . . . . . . . . . . . . . . . . . . . . 677REPEAT…UNTIL (répéter...jusqu’à) . . . . . . . . . . . . . . . . . . 680Commentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Index Codes des caractères ASCII. . . . . . . . . . . . . . . . . . . . . . 693
Publication 1756-RM003K-FR-P – Juillet 2008 11
Table des matières
Notes:
12 Publication 1756-RM003K-FR-P – Juillet 2008
Sommaire des modifications
Introduction Ce document contient des informations actualisées et nouvelles. Pour trouver ces informations, recherchez les barres de révision comme celle qui se trouve à côté de ce paragraphe.
Informations actualisées Ce document contient les changements suivants :
Modification Page
Chapitre 1 – Instructions d’alarme TOR (ALMD) et d’alarme analogique (ALMA) regroupées dans un seul chapitre. Ajout d’informations sur la configuration, la chaîne de message et l’état.
29
Chapitre 4 – Ajout de nouveaux attributs d’objet automate GSV/SSV. 179
Chapitre 20 – Ajout d’instructions de débogage (PPT, TPT). 621
13Publication 1756-RM003K-FR-P – Juillet 2008 13
Sommaire des modifications
Notes :
14 Publication 1756-RM003K-FR-P – Juillet 2008
Repérage des instructions
Où trouver une instructionUtilisez cette section pour trouver des informations sur les instructions Logix (les instructions grisées sont disponibles dans d’autres manuels). Cette section indique également quels langages de programmation sont disponibles pour les instructions.
Si le tableau indique : L’instruction est contenue dans :
un numéro de page ce manuel
une commande de mouvement Logix5000 Controllers Motion Instruction Set Reference Manual, publication 1756-RM007
PhaseManager PhaseManager User Manual, publication LOGIX-UM001
une commande de procédé Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual, publication 1756-RM006
Publication 1756-RM003K-FR-P – Juillet 2008 15
Repérage des instructions
Instruction Emplacement Langages
ABLTest ASCII pour ligne de mémoire tampon
603 Logique à relaisTexte structuré
ABSValeur absolue
277 Logique à relaisTexte structuréBloc fonctionnel
ACBCaractères ASCII en mémoire tampon
567 Logique à relaisTexte structuré
ACLEffacer la mémoire tampon ASCII
569 Logique à relaisTexte structuré
ACSCosinus d’arc
526 Logique à relaisTexte structuréBloc fonctionnel
ADDAddition
252 Logique à relaisTexte structuréBloc fonctionnel
AFIInstruction toujours fausse
452 Logique à relais
AHLLignes d’échange ASCII
571 Logique à relaisTexte structuré
ALMAlarme
Commande de procédé
Texte structuréBloc fonctionnel
ALMAAlarme analogique
42 Logique à relaisTexte structuréBloc fonctionnel
ALMDAlarme TOR
30 Logique à relaisTexte structuréBloc fonctionnel
ANDET sur bits
304 Logique à relaisTexte structuréBloc fonctionnel
ARDLecture ASCII
575 Logique à relaisTexte structuré
ARLLigne de lecture ASCII
579 Logique à relaisTexte structuré
ASNSinus d’arc
523 Logique à relaisTexte structuréBloc fonctionnel
ATNTangente d’arc
529 Logique à relaisTexte structuréBloc fonctionnel
AVEMoyenne fichier
362 Logique à relais
AWAAjout d’écriture ASCII
583 Logique à relaisTexte structuré
AWTEcriture ASCII
588 Logique à relaisTexte structuré
BANDET booléen
316 Texte structuréBloc fonctionnel
BNOTNON booléen
325 Texte structuréBloc fonctionnel
BOROU booléen
319 Texte structuréBloc fonctionnel
BPTPoints de rupture
621 Logique à relais
BRKRupture
469 Logique à relais
BSLDécalage binaire à gauche
382 Logique à relais
BSRDécalage binaire à droite
386 Logique à relais
BTDRépartition champ de bits
295 Logique à relais
BTDTRépartition champ de bits avec cible
295 Texte structuréBloc fonctionnel
BTRMessage
144 Logique à relaisTexte structuré
BTWMessage
144 Logique à relaisTexte structuré
BXOROU exclusif booléen
322 Texte structuréBloc fonctionnel
CCCommande coordonnée
Commande de procédé
Texte structuréBloc fonctionnel
CLREffacer
298 Logique à relaisTexte structuré
CMPComparer
206 Logique à relais
CONCATConcaténation de chaîne
595 Logique à relaisTexte structuré
COPCopie de fichier
352 Logique à relaisTexte structuré
COSCosinus
517 Logique à relaisTexte structuréBloc fonctionnel
CPSCopie synchrone de fichier
352 Logique à relaisTexte structuré
CPTCalculer
248 Logique à relais
CTDComptage dégressif
132 Logique à relais
CTUComptage progressif
128 Logique à relais
CTUDComptage progressif/dégressif
136 Texte structuréBloc fonctionnel
D2SDDispositif TOR 2 états
Commande de procédé
Texte structuréBloc fonctionnel
D3SDDispositif TOR 3 états
Commande de procédé
Texte structuréBloc fonctionnel
Instruction Emplacement Langages
16 Publication 1756-RM003K-FR-P – Juillet 2008
Repérage des instructions
DDTDétection de diagnostic
481 Logique à relais
DEDTTemps mort
Commande de procédé
Texte structuréBloc fonctionnel
DEGDegrés
544 Logique à relaisTexte structuréBloc fonctionnel
DELETEEffacer une chaîne
597 Logique à relaisTexte structuré
DERVDérivé
Commande de procédé
Texte structuréBloc fonctionnel
DFFBasculeur D
Commande de procédé
Texte structuréBloc fonctionnel
DIVDivision
261 Logique à relaisTexte structuréBloc fonctionnel
DTOSDINT vers chaîne
613 Logique à relaisTexte structuré
DTRTransition de données
488 Logique à relais
EOTFin de transition
454 Logique à relaisTexte structuré
EQUEgal à
211 Logique à relaisTexte structuréBloc fonctionnel
ESELSélection évoluée
Commande de procédé
Texte structuréBloc fonctionnel
EVENTDéclenchement sur tâche événementielle
460 Logique à relaisTexte structuré
FALArithmétique et logique sur fichier
333 Logique à relais
FBCComparaison de bit de fichier
474 Logique à relais
FFLChargement FIFO
390 Logique à relais
FFUDéchargement FIFO
396 Logique à relais
FGENGénérateur de fonction
Commande de procédé
Texte structuréBloc fonctionnel
FINDRechercher une chaîne
599 Logique à relaisTexte structuré
FLLRemplir un fichier
358 Logique à relais
FORPour
466 Logique à relais
FRDConversion en nombre entier
553 Logique à relaisBloc fonctionnel
Instruction Emplacement Langages
FSCRecherche et comparaison de fichier
344 Logique à relais
GEQSupérieur ou égal à
215 Logique à relaisTexte structuréBloc fonctionnel
GRTSupérieur à
219 Logique à relaisTexte structuréBloc fonctionnel
GSVObtenir valeur système
176 Logique à relaisTexte structuré
HLLLimite supérieure/inférieure
Commande de procédé
Texte structuréBloc fonctionnel
HPFFiltre passe haut
Commande de procédé
Texte structuréBloc fonctionnel
ICONConnecteur de câble d’entrée
637 Bloc fonctionnel
IMCCommande de modèle interne
Commande de procédé
Texte structuréBloc fonctionnel
INSERTInsertion d’une chaîne
601 Logique à relaisTexte structuré
INTGIntégrateur
Commande de procédé
Texte structuréBloc fonctionnel
IOTSortie immédiate
201 Logique à relaisTexte structuré
IREFRéférence d’entrée
637 Bloc fonctionnel
JKFFBasculeur JK
Commande de procédé
Texte structuréBloc fonctionnel
JMPSaut vers étiquette
430 Logique à relais
JSRSaut vers sous-programme
432 Logique à relaisTexte structuréBloc fonctionnel
JXRSaut vers programme externe
443 Logique à relais
LBLEtiquette
430 Logique à relais
LDL2Avance-retard de deuxième ordre
Commande de procédé
Texte structuréBloc fonctionnel
LDLGAvance-retard
Commande de procédé
Texte structuréBloc fonctionnel
LEQInférieur ou égal à
223 Logique à relaisTexte structuréBloc fonctionnel
LESInférieur à
227 Logique à relaisTexte structuréBloc fonctionnel
Instruction Emplacement Langages
Publication 1756-RM003K-FR-P – Juillet 2008 17
Repérage des instructions
LFLChargement LIFO
402 Logique à relais
LFUDéchargement LIFO
408 Logique à relais
LIMLimite
231 Logique à relaisBloc fonctionnel
LNLogarithme naturel
534 Logique à relaisTexte structuréBloc fonctionnel
LOGLogarithme décimal
(1) Logique à relaisTexte structuréBloc fonctionnel
LOWERBas de casse
619 Logique à relaisTexte structuré
LPFFiltre passe bas
Commande de procédé
Texte structuréBloc fonctionnel
MAATAppliquer les réglages d’axe
Mouvement Logique à relaisTexte structuré
MAFRRAZ des défauts d’axe
Mouvement Logique à relaisTexte structuré
MAGSynchronisation d’axes
Mouvement Logique à relaisTexte structuré
MAHDAppliquer les diagnostics de raccordement
Mouvement Logique à relaisTexte structuré
MAHPrise d’origine d’axe
Mouvement Logique à relaisTexte structuré
MAJDéplacement d’axe en marche par à-coups
Mouvement Logique à relaisTexte structuré
MAMMouvement de positionnement d’axe
Mouvement Logique à relaisTexte structuré
MAOCArmement sortie de came de mouvement
Mouvement Logique à relaisTexte structuré
MAPCCame de position d’axe
Mouvement Logique à relaisTexte structuré
MARArmement de registration d’axe
Mouvement Logique à relaisTexte structuré
MASDArrêt d’axe immédiat
Mouvement Logique à relaisTexte structuré
MASArrêt d’axe contrôlé
Mouvement Logique à relaisTexte structuré
MASRRAZ arrêt d’axe immédiat
Mouvement Logique à relaisTexte structuré
MATCCame d’axe temporelle
Mouvement Logique à relaisTexte structuré
Instruction Emplacement Langages
MAVEMoyenne mobile
Commande de procédé
Texte structuréBloc fonctionnel
MAWArmement surveillance de position d’axe
Mouvement Logique à relaisTexte structuré
MAXCCapture maximum
Commande de procédé
Texte structuréBloc fonctionnel
MCCDChangement coordonné des dynamiques du mouvement
Mouvement Logique à relaisTexte structuré
MCCMMouvement circulaire coordonné
Mouvement Logique à relaisTexte structuré
MCCPCalcul du profil d’une came de mouvement
Mouvement Logique à relaisTexte structuré
MCDChangement des dynamiques du mouvement
Mouvement Logique à relaisTexte structuré
MCLMMouvement linéaire coordonné
Mouvement Logique à relaisTexte structuré
MCRRAZ de commande principale
448 Logique à relais
MCSDArrêt immédiat coordonné du mouvement
Mouvement Logique à relaisTexte structuré
MCSArrêt coordonné du mouvement
Mouvement Logique à relaisTexte structuré
MCSRRAZ d’arrêt immédiat coordonné du mouvement
Mouvement Logique à relaisTexte structuré
MCTTransformation de mouvements coordonnés
Mouvement Logique à relaisTexte structuré
MCTPCalcul de transformation de position de mouvement
Mouvement Logique à relaisTexte structuré
MDFCommande directe du mouvement arrêté
Mouvement Logique à relaisTexte structuré
MDOCDésarmement de sortie de came de mouvement
Mouvement Logique à relaisTexte structuré
MDOCommande directe d’axe activée
Mouvement Logique à relaisTexte structuré
MDRDésarmement de registration d’axe
Mouvement Logique à relaisTexte structuré
Instruction Emplacement Langages
18 Publication 1756-RM003K-FR-P – Juillet 2008
Repérage des instructions
MDWDésarmement de surveillance de position
Mouvement Logique à relaisTexte structuré
MEQMasque égal à
237 Logique à relaisTexte structuréBloc fonctionnel
MGSDArrêt immédiat de groupe d’axes
Mouvement Logique à relaisTexte structuré
MGSArrêt contrôlé de groupe d’axes
Mouvement Logique à relaisTexte structuré
MGSPEchantillonnage des positions d’un groupe d’axes
Mouvement Logique à relaisTexte structuré
MGSRRAZ arrêt immédiat d’un groupe d’axes
Mouvement Logique à relaisTexte structuré
MIDChaîne médiane
603 Logique à relaisTexte structuré
MINCCapture minimum
Commande de procédé
Texte structuréBloc fonctionnel
IMMCCommande multivariable modulaire
Commande de procédé
Texte structuréBloc fonctionnel
MODModulo
266 Logique à relaisTexte structuréBloc fonctionnel
MOVTransfert
283 Logique à relais
MRATExécution du mouvement de réglage d’axe
Mouvement Logique à relaisTexte structuré
MRHDExécution des diagnostics de raccordement d’axe
Mouvement Logique à relaisTexte structuré
MRPRedéfinition des positions d’axe
Mouvement Logique à relaisTexte structuré
MSFDésactivation d’axe asservi
Mouvement Logique à relaisTexte structuré
MSGMessage
144 Logique à relaisTexte structuré
MSOActivation d’axe asservi
Mouvement Logique à relaisTexte structuré
MSTDEcart type en mouvement
Commande de procédé
Texte structuréBloc fonctionnel
MULMultiplication
258 Logique à relaisTexte structuréBloc fonctionnel
MUXMultiplexeur
Commande de procédé
Bloc fonctionnel
Instruction Emplacement Langages
MVMTransfert avec masque
285 Logique à relais
MVMTTransfert masqué avec cible
288 Texte structuréBloc fonctionnel
NEGNégation
274 Logique à relaisTexte structuréBloc fonctionnel
NEQDifférent de
242 Logique à relaisTexte structuréBloc fonctionnel
NOPPas d’opération
453 Logique à relais
NOTNON sur bits
313 Logique à relaisTexte structuréBloc fonctionnel
NTCHFiltre réjecteur
Commande de procédé
Texte structuréBloc fonctionnel
OCONConnecteur de câble de sortie
637 Bloc fonctionnel
ONSImpulsion unique
88 Logique à relais
OROU sur bits
307 Logique à relaisTexte structuréBloc fonctionnel
OREFRéférence de sortie
637 Bloc fonctionnel
OSFIImpulsion sur front descendant avec entrée
99 Texte structuréBloc fonctionnel
OSFImpulsion sur front descendant
94 Logique à relais
OSRIImpulsion sur front montant avec entrée
96 Texte structuréBloc fonctionnel
OSRImpulsion sur front montant
91 Logique à relais
OTEActivation de sortie
82 Logique à relais
OTLVerrouillage de sortie
84 Logique à relais
OTUDéverrouillage de sortie
86 Logique à relais
PATTAttacher à la phase d’équipement
PhaseManager Logique à relaisTexte structuré
PCLFEffacer défaillance de phase d’équipement
PhaseManager Logique à relaisTexte structuré
Instruction Emplacement Langages
Publication 1756-RM003K-FR-P – Juillet 2008 19
Repérage des instructions
PCMDCommande de phase d’équipement
PhaseManager Logique à relaisTexte structuré
PDETDétacher de la phase d’équipement
PhaseManager Logique à relaisTexte structuré
PFLDéfaillance de phase d’équipement
PhaseManager Logique à relaisTexte structuré
PIDEPID évolué
Commande de procédé
Texte structuréBloc fonctionnel
PIDProportionnel, intégral et dérivé
491 Logique à relaisTexte structuré
PIProportionnel + intégral
Commande de procédé
Texte structuréBloc fonctionnel
PMULMultiplicateur d’impulsion
Commande de procédé
Texte structuréBloc fonctionnel
POSPImpulsion proportionnelle
Commande de procédé
Texte structuréBloc fonctionnel
POVRCommande de contournement de phase d’équipement
PhaseManager Logique à relaisTexte structuré
PPDPause de phase d’équipement
PhaseManager Logique à relaisTexte structuré
PRNPNouveaux paramètres de phase d’équipement
PhaseManager Logique à relaisTexte structuré
PSCEtat de phase terminé
PhaseManager Logique à relaisTexte structuré
PXRQRequête externe de phase d’équipement
PhaseManager Logique à relaisTexte structuré
RADRadians
547 Logique à relaisTexte structuréBloc fonctionnel
RESDRéinitialisation dominante
Commande de procédé
Texte structuréBloc fonctionnel
RESRéinitialisation
140 Logique à relais
RETRetour
432 et 470 Logique à relaisTexte structuréBloc fonctionnel
RLIMLimiteur de variation
Commande de procédé
Texte structuréBloc fonctionnel
RMPSRampe/palier
Commande de procédé
Texte structuréBloc fonctionnel
RTOTemporisateur rémanent
112 Logique à relais
Instruction Emplacement Langages
RTORTemporisateur rémanent avec RAZ
124 Texte structuréBloc fonctionnel
RTOSREAL vers chaîne
615 Logique à relaisTexte structuré
SBRSous-programme
432 Logique à relaisTexte structuréBloc fonctionnel
SCLEchelle
Commande de procédé
Texte structuréBloc fonctionnel
SCRVCourbe en S
Commande de procédé
Texte structuréBloc fonctionnel
SELSélection
Commande de procédé
Bloc fonctionnel
SETDActiver dominant
Commande de procédé
Texte structuréBloc fonctionnel
SFPPause SFC
456 Logique à relaisTexte structuré
SFRRAZ SFC
458 Logique à relaisTexte structuré
SINSinus
514 Logique à relaisTexte structuréBloc fonctionnel
SIZETaille en éléments
377 Logique à relaisTexte structuré
SNEGInverseur de signe
Commande de procédé
Texte structuréBloc fonctionnel
SOCAutomate de deuxième ordre
Commande de procédé
Texte structuréBloc fonctionnel
SQIEntrée séquenceur
416 Logique à relais
SQLChargement séquenceur
424 Logique à relais
SQOSortie séquenceur
420 Logique à relais
SQRRacine carrée
270 Logique à relaisBloc fonctionnel
SQRTRacine carrée
270 Texte structuré
SRTTri de fichier
367 Logique à relaisTexte structuré
SRTPCommande impulsionnelle de chauffage/refroidissement
Commande de procédé
Texte structuréBloc fonctionnel
SSUMSommation à sélection
Commande de procédé
Texte structuréBloc fonctionnel
SSVEtablir une valeur système
176 Logique à relaisTexte structuré
Instruction Emplacement Langages
20 Publication 1756-RM003K-FR-P – Juillet 2008
Repérage des instructions
Publication 1756-RM003K-FR-P – Juillet 2008 21
STDEcart type de fichier
372 Logique à relais
STODChaîne vers DINT
608 Logique à relaisTexte structuré
STORChaîne vers REAL
611 Logique à relaisTexte structuré
SUBSoustraction
255 Logique à relaisTexte structuréBloc fonctionnel
SWPBPermutation d’octet
300 Logique à relaisTexte structuré
TANTangente
520 Logique à relaisTexte structuréBloc fonctionnel
TNDFin temporaire
446 Logique à relais
TODConversion en BCD
550 Logique à relaisBloc fonctionnel
TOFRTemporisateur au déclenchement avec RAZ
120 Texte structuréBloc fonctionnel
TOFTemporisateur au déclenchement
108 Logique à relais
TONRTemporisateur à l’enclenchement avec RAZ
116 Texte structuréBloc fonctionnel
TONTemporisateur à l’enclenchement
104 Logique à relais
TOTTotalisateur
Commande de procédé
Texte structuréBloc fonctionnel
TPTPoints de traçage
625 Logique à relais
TRNTroncation
555 Logique à relaisBloc fonctionnel
TRUNCTroncation
555 Texte structuré
UIDDésactivation d’interruption par l’utilisateur
450 Logique à relaisTexte structuré
UIEActivation d’interruption par l’utilisateur
450 Logique à relaisTexte structuré
Instruction Emplacement Langages
UPDNTotalisateur progressif/dégressif
Commande de procédé
Texte structuréBloc fonctionnel
UPPERHaut de casse
617 Logique à relaisTexte structuré
XICExaminer si fermé
78 Logique à relais
XIOExaminer si ouvert
80 Logique à relais
XOROU exclusif sur bits
310 Logique à relaisTexte structuréBloc fonctionnel
XPYX à la puissance Y
540 Logique à relaisTexte structuréBloc fonctionnel
(1)
Instruction Emplacement Langages
Repérage des instructions
Notes :
22 Publication 1756-RM003K-FR-P – Juillet 2008
Préface
Automates Logix5000™ – Instructions
Introduction Ce manuel fait partie d’une série de manuels d’instructions pour les produits Logix5000.
A qui s’adresse ce manuel Ce document fournit des informations aux programmeurs sur les instructions disponibles avec un automate Logix. Vous devez connaître la façon dont un automate Logix enregistre et traite les données.
Si vous êtes un programmeur novice, lisez toutes les informations sur une instruction avant de l’utiliser. Les programmeurs expérimentés peuvent se reporter aux informations sur les instructions pour vérifier des détails.
Tâche/Objet Documents
Programmation de l’automate pour les applications séquentielles
Automates Logix5000 – Instructions – Manuel de référence, publication 1756-RM003
Programmation de l’automate pour les applications de procédé ou de variation de vitesse
Logix5000 Controllers Process Control and Drives Instructions Reference Manual, publication 1756-RM006
Programmation de l’automate pour les applications de mouvement
Logix5000 Controllers Motion Instruction Set Reference Manual, publication 1756-RM007
Programmation de l’automate pour l’utilisation des phases d’équipement
PhaseManager User Manual, publication LOGIX-UM001
Importation d’un fichier texte ou de points dans un projet
Logix5000 Controllers Import/Export Reference Manual, publication 1756-RM084
Exportation d’un projet ou de points vers un fichier texte
Conversion d’une application PLC-5 ou SLC 500 en une application Logix5000
Logix5550 Controller Converting PLC-5 or SLC 500 Logic to Logix5550 Logic Reference Manual, publication 1756-6.8.5
Ce document
23Publication 1756-RM003K-FR-P – Juillet 2008 23
Automates Logix5000™ – Instructions
Objet de ce manuel Ce manuel fournit une description de chaque instruction.
Les icônes suivantes aident à identifier les informations spécifiques à un langage :
Cette section Fournit ce type d’information
Nom de l’instruction identifie l’instruction
détermine si l’instruction est une instruction d’entrée ou de sortie
Opérandes fait la liste de tous les opérandes de l’instruction
Structure de l’instruction indique les bits et les valeurs d’état de la commande de l’instruction, s’il y en a
Description décrit l’utilisation de l’instruction
définit les différences entre l’activation et la désactivation de l’instruction, si nécessaire
Indicateurs d’état arithmétique
détermine si l’instruction a un effet sur les indicateurs d’état arithmétique
voir l’annexe Attributs communs
Conditions d’erreur détermine si l’instruction génère des défauts mineurs ou majeurs
le cas échéant, définit le type et le code de défaut
Exécution définit la façon dont l’instruction fonctionne
Exemple fournit au moins un exemple de programmation dans chacun des langages de programmation
comprend une description expliquant chaque exemple
si disponible en logique à relais, décrit les opérandes
si disponible en blocs fonctionnels, décrit les opérandes
Les connecteurs affichés sont ceux définis par défaut. Le tableau des opérandes liste tous les connecteurs possibles pour un bloc fonctionnel.
si disponible en texte structuré, décrit les opérandes
Cette icône Indique ce langage de programmation
logique à relais
texte structuré
bloc fonctionnel
24 Publication 1756-RM003K-FR-P – Juillet 2008
Automates Logix5000™ – Instructions
Informations communes à toutes les instructions
Les instructions du Logix5000 ont des attributs communs :
Conventions et terminologie
Activer et effacer
Ce manuel utilise activer et effacer pour définir l’état des bits (booléens) et leurs valeurs (non-booléens) :
Si un opérande ou un paramètre accepte plus d’un type de données, les types de données en gras indiquent les types de données optimum. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Pour des informations sur
Voir cette annexe
attributs communs l’annexe Attributs communs définit :
• les indicateurs d’état arithmétique
• les types de données
• les mots-clé
attributs de bloc fonctionnel
l’annexe Attributs de bloc fonctionnel définit :
• la commande en mode programmation et opérateur
• les modes de temporisation
Ce terme Signifie
activer le bit est mis à 1 (ON)
une valeur est attribuée à tout nombre autre que zéro
effacer le bit est mis à 0 (OFF)
tous les bits d’une valeur sont mis à 0
Publication 1756-RM003K-FR-P – Juillet 2008 25
Automates Logix5000™ – Instructions
Condition de ligne de logique à relais
L’automate évalue les instructions de logique à relais selon la condition de la ligne précédant l’instruction (condition d’entrée de la ligne). Selon l’état d’entrée de la ligne et l’instruction, l’automate règle l’état de la ligne suivant l’instruction (condition de sortie de la ligne), ce qui affecte à leur tour toutes les instructions suivantes.
Si l’état d’entrée de la ligne vers une instruction d’entrée est vrai, l’automate évalue l’instruction et règle l’état de sortie de la ligne selon le résultat de l’instruction. Si l’instruction finit en état vrai, l’état de sortie de la ligne est vrai ; si l’instruction finit en état faux, l’état de sortie de la ligne est faux.
L’automate pré-scrute également les instructions. La pré-scrutation est une scrutation spéciale de tous les sous-programmes dans l’automate. L’automate scrute tous les sous-programmes principaux et secondaires pendant la pré-scrutation, mais ignore les sauts qui peuvent éviter l’exécution d’instructions. L’automate exécute toutes les boucles FOR et les appels de sous-programmes. Si un sous-programme est appelé plus d’une fois, il est exécuté chaque fois qu’il est appelé. L’automate utilise la pré-scrutation et les instructions de logique à relais pour réinitialiser les E/S non rémanentes et les valeurs internes.
Pendant la pré-scrutation, les valeurs d’entrées ne sont pas actualisées et les sorties ne sont pas mises à jour. Les conditions suivantes génèrent une pré-scrutation :
• le passage du mode Programmation (Program) au mode Exécution (Run) ;
• le passage automatique au mode Exécution à la mise sous tension.
La pré-scrutation d’un programme ne se fait pas si :
• le programme devient planifié pendant que l’automate est en marche ;
• le programme n’est pas planifié lorsque l’automate passe en mode Exécution (Run).
instruction d’entrée
condition entrée ligne
instruction de sortie
condition sortie ligne
26 Publication 1756-RM003K-FR-P – Juillet 2008
Automates Logix5000™ – Instructions
Etats des blocs fonctionnels
L’automate évalue les instructions de bloc fonctionnel en fonction de l’état de diverses conditions.
Chaque instruction de bloc fonctionnel comprend également des paramètres EnableIn et EnableOut :
• les instructions de bloc fonctionnel sont exécutées normalement lorsque EnableIn est activé ;
• lorsque EnableIn est effacé, l’instruction de bloc fonctionnel exécute une logique de pré-scrutation, une logique de post-scrutation ou saute simplement l’exécution normale de l’algorithme ;
• EnableOut est identique à EnableIn ; cependant, si l’exécution du bloc fonctionnel détecte un dépassement, EnableOut est également effacé ;
• l’exécution du bloc fonctionnel reprend où elle a été interrompue lorsque EnableIn passe de effacé à activé. Cependant, il y a certaines instructions de bloc fonctionnel qui spécifient des fonctionnalités spéciales, telles que la réinitialisation, lorsque EnableIn passe de effacé à activé. Pour les instructions de bloc fonctionnel avec des paramètres sur base de temps, lorsque le mode de temporisation est sur Oversample, l’instruction reprend toujours où elle a été interrompue lorsque EnableIn passe de effacé à activé.
Si le paramètre EnableIn n’est pas câblé, l’instruction s’exécute toujours normalement et EnableIn reste activé. Si vous effacez EnableIn, il devient activé à l’exécution suivante de l’instruction.
IMPORTANT Lorsque vous programmez en blocs fonctionnels, limitez la plage des unités procédé à +/–10+/–15,, car les calculs internes en virgule flottante sont effectués en utilisant le format de virgule flottante simple précision. Les unités procédé en dehors de cette plage peuvent entraîner une perte de précision si les résultats approchent les limites du format en virgule flottante simple précision (+/–10+/–38).
Condition possible Description
pré-scrutation La pré-scrutation des sous-programmes de blocs fonctionnels est la même que pour les sous-programmes de logique à relais. La seule différence est que le paramètre EnableIn de chaque instruction de bloc fonctionnel est effacé pendant la pré-scrutation.
première scrutation de l’instruction
La première scrutation de l’instruction est la première fois qu’une instruction est exécutée après la pré-scrutation. L’automate utilise la première scrutation de l’instruction pour lire les entrées courantes et pour déterminer l’état approprié dans lequel se mettre.
première exécution de l’instruction
La première exécution de l’instruction est la première fois qu’une instruction est exécutée avec une nouvelle valeur de structure de données. L’automate utilise la première exécution de l’instruction pour générer des coefficients et d’autres données qui ne changent pas pour un bloc fonctionnel après le chargement initial.
Publication 1756-RM003K-FR-P – Juillet 2008 27
Automates Logix5000™ – Instructions
Notes :
28 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 1
Instructions Logix d’alarmes et d’événements FactoryTalk(ALMD, ALMA)
Introduction Ces instructions d’alarme Logix sont disponibles en logique à relais, en texte structuré et en diagramme de blocs fonctionnels. Lorsqu’elles sont utilisées avec le logiciel FactoryTalk View SE, version 5.0 et ultérieure, ces instructions créent un système d’alarmes combiné avec votre progiciel de visualisation. L’automate détecte les conditions d’alarme et diffuse les événements vers les serveurs d’alarmes et d’événements FactoryTalk View, ces derniers propagent les alarmes vers les clients Factory Talk View SE qui sont abonnés pour recevoir les avertissements.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
détecter les alarmes sur la base de conditions booléennes (vrai/faux)
ALMD Logique à relais
Texte structuré
Bloc fonctionnel
30
détecter les alarmes sur la base du niveau ou de la vitesse de variation d’une valeur
ALMA Logique à relais
Texte structuré
Bloc fonctionnel
42
29Publication 1756-RM003K-FR-P – Juillet 2008 29
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Alarme TOR (ALMD) L’instruction ALMD détecte les alarmes en se basant sur des conditions booléennes (vrai/faux). Les paramètres de commande du programme (Prog) et opérateur (Oper) fournissent une interface pour les commandes d’alarme.
Opérandes :
Logique à relais
En logique à relais, l’entrée de condition d’alarme (In) est obtenue à partir de la condition de ligne.
Texte structuré
Les opérandes sont les mêmes que pour l’instruction ALMD en logique à relais, avec quelques exceptions indiquées ci-dessus.
Opérande Type Format Description
Point ALMD ALARM_DIGITAL Structure Structure ALMD.
In BOOL PointImmédiat
Texte structuré uniquement.
La valeur est copiée dans In lorsque l’instruction est exécutée. La valeur d’entrée de l’alarme est comparée pour déterminer si une alarme est présente.
ProgAck BOOL PointImmédiat
La valeur est copiée dans ProgAck lorsque l’instruction est exécutée. Lors de la transition d’effacer à activé, acquitte l’alarme (si un acquittement est requis).
ProgReset BOOL PointImmédiat
La valeur est copiée dans ProgReset lorsque l’instruction est exécutée. Lors de la transition d’effacer à activé, réinitialise l’alarme (le cas échéant).
ProgDisable BOOL PointImmédiat
La valeur est copiée dans ProgDisable lorsque l’instruction est exécutée. Lorsqu’activé, désactive l’alarme (ne supplante pas les commandes d’activation).
ProgEnable BOOL PointImmédiat
La valeur est copiée dans ProgEnable lorsque l’instruction est exécutée. Lorsqu’activé, active l’alarme (prioritaire par rapport aux commandes de désactivation).
MinDurationPRE DINT Immédiat Logique à relais uniquement.
Définit la durée pendant laquelle la condition d’alarme doit être présente avant d’être signalée (en millisecondes).
MinDurationACC DINT Immédiat Logique à relais uniquement.
Indique le nombre de millisecondes écoulées depuis que la condition d’alarme est présente.
ALMD(ALMD, In, ProgAck, ProgReset, ProgDisable, ProgEnable);
30 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Bloc fonctionnel
Structure ALARM_DIGITAL
Opérande Type Format Description
Point ALMD ALARM_DIGITAL Structure Structure ALMD.
Paramètre d’entrée Type de données
Description
EnableIn BOOL Logique à relais :
Correspond à l’état de la ligne. N’affecte pas le traitement.
Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est toujours exécutée.
In BOOL Entrée du signal TOR vers l’instruction.
Réglage par défaut désactivé.
Logique à relais :
Suit l’état de la ligne. Activé si l’état de la ligne est vrai. Désactivé si l’état de la ligne est faux.
Texte structuré :
Copié à partir de l’opérande d’instruction.
InFault BOOL Indicateur de mauvaise santé pour l’entrée. L’application utilisateur peut activer InFault pour indiquer que le signal d’entrée présente une erreur. Lorqu’activé, l’instruction active InFaulted (Status.1). Lorqu’effacé, l’instruction efface InFaulted (Status.1). Dans les deux cas, l’instruction continue d’évaluer In pour les conditions d’alarme.
Le réglage par défaut est effacé (bonne santé).
Condition BOOL Définit comment l’alarme est activée. Lorsque Condition est activé, la condition d’alarme est activée si In est activé. Lorsque Condition est effacé, la condition d’alarme est activée si In est effacé.
Réglage par défaut activé.
AckRequired BOOL Définit si l’acquittement d’alarme est requis. Lorsqu’activé, l’acquittement est requis. Lorqu’effacé, l’acquittement n’est pas requis et Acked est toujours activé.
Réglage par défaut activé.
Publication 1756-RM003K-FR-P – Juillet 2008 31
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Latched BOOL Définit si l’alarme est verrouillée. Les alarmes verrouillées restent InAlarm lorsque la condition d’alarme devient fausse, et jusqu’à ce qu’une commande de réinitialisation (Reset) soit reçue. Lorsqu’activé, l’alarme est verrouillée. Lorsqu’effacé, l’alarme est déverrouillée.
Une alarme verrouillée ne peut être réinitialisée que lorsque la condition d’alarme est fausse.
Réglage par défaut effacé.
ProgAck BOOL Activé par le programme utilisateur pour acquitter l’alarme. Nécessite une transition d’effacer à activé lorsque l’alarme est non acquittée.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperAck BOOL Activé par l’interface opérateur pour acquitter l’alarme. Nécessite une transition d’effacer à activé lorsque l’alarme est non acquittée. L’instruction efface ce paramètre.
Réglage par défaut effacé.
ProgReset BOOL Activé par le programme utilisateur pour réinitialiser l’alarme. Nécessite une transition d’effacé à activé lorsque l’alarme est InAlarm et que la condition In ne présente pas d’alarme.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperReset BOOL Activé par l’interface opérateur pour réinitialiser l’alarme. Nécessite une transition d’effacé à activé lorsque l’alarme est InAlarm et que la condition In ne présente pas d’alarme. L’alarme efface ce paramètre.
Réglage par défaut effacé.
ProgSuppress BOOL Activé par le programme utilisateur pour supprimer l’alarme.
Réglage par défaut effacé.
OperSuppress BOOL Activé par l’interface opérateur pour supprimer l’alarme. L’alarme efface ce paramètre.
Réglage par défaut effacé.
ProgUnsuppress BOOL Activé par le programme utilisateur pour annuler la suppression de l’alarme. Prioritaire par rapport aux commandes de suppression.
Réglage par défaut effacé.
OperUnsuppress BOOL Activé par l’interface opérateur pour annuler la suppression de l’alarme. Prioritaire par rapport aux commandes de suppression. L’alarme efface ce paramètre.
Réglage par défaut effacé.
Paramètre d’entrée Type de données
Description
32 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ProgDisable BOOL Activé par le programme utilisateur pour désactiver l’alarme.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperDisable BOOL Activé par l’interface opérateur pour désactiver l’alarme. L’alarme efface ce paramètre.
Réglage par défaut effacé.
ProgEnable BOOL Activé par le programme utilisateur pour activer l’alarme. Prioritaire par rapport à la commande de désactivation.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperEnable BOOL Activé par l’interface opérateur pour activer l’alarme. Prioritaire par rapport à la commande de désactivation. L’alarme efface ce paramètre.
Réglage par défaut effacé.
AlarmCountReset BOOL Activé par le programme utilisateur pour réinitialiser le compteur d’alarme. Une transition d’effacé à activé remet à zéro le compteur d’alarme.
Réglage par défaut effacé.
UseProgTime BOOL Définit s’il faut utiliser l’horloge de l’automate ou la valeur ProgTime pour dater les événements de changement d’état de l’alarme. Lorsqu’activé, la valeur ProgTime fournit l’horodatage. Lorsqu’effacé, l’horloge de l’automate fournit l’horodatage.
Réglage par défaut effacé.
ProgTime LINT Si UseProgTime est activé, cette valeur est utilisée pour fournir la valeur d’horodatage de tous les événements. Ceci permet à l’application d’appliquer des horodatages obtenus à partir de la source d’alarme, comme un module d’entrées de séquence des événements.
Severity DINT Gravité de l’alarme. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé pour trier et filtrer les fonctions au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
MinDurationPRE DINT Temps minimum prédéfini (en millisecondes) pendant lequel la condition d’alarme doit rester vraie avant que l’alarme soit marquée comme InAlarm et que la notification d’alarme soit envoyée aux clients. L’automate recueille les données d’alarme dès que la condition d’alarme est détectée ; ainsi, aucune donnée n’est perdue en attendant la fin du temps minimum.
Valable = 0...2 147 483 647.
Valeur par défaut = 0.
Paramètre d’entrée Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 33
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
InAlarm BOOL Etat actif de l’alarme. Activé lorsque l’alarme est active. Effacé lorsque l’alarme n’est pas active (état normal).
Acked BOOL Etat acquitté de l’alarme. Activé lorsque l’alarme est acquittée. Effacé lorsque l’alarme n’est pas acquittée.
Acked est toujours activé lorsque AckRequired est effacé.
InAlarmUnack BOOL Etats actif et acquitté combinés de l’alarme. Activé lorsque l’alarme est active (InAlarm est activé) et non acquittée (Acked est effacé). Effacé lorsque l’alarme est normale (inactive), acquittée ou les deux.
Suppressed BOOL Etat supprimé de l’alarme. Activé lorsque l’alarme est supprimée. Effacé lorsque l’alarme n’est pas supprimée.
Disabled BOOL Etat désactivé de l’alarme. Activé lorsque l’alarme est désactivée. Effacé lorsque l’alarme est activée.
MinDurationACC DINT Temps écoulé depuis que l’alarme a été détectée. Lorsque cette valeur atteint MinDurationPRE, l’alarme est activée (InAlarm est activé) et une notification est envoyée aux clients.
AlarmCount DINT Nombre d’activations de l’alarme (InAlarm est activé). Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
InAlarmTime LINT Horodatage de la détection d’alarme.
AckTime LINT Horodatage de l’acquittement d’alarme. Si l’alarme ne requiert pas d’acquittement, cet horodatage est égal à la durée de l’alarme.
RetToNormalTime LINT Horodatage de l’alarme reprenant son état normal.
AlarmCountResetTime LINT Horodatage indiquant quand le compteur de l’alarme a été remis à zéro.
DeliveryER BOOL Erreur de transmission du message de notification d’alarme. Activé lorsqu’il existe une erreur de transmission : soit l’alarme n’a aucun abonné ou au moins un abonné n’a pas reçu le dernier message de changement d’état de l’alarme. Effacé lorsque la transmission a réussi ou est en cours.
DeliveryDN BOOL Transmission du message de notification d’alarme terminée. Activé lorsque la transmission a réussi : l’alarme a au moins un abonné et tous les abonnés ont reçu le dernier message de changement d’état de l’alarme. Effacé lorsque la transmission échoue avant la fin ou est en cours.
DeliveryEN BOOL Etat de la transmission du message de notification d’alarme. Activé lorsque la transmission est en cours. Effacé lorsque la transmission n’est pas en cours.
NoSubscriber BOOL L’alarme n’avait pas d’abonné lors de la tentative de transmission du dernier message. Activé lorsqu’il n’y a pas d’abonné. Effacé lorsqu’il y a au moins un abonné.
NoConnection BOOL Les abonnés de l’alarme n’étaient pas connectés lors de la tentative de transmission du dernier message. Activé lorsque tous les abonnés sont déconnectés. Effacé lorsqu’au moins un abonné est connecté ou lorsqu’il n’y a pas d’abonnés.
CommError BOOL Erreur de communication lors de la transmission d’un message d’alarme. Activé lorsqu’il y a des erreurs de communication et que le nombre maximum de tentatives est atteint. Ceci signifie qu’il y avait un abonné avec une connexion, mais que l’automate n’a pas reçu la confirmation de la transmission du message. Effacé lorsque tous les abonnés connectés confirment la réception du message d’alarme.
AlarmBuffered BOOL Le message d’alarme est mis en mémoire tampon en raison d’une erreur de communication (CommError est activé) ou d’une perte de connexion (NoConnection est activé). Activé lorsque le message est mis en mémoire tampon pour au moins un abonné. Effacé lorsque le message d’alarme n’est pas mis en mémoire tampon.
Subscribers DINT Nombre d’abonnés pour cette alarme.
34 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Description L’instruction ALMD détecte les alarmes sur la base de conditions booléennes (vrai/faux).
L’instruction ALMD apporte des fonctions complémentaires lorsqu’elle est utilisée avec les logiciels RSLinx Enterprise et FactoryTalk View SE. Vous pouvez afficher les alarmes dans les écrans Sommaire des alarmes (Alarm Summary), Bannière d’alarme (Alarm Banner), Explorateur d’état d’alarme (Alarm Status Explorer) et Visualiseur du journal des alarmes (Alarm Log Viewer) de FactoryTalk View SE.
Le logiciel RSLinx Enterprise s’abonne aux alarmes de l’automate. Utilisez les paramètres de sortie pour surveiller l’instruction afin de voir l’état d’abonnement de l’alarme et pour visualiser les changements d’état de l’alarme. Si une connexion au logiciel RSLinx Enterprise est rompue, l’automate peut mettre les données d’alarme en mémoire tampon pendant un bref moment, jusqu’à la restauration de la connexion.
SubscNotified DINT Nombre d’abonnés notifiés avec succès du dernier changement d’état de l’alarme.
Status DINT Indicateurs d’état combinés :
Status.0 = InstructFault.
Status.1 = InFaulted.
Status.2 = SeverityInv.
InstructFault (Status.0) BOOL Conditions d’erreur d’instruction présentes. Ceci n’est pas une erreur de commande mineure ou majeure. Vérifiez les autres bits d’état pour déterminer ce qui s’est produit.
InFaulted (Status.1) BOOL Le programme utilisateur a activé InFault pour indiquer des données d’entrée de mauvaise qualité. L’alarme continue de surveiller In pour détecter toute condition d’alarme.
SeverityInv (Status.2) BOOL La configuration de gravité de l’alarme n’est pas valable.
Si la gravité est <1, l’instruction utilise Gravité = 1.
Si la gravité est >1000, l’instruction utilise Gravité = 1000.
Paramètre de sortie Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 35
36
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Schémas d’état lorsque l’acquittement est requis
Latched = True
InAlarm = FalseAcked = True
InAlarm = TrueAcked = False
In = Condition, MinDurationACC >= MinDurationPRE
InAlarm = TrueAcked = True
In != Condition, Reset 2
Ack1
In != Condition, Reset2
Latched = False
InAlarm = FalseAcked = True
InAlarm = TrueAcked = False
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition
InAlarm = FalseAcked = False
InAlarm = TrueAcked = True
In != Condition
Ack1Ack1
In = Condition, MinDurationACC >= MinDurationPRE
1 Alarm can be acked by several different ways: ProgAck, OperAck, clients (RSLogix 5000software, RSView software).
2 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software).
InAlarm = FauxAcked = Vrai
InAlarm = VraiAcked = Faux
InAlarm = FauxAcked = Faux
InAlarm = VraiAcked = Vrai
In = Condition, MinDurationACC >= Min DurationPRE
Int != Condition
In = Condition, MinDurationACC >= MinDurationPRE
Int != Condition
Ack1 Ack1
Verrouillé = Faux
Verrouillé = Vrai
InAlarm = FauxAcked = Vrai
InAlarm = VraiAcked = Faux
In = Condition, MinDurationACC >= MinDurationPRE
Int != Condition, Reset2
Int != Condition, Reset 2
Ack1
InAlarm = VraiAcked = Vrai
1 L’alarme peut être acquittée de différentes façons : ProgAck, OperAck, clients (logiciel RSLogix 5000, logiciel RSView).
2 L’alarme peut être réinitialisée de différentes façons : ProgReset, OperReset, clients (logiciel RSLogix 5000, logiciel RSView).
Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
InAlarm = False InAlarm = True
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition
Acked = True
Latched = False
InAlarm = False InAlarm = True
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition, Reset1
Acked = True
Latched = True
1 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software)
Schémas d’état lorsque l’acquittement n’est pas requis
Indicateurs d’état arithmétique : Aucuns
Conditions d’erreur : Aucunes
Exécution :
InAlarm = Faux
Int != Condition
InAlarm = Faux
InAlarm = Vrai
InAlarm = Vrai
Acked = Vrai
Acked = Vrai
Int != Condition, Reset1
In = Condition, MinDurationACC >= MinDurationPRE
In = Condition, MinDurationACC >= MinDurationPRE
1 L’alarme peut être réinitialisée de différentes façons : ProgReset, OperReset, clients (logiciel RSLogix 5000, logiciel RSView)
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
InAlarm est effacé et Acked est activé.
Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux.
EnableIn et EnableOut sont effacés.
Le paramètre In est effacé et l’instruction fait une évaluation pour déterminer l’état de l’alarme.
L’état d’entrée de la ligne est vrai
L’état de sortie de la ligne est réglé sur vrai.
EnableIn et EnableOut sont activés.
Le paramètre In est activé et l’instruction fait une évaluation pour déterminer l’état de l’alarme.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Verrouillé = Faux
Verrouillé = Vrai
Publication 1756-RM003K-FR-P – Juillet 2008 37
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
ALMD Alarme avec acquittement requis et verrouillée
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
InAlarm est effacé et Acked est activé.
Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
InAlarm est effacé et Acked est activé.
Première scrutation de l’instruction
Aucune. Aucune.
Première exécution de l’instruction
Aucune. Aucune.
EnableIn est effacé L’instruction n’est pas exécutée.
EnableOut est effacé.
L’instruction est exécutée.
EnableOut est toujours activé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
L’instruction est exécutée.
EnableOut est toujours activé.
Post-scrutation Aucune. Aucune.
38 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ALMD Alarme avec acquittement requis et non verrouillée
ALMD Alarme avec acquittement non requis et verrouillée
Publication 1756-RM003K-FR-P – Juillet 2008 39
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
ALMD Alarme avec acquittement non requis et non verrouillée
Exemple : Deux signaux de panne moteur sont combinés de sorte que si l’un des deux est présent, une alarme de panne moteur est activée. Acquittement de l’alarme par le programme avec transition d’effacé à activé de la valeur du point Motor101Ack. Le programme d’application doit effacer Motor101Ack.
Logique à relais
40 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Texte structuré
Motor101FaultConditions := Motor101Overtemp OR Motor101FailToStart;
ALMD(Motor101Fault,Motor101FaultConditions,Motor101Ack,0,0,0 );
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 41
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Alarme analogique (ALMA) L’instruction ALMA détecte les alarmes en fonction du niveau ou de la vitesse de variation de la valeur analogique. Les paramètres de commande du programme (Prog) et opérateur (Oper) fournissent une interface pour les commandes d’alarme.
Opérandes :
Logique à relais
Opérande Type Format Description
Point ALMA ALARM_ANALOG Structure Structure ALMA.
In REALDINTINTSINT
PointImmédiat
La valeur est copiée dans In lorsque l’instruction est exécutée. La valeur d’entrée de l’alarme est comparée avec les seuils d’alarme pour détecter les conditions d’alarme.
ProgAckAll BOOL PointImmédiat
La valeur est copiée dans ProgAckAll lorsque l’instruction est exécutée. Lors d’une transition d’effacé à activé, acquitte toutes les conditions d’alarme qui requièrent un acquittement.
ProgDisable BOOL PointImmédiat
La valeur est copiée dans ProgDisable lorsque l’instruction est exécutée. Lorsqu’activé, désactive l’alarme (ne supplante pas les commandes d’activation).
ProgEnable BOOL PointImmédiat
La valeur est copiée dans ProgEnable lorsque l’instruction est exécutée. Lorsqu’activé, active l’alarme (prioritaire par rapport aux commandes de désactivation).
HHlimit REAL Immédiat Logique à relais uniquement.
Seuil supérieur d’alarme haute.
HLimit REAL Immédiat Logique à relais uniquement.
Seuil d’alarme haute.
LLimit REAL Immédiat Logique à relais uniquement.
Seuil d’alarme basse.
LLLimit REAL Immédiat Logique à relais uniquement.
Seuil inférieur d’alarme basse.
42 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Texte structuré
Les opérandes sont les mêmes que pour l’instruction ALMD en logique à relais, avec quelques exceptions indiquées ci-dessus.
Bloc fonctionnel
Opérande Type Format Description
Point ALMA ALARM_ANALOG Structure Structure ALMA.
ALMA (ALMA, In, ProgAckAll, ProgDisable, ProgEnable) ;
Publication 1756-RM003K-FR-P – Juillet 2008 43
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Structure ALARM_ANALOG
Paramètre d’entrée Type de données
Description
EnableIn BOOL Logique à relais :
Correspond à l’état de la ligne. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Texte structuré :
Pas d’effet. L’instruction est toujours exécutée.
Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
In REAL La valeur d’entrée de l’alarme est comparée avec les seuils d’alarme pour détecter les conditions d’alarme.
Valeur par défaut = 0.0.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
InFault BOOL Indicateur de mauvaise santé pour l’entrée. L’application utilisateur peut activer InFault pour indiquer que le signal d’entrée présente une erreur. Lorqu’activé, l’instruction active InFaulted (Status.1). Lorqu’effacé, l’instruction efface InFaulted (Status.1). Dans les deux cas, l’instruction continue d’évaluer In pour les conditions d’alarme.
Le réglage par défaut est effacé (bonne santé).
HHEnabled BOOL Détection de condition d’alarme haute haute. Activer pour permettre la détection de condition d’alarme haute haute. Effacer pour désactiver la détection de condition d’alarme haute haute.
Réglage par défaut activé.
HEnabled BOOL Détection de condition d’alarme haute. Activer pour permettre la détection de condition d’alarme haute. Effacer pour désactiver la détection de condition d’alarme haute.
Réglage par défaut activé.
LEnabled BOOL Détection de condition d’alarme basse. Activer pour permettre la détection de condition d’alarme basse. Effacer pour désactiver la détection de condition d’alarme basse.
Réglage par défaut activé.
LLEnabled BOOL Détection de condition d’alarme basse basse. Activer pour permettre la détection de condition d’alarme basse basse. Effacer pour désactiver la détection de condition d’alarme basse basse.
Réglage par défaut activé.
AckRequired BOOL Définit si l’acquittement d’alarme est requis. Lorsqu’activé, l’acquittement est requis. Lorsqu’effacé, l’acquittement n’est pas requis et HHAcked, HAcked, LAcked, LLAcked, ROCPosAcked et ROCNegAcked sont toujours activés.
Réglage par défaut activé.
44 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ProgAckAll BOOL Activé par le programme utilisateur pour acquitter toutes les conditions de cette alarme. Nécessite une transition d’effacer à activé lorsque les conditions d’alarme sont non acquittées.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperAckAll BOOL Activé par l’interface opérateur pour acquitter toutes les conditions de cette alarme. Nécessite une transition d’effacer à activé lorsque les conditions d’alarme sont non acquittées. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
HHProgAck BOOL Acquittement programme haut haut. Activé par le programme utilisateur pour acquitter une condition haute haute. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
HHOperAck BOOL Acquittement opérateur haut haut. Activé par l’interface opérateur pour acquitter une condition haute haute. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
HProgAck BOOL Acquittement programme haut. Activé par le programme utilisateur pour acquitter une condition haute. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
HOperAck BOOL Acquittement opérateur haut. Activé par l’interface opérateur pour acquitter une condition haute. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
LProgAck BOOL Acquittement programme bas. Activé par le programme utilisateur pour acquitter une condition basse. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
LOperAck BOOL Acquittement opérateur bas. Activé par l’interface opérateur pour acquitter une condition basse. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
LLProgAck BOOL Acquittement programme bas bas. Activé par le programme utilisateur pour acquitter une condition basse basse. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
Paramètre d’entrée Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 45
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
LLOperAck BOOL Acquittement opérateur bas bas. Activé par l’interface opérateur pour acquitter une condition basse basse. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ROCPosProgAck BOOL Acquittement par le programme de la vitesse de variation positive. Activé par le programme utilisateur pour acquitter une condition de vitesse de variation positive. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
ROCPosOperAck BOOL Acquittement par l’opérateur de la vitesse de variation positive. Activé par l’interface opérateur pour acquitter une condition de vitesse de variation positive. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ROCNegProgAck BOOL Acquittement par le programme de la vitesse de variation négative. Activé par le programme utilisateur pour acquitter une condition de vitesse de variation négative. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée.
Réglage par défaut effacé.
ROCNegOperAck BOOL Acquittement par l’opérateur de la vitesse de variation négative. Activé par l’interface opérateur pour acquitter une condition de vitesse de variation négative. Nécessite une transition d’effacer à activé lorsque la condition d’alarme est non acquittée. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ProgSuppress BOOL Activé par le programme utilisateur pour supprimer l’alarme.
Réglage par défaut effacé.
OperSuppress BOOL Activé par l’interface opérateur pour supprimer l’alarme. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ProgUnsuppress BOOL Activé par le programme utilisateur pour annuler la suppression de l’alarme. Prioritaire par rapport aux commandes de suppression.
Réglage par défaut effacé.
OperUnsuppress BOOL Activé par l’interface opérateur pour annuler la suppression de l’alarme. Prioritaire par rapport aux commandes de suppression. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ProgDisable BOOL Activé par le programme utilisateur pour désactiver l’alarme.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
Paramètre d’entrée Type de données
Description
46 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
OperDisable BOOL Activé par l’interface opérateur pour désactiver l’alarme. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
ProgEnable BOOL Activé par le programme utilisateur pour activer l’alarme. Prioritaire par rapport à la commande de désactivation.
Réglage par défaut effacé.
Logique à relais :
Copié à partir de l’opérande d’instruction.
Texte structuré :
Copié à partir de l’opérande d’instruction.
OperEnable BOOL Activé par l’interface opérateur pour activer l’alarme. Prioritaire par rapport à la commande de désactivation. L’instruction alarme efface ce paramètre.
Réglage par défaut effacé.
AlarmCountReset BOOL Activé par le programme utilisateur pour réinitialiser le compteur d’alarmes pour toutes les conditions. Une transition d’effacé à activé remet à zéro le compteur d’alarme.
Réglage par défaut effacé.
HHlimit REAL Seuil supérieur d’alarme haute.
Valable = HLimit < HHLimit < valeur flottante positive maximum.
Valeur par défaut = 0.0.
HHSeverity DINT Gravité de la condition d’alarme haute haute. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
HLimit REAL Seuil d’alarme haute.
Valable = LLimit < HLimit < HHLimit.
Valeur par défaut = 0.0.
HSeverity DINT Gravité de la condition d’alarme haute. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
LLimit REAL Seuil d’alarme basse.
Valable = LLLimit < LLimit < HLimit.
Valeur par défaut = 0.0.
Paramètre d’entrée Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 47
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
LSeverity DINT Gravité de la condition d’alarme basse. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
LLLimit REAL Seuil inférieur d’alarme basse.
Valable = valeur flottante négative maximum < LLLimit < LLimit.
Valeur par défaut = 0.0.
LLSeverity DINT Gravité de la condition d’alarme basse basse. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
MinDurationPRE DINT Temps minimum prédéfini (en millisecondes) pendant lequel un niveau de condition d’alarme doit rester vrai avant que la condition soit marquée comme InAlarm et que la notification d’alarme soit envoyée aux clients. L’automate recueille les données d’alarme dès que la condition d’alarme est détectée ; ainsi, aucune donnée n’est perdue en attendant la fin du temps minimum. Ne s’applique pas aux conditions de vitesse de variation.
MinDurationPRE ne s’applique qu’aux écarts par rapport à la normale dans les deux directions. Par exemple, une fois que la condition haute est en timeout, la condition haute haute devient active immédiatement, alors qu’une condition basse attend la période de timeout.
Valable = 0...2 147 483 647.
Valeur par défaut = 0.
Deadband REAL Zone morte pour détecter que les niveaux d’alarme haute haute, haute, basse et basse basse sont revenus à la normale.
Une zone morte différente de zéro peut réduire les vibrations de la condition d’alarme si la valeur In change en permanence mais reste proche du seuil de la condition de niveau. La valeur de la zone morte n’affecte pas la transition vers l’état InAlarm (actif). Une fois qu’une condition de niveau est active, mais avant que la condition ne revienne à l’état inactif (normal), la valeur In doit :
• descendre en dessous du seuil moins la zone morte (pour les conditions haute et haute haute) ;
ou• monter au-dessus du seuil plus la zone morte (pour les conditions basse et basse basse).
La zone morte n’est pas utilisée pour conditionner la durée minimale.
Valable = 0 ≤ Zone morte < à l’étendue entre la première alarme basse activée et la première alarme haute activée.
Valeur par défaut = 0.0.
ROCPosLimit REAL Limite pour une augmentation de la vitesse de variation en unités par seconde. La détection est activée pour toute valeur > 0.0 si ROCPeriod est également > 0.0.
Valable = 0.0...valeur flottante possible maximum.
Valeur par défaut = 0.0.
Paramètre d’entrée Type de données
Description
48 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ROCPosSeverity DINT Gravité de la condition d’augmentation de la vitesse de variation. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
ROCNegLimit REAL Limite pour une diminution de la vitesse de variation en unités par seconde. La détection est activée pour toute valeur > 0.0 si ROCPeriod est également > 0.0.
Valable = 0.0...valeur flottante possible maximum.
Valeur par défaut = 0.0.
ROCNegSeverity DINT Gravité de la condition de diminution de la vitesse de variation. Ceci n’affecte pas le traitement des alarmes par l’automate, mais peut être utilisé par des fonctions de triage et de filtrage au niveau de l’abonné à l’alarme.
Valable = 1...1000 (1000 = le plus grave ; 1 = le moins grave).
Valeur par défaut = 500.
ROCPeriod REAL Durée en secondes pour le calcul (intervalle d’échantillonnage) de la valeur de la vitesse de variation. Chaque fois que l’intervalle d’échantillonnage est écoulé, un nouvel échantillon du paramètre In est stocké et ROC est recalculé.
La détection de la vitesse de variation est activée pour toute valeur > 0.0.
Valable = 0.0...valeur flottante possible maximum.
Valeur par défaut = 0.0.
Paramètre d’entrée Type de données
Description
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
InAlarm BOOL Etat actif de l’alarme. Activé lorsqu’une condition d’alarme est active. Effacé lorsque toutes les conditions d’alarme ne sont pas actives (état normal).
AnyInAlarmUnack BOOL Etats actif et acquitté combinés de l’alarme. Activé lorsqu’une condition d’alarme est détectée et acquittée. Effacé lorsque toutes les conditions d’alarme sont normales (inactives), acquittées ou les deux.
HHInAlarm BOOL Etat de condition d’alarme haute haute. Activé lorsqu’une condition haute haute existe. Effacé lorsqu’aucune condition haute haute n’existe.
HInAlarm BOOL Etat de condition d’alarme haute. Activé lorsqu’une condition haute existe. Effacé lorsqu’aucune condition haute n’existe.
LInAlarm BOOL Etat de condition d’alarme basse. Activé lorsqu’une condition basse existe. Effacé lorsqu’aucune condition basse n’existe.
LLInAlarm BOOL Etat de condition d’alarme basse basse. Activé lorsqu’une condition basse basse existe. Effacé lorsqu’aucune condition basse basse n’existe.
ROCPosInAlarm BOOL Etat de condition d’alarme de vitesse de variation positive. Activé lorsqu’une condition de vitesse de variation positive existe. Effacé lorsqu’aucune condition de vitesse de variation positive n’existe.
Publication 1756-RM003K-FR-P – Juillet 2008 49
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
ROCNegInAlarm BOOL Etat de condition d’alarme de vitesse de variation négative. Activé lorsqu’une condition de vitesse de variation négative existe. Effacé lorsqu’aucune condition de vitesse de variation négative n’existe.
ROC REAL Vitesse de variation calculée de la valeur In. Cette valeur est actualisée lorsque l’instruction est scrutée après chaque ROCPeriod écoulé. La valeur ROC est utilisée pour évaluer les conditions ROCPosInAlarm et ROCNegInAlarm.
ROC = (échantillon actuel de In – échantillon précédent de In) / ROCPeriod
HHAcked BOOL Etat acquitté de condition haute haute. Activé lorsqu’une condition haute haute est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition haute haute n’est pas acquittée.
HAcked BOOL Etat acquitté de condition haute. Activé lorsqu’une condition haute est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition haute n’est pas acquittée.
LAcked BOOL Etat acquitté de condition basse. Activé lorsqu’une condition basse est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition basse n’est pas acquittée.
LLAcked BOOL Etat acquitté de condition basse basse. Activé lorsqu’une condition basse basse est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition basse basse n’est pas acquittée.
ROCPosAcked BOOL Etat acquitté de condition d’alarme de vitesse de variation positive. Activé lorsqu’une condition de vitesse de variation positive est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition de vitesse de variation positive est non acquittée.
ROCNegAcked BOOL Etat acquitté de condition d’alarme de vitesse de variation négative. Activé lorsqu’une condition de vitesse de variation négative est acquittée. Toujours activé lorsque AckRequired est désactivé. Effacé lorsqu’une condition de vitesse de variation négative est non acquittée.
HHInAlarmUnack BOOL Condition haute haute active et état acquitté combinés. Activé lorsque la condition haute haute est active (HHInAlarm est activé) et acquittée. Effacé lorsque la condition haute haute est normale (inactive), acquittée ou les deux.
HInAlarmUnack BOOL Condition haute active et état acquitté combinés. Activé lorsque la condition haute est active (HInAlarm est activé) et acquittée. Effacé lorsque la condition haute est normale (inactive), acquittée ou les deux.
LInAlarmUnack BOOL Condition basse active et état acquitté combinés. Activé lorsque la condition basse est active (LInAlarm est activé) et acquittée. Effacé lorsque la condition basse est normale (inactive), acquittée ou les deux.
LLInAlarmUnack BOOL Condition basse basse active et état acquitté combinés. Activé lorsque la condition basse basse est active (LLInAlarm est activé) et acquittée. Effacé lorsque la condition basse basse est normale (inactive), acquittée ou les deux.
ROCPosInAlarmUnack BOOL Condition de vitesse de variation positive active et état acquitté combinés. Activé lorsque la condition de vitesse de variation positive est active (ROCPosInAlarm est activé) et acquittée. Effacé lorsque la condition de vitesse de variation positive est normale (inactive), acquittée ou les deux.
ROCNegInAlarmUnack BOOL Condition de vitesse de variation négative active et état acquitté combinés. Activé lorsque la condition de vitesse de variation négative est active (ROCNegInAlarm est activé) et acquittée. Effacé lorsque la condition de vitesse de variation négative est normale (inactive), acquittée ou les deux.
Suppressed BOOL Etat supprimé de l’alarme. Activé lorsque l’alarme est supprimée. Effacé lorsque l’alarme n’est pas supprimée.
Disabled BOOL Etat désactivé de l’alarme. Activé lorsque l’alarme est désactivée. Effacé lorsque l’alarme est activée.
Paramètre de sortie Type de données
Description
50 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
MinDurationACC DINT Temps écoulé depuis qu’une alarme a été détectée. Lorsque cette valeur atteint MinDurationPRE, toutes les conditions de niveau d’alarme détectées sont activées (xInAlarm est activé) et une notification est envoyée aux clients.
HHInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition haute haute pour la transition la plus récente vers l’état activé.
HHAlarmCount DINT Nombre de fois que la condition haute haute a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
HInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition haute pour la transition la plus récente vers l’état activé.
HAlarmCount DINT Nombre de fois que la condition haute a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
LInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition basse pour la transition la plus récente vers l’état activé.
LAlarmCount DINT Nombre de fois que la condition basse a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
LLInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition basse basse pour la transition la plus récente vers l’état activé.
LLAlarmCount DINT Nombre de fois que la condition basse basse a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
ROCPosInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition de vitesse de variation positive pour la transition la plus récente vers l’état activé.
ROCPosInAlarmCount DINT Nombre de fois que la condition de vitesse de variation positive a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
ROCNegInAlarmTime LINT Horodatage lorsque l’instruction ALMA a détecté que la valeur In a dépassé le seuil de condition de vitesse de variation négative pour la transition la plus récente vers l’état activé.
ROCNegAlarmCount DINT Nombre de fois que la condition de vitesse de variation négative a été activée. Si la valeur maximale est atteinte, le compteur reste à cette valeur maximale.
AckTime LINT Horodatage de l’acquittement de condition le plus récent. Si l’alarme ne requiert pas d’acquittement, cet horodatage est égal à la durée de la condition d’alarme la plus récente.
RetToNormalTime LINT Horodatage de l’alarme reprenant son état normal.
AlarmCountResetTime LINT Horodatage indiquant quand le compteur de l’alarme a été remis à zéro.
DeliveryER BOOL Erreur de transmission du message de notification d’alarme. Activé lorsqu’il existe une erreur de transmission : soit l’alarme n’a aucun abonné ou au moins un abonné n’a pas reçu le dernier message de changement d’état de l’alarme. Effacé lorsque la transmission a réussi ou est en cours.
DeliveryDN BOOL Transmission du message de notification d’alarme terminée. Activé lorsque la transmission a réussi : l’alarme a au moins un abonné et tous les abonnés ont reçu le dernier message de changement d’état de l’alarme. Effacé lorsque la transmission échoue avant la fin ou est en cours.
DeliveryEN BOOL Etat de la transmission du message de notification d’alarme. Activé lorsque la transmission est en cours. Effacé lorsque la transmission n’est pas en cours.
NoSubscriber BOOL L’alarme n’avait pas d’abonné lors de la tentative de transmission du dernier message. Activé lorsqu’il n’y a pas d’abonné. Effacé lorsqu’il y a au moins un abonné.
NoConnection BOOL Les abonnés de l’alarme n’étaient pas connectés lors de la tentative de transmission du dernier message. Activé lorsque tous les abonnés sont déconnectés. Effacé lorsqu’au moins un abonné est connecté ou lorsqu’il n’y a pas d’abonnés.
Paramètre de sortie Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 51
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
CommError BOOL Erreur de communication lors de la transmission d’un message d’alarme. Activé lorsqu’il y a des erreurs de communication et que le nombre maximum de réessais est atteint. Ceci signifie qu’il y avait un abonné avec une connexion, mais que l’automate n’a pas reçu la confirmation de la transmission du message. Effacé lorsque tous les abonnés connectés confirment la réception du message d’alarme.
AlarmBuffered BOOL Le message d’alarme est mis en mémoire tampon en raison d’une erreur de communication (CommError est activé) ou d’une perte de connexion (NoConnection est activé). Activé lorsque le message est mis en mémoire tampon pour au moins un abonné. Effacé lorsque le message d’alarme n’est pas mis en mémoire tampon.
Subscribers DINT Nombre d’abonnés pour cette alarme.
SubscNotified DINT Nombre d’abonnés notifiés avec succès du dernier changement d’état de l’alarme.
Status DINT Indicateurs d’état combinés :
Status.0 = InstructFault.
Status.1 = InFaulted.
Status.2 = SeverityInv.
Status.3 = AlarmLimitsInv.
Status.4 = DeadbandInv.
Status.5 = ROCPosLimitInv.
Status.6 = ROCNegLimitInv.
Status.7 = ROCPeriodInv.
InstructFault (Status.0) BOOL Conditions d’erreur d’instruction présentes. Ceci n’est pas une erreur mineure ou majeure de l’automate. Vérifiez les autres bits d’état pour déterminer ce qui s’est produit.
InFaulted (Status.1) BOOL Le programme utilisateur a activé InFault pour indiquer des données d’entrée de mauvaise qualité. L’alarme continue de surveiller In pour détecter toute condition d’alarme.
SeverityInv (Status.2) BOOL La configuration de gravité de l’alarme n’est pas valable.
Si la gravité est <1, l’instruction utilise Gravité = 1.
Si la gravité est >1000, l’instruction utilise Gravité = 1000.
AlarmLimitsInv (Status.3)
BOOL La configuration du seuil d’alarme est incorrecte (par exemple, LLimit < LLLimit). Si incorrecte, l’instruction efface tous les bits actifs de seuil de condition. Jusqu’à ce que le défaut soit effacé, aucun nouveau seuil de condition ne peut être détecté.
DeadbandInv (Status.4)
BOOL La configuration de zone morte est incorrecte. Si incorrecte, l’instruction utilise Deadband = 0.0.
Valable = 0 ≤ Zone morte < à l’étendue entre la première alarme basse activée et la première alarme haute activée.
ROCPosLimitInv (Status.5)
BOOL Seuil de vitesse de variation positive incorrect. Si incorrect, l’instruction utilise ROCPosLimit = 0.0, ce qui désactive la détection de fréquence de changement positive.
ROCNegLimitInv (Status.6)
BOOL Seuil de vitesse de variation négative incorrect. Si incorrect, l’instruction utilise ROCNegLimit = 0.0, ce qui désactive la détection de vitesse de variation négative.
ROCPeriodInv (Status.7)
BOOL Intervalle de la vitesse de variation incorrect. Si incorrect, l’instruction utilise ROCPeriod = 0.0, ce qui désactive la détection de la vitesse de variation.
Paramètre de sortie Type de données
Description
52 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Description L’instruction ALMA détecte les alarmes en fonction du niveau ou de la vitesse de variation d’une valeur.
L’instruction ALMA apporte des fonctions complémentaires lorsqu’elle est utilisée avec les logiciels RSLinx Enterprise et FactoryTalk View SE. Vous pouvez afficher les alarmes dans les écrans Liste des alarmes (Alarm Summary), Bannière d’alarme (Alarm Banner), Explorateur d’état d’alarme (Alarm Status Explorer) et Visualiseur du journal des alarmes (Alarm Log Viewer) de FactoryTalk View SE.
Le logiciel RSLinx Enterprise s’abonne aux alarmes de l’automate. Utilisez les paramètres de sortie pour surveiller l’instruction afin de voir l’état d’abonnement de l’alarme et pour visualiser les changements d’état de l’alarme. Si une connexion au logiciel RSLinx Enterprise est rompue, l’automate peut mettre les données d’alarme en mémoire tampon pendant un bref moment, jusqu’au rétablissement de la connexion.
Publication 1756-RM003K-FR-P – Juillet 2008 53
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Schémas d’état lorsque l’acquittement est requis
HInAlarm = FalseHAcked = True
HInAlarm = TrueHAcked = False
In >= HLimit, MinDurationACC >= MinDurationPRE
In < (Hlimit - Deadband)
HInAlarm = FalseHAcked = False
HInAlarm = TrueHAcked = True
In < (HLimit - Deadband) Ack1Ack1
HHInAlarm = FalseHHAcked = True
HHInAlarm = TrueHHAcked = False
In >= HHLimit, MinDurationACC >= MinDurationPRE
In < (HHLimit - Deadband)
HHInAlarm = FalseHHAcked = False
HHInAlarm = TrueHHAcked = True
In < (HHLimit - Deadband)Ack1Ack1
LInAlarm = FalseLAcked = True
LInAlarm = TrueLAcked = False
In <= LLimit, MinDurationACC >= MinDurationPRE
In > (Llimit + Deadband)
LInAlarm = FalseLAcked = False
LInAlarm = TrueLAcked = True
In > (LLimit + Deadband)Ack1Ack1
LLInAlarm = FalseLLAcked = True
LLInAlarm = TrueLLAcked = False
In <= LLLimit, MinDurationACC >= MinDurationPRE
In > (LLLimit + Deadband)
LLInAlarm = FalseLLAcked = False
LLInAlarm = TrueLLAcked = True
In > (LLLimit + Deadband)Ack1
RocPosInAlarm = FalseRocPosAcked = True
RocPosInAlarm = TrueRocPosAcked = False
ROC >= RocPosLimit
ROC < RocPosLimit
RocPosInAlarm = FalseRocPosAcked = False
RocPosInAlarm = TrueRocPosAcked = True
ROC < RocPosLimit Ack1Ack1
l,
RocNegInAlarm = FalseRocNegAcked = True
RocNegInAlarm = TrueRocNegAcked = False
ROC <= -RocNegLimit
ROC > -RocNegLimit
RocNegInAlarm = FalseRocNegAcked = False
RocNegInAlarm = TrueRocNegAcked = True
ROC > -RocNegLimit Ack1Ack1
,
Ack1
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In <= LLimit, MinDurationACC >= MinDurationPRE
In <= LLLimit, MinDurationACC >= MinDurationPRE
ROC >= RocPosLimit
ROC <= -RocNegLimit
ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =
Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.
1 H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 L alarm condition can be acked by several different ways: LProgAck, LOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 LL alarm condition can be acked by several different ways: LLProgAck, LLOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).
1 ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).
HinAlarm = FauxHAcked = Vrai
HinAlarm = VraiHAcked = Faux
LinAlarm = FauxLAcked = Vrai
HinAlarm = FauxHAcked = Faux
HinAlarm = VraiHAcked = Vrai
LinAlarm = VraiLAcked = Faux
LinAlarm = FauxLAcked = Faux
LinAlarm = VraiLAcked = Vrai
HHinAlarm = FauxHHAcked = Vrai
HHinAlarm = FauxHHAcked = Faux
HHinAlarm = VraiHHAcked = Faux
HHinAlarm = VraiHHAcked = Vrai
LLinAlarm = FauxLAcked = Vrai
LLinAlarm = VraiLAcked = Faux
LLinAlarm = FauxLAcked = Faux
LLinAlarm = VraiLAcked = Vrai
RocNegInAlarm = FauxRocNegAcked = Vrai
RocNegInAlarm = FauxRocNegAcked = Faux
RocNegInAlarm = VraiRocNegAcked = Faux
RocNegInAlarm = VraiRocNegAcked = Vrai
RocPosInAlarm = VraiRocPosAcked = Faux
RocPosInAlarm = VraiRocPosAcked = Vrai
RocPosInAlarm = FauxRocPosAcked = Vrai
RocPosInAlarm = FauxRocPosAcked = Faux
In < (HLimit – Deadband)In < (HLimit – Deadband)
In < (HHLimit – Deadband)In < (HHLimit – Deadband)
In < (LLLimit – Deadband)In < (LLLimit – Deadband)
In < (LLimit – Deadband)In < (LLimit – Deadband)
ROC < RocPosLimitROC < RocPosLimit
ROC <= RocPosLimit
ROC < -RocNegLimitROC < -RocNegLimit
ROC <= -RocNegLimit
ROC <= -RocNegLimitROC <= RocPosLimit
Ack1 Ack1
Ack1Ack1
Ack1
Ack1Ack1 Ack1 Ack1
Ack1Ack1
Ack1
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
1 La condition d’alarme H peut être acquittée de différentes façons : HProgAck, HOperAck, ProgAckAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
1 La condition d’alarme HH peut être acquittée de différentes façons : HHProgAck, HHOperAck, ProgAckAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
In >= LLLimit, MinDurationACC >= MinDurationPREIn >= LLimit, MinDurationACC >= MinDurationPRE
In >= LLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
1 La condition d’alarme LL peut être acquittée de différentes façons : LLProgAck, LLOperAck, ProgAckAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
1 La condition d’alarme H peut être acquittée de différentes façons : LProgAck, LOperAck, ProgAckAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
1 La condition d’alarme ROCPos peut être acquittée de différentes façons : RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
1 La condition d’alarme ROCNeg peut être acquittée de différentes façons : RocNegProgAck, RocNegOperAck, ProgAkkAll, OperAckAll, clients (logiciel RSLogix 5000, logiciel RSView).
Où un nouvel échantillon est recueilli au cours de la scrutation suivante une fois l’intervalle ROCPeriod échu.
ROC = In(échantillon actuel) – In(échantillon précédent)
ROCPeriod
54 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Schémas d’état lorsque l’acquittement n’est pas requis
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétiques sont activés pour la sortie ROC.
Conditions d’erreur :
Exécution :
HInAlarm = False HInAlarm = True
In >= HLimit, MinDurationACC >= MinDurationPRE
In < (HLimit - Deadband)
HAcked = True
LInAlarm = False LInAlarm = True
In <= LLimit, MinDurationACC >= MinDurationPRE
In > (LLimit + Deadband)
LAcked = True
HHInAlarm = False HHInAlarm = True
In >= HHLimit, MinDurationACC >= MinDurationPRE
In < (HHLimit - Deadband)
HHAcked = True
LLInAlarm = False LLInAlarm = True
In <= LLLimit, MinDurationACC >= MinDurationPRE
In > (LLLimit + Deadband)
LLAcked = True
RocPosInAlarm = False RocPosInAlarm = True
ROC >= ROCPosLimit
ROC < ROCPosLimit
RocPosAcked = True
ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =
RocNegInAlarm = False RocNegInAlarm = True
ROC <= -ROCNegLimit
ROC > -ROCNegLimit
RocNegAcked = True
Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.
HinAlarm = Faux
LinAlarm = Faux
HHinAlarm = Faux
LLinAlarm = Faux
HinAlarm = Vrai
LinAlarm = Vrai
HHinAlarm = Vrai
LLinAlarm = Vrai
LAcked = Vrai
HHAcked = Vrai
HAcked = Vrai
LLAcked = Vrai
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
In < (HLimit – Deadband)
In < (LLimit – Deadband)
In < (HHLimit – Deadband)
In < (LLLimit – Deadband)
RocPosInAlarm = Faux RocPosInAlarm = Vrai
RocNegInAlarm = Faux RocNegInAlarm = Vrai
RocPosAcked = Vrai
RocNegAcked = Vrai
ROC >= ROCPosLimit
ROC > ROCPosLimit
ROC >= -ROCNegLimit
ROC > -ROCNegLimit
Où un nouvel échantillon est recueilli au cours de la scrutation suivante une fois l’intervalle ROCPeriod échu.
In(échantillon actuel) – In(échantillon précédent)
ROCPeriodROC =
Défaut mineur Type de défaut Code de défaut
Dépassement de capacité ROC 4 4
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
Tous les paramètres xInAlarm sont effacés et toutes les conditions d’alarme sont acquittées.
Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
L’état d’entrée de la ligne est faux
L’instruction n’est pas exécutée.
EnableOut est effacé.
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
EnableOut est activé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 55
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
Tous les paramètres xInAlarm sont effacés et toutes les conditions d’alarme sont acquittées.
Les requêtes de l’opérateur, les horodatages et les indicateurs de transmission sont effacés.
Tous les paramètres xInAlarm sont effacés et toutes les conditions d’alarme sont acquittées.
Première scrutation de l’instruction
Aucune. Aucune.
Première exécution de l’instruction
Aucune. Aucune.
EnableIn est effacé L’instruction n’est pas exécutée.
EnableOut est effacé.
L’instruction est exécutée.
EnableOut est toujours activé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
L’instruction est exécutée.
EnableOut est toujours activé.
Post-scrutation Aucune. Aucune.
56 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ALMA Acquittement de la condition de seuil requis
Publication 1756-RM003K-FR-P – Juillet 2008 57
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
ALMA Acquittement de la condition de seuil non requis
58 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
ALMA Acquittement de la vitesse de variation requis
Publication 1756-RM003K-FR-P – Juillet 2008 59
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
ALMA Acquittement de la vitesse de variation non requis
Exemple : Une alarme de réservoir est activée si le niveau du réservoir dépasse un seuil haut ou haut haut. Acquittement de toutes les conditions d’alarme par le programme avec transition d’effacé à activé de la valeur du point Tank32LevelAck. Le programme d’application doit effacer Tank32LevelAck.
60 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Logique à relais
Texte structuré
ALMA(Tank32Level,Tank32LT,Tank32LevelAck,0, 0);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 61
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Configuration d’une instruction d’alarme
Une fois que vous avez entré une instruction ALMD ou ALMA et que vous avez défini un nom de point d’alarme, utilisez la boîte de dialogue de configuration de l’alarme (Alarm Configuration) pour définir les détails du message.
La boîte de dialogue des propriétés (Properties) de l’instruction d’alarme inclut un onglet Configuration.
Configurez les informations suivantes pour chaque instruction d’alarme.
Cliquez ici pour configurer l’instruction.
Option Description
Condition – Instruction ALMD Condition de déclenchement de l’alarme.
Sélectionnez Input=1 pour une alarme active lorsque In=1. Sélectionnez Input=0 pour une alarme active lorsque In=0.
Entrée de niveau (Input Level) – Instruction ALMA
Entrée de vitesse de variation (Input Rate of Change) – Instruction ALMA
Entrée de niveau (High High, High, Low ou Low Low) ou entrée de vitesse de variation (positive ou négative) pour le déclenchement d’une alarme.
Sélectionnez les conditions d’alarme et entrez les seuils de ces conditions. Désactivez les conditions de vitesse de variation en entrant un 0 comme intervalle (Period) ou seuil.
62 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Gravité (Severity) Sélectionnez une plage de gravité entre 1 et 1 000 pour indiquer l’importance d’une condition d’alarme. Une gravité de 1 correspond aux alarmes de faible priorité et une gravité de 1 000 correspond à une condition d’urgence.
Par défaut, dans le système FactoryTalk Alarms and Events, la plage de gravité est divisée selon les priorités suivantes :
• 1 à 250 sont des priorités faibles.
• 251 à 500 sont des priorités moyennes.
• 501 à 750 sont des priorités élevées.
• 751 à 1 000 sont des priorités urgentes.
Vous pouvez configurer le lien entre gravité et priorité dans le système FactoryTalk Alarms and Events. Voir l’aide de FactoryTalk pour plus de détails.
Durée minimum (Minimum Duration) Entrez la durée en ms pendant laquelle une condition d’alarme doit être active avant qu’elle soit signalée.
Verrouillé (Latched) – Instruction ALMD Sélectionnez Latched (verrouillé) si vous voulez que l’alarme reste active (InAlarm) une fois que la condition d’alarme redevient inactive (normal). Les alarmes verrouillées requièrent une commande de réinitialisation pour passer à l’état normal. La commande de réinitialisation doit être reçue une fois que la condition revient à l’état normal.
Les commandes d’acquittement ne réinitialisent pas une alarme verrouillée.
Zone morte (Deadband) – Instruction ALMA Spécifiez une valeur de zone morte pour réduire les vibrations de la condition d’alarme dues aux petites variations de la valeur In.
La valeur de zone morte n’affecte pas le seuil d’alarme pour la transition à l’état actif et n’est pas non plus utilisée pendant l’intervalle de la durée minimum (Minimum Duration).
Une fois qu’une condition de niveau devient active (InAlarm), elle reste active jusqu’à ce que la valeur In repasse le seuil de la zone morte définie. Par exemple, si le seuil haut est 80, le seuil bas est 20 et la zone morte est 5, la condition haute est active à ≥ 80 et revient à l’état normal à ≤ 75 ; la condition basse est active à ≤ 20 et revient à l’état normal à ≥ ≤ 25.
La zone morte n’a pas d’effet sur les conditions d’alarme de vitesse de variation.
Acquittement requis (Acknowledgement Required)
Les alarmes sont configurées de façon à exiger un acquittement par défaut. L’acquittement indique qu’un opérateur a connaissance de la condition d’alarme, que les conditions soient revenues à la normale ou non.
Désactivez le réglage d’acquittement requis lorsque vous voulez que l’alarme apparaisse et disparaisse du sommaire des alarmes (Alarm Summary) sur l’IHM sans intervention de l’opérateur.
L’état Acked est toujours activé pour les alarmes qui ne requièrent pas d’acquittement.
Si une alarme TOR est configurée comme verrouillée, la commande de réinitialisation acquitte également l’alarme.
Option Description
Publication 1756-RM003K-FR-P – Juillet 2008 63
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Vous pouvez modifier tous les aspects de la configuration des alarmes hors ligne ou en ligne. Les modifications en ligne des nouvelles alarmes et des alarmes existantes sont envoyées immédiatement aux abonnés FactoryTalk (les anciens terminaux IHM qui ne font qu’appeler les points ne sont pas actualisés automatiquement). Les abonnés FactoryTalk n’ont pas besoin de se réabonner pour recevoir les informations actualisées. Les modifications en ligne sont diffusées automatiquement de la structure d’alarme de l’automate vers le reste de l’architecture.
Classe d’alarme (Alarm class) Utilisez la classe d’alarme pour regrouper les alarmes de même type. Attribuez la même classe d’alarme à toutes les alarmes que vous voulez regrouper dans une même classe. Le nom de la classe d’alarme est sensible à la casse.
Par exemple, définissez la classe Tank Farm A pour regrouper toutes les alarmes de réservoir d’une zone spécifique. Ou définissez la classe Control Loop pour regrouper toutes les alarmes de boucles PID.
Vous pouvez ensuite afficher et trier les alarmes sur l’IHM selon les classes. Par exemple, un opérateur peut afficher toutes les alarmes de réservoir ou toutes les alarmes de boucle PID.
La classe d’alarme ne limite pas les types d’alarmes auxquels un objet Sommaire des alarmes (Alarm Summary) peut être abonné. Utilisez la classe d’alarme pour trier les alarmes qui sont visibles pour un opérateur une fois qu’elles ont été reçues par l’objet Sommaire des alarmes (Alarm Summary). Le logiciel FactoryTalk View peut filtrer la classe d’alarme en remplaçant des caractères par des caractères génériques.
Commande de visualisation (View command)
Exécute une commande sur le poste de l’opérateur lorsque ce dernier fait une requête pour une alarme spécifique. Ceci permet à un opérateur d’exécuter n’importe quelle commande FactoryTalk View standard, comme appeler des faces avant et des écrans spécifiques, exécuter des macros, accéder aux fichiers d’aide et lancer des applications externes. Lorsque la condition d’alarme se produit et qu’elle est affichée pour l’opérateur, un bouton dans les écrans du sommaire et de la bannière permet à l’opérateur d’exécuter une commande de visualisation connexe.
S’assurer de saisir la syntaxe correcte et de tester la commande pendant le fonctionnement, parce qu’aucune surveillance d’erreurs n’est effectuée lorsque la commande est entrée.
Option Description
64 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Saisie du texte du message d’alarme
Saisissez le texte du message à afficher lorsqu’une condition d’alarme est active (InAlarm). Pour une instruction ALMD, vous devez saisir les informations du message dans l’onglet Configuration. Pour une instruction ALMA, vous devez saisir les informations du message dans l’onglet Message.
Pour définir un message d’alarme, spécifiez les informations suivantes.
Option Description
Chaîne du message (Message string) La chaîne du message contient les informations à afficher pour l’opérateur à propos de l’alarme. En plus de saisir un texte, vous pouvez inclure des variables. Sélectionnez la variable désirée dans l’éditeur du message d’alarme et ajoutez-la n’importe où dans la chaîne du message.
La chaîne du message peut comporter 255 caractères, y compris les caractères qui définissent les variables incluses (mais non le nombre de caractères dans les valeurs réelles des variables incluses). Par exemple, /*S:0 %Tag1*/ spécifie un point de chaîne et ajoute 13 caractères qui sont comptés dans la longueur totale de la chaîne, mais la valeur réelle du point de chaîne pourrait contenir 82 caractères.
Vous ne pouvez pas accéder via le programme à la chaîne du message d’alarme à partir du point d’alarme. Pour modifier le message d’alarme en fonction d’événements particuliers, configurez un des points associés en type de données de chaîne et intégrez ce point associé au message.
Il est possible d’avoir des versions plurilingues des messages. Pour entrer les différentes langues, utilisez l’utilitaire d’importation/exportation. Pour plus d’informations, voir page 68.
Publication 1756-RM003K-FR-P – Juillet 2008 65
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Variables de la chaîne du message
Vous pouvez intégrer ces informations variables dans une chaîne de message.
Points associés (Associated tags) Vous pouvez sélectionner jusqu’à quatre points supplémentaires à partir du projet automate pour les associer à l’alarme. Les valeurs de ces points sont envoyées avec un message d’alarme au serveur d’alarmes. Par exemple, une alarme TOR pour une soupape de surpression peut également contenir des informations comme la vitesse de la pompe et la température du réservoir.
Les points associés peuvent être de n’importe quel type de données atomiques (BOOL, DINT, INT, SINT ou REAL) ou une chaîne (STRING). Ce peut être des éléments dans un type de données utilisateur ou dans un tableau. Les références de tableau variables ne sont pas autorisées. Si l’alarme est de niveau automate, les points associés doivent également être de niveau automate.
Alternativement, vous pouvez intégrer les points associés dans la chaîne du texte de message.
Les valeurs du point associé sont toujours envoyées avec l’alarme, visibles par l’opérateur et saisies dans le journal d’historique, que vous les ayez intégrées ou non dans la chaîne du message.
Option Description
Variable Intègre à la chaîne du message Code par défaut ajouté à la chaîne du message
Nom d’alarme (Alarm name)
Le nom de l’alarme, qui est constitué du nom de l’automate, du nom du programme et du nom du point. Par exemple, [AutomateZone1]Programme:Principal.NomPointMonAlarme.
/*S:0 %AlarmName*/
Nom de condition (Condition name)
La condition qui déclenche l’alarme :
• l’alarme TOR affiche le déclencheur ;
• l’alarme analogique affiche HiHi, Hi, Lo, LoLo, ROC_POS ou ROC_NEG.
/*S:0 %ConditionName*/
Valeur d’entrée (Input value)
La valeur d’entrée de l’alarme :
• l’alarme TOR affiche 0 ou 1 ;
• l’alarme analogique affiche la valeur de la variable d’entrée surveillée par l’alarme.
/*N:5 %InputValue NOFILL DP:0*/
Valeur de seuil (Limit value) Le seuil de l’alarme :
• l’alarme TOR affiche 0 ou 1 ;
• l’alarme analogique affiche la plage de vérification réellement configurée pour la condition d’alarme analogique.
/*N:5 %LimitValue NOFILL DP:0*/
Gravité (Severity) La gravité de la condition d’alarme configurée. /*N:5 %Severity NOFILL DP:0*/
Valeurs des points associés (Values of associated tags)
La valeur d’un point configuré pour être inclus avec l’événement d’alarme.
/*N:5 %Tag1 NOFILL DP:0*/
66 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Le code varie en fonction du type de point que vous sélectionnez, du nombre de chiffres ou de caractères présents dans la valeur du point et de si vous voulez compléter les bits vides de la partie gauche avec des espaces ou des zéros. Par exemple :
Toutes ces informations variables sont incluses avec les données d’alarme, visualisables par l’opérateur et entrées dans le journal d’historique, que vous ayez intégré ou non les informations dans le texte du message.
Point Code
Valeur BOOL /*N:1 %Tag1 NOFILL DP:0*/
Valeur DINT, 9 chiffres, remplissage à gauche avec des espaces
/*N:9 %Tag2 SPACEFILL DP:0*/
Valeur d’entrée REAL, 9 chiffres (inclut la virgule décimale), 3 chiffres après la virgule décimale, remplissage à gauche avec des zéros
/*N:9 %InputValue NOFILL DP:3*/
Valeur REAL, 8 chiffres (inclut la virgule décimale), 4 chiffres après la virgule décimale, remplissage à gauche avec des zéros
/*N:8 %Tag3 ZEROFILL DP:4*/
Valeur de chaîne, pas de longueur fixe /*S:0 %Tag4*/
Valeur de chaîne, 26 caractères, longueur fixe /*S:26 %Tag4*/
Publication 1756-RM003K-FR-P – Juillet 2008 67
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Versions plurilingues des messages d’alarme
Vous pouvez avoir des messages d’alarme en plusieurs langues. Saisissez les différentes langues dans les versions linguistiques correspondantes du logiciel de programmation RSLogix 5000 ou dans un fichier d’importation/exportation (.CSV ou .TXT).
Vous pouvez accéder au texte du message d’alarme à partir d’un fichier d’importation/exportation (.CSV ou .TXT) et ajouter des lignes supplémentaires pour les versions traduites de la chaîne de message originale. Les messages en différentes langues utilisent des codes de langue ISO dans la colonne TYPE. Le texte du message d’alarme, y compris les codes de variables intégrées, destiné à l’opérateur se trouve dans la colonne DESCRIPTION. L’identificateur (SPECIFIER) identifie la condition d’alarme.
Utilisez l’utilitaire d’importation/exportation pour créer et traduire des chaînes de message en différentes langues. Le format d’importation/exportation .TXT prend en charge les caractères à double octet, vous pouvez donc utiliser ce format pour toutes les langues, notamment le chinois, le japonais et le coréen. Le format d’importation/exportation .CSV ne prend pas en charge les caractères à double octet.
L’importation et l’exportation de messages crée toujours une fusion. Effacer un message dans un fichier .CSV ou .TXT ne l’efface pas du fichier .ACD. Pour effacer un message, importez le fichier .CSV ou .TXT avec les champs type, name et specifier remplis mais avec la description vierge.
68 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Surveillance de l’état d’alarme
Dans l’onglet d’état (Status) de la boîte de dialogue d’alarme, vous pouvez surveiller la condition d’alarme, acquitter une alarme, désactiver une alarme, supprimer une alarme ou réinitialiser une alarme. Utilisez les choix de la boîte de dialogue pour voir le comportement d’une alarme, sans avoir besoin d’une IHM opérationnelle.
Mise en mémoire tampon d’alarmes
Pour recevoir des messages d’alarme d’automate, les clients de l’alarme (comme un serveur RSLinx Enterprise) doivent créer un abonnement pour les alarmes de l’automate Logix. L’automate maintient une connexion avec chaque abonné et surveille l’état de la connexion.
Lorsque l’état de l’alarme change, les instructions d’alarme de l’automate mettent les informations nécessaires en mémoire cache (comme les horodatages et les valeurs de point associées) et demandent la transmission du message d’alarme à tous les abonnés. Le mécanisme du diffuseur transmet les messages d’alarme à chaque abonné aussi vite que possible.
Si un abonné ne confirme pas la réception du message d’alarme, ou si la connexion avec un abonné connu n’est pas bonne, le mécanisme de diffusion stocke les message d’alarme non reçus dans une mémoire tampon de 100 Ko. Chaque abonné a sa propre mémoire tampon, les problèmes de communication avec un abonné n’interfèrent donc pas avec la capacité de réception des alarmes des autres abonnés. Lorsque la mémoire tampon est pleine, les nouveaux messages d’alarme sont rejetés. La mémoire tampon est créée lorsque l’abonné établit sa connexion initiale et est maintenue pendant une durée configurable (0 à 120 minutes, 20 minutes par défaut) après la perte de sa connexion par un abonné.
Lorsque l’abonné rétablit une connexion dans l’intervalle de timeout de la mémoire tampon, il obtient l’état actuel de toutes les alarmes, il commence à recevoir les messages d’alarme actuels et transfert tous
Publication 1756-RM003K-FR-P – Juillet 2008 69
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
les messages présents dans la mémoire tampon. Même si la mémoire tampon était pleine, et que des messages ont été rejetés, les abonnés se synchronisent correctement avec l’état actuel des alarmes (notamment les horodatages InAlarmTime, RetToNormalTime et AckTime les plus récents).
La mémoire tampon continue jusqu’à être pleine. Une fois pleine, la mémoire tampon n’ajoute plus de transitions d’alarme jusqu’à ce que l’abonné libère de l’espace dans la mémoire tampon.
Accès aux informations d’alarme par le programme
Chaque instruction d’alarme possède une structure d’alarme qui stocke les informations de configuration et d’exécution de l’alarme. La structure d’alarme inclut les éléments de commande Programme et Opérateur et les éléments opérateur. Les instructions d’alarme n’utilisent pas les réglages du mode pour déterminer si l’accès programme ou l’accès opérateur est actif, ces éléments sont donc toujours actifs.
Il existe trois façons d’effectuer une action sur une instruction d’alarme.
Accès Eléments de structure d’alarme
Considérations
Programme utilisateur • ProgAck
• ProgReset
• ProgSuppress
• ProgDisable
• ProgEnable
Utilisez le programme de l’automate pour accéder aux éléments du système d’alarme par le programme. Par exemple, le programme de commande peut déterminer s’il doit désactiver une série d’alarmes liées à une seule cause. Par exemple, le programme de commande peut désactiver une instruction d’alarme, MyDigitalAlarm de type ALARM_DIGITAL, en accédant au point MyDigitalAlarm.ProgDisable.
IHM personnalisée • OperAck
• OperReset
• OperSuppress
• OperDisable
• OperEnable
Créez un écran IHM personnalisé pour accéder aux éléments du système d’alarme. Par exemple, si l’opérateur a besoin de retirer un outil, plutôt que de désactiver ou supprimer manuellement des alarmes individuelles des écrans d’alarmes, l’opérateur peut appuyer sur une touche de désactivation qui permet d’accéder à un point MyDigitalAlarm.OperDisable.
Les paramètres opérateur fonctionnent avec n’importe quelle interface opérateur Rockwell Automation ou d’un autre fournisseur pour autoriser la commande des états d’alarme.
Lorsqu’un paramètre opérateur est activé, l’instruction évalue si elle peut répondre à la requête, puis réinitialise toujours le paramètre.
Objet IHM standard Non accessible L’interaction normale de l’opérateur se fait via les objets sommaire des alarmes, bannière d’alarme et explorateur d’état d’alarme dans l’application FactoryTalk View. Cette interaction est similaire à l’option d’IHM personnalisée décrite plus haut, mais il n’y a pas de visibilité ou d’interaction programmatique.
70 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Lorsque vous créez une instruction d’alarme, vous devez créer et attribuer un point du type de données d’alarme correct pour l’alarme. Par exemple, créez MonAlarmeTOR de type ALARM_DIGITAL. En logique à relais, ces paramètres d’instruction doivent être entrés sur l’instruction :
• ProgAck
• ProgReset
• ProgDisable
• ProgEnable
En logique à relais ou texte structuré, la valeur ou le point que vous attribuez à un paramètre d’instruction (comme ProgAck) est écrit automatiquement dans le membre de point d’alarme (comme MyAnalogAlarm.ProgAck) chaque fois que l’instruction est scrutée.
En logique à relais et en texte structuré, si vous voulez accéder par le programme à la structure d’alarme, attribuez le point de structure au paramètre dans l’instruction. Par exemple, pour utiliser MyAnalogAlarm.ProgAck dans le programme, attribuez le point MyAnalogAlarm.ProgAck au paramètre ProgAck.
Publication 1756-RM003K-FR-P – Juillet 2008 71
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Suppression ou désactivation d’alarmes
Supprimez les alarmes pour éliminer les alarmes que vous savez exister de l’IHM mais en les gardant actives. Ceci vous permet d’effacer le sommaire des alarmes tout en résolvant une alarme connue sans continuer à visualiser les informations des alarmes. Une alarme supprimée n’apparaît pas dans le sommaire opérateur ou dans les écrans des bannières, mais une alarme supprimée est tout de même envoyée aux abonnées, enregistrée dans la base de données d’historique, capable de basculer l’état d’une alarme, reçoit un horodatage et peut réagir à d’autres interactions programmatiques ou de l’opérateur.
• Lorsqu’une alarme est Supprimée, elle continue de fonctionner normalement, elle surveille le paramètre In des conditions d’alarme et répond aux requêtes d’acquittement. Tous les abonnés sont avertis de cet événement, et tout message d’alarme généré lorsque l’alarme est supprimée inclut l’état Supprimé. Les clients d’alarme peuvent répondre différemment aux alarmes supprimées. Par exemple, les alarmes supprimées peuvent être enregistrées dans la base de données d’historique mais non annoncée à l’opérateur.
• Lorsqu’une alarme est Non Supprimée, tous les abonnées sont avertis et les messages d’alarme destinés aux abonnés n’incluent plus l’état Supprimé.
Désactivez une alarme pour faire comme si elle n’existait pas dans le programme de commande. Une alarme désactivée ne bascule pas l’état d’alarme ou n’est pas enregistrée dans la base de données d’historique. Une alarme désactivée est tout de même suivie et peut être réactivée dans la fenêtre Alarm Status Explorer du logiciel FactoryTalk View SE.
• Lorsqu’une alarme est Désactivée, toutes ses conditions sont paramétrées à l’état initial (InAlarm est effacé et Acked est activé). Le paramètre In n’est pas surveillé pour détecter les conditions d’alarme. Tous les abonnés sont avertis de cet événement.
• Lorsqu’une alarme est Activée, elle surveille le paramètre In pour détecter les conditions d’alarme. Tous les abonnés sont avertis de cet événement.
72 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
Exécution d’alarme d’automate
Les alarmes d’automate traitent les entrées à partir de deux sources.
Il faut faire attention lorsque vous choisissez l’emplacement pour les instructions d’alarme dans l’application. La précision de l’horodatage dépend de la rapidité avec laquelle l’instruction est scrutée après le changement d’état de la condition d’alarme. Le cumul de temps de MinDuration et les calculs de fréquence de changement requièrent des scrutations répétées, avec des intervalles de temps définis par l’application utilisateur. La scrutation des instructions d’alarme doit continuer lorsque la condition d’alarme devient fausse, de façon à ce que la transition ReturnToNormal puisse être détectée. Par exemple, si vous voulez une précision de 10 ms pour l’horodatage, vous pouvez placer les instructions d’alarme qui ont besoin de cette résolution dans une tâche périodique de 10 ms.
Source Description
Membres de point d’alarme Les membres de point d’alarme sont, pour la plupart, traités lorsque l’application utilisateur scrute l’instruction d’alarme. Ceci inclut :
• traiter les modifications des paramètres de configuration ;
• évaluer la condition d’alarme ;
• mesurer le temps écoulé pour MinDuration ;
• saisir les horodatages InAlarmTime et RetToNormalTime ;
• saisir les valeurs de point associées ;
• traiter les commandes Prog et Oper.
De plus, ces membres de l’état de point d’alarme sont actualisés lorsque les messages d’alarme sont reçus par chaque abonné, de façon asynchrone par rapport à la scrutation du programme :
• DeliveryEN, DeliveryER, DeliveryDN ;
• NoSubscriber, NoConnection, CommError, AlarmBuffered, SubscNotified.
Messages client Les messages client sont traités à mesure qu’ils sont reçus, de façon asynchrone par rapport à la scrutation du programme.
• Commandes Réinitialiser, Acquitter, Désactiver/Activer et Supprimer/Non Supprimer à partir d’un terminal RSLogix 5000.
• Commandes Réinitialiser, Acquitter, Désactiver/Activer et Supprimer/Non Supprimer à partir d’un abonné d’alarme FactoryTalk View SE.
Publication 1756-RM003K-FR-P – Juillet 2008 73
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Utilisation de la mémoire automate
Il est recommandé d’utiliser les tailles d’alarme suivantes pour un calcul approximatif de la mémoire automate utilisée :
• Généralement 1 Ko par alarme TOR sans point associé.
Exemple d’alarme TOR Taille approximative
Alarme TOR sans point associé et cette configuration :
• Message d’alarme : Défaut contacteur (Contactor Fault)
• Classe d’alarme : Groupe réservoir A (Tank Farm A)
1 012 octets
Alarme TOR avec deux points associés et cette configuration :
• Message d’alarme : Défaut contacteur (Contactor Fault)
• Classe d’alarme : Groupe réservoir A (Tank Farm A)
• Point associé 1 = type de données DINT
• Point associé 2 = type de données DINT
1 100 octets
Alarme TOR avec deux points associés et cette configuration :
• Message d’alarme : Défaut contacteur (Contactor Fault)
• Classe d’alarme : Groupe réservoir A (Tank Farm A)
• Point associé 1 = type de données DINT
• Point associé 2 = type de données STRING
1 522 octets
74 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA) Chapitre 1
• Généralement 2,2 Ko par alarme analogique sans point associé.
Les chaînes de message plus longues, ainsi que les chaînes de message plurilingues, consomme plus de mémoire automate.
L’utilisation réelle de la mémoire dépend de la configuration de l’alarme, de la longueur du message et des points associés à l’alarme.
Exemple d’alarme analogique Taille approximative
Alarme analogique sans point associé et cette configuration :
• Message d’alarme HH : Alarme de seuil
• Message d’alarme H : Alarme de seuil
• Message d’alarme L : Alarme de seuil
• Message d’alarme LL : Alarme de seuil
• Message de vitesse de variation positive : Remplir trop vite
• Message de vitesse de variation négative : Vider trop vite
• Classe d’alarme : Groupe réservoir A
2 228 octets
Alarme analogique avec deux points associés et cette configuration :
• Message d’alarme HH : Alarme de seuil
• Message d’alarme H : Alarme de seuil
• Message d’alarme L : Alarme de seuil
• Message d’alarme LL : Alarme de seuil
• Message de vitesse de variation positive : Remplir trop vite
• Message de vitesse de variation négative : Vider trop vite
• Classe d’alarme : Groupe réservoir A
• Point associé 1 = type de données DINT
• Point associé 2 = type de données DINT
2 604 octets
Alarme analogique avec deux points associés et cette configuration :
• Message d’alarme HH : Alarme de seuil
• Message d’alarme H : Alarme de seuil
• Message d’alarme L : Alarme de seuil
• Message d’alarme LL : Alarme de seuil
• Message de vitesse de variation positive : Remplir trop vite
• Message de vitesse de variation négative : Vider trop vite
• Classe d’alarme : Groupe réservoir A
• Point associé 1 = type de données DINT
• Point associé 2 = type de données STRING
4 536 octets
Publication 1756-RM003K-FR-P – Juillet 2008 75
Chapitre 1 Instructions Logix d’alarmes et d’événements FactoryTalk (ALMD, ALMA)
Temps de scrutation
Les temps d’exécution suivants montrent comment les instructions ALMD et ALMA affectent la durée totale de scrutation.
Un changement d’état d’alarme est tout événement qui modifie la condition de l’alarme ; par exemple, acquitter ou supprimer l’alarme. Minimisez la possibilité d’un grand nombre d’alarmes changeant d’état simultanément (rafales d’alarmes) en créant des dépendances sur les alarmes associées. Les rafales d’alarmes importantes peuvent avoir un impact significatif sur le temps de scrutation du code de l’application.
Etat de la ligne Temps d’exécution
Alarme TOR (ALMD)
Alarme analogique (ALMA)
Pas de changement d’état d’alarme
Ligne fausse
8 μs 17 μs
Ligne vraie 8 μs 60 μs
Changement d’état d’alarme
Ligne fausse
35 μs 17 μs
Ligne vraie 35 μs 126 μs
76 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 2
Instructions sur bit(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Introduction Utilisez les instructions sur bit (type à relais) pour surveiller et commander l’état des bits.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
activer les sorties lorsqu’un bit est activé XIC Logique à relais
Texte structuré(1)
78
activer les sorties lorsqu’un bit est désactivé XIO Logique à relais
Texte structuré(1)
80
activer un bit OTE Logique à relais
Texte structuré(1)
82
activer un bit (rémanent) OTL Logique à relais
Texte structuré(1)
84
désactiver un bit (rémanent) OTU Logique à relais
Texte structuré(1)
86
activer les sorties pendant une scrutation à chaque fois qu’une ligne devient vraie
ONS Logique à relais
Texte structuré(1)
88
activer un bit pendant une scrutation à chaque fois qu’une ligne devient vraie
OSR Logique à relais 91
activer un bit pendant une scrutation à chaque fois que la ligne devient fausse
OSF Logique à relais 94
activer un bit pendant une scrutation à chaque fois que le bit d’entrée est activé dans le bloc fonctionnel
OSRI Texte structuréBloc fonctionnel
96
activer un bit pendant une scrutation à chaque fois que le bit d’entrée est désactivé dans le bloc fonctionnel
OSFI Texte structuréBloc fonctionnel
99
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l’instruction.
77Publication 1756-RM003K-FR-P – Juillet 2008 77
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examiner si fermé (XIC) L’instruction XIC examine le bit de données pour voir s’il est activé.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction XIC, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF data_bit THEN
<déclaration>;
END_IF;
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : L’instruction XIC examine le bit de données pour voir s’il est activé.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données BOOL point bit à tester
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit de données
bit de données = 0
bit de données = 1
l’état de sortie de la ligne est faux
l’état de sortie de la ligne est vrai
l’état d’entrée de la ligne est vrai
fin
78 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple 1 : Si limit_switch_1 est activé, l’instruction suivante est activée (l’état de sortie de la ligne est vrai).
Logique à relais
Texte structuré
IF limit_switch THEN
<déclaration>;
END_IF;
Exemple 2 : Si S:V est activé (indique qu’un dépassement de capacité s’est produit), l’instruction suivante est activée (l’état de sortie de la ligne est vrai).
Logique à relais
Texte structuré
IF S:V THEN
<déclaration>;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 79
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examiner si ouvert (XIO) L’instruction XIO examine le bit de données pour voir s’il est désactivé.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction XIO, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF NOT data_bit THEN
<déclaration>;
END_IF;
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : L’instruction XIO examine le bit de données pour voir s’il est désactivé.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données BOOL point bit à tester
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit de données
bit de données = 0
bit de données = 1
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
l’état d’entrée de la ligne est vrai
fin
80 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple 1 : Si limit_switch_2 est désactivé, l’instruction suivante est activée (l’état de sortie de la ligne est vrai).
Logique à relais
Texte structuré
IF NOT limit_switch_2 THEN
<déclaration>;
END_IF;
Exemple 2 : Si S:V est désactivé (indique qu’aucun dépassement de capacité ne s’est produit), l’instruction suivante est activée (l’état de sortie de la ligne est vrai).
Logique à relais
Texte structuré
IF NOT S:V THEN
<déclaration>;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 81
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Activation de sortie (OTE) L’instruction OTE active ou désactive le bit de données.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction OTE, mais vous pouvez obtenir le même résultat en utilisant une affectation non rémanente.
data_bit [:=] BOOL_expression;
Pour plus d’informations sur la syntaxe des affectations et des expressions du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : Lorsque l’instruction OTE est activée, l’automate active le bit de données. Lorsque l’instruction OTE est désactivée, l’automate désactive le bit de données.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données BOOL point bit à activer ou désactiver
Condition Action logique à relais
Pré-scrutation Le bit de données est désactivé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit de données est désactivé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Le bit de données est activé.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation Le bit de données est désactivé.
L’état de sortie de la ligne est réglé sur faux.
82 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple : Lorsque switch est activé, l’instruction OTE active (allume) light_1. Lorsque switch est désactivé, l’instruction OTE efface (éteint) light_1.
Logique à relais
Texte structuré
light_1 [:=] switch;
Publication 1756-RM003K-FR-P – Juillet 2008 83
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Verrouillage de sortie (OTL) L’instruction OTL active (verrouille) le bit de données.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction OTL, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF BOOL_expression THEN
data_bit := 1;
END_IF;
Pour plus d’informations sur la syntaxe des structures, expressions et affectations du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : Lorsqu’elle est activée, l’instruction OTL active le bit de données. Le bit de données reste activé jusqu’à ce qu’il soit désactivé, généralement par une instruction OTU. Lorsqu’elle est désactivée, l’instruction OTL ne change pas l’état du bit de données.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données BOOL point bit à activer
Condition Action logique à relais
Pré-scrutation Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Le bit de données est activé.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
84 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple : Lorsqu’elle est activée, l’instruction OTL active light_2. Le bit de données reste activé jusqu’à ce qu’il soit désactivé, généralement par une instruction OTU.
Logique à relais
Texte structuré
IF BOOL_expression THEN
light_2 := 1;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 85
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Déverrouillage de sortie (OTU)
L’instruction OTU désactive (déverrouille) le bit de données.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction OTU, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF BOOL_expression THEN
data_bit := 0;
END_IF;
Pour plus d’informations sur la syntaxe des structures, expressions et affectations du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : Lorsqu’elle est activée, l’instruction OTU désactive le bit de données. Lorsqu’elle est désactivée, l’instruction OTU ne change pas l’état du bit de données.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données BOOL point bit à désactiver
Condition Action logique à relais
Pré-scrutation Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Le bit de données est désactivé.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation Le bit de données n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
86 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple : Lorsqu’elle est activée, l’instruction OTU désactive light_2.
Logique à relais
Texte structuré
IF BOOL_expression THEN
light_2 := 0;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 87
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Impulsion (ONS) L’instruction ONS active ou désactive le reste de la ligne, selon l’état du bit de stockage.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction ONS, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF BOOL_expression AND NOT storage_bit THEN
<déclaration>;
END_IF;
storage_bit := BOOL_expression;
Pour plus d’informations sur la syntaxe des structures et expressions du texte structuré, voir Annexe 637B, Attributs de bloc fonctionnel.
Description : Lorsqu’elle est activée et que le bit de mémoire est désactivé, l’instruction ONS active le reste de la ligne. Lorsqu’elle est désactivée ou lorsque le bit de mémoire est activé, l’instruction ONS désactive le reste de la ligne.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
bit de mémoire BOOL point bit de mémoire interne
mémorise l’état d’entrée de la ligne à partir de la dernière exécution de l’instruction
88 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exécution :
Exemple : Vous devez généralement faire précéder l’instruction ONS d’une instruction d’entrée parce que vous scrutez l’instruction ONS lorsqu’elle est activée et lorsqu’elle est désactivée pour qu’elle fonctionne correctement. Une fois que l’instruction ONS est activée, l’état d’entrée de la ligne doit être désactivé ou le bit de mémoire doit être désactivé pour que l’instruction ONS soit activée à nouveau.
Condition Action logique à relais
Pré-scrutation Le bit de mémoire est activé pour empêcher un déclenchement incorrect pendant la première scrutation.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit de mémoire est désactivé.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation Le bit de mémoire est désactivé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
examiner le bit de mémoire
bit de mémoire = 0
bit de mémoire = 1
le bit de mémoire est activé
l’état de sortie de la ligne est vrai
le bit de mémoire reste activé
l’état de sortie de la ligne est faux
Publication 1756-RM003K-FR-P – Juillet 2008 89
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Lors de toute scrutation pour laquelle limit_switch_1 est désactivé ou storage_1 est activé, la ligne n’a aucun effet. Lors de toute scrutation pour laquelle limit_switch_1 est activé et storage_1 est désactivé, l’instruction ONS active storage_1 et l’instruction ADD augmente sum de 1. Tant que limit_switch_1 reste activé, sum garde la même valeur. limit_switch_1 doit à nouveau passer de désactivé à activé pour que sum augmente à nouveau.
Logique à relais
Texte structuré
IF limit_switch_1 AND NOT storage_1 THEN
sum := sum + 1;
END_IF;
storage_1 := limit_switch_1;
90 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Impulsion sur front montant (OSR)
L’instruction OSR active ou désactive le bit de sortie, selon l’état du bit de mémoire.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom OSRI, voir page 96.
Opérandes :
Logique à relais
Description : Lorsqu’elle est activée et que le bit de mémoire est désactivé, l’instruction OSR active le bit de sortie. Lorsqu’elle est activée et que le bit de mémoire est activé ou désactivé, l’instruction OSR désactive le bit de sortie.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de mémoire BOOL point bit de mémoire interne
mémorise l’état d’entrée de la ligne à partir de la dernière exécution de l’instruction
bit de sortie BOOL point bit à activer
état d’entrée de la ligne
bit de mémoire
bit de sortie
l’instruction estexécutée
l’instruction est réinitialisée au cours de la scrutation suivante
Publication 1756-RM003K-FR-P – Juillet 2008 91
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Condition Action logique à relais
Pré-scrutation Le bit de mémoire est activé pour empêcher un déclenchement incorrect pendant la première scrutation.
Le bit de sortie est désactivé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit de mémoire est désactivé.
Le bit de sortie n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation Le bit de mémoire est désactivé.
Le bit de sortie n’est pas modifié.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
examiner le bit de mémoire
bit de mémoire = 0
bit de mémoire = 1
le bit de mémoire est activé
le bit de sortie est activé l’état de sortie de la ligne est vrai
le bit de mémoire reste activé
le bit de sortie est désactivé l’état de sortie de la ligne est vrai
92 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple : Chaque fois que limit_switch_1 passe de désactivé à activé, l’instruction OSR active output_bit_1 et l’instruction ADD augmente sum de 5. Tant que limit_switch_1 reste activé, sum garde la même valeur. limit_switch_1 doit à nouveau passer de désactivé à activé pour que sum augmente à nouveau. Vous pouvez utiliser output_bit_1 sur plusieurs lignes pour déclencher d’autres opérations.
Publication 1756-RM003K-FR-P – Juillet 2008 93
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Impulsion sur front descendant (OSF)
L’instruction OSF active ou désactive le bit de sortie, selon l’état du bit de mémoire.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom OSFI, voir page 99.
Opérandes :
Opérandes de logique à relais
Description : Lorsqu’elle est désactivée et que le bit de mémoire est activé, l’instruction OSF active le bit de sortie. Lorsqu’elle est désactivée et que le bit de mémoire est désactivé ou activé, l’instruction OSF désactive le bit de sortie.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
bit de mémoire BOOL point bit de mémoire interne
mémorise l’état d’entrée de la ligne à partir de la dernière exécution de l’instruction
bit de sortie BOOL point bit à activer
état d’entrée dela ligne
bit de mémoire
bit de sortie
l’instruction estexécutée
l’instruction est réinitialisée au cours de la scrutation suivante
94 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exécution :
Exemple : Chaque fois que limit_switch_1 passe d’activé à désactivé, l’instruction OSF active output_bit_2 et l’instruction ADD augmente sum de 5. Tant que limit_switch_1 reste désactivé, sum garde la même valeur. limit_switch_1 doit à nouveau passer d’activé à désactivé pour que sum augmente à nouveau. Vous pouvez utiliser output_bit_2 sur plusieurs lignes pour déclencher d’autres opérations.
Condition Action logique à relais
Pré-scrutation Le bit de mémoire est désactivé pour empêcher un déclenchement incorrect pendant la première scrutation.
Le bit de sortie est désactivé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Le bit de mémoire est activé.
Le bit de sortie est désactivé.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation Voir ci-dessus le cas où l’état d’entrée de la ligne est faux.
L’état d’entrée de la ligne est faux
fin
examiner le bit de mémoire
bit de mémoire = 0
bit de mémoire = 1
le bit de mémoire reste désactivé
le bit de sortie est désactivé l’état de sortie de la ligne est faux
le bit de mémoire est désactivé
le bit de sortie est activé l’état de sortie de la ligne est faux
Publication 1756-RM003K-FR-P – Juillet 2008 95
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Impulsion sur front montant avec entrée (OSRI)
L’instruction OSRI active le bit de sortie pour l’exécution d’un cycle lorsque le bit d’entrée bascule de désactivé à activé.
Cette instruction est disponible en logique à relais sous le nom OSR, voir page 91.
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_ONESHOT
Opérande Type Format Description
point OSRI FBD_ONESHOT structure structure OSRI
Opérande Type Format Description
point OSRI FBD_ONESHOT structure structure OSRI
OSRI (OSRI_tag);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
InputBit BOOL Bit d’entrée. Ceci est équivalent à l’état de la ligne pour l’instruction logique à relais OSR.
Réglage par défaut désactivé.
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
OutputBit BOOL Bit de sortie
96 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Description : Lorsque InputBit est activé et InputBitn–1 est désactivé, l’instruction
OSRI active OutputBit. Lorsque InputBitn–1 est activé ou lorsque
InputBit est désactivé, l’instruction OSRI désactive OutputBit.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
InputBit
OutputBit
40048l’instruction est
exécutéel’instruction est réinitialisée au cours de la scrutation suivante
InputBitn–1
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
InputBitn–1 est activé. InputBitn–1 est activé.
Première exécution de l’instruction
InputBitn–1 est activé. InputBitn–1 est activé.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé Lors d’une transition de désactivé à activé de InputBit, l’instruction active InputBitn–1.
L’instruction est exécutée.
EnableOut est activé.
Lors d’une transition de désactivé à activé de InputBit, l’instruction active InputBitn–1.
EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation Aucune. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 97
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Exemple : Lorsque limit_switch1 passe de désactivé à activé, l’instruction OSRI active OutputBit pendant une scrutation.
Texte structuré
OSRI_01.InputBit := limit_switch1;
OSRI(OSRI_01);
State := OSRI_01.OutputBit;
Bloc fonctionnel
98 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Impulsion sur front descendant avec entrée (OSFI)
L’instruction OSFI active le bit OutputBit pour l’exécution d’un cycle lorsque le bit InputBit bascule d’activé à désactivé.
Cette instruction est disponible en logique à relais sous le nom OSF, voir page 94.
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_ONESHOT
Opérande Type Format Description
point OSFI FBD_ONESHOT structure structure OSFI
Opérande Type Format Description
point OSFI FBD_ONESHOT structure structure OSFI
OSFI (OSFI_tag);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
InputBit BOOL Bit d’entrée. Ceci est équivalent à l’état de la ligne pour l’instruction logique à relais OSF.
Réglage par défaut désactivé.
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
OutputBit BOOL Bit de sortie
Publication 1756-RM003K-FR-P – Juillet 2008 99
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Description : Lorsque InputBit est désactivé et InputBitn–1 est activé, l’instruction
OSFI active OutputBit. Lorsque InputBitn–1 est désactivé ou lorsque
InputBit est activé, l’instruction OSFI désactive OutputBit.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
InputBit
OutputBit
l’instruction estexécutée
l’instruction est réinitialisée au cours de la scrutation suivante
InputBitn–1
40047
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
InputBitn–1 est désactivé. InputBitn–1 est désactivé.
Première exécution de l’instruction
InputBitn–1 est désactivé. InputBitn–1 est désactivé.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé Lors d’une transition de désactivé à activé de InputBit, l’instruction désactive InputBitn–1.
L’instruction est exécutée.
EnableOut est activé.
Lors d’une transition de désactivé à activé de InputBit, l’instruction désactive InputBitn–1.
EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation Aucune. Aucune.
100 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Chapitre 2
Exemple : Lorsque limit_switch1 passe d’activé à désactivé, l’instruction OSFI active OutputBit pendant une scrutation.
Texte structuré
OSFI_01.InputBit := limit_switch1;
OSFI(OSFI_01);
Output_state := OSFI_01.OutputBit;
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 101
Chapitre 2 Instructions sur bit (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Notes :
102 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 3
Instructions de temporisation et de comptage(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introduction Les temporisateurs et les compteurs commandent les opérations sur la base du temps ou du nombre d’événements.
La base de temps pour tous les temporisateurs est de 1 ms.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
mesurer la durée pendant laquelle un temporisateur est activé
TON Logique à relais 104
mesurer la durée pendant laquelle un temporisateur est désactivé
TOF Logique à relais 108
cumuler le temps RTO Logique à relais 112
mesurer la durée pendant laquelle un temporisateur est activé avec réinitialisation intégrée en bloc fonctionnel
TONR Texte structuré
Bloc fonctionnel
116
mesurer la durée pendant laquelle un temporisateur est désactivé avec réinitialisation intégrée en bloc fonctionnel
TOFR Texte structuré
Bloc fonctionnel
120
cumuler le temps avec réinitialisation intégrée en bloc fonctionnel
RTOR Texte structuré
Bloc fonctionnel
124
comptage progressif CTU Logique à relais 128
comptage dégressif CTD Logique à relais 132
comptage progressif et dégressif en bloc fonctionnel
CTUD Texte structuré
Bloc fonctionnel
136
réinitialiser un temporisateur ou un compteur RES Logique à relais 140
103Publication 1756-RM003K-FR-P – Juillet 2008 103
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur à l’enclenchement (TON)
L’instruction TON est un temporisateur non rémanent qui cumule le temps pendant lequel l’instruction est activée (l’état d’entrée de la ligne est vrai).
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom TONR, voir page 116.
Opérandes :
Logique à relais
Structure temporisateur
Description : L’instruction TON accumule le temps jusqu’à ce que :
• l’instruction TON soit désactivée ;
• .ACC ≥ .PRE.
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Opérande Type Format Description
temporisateur TIMER point structure temporisateur
présélection DINT immédiat durée du retard (cumul du temps)
accumulateur DINT immédiat nombre total de ms comptées par le temporisateur
la valeur initiale est typiquement 0
Mnémonique Type de données Description
.EN BOOL Le bit d’activation indique que l’instruction TON est activée.
.TT BOOL Le bit de temporisation indique que l’opération de temporisation est en cours.
.DN BOOL Le bit de fin est activé lorsque .ACC ≥ .PRE.
.PRE DINT La valeur présélectionnée définit la valeur (en unités de 1 ms) que la valeur accumulée doit atteindre avant que l’instruction active le bit .DN.
.ACC DINT La valeur accumulée définit le nombre de ms écoulé depuis l’activation de l’instruction TON.
104 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Lorsque l’instruction TON est désactivée, la valeur .ACC est effacée.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
état d’entrée de la ligne
bit d’activation du temporisateur (.EN)
bit de fin de temporisation (.EN)
valeur accumulée du temporisateur (.ACC)
bit de temporisation en cours (.EN)
présélection
0 16649
le temporisateur n’a pas atteint la valeur .PRE
Délai ON
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Un défaut majeur se produit si Type de défaut Code de défaut
.PRE < 0 4 34
.ACC < 0 4 34
Publication 1756-RM003K-FR-P – Juillet 2008 105
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exécution :
Condition Action logique à relais
Pré-scrutation Les bits .EN, .TT et .DN sont remis à zéro.
La valeur .ACC est remise à zéro.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Les bits .EN, .TT et .DN sont remis à zéro.
La valeur .ACC est remise à zéro.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DNbit .DN = 1
bit .DN = 0
le bit .EN est activéle bit .TT est activélast_time = current_time
L’état d’entrée de la ligne est vrai
examiner .ACC .ACC ≥ .PRE
.ACC < .PRE
le bit .TT est activé.ACC = .ACC + (current_time – last_time)last_time = current_time
la valeur .ACC revient à sa
valeur de départ
non
oui
.ACC = 2 147 483 647
examiner le bit .ENbit .EN = 0
bit .EN = 1
l’état de sortie de la ligne est vrai
fin
.DN est activéle bit .TT est désactivéle bit .EN est activé
106 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Lorsque limit_switch_1 est activé, light_2 est allumé pendant 180 ms (timer_1 compte le temps). Lorsque timer_1.acc atteint 180, light_2 s’éteint et light_3 s’allume. Light_3 reste allumé jusqu’à ce que l’instruction TON soit désactivée. Si limit_switch_1 est désactivé lorsque timer_1 compte le temps, light_2 s’éteint.
Publication 1756-RM003K-FR-P – Juillet 2008 107
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur au déclenchement (TOF)
L’instruction TOF est un temporisateur non rémanent qui accumule le temps lorsque l’instruction est activée (l’état d’entrée de la ligne est faux).
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom TOFR, voir page 120.
Opérandes :
Logique à relais
Structure temporisateur
Description : L’instruction TOF accumule le temps jusqu’à ce que :
• l’instruction TOF soit désactivée ;
• .ACC ≥ .PRE.
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Opérande Type Format Description
temporisateur TIMER point structure temporisateur
présélection DINT immédiat durée du retard (cumul du temps)
accumulateur DINT immédiat nombre total de ms comptées par le temporisateur
la valeur initiale est typiquement 0
Mnémonique Type de données Description
.EN BOOL Le bit d’activation indique que l’instruction TOF est activée.
.TT BOOL Le bit de temporisation indique que l’opération de temporisation est en cours.
.DN BOOL Le bit de fin est désactivé lorsque .ACC ≥ .PRE.
.PRE DINT La valeur présélectionnée définit la valeur (en unités de 1 ms) que la valeur accumulée doit atteindre avant que l’instruction désactive le bit .DN.
.ACC DINT La valeur accumulée définit le nombre de ms écoulé depuis l’activation de l’instruction TOF.
108 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Lorsque l’instruction TOF est désactivée, la valeur .ACC est remise à zéro.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
état d’entrée de la ligne
bit d’activation du temporisateur (.EN)
bit de fin de temporisation (.EN)
valeur accumulée du temporisateur (.ACC)
bit de temporisation en cours (.EN)
0 16650
le temporisateur n’a pas atteint la valeur .PRE
présélection
temporisation au
déclenchem.
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Un défaut majeur se produit si Type de défaut Code de défaut
.PRE < 0 4 34
.ACC < 0 4 34
Publication 1756-RM003K-FR-P – Juillet 2008 109
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Condition Action logique à relais
Pré-scrutation Les bits .EN, .TT et .DN sont remis à zéro.
La valeur .ACC est activée de sorte à être égale à la valeur .PRE.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Les bits .EN, .TT et .DN sont activés.
La valeur .ACC est remise à zéro.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DNbit .DN = 0
bit .DN = 1
le bit .EN est désactivéle bit .TT est activélast_time = current_time
L’état d’entrée de la ligne est faux
examiner .ACC.ACC ≥ .PRE
.ACC < .PRE
le bit .TT est activé.ACC = .ACC + (current_time – last_time)last_time = current_time
la valeur .ACC revient à sa
valeur de départ
non
oui
.ACC = 2 147 483 647
examiner le bit .ENbit .EN = 1
bit .EN = 0
l’état de sortie de la ligne est faux
fin
.DN est désactivéle bit .TT est désactivéle bit .EN est désactivé
110 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Lorsque limit_switch_2 est désactivé, light_2 est allumé pendant 180 ms (timer_2 compte le temps). Lorsque timer_2.acc atteint 180, light_2 s’éteint et light_3 s’allume. Light_3 reste allumé jusqu’à ce que l’instruction TOF soit activée. Si limit_switch_2 est activé lorsque timer_2 compte le temps, light_2 s’éteint.
Publication 1756-RM003K-FR-P – Juillet 2008 111
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur rémanent (RTO)
L’instruction RTO est un temporisateur rémanent qui accumule le temps lorsque l’instruction est activée.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom RTOR, voir page 124.
Opérandes :
Logique à relais
Structure temporisateur
Description : L’instruction RTO accumule le temps jusqu’à ce qu’elle soit désactivée. Lorsque l’instruction RTO est désactivée, elle garde sa valeur .ACC. Vous devez effacer la valeur .ACC, généralement avec une instruction RES qui renvoie à la même structure TIMER.
Opérande Type Format Description
temporisateur TIMER point structure temporisateur
présélection DINT immédiat durée du retard (cumul du temps)
accumulateur DINT immédiat nombre de ms compté par le temporisateur
la valeur initiale est typiquement 0
Mnémonique Type de données Description
.EN BOOL Le bit d’activation indique que l’instruction RTO est activée.
.TT BOOL Le bit de temporisation indique que l’opération de temporisation est en cours.
.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.
.PRE DINT La valeur présélectionnée définit la valeur (en unités de 1 ms) que la valeur accumulée doit atteindre avant que l’instruction active le bit .DN.
.ACC DINT La valeur accumulée définit le nombre de ms écoulé depuis l’activation de l’instruction RTO.
112 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
état d’entrée de la ligne
bit d’activation du temporisateur (.EN)
bit de fin de temporisation (.EN)
valeur accumulée du temporisateur (.ACC)
bit de temporisation en cours (.EN)
présélection
0
16651
état de ligne qui commande l’instruction RES
le temporisateur n’a pas atteint la valeur .PRE
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Un défaut majeur se produit si Type de défaut Code de défaut
.PRE < 0 4 34
.ACC < 0 4 34
Publication 1756-RM003K-FR-P – Juillet 2008 113
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exécution :
Condition Action logique à relais
Pré-scrutation Les bits .EN, .TT et .DN sont remis à zéro.
La valeur .ACC n’est pas modifiée.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Les bits .EN, .TT et .DN sont désactivés.
Le bit .DN n’est pas modifié.
La valeur .ACC n’est pas modifiée.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DNbit .DN = 1
bit .DN = 0
le bit .EN est activéle bit .TT est activélast_time = current_time
L’état d’entrée de la ligne est vrai
examiner .ACC.ACC ≥ .PRE
.ACC < .PRE
le bit .TT est activé.ACC = .ACC + (current_time – last_time)last_time = current_time
la valeur .ACC revient à
sa valeur de départ
non
oui
.ACC = 2 147 483 647
examiner le bit .ENbit .EN = 0
bit .EN = 1
l’état de sortie de la ligne est vrai
fin
.DN est activéle bit .TT est désactivéle bit .EN est activé
114 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Lorsque limit_switch_1 est activé, light_1 est allumé pendant 180 ms (timer_2 compte le temps). Lorsque timer_3.acc atteint 180, light_1 s’éteint et light_2 s’allume. Light_2 reste allumé jusqu’à ce que timer_3 soit réinitialisé. Si limit_switch_2 est désactivé lorsque timer_3 compte le temps, light_1 reste allumé. Lorsque limit_switch_2 est activé, l’instruction RES réinitialise timer_3 (remet à zéro le bit d’état et la valeur .ACC).
Publication 1756-RM003K-FR-P – Juillet 2008 115
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur à l’enclenchement avec RAZ (TONR)
L’instruction TONR est un temporisateur non rémanent qui additionne le temps lorsque TimerEnable est activé.
Cette instruction est disponible en logique à relais sous la forme de deux instructions : TON (voir page 104) et RES (voir page 140).
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_TIMER
Variable Type Format Description
point TONR FBD_TIMER structure structure TONR
Opérande Type Format Description
point TONR FBD_TIMER structure structure TONR
TONR(TONR_tag);
Paramètre d’entrée Type de données Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
TimerEnable BOOL Lorsqu’activé, active l’exécution du temporisateur qui accumule le temps.
Réglage par défaut désactivé.
PRE DINT Valeur présélectionnée du temporisateur. C’est la valeur en unités de 1 ms que ACC doit atteindre avant que le cumul du temps ne s’arrête. Si la valeur est incorrecte, l’instruction active le bit approprié dans l’état (Status) et le temporisateur n’est pas exécuté.
Valable = 0 jusqu’au nombre entier positif maximum.
RAZ BOOL Requête de réinitialisation du temporisateur. Lorsqu’activé, le temporisateur est réinitialisé.
Réglage par défaut désactivé.
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
ACC DINT Durée accumulée en millisecondes.
EN BOOL Sortie d’activation de temporisateur. Indique que l’instruction de temporisation est activée.
TT BOOL Sortie de temporisation en cours. Lorsqu’activé, une opération de temporisation est en cours.
DN BOOL Sortie de fin de temporisation. Indique quand la durée accumulée est supérieure ou égale à la valeur présélectionnée.
116 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : L’instruction TONR additionne le temps jusqu’à ce que :
• l’instruction TONR soit désactivée ;
• ACC ≥ PRE.
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Activez le paramètre d’entrée de réinitialisation pour réinitialiser l’instruction. Si TimerEnable est activé lorsque Reset est activé, l’instruction TONR recommence à additionner le temps lorsque Reset est désactivé.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
Status DINT Etat du bloc fonctionnel.
InstructFault (Status.0) BOOL L’instruction a détecté l’une des erreurs d’exécution suivantes. Ceci n’est pas une erreur mineure ou majeure de l’automate. Vérifiez les autres bits d’état pour déterminer ce qui s’est produit.
PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.
Paramètre d’entrée Type de données Description
TimerEnable
bit de validation (EN)
bit de fin de temporisation (DN)
valeur accumulée du temporisateur (.ACC)
bit de temporisation en cours (TT)
présélection
0
16649
Délai ON
le temporisateur n’a pas atteint la valeur PRE
Publication 1756-RM003K-FR-P – Juillet 2008 117
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC est remise à 0.
EN, TT et DN sont remis à zéro.
La valeur ACC est remise à 0.
Première exécution de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC est remise à 0.
EN, TT et DN sont remis à zéro.
La valeur ACC est remise à 0.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé Lorsque EnableIn passe de désactivé à activé, l’instruction est initialisée comme décrit pour la première exécution de l’instruction.
L’instruction est exécutée.
EnableOut est activé.
EnableIn est toujours activé.
L’instruction est exécutée.
RAZ Lorsque le paramètre d’entrée de réinitialisation est activé, l’instruction désactive EN, TT et DN et active ACC = zéro.
Lorsque le paramètre d’entrée de réinitialisation est activé, l’instruction désactive EN, TT et DN et active ACC = zéro.
Post-scrutation Aucune. Aucune.
118 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Pour chaque scrutation avec limit_switch1 activé, l’instruction TONR augmente la valeur ACC de la valeur du temps écoulé jusqu’à ce que la valeur ACC atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est activé et timer_state est activé.
Texte structuré
TONR_01.Preset := 500;
TONR_01.Reset : = reset;
TONR_O1.TimerEnable := limit_switch1;
TONR(TONR_01);
timer_state := TONR_01.DN;
Exemple de bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 119
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur au déclenchement avec RAZ (TOFR)
L’instruction TOFR est un temporisateur non rémanent qui additionne le temps lorsque TimerEnable est désactivé.
Cette instruction est disponible en logique à relais sous la forme de deux instructions : TOF (voir page 108) et RES (voir page 140).
Opérandes :
Texte structuré
Opérandes de bloc fonctionnel
Structure FBD_TIMER
Variable Type Format Description
point TOFR FBD_TIMER structure structure TOFR
Opérande Type Format Description
point TOFR FBD_TIMER structure structure TOFR
TOFR(TOFR_tag);
Paramètre d’entrée Type de données Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
TimerEnable BOOL Lorsque désactivé, active l’exécution du temporisateur qui accumule le temps.
Réglage par défaut désactivé.
PRE DINT Valeur présélectionnée du temporisateur. C’est la valeur en unités de 1 ms que ACC doit atteindre avant que le cumul du temps ne s’arrête. Si la valeur est incorrecte, l’instruction active le bit approprié dans l’état (Status) et le temporisateur n’est pas exécuté.
Valable = 0 jusqu’au nombre entier positif maximum.
RAZ BOOL Requête de réinitialisation du temporisateur. Lorsqu’activé, le temporisateur est réinitialisé.
Réglage par défaut désactivé.
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
ACC DINT Durée accumulée en millisecondes.
EN BOOL Sortie d’activation de temporisateur. Indique que l’instruction de temporisation est activée.
TT BOOL Sortie de temporisation en cours. Lorsqu’activé, une opération de temporisation est en cours.
120 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : L’instruction TOFR accumule le temps jusqu’à ce que :
• l’instruction TOFR soit désactivée ;
• ACC ≥ PRE.
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Activez le paramètre d’entrée de réinitialisation pour réinitialiser l’instruction. Si TimerEnable est désactivé lorsque Reset est activé, l’instruction TOFR ne recommence pas à additionner le temps lorsque Reset est désactivé.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
DN BOOL Sortie de fin de temporisation. Indique quand la durée accumulée est supérieure ou égale à la valeur présélectionnée.
Status DINT Etat du bloc fonctionnel.
InstructFault (Status.0) BOOL L’instruction a détecté l’une des erreurs d’exécution. Ceci n’est pas une erreur mineure ou majeure de l’automate. Vérifiez les autres bits d’état pour déterminer ce qui s’est produit.
PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.
Paramètre d’entrée Type de données Description
TimerEnable
bit de validation (EN)
bit de fin de temporisation (DN)
valeur accumulée du temporisateur
bit de temporisation en cours (TT)
0
temporisation au
déclenchem.
16650
le temporisateur n’a pas atteint la valeur PRE
présélection
Publication 1756-RM003K-FR-P – Juillet 2008 121
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Pour chaque scrutation après la désactivation de limit_switch1, l’instruction TOFR augmente la valeur ACC de la valeur du temps écoulé jusqu’à ce que la valeur ACC atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est remis à zéro et timer_state2 est activé.
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC est réglée à la valeur PRE.
EN, TT et DN sont remis à zéro.
La valeur ACC est réglée à la valeur PRE.
Première exécution de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC est réglée à la valeur PRE.
EN, TT et DN sont remis à zéro.
La valeur ACC est réglée à la valeur PRE.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé Lorsque EnableIn passe de désactivé à activé, l’instruction est initialisée comme décrit pour la première exécution de l’instruction.
L’instruction est exécutée.
EnableOut est activé.
EnableIn est toujours activé.
L’instruction est exécutée.
RAZ Lorsque le paramètre d’entrée de réinitialisationest activé, l’instruction met à zéro EN, TT et DN et active ACC = PRE. Remarquez que ceci est différent de l’utilisation de l’instruction RES sur une instruction TOF.
Lorsque le paramètre d’entrée de réinitialisation est activé, l’instruction met à zéro EN, TT et DN et active ACC = PRE. Remarquez que ceci est différent de l’utilisation de l’instruction RES sur une instruction TOF.
Post-scrutation Aucune. Aucune.
122 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Texte structuré
TOFR_01.Preset := 500
TOFR_01.Reset := reset;
TOFR_O1.TimerEnable := limit_switch1;
TOFR(TOFR_01);
timer_state2 := TOFR_01.DN;
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 123
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporisateur rémanent avec RAZ (RTOR)
L’instruction RTOR est un temporisateur rémanent qui accumule le temps lorsque TimerEnable est activé.
Cette instruction est disponible en logique à relais sous la forme de deux instructions : RTO (voir page 112) et RES (voir page 140).
Opérandes :
Texte structuré
Opérandes de bloc fonctionnel
Structure FBD_TIMER
Variable Type Format Description
point RTOR FBD_TIMER structure structure RTOR
Opérande Type Format Description
point RTOR FBD_TIMER structure structure RTOR
RTOR(RTOR_tag);
Paramètre d’entrée Type de données Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
TimerEnable BOOL Lorsqu’activé, active l’exécution du temporisateur qui accumule le temps.
Réglage par défaut désactivé.
PRE DINT Valeur présélectionnée du temporisateur. C’est la valeur en unités de 1 ms que ACC doit atteindre avant que le cumul du temps ne s’arrête. Si la valeur est incorrecte, l’instruction active le bit approprié dans l’état (Status) et le temporisateur n’est pas exécuté.
Valable = 0 jusqu’au nombre entier positif maximum.
RAZ BOOL Requête de réinitialisation du temporisateur. Lorsqu’activé, le temporisateur est réinitialisé.
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
ACC DINT Durée accumulée en millisecondes. Cette valeur est conservée même lorsque l’entrée TimerEnable est désactivée. Ceci rend le comportement de ce bloc différent de celui du bloc TONR.
EN BOOL Sortie d’activation de temporisateur. Indique que l’instruction de temporisation est activée.
TT BOOL Sortie de temporisation en cours. Lorsqu’activé, une opération de temporisation est en cours.
124 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : L’instruction RTOR accumule le temps jusqu’à ce qu’elle soit désactivée. Lorsque l’instruction RTOR est désactivée, elle garde sa valeur .ACC. Vous devez remettre à zéro la valeur .ACC à l’aide de l’entrée de réinitialisation.
L’unité de temps est toujours 1 ms. Par exemple, pour un temporisateur de 2 secondes, saisissez 2 000 pour la valeur .PRE.
Activez le paramètre d’entrée de réinitialisation pour réinitialiser l’instruction. Si TimerEnable est activé lorsque Reset est activé, l’instruction RTOR recommence à additionner le temps lorsque Reset est désactivé.
Un temporisateur s’exécute en soustrayant le temps de la dernière scrutation de l’heure actuelle :
ACC = ACC + (current_time – last_time_scanned)
DN BOOL Sortie de fin de temporisation. Indique quand la durée accumulée est supérieure ou égale à la valeur présélectionnée.
Status DINT Etat du bloc fonctionnel.
InstructFault (Status.0) BOOL L’instruction a détecté l’une des erreurs d’exécution. Ceci n’est pas une erreur mineure ou majeure de l’automate. Vérifiez les autres bits d’état pour déterminer ce qui s’est produit.
PresetInv (Status.1) BOOL La valeur présélectionnée est incorrecte.
Paramètre d’entrée Type de données Description
TimerEnable
bit de validation (EN)
bit de fin de temporisation (DN)
valeur accumulée du temporisateur (.ACC)
bit de temporisation en cours (TT)
présélection
0
16651
RAZ
le temporisateur n’a pas atteint la valeur PRE
Publication 1756-RM003K-FR-P – Juillet 2008 125
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Après avoir actualisé ACC, le temporisateur active last_time_scanned = current_time. Ceci permet au temporisateur d’être prêt pour la prochaine scrutation.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Pour chaque scrutation avec limit_switch1 activé, l’instruction RTOR augmente la valeur ACC de la valeur du temps écoulé jusqu’à ce que la valeur ACC atteigne la valeur PRE. Lorsque ACC ≥ PRE, le paramètre DN est activé et timer_state3 est activé.
IMPORTANT Assurez-vous de scruter le temporisateur au moins toutes les 69 minutes lors de son fonctionnement. Autrement, la valeur ACC ne sera pas correcte.
La plage de la valeur last_time_scanned peut aller jusqu’à 69 minutes. Le calcul du temporisateur revient à sa valeur de départ si vous ne le scrutez pas dans les 69 minutes. Dans ce cas, la valeur ACC ne sera pas correcte.
Lorsque le temporisateur fonctionne, scrutez-le dans les 69 minutes si vous le mettez dans un des éléments suivants :
• sous-programme ;• section de code entre les instructions JMP et LBL ;• graphe de fonctionnement séquentiel (SFC) ;• tâche sur événement ou périodique ;• sous-programme d’état d’une phase.
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC n’est pas modifiée.
EN, TT et DN sont remis à zéro.
La valeur ACC n’est pas modifiée.
Première exécution de l’instruction
EN, TT et DN sont remis à zéro.
La valeur ACC n’est pas modifiée.
EN, TT et DN sont remis à zéro.
La valeur ACC n’est pas modifiée.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé Bloc fonctionnel :
Lorsque EnableIn passe de désactivé à activé, l’instruction est initialisée comme décrit pour la première exécution de l’instruction.
L’instruction est exécutée.
EnableOut est activé.
EnableIn est toujours activé.
L’instruction est exécutée.
RAZ Lorsque le paramètre d’entrée de réinitialisation est activé, l’instruction désactive EN, TT et DN et active ACC = zéro.
Lorsque le paramètre d’entrée de réinitialisation est activé, l’instruction désactive EN, TT et DN et active ACC = zéro.
Post-scrutation Aucune. Aucune.
126 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Texte structuré
RTOR_01.Preset := 500
RTOR_01.Reset := reset;
RTOR_O1.TimerEnable := limit_switch1;
RTOR(RTOR_01);
timer_state3 := RTOR_01.DN;
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 127
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Comptage progressif (CTU) L’instruction CTU effectue un comptage croissant.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom CTUD, voir page 136.
Opérandes :
Logique à relais
Structure COMPTEUR
Opérande Type Format Description
compteur COUNTER point structure compteur
présélection DINT immédiat limite supérieure du comptage
accumulateur DINT immédiat nombre de fois que le compteur a compté
la valeur initiale est typiquement 0
Mnémonique Type de données Description
.CU BOOL Le bit d’activation de comptage progressif indique que l’instruction CTU est activée.
.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.
.OV BOOL Le bit de dépassement supérieur indique que le compteur dépasse la limite supérieure de 2 147 483 647. Le compteur revient à la valeur de –2 147 483 648 et recommence à compter vers le haut.
.UN BOOL Le bit de dépassement inférieur indique que le compteur a dépassé la limite inférieure de –2 147 483 648. Le compteur revient à la valeur de 2 147 483 647 et recommence à compter vers le bas.
.PRE DINT La valeur présélectionnée définit la valeur que la valeur accumulée doit atteindre avant que l’instruction active le bit .DN.
.ACC DINT La valeur accumulée indique le nombre de transitions que l’instruction a compté.
128 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : Lorsqu’elle est activée et que le bit .CU est désactivé, l’instruction CTU incrémente le compteur d’une unité. Lorsqu’elle est activée et que le bit .CU est activé, ou lorsqu’elle est désactivée, l’instruction CTU conserve sa valeur .ACC.
La valeur accumulée continue d’augmenter, même une fois le bit .DN est activé. Pour effacer la valeur accumulée, utilisez une instruction RES qui renvoie à la structure compteur ou écrivez un 0 dans la valeur accumulée.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
état d’entrée de la ligne
bit de validation de comptage progressif (.CU)
bit de fin de comptage progressif (.DN)
valeur accumulée du compteur (.ACC)
présélection
16636
Publication 1756-RM003K-FR-P – Juillet 2008 129
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exécution :
Condition Action logique à relais
Pré-scrutation Le bit .CU est activé pour empêcher des augmentations incorrectes pendant la scrutation du programme.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .CU est désactivé.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .CUbit .CU = 0
bit .CU = 1
L’état d’entrée de la ligne est vrai
la valeur .ACC revient à sa valeur
de départ
oui
non
examiner le bit .UNbit .UN = 0
bit .UN = 1
le bit .CU est activé
.ACC = .ACC + 1
examiner le bit .OVbit .OV = 0
examiner le bit .UNbit .UN = 1
bit .UN = 0
le bit .UN est désactivéle bit .DN est désactivéle bit .OV est désactivé
le bit .OV est activé
examiner .ACC .ACC ≥ .PRE
.ACC < .PRE
le bit .DN est activé
l’état de sortie de la ligne est vrai
fin
bit .OV = 1
le bit .DN est désactivé
130 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Une fois que limit_switch_1 est passé de désactivé à activé 10 fois, le bit .DN est activé et light_1 s’allume. Si limit_switch_1 continue de passer de désactivé à activé, counter_1 continue de compter et le bit .DN reste activé. Lorsque limit_switch_2 est activé, l’instruction RES réinitialise counter_1 (remet le bit d’état et la valeur .ACC à zéro) et light_1 s’éteint.
Publication 1756-RM003K-FR-P – Juillet 2008 131
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Comptage dégressif (CTD) L’instruction CTD effectue un comptage décroissant.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom CTUD, voir page 136.
Opérandes :
Logique à relais
Structure COMPTEUR
Opérande Type Format Description
compteur COUNTER point structure compteur
présélection DINT immédiat limite inférieure du comptage
accumulateur DINT immédiat nombre de fois que le compteur a compté
la valeur initiale est typiquement 0
Mnémonique Type de données Description
.CD BOOL Le bit d’activation de comptage dégressif indique que l’instruction CTD est activée.
.DN BOOL Le bit de fin indique que .ACC ≥ .PRE.
.OV BOOL Le bit de dépassement supérieur indique que le compteur dépasse la limite supérieure de 2 147 483 647. Le compteur revient à la valeur de –2 147 483 648 et recommence à compter vers le haut.
.UN BOOL Le bit de dépassement inférieur indique que le compteur a dépassé la limite inférieure de –2 147 483 648. Le compteur revient à la valeur de 2 147 483 647 et recommence à compter vers le bas.
.PRE DINT La valeur présélectionnée définit la valeur que la valeur accumulée doit atteindre avant que l’instruction active le bit .DN.
.ACC DINT La valeur accumulée indique le nombre de transitions que l’instruction a compté.
132 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : L’instruction CTD est généralement utilisée avec une instruction CTU afférente à la même structure de compteur.
Lorsqu’elle est activée et que le bit .CD est désactivé, l’instruction CTD diminue le compteur d’une unité. Lorsqu’elle est activée et que le bit .CD est activé, ou lorsqu’elle est désactivée, l’instruction CTD conserve sa valeur .ACC.
La valeur accumulée continue de diminuer, même une fois le bit .DN activé. Pour effacer la valeur accumulée, utilisez une instruction RES qui renvoie à la structure compteur ou écrivez un 0 dans la valeur accumulée.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
état d’entrée de la ligne
bit de validation de comptage dégressif (.CD)
bit de fin de comptage dégressif (.DN)
valeur accumulée du compteur (.ACC)
présélection
16637
Publication 1756-RM003K-FR-P – Juillet 2008 133
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exécution :
Condition Action logique à relais
Pré-scrutation Le bit .CD est activé pour empêcher des décrémentations incorrectes pendant la scrutation du programme.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .CD est désactivé.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .CDbit .CD = 0
bit .CD = 1
L’état d’entrée de la ligne est vrai
la valeur .ACC revient à sa valeur
de départ
oui
non
examiner le bit .UNbit .UN = 0
bit .UN = 1
le bit .CD est activé
.ACC = .ACC – 1
examiner le bit .OV bit .OV = 0
examiner le bit .OVbit .OV = 1
bit .OV = 0
le bit .OV est désactivéle bit .DN est désactivéle bit .UN est désactivé
le bit .UN est activé
examiner .ACC.ACC ≥ .PRE
le bit .DN est activé
l’état de sortie de la ligne est vrai
fin
bit .OV = 1
.ACC < .PRE
le bit .DN est désactivé
134 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exemple : Un convoyeur transporte des pièces dans une zone tampon. Chaque fois qu’une pièce entre dans la zone, limit_switch_1 est activé et counter_1 augmente de 1. Chaque fois qu’une pièce sort de la zone, limit_switch_2 est activé et counter_1 diminue de 1. S’il y a 100 pièces dans la zone tampon (counter_1.dn est activé), conveyor_a est activé et empêche le convoyeur d’amener d’autres pièces jusqu’à ce que de la place se libère dans la zone tampon.
Publication 1756-RM003K-FR-P – Juillet 2008 135
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Comptage progressif/dégressif (CTUD)
L’instruction CTUD ajoute une unité à son décompte lorsque CUEnable passe de désactivé à activé. L’instruction soustrait une unité lorsque CDEnable passe de désactivé à activé.
Cette instruction est disponible en logique à relais sous la forme de trois instructions : CTU (voir page 128), CTD (voir page 132) et RES (voir page 140).
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_COUNTER
Variable Type Format Description
point CTUD FBD_COUNTER structure structure CTUD
Opérande Type Format Description
point CTUD FBD_COUNTER structure structure CTUD
CTUD(CTUD_tag);
Paramètre d’entrée Type de données Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
CUEnable BOOL Comptage progressif activé. Lorsque l’entrée passe de désactivée à activée, le totalisateur ajoute une unité au décompte.
Réglage par défaut désactivé.
CDEnable BOOL Comptage dégressif activé. Lorsque l’entrée passe de désactivée à activée, le totalisateur soustrait une unité au décompte.
Réglage par défaut désactivé.
PRE DINT Valeur présélectionnée du compteur. Valeur que la valeur accumulée doit atteindre avant que DN soit activé.
Valable = tout nombre entier
La valeur par défaut est 0.
RAZ BOOL Requête de réinitialisation du temporisateur. Lorsqu’activé, le compteur est réinitialisé.
Réglage par défaut désactivé.
136 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Description : Lorsqu’elle est activée et que CUEnable est activé, l’instruction CTUD augmente le compteur d’une unité. Lorsqu’elle est activée et que CDEnable est activé, l’instruction CTUD diminue le compteur d’une unité.
Les paramètres d’entrée CUEnable et CDEnable peuvent être basculés pendant la même scrutation. L’instruction exécute le comptage progressif avant le comptage dégressif.
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
ACC DINT Valeur accumulée.
CU BOOL Comptage progressif activé.
CD BOOL Comptage dégressif activé.
DN BOOL Comptage terminé. Activé lorsque la valeur accumulée est supérieure ou égale à la valeur présélectionnée.
OV BOOL Dépassement supérieur du compteur. Indique que le compteur a dépassé la limite supérieure de 2 147 483 647.
Le compteur revient alors à –2 147 483 648 et recommence à compter vers le haut.
UN BOOL Dépassement inférieur du compteur. Indique que le compteur a dépassé la limite inférieure de –2 147 483 648.
Le compteur revient alors à 2 147 483 647 et recommence à compter vers le bas.
Publication 1756-RM003K-FR-P – Juillet 2008 137
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Comptage progressif
Comptage dégressif
Lorsqu’elle est désactivée, l’instruction CTUD conserve sa valeur accumulée. Activez le paramètre d’entrée de réinitialisation (Reset) de la structure FBD_COUNTER pour réinitialiser l’instruction.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
CUEnable
bit de validation de comptage progressif (CU)
bit de fin de comptage progressif (DN)
valeur accumulée du compteur (.ACC)
présélection
16636
CDEnable
bit de validation de comptage dégressif (CD)
bit de fin de comptage dégressif (DN)
valeur accumulée du compteur (.ACC)
présélection
16637
138 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exécution :
Exemple : Lorsque limit_switch1 passe de désactivé à activé, CUEnable est activé pendant une scrutation et l’instruction CTUD augmente la valeur ACC de 1. Lorsque ACC ≥ PRE, le paramètre DN est activé, ce qui active l’instruction de bloc fonctionnel qui suit l’instruction CTUD.
Texte structuré
CTUD_01.Preset := 500;
CTUD_01.Reset := Restart;
CTUD_O1.CUEnable := limit_switch1;
CTUD(CTUD_01);
counter_state := CTUD_01.DN;
Bloc fonctionnel
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Pas de réinitialisation nécessaire. Pas de réinitialisation nécessaire.
Première scrutation de l’instruction
CUEnablen–1 et CDEnablen–1 sont activés. CUEnablen–1 et CDEnablen–1 sont activés.
Première exécution de l’instruction
CUEnablen–1 et CDEnablen–1 sont activés. CUEnablen–1 et CDEnablen–1 sont activés.
EnableIn est désactivé EnableOut est désactivé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé L’instruction active CUEnablen–1 et CDEnablen–1.
Lors d’une transition de désactivé à activé de EnableIn :
• l’instruction est exécutée ;
• EnableOut est activé.
L’instruction active CUEnablen–1 et CDEnablen–1.
EnableIn est toujours activé.
L’instruction est exécutée.
RAZ Lorsqu’elle est activée, l’instruction remet à zéro CUEnablen–1, CDEnablen–1, CU, CD, DN, OV et UN et active ACC = zéro.
Lorsqu’elle est activée, l’instruction remet à zéro CUEnablen–1, CDEnablen–1, CU, CD, DN, OV et UN et active ACC = zéro.
Post-scrutation Aucune. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 139
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Réinitialisation (RES) L’instruction RES réinitialise un temporisateur, un compteur ou une structure de commande.
Opérandes :
Logique à relais
Description : Lorsqu’elle est activée, l’instruction RES remet à zéro ces éléments :
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
structure TIMER
CONTROL
COUNTER
point structure à réinitialiser
Lors de l’utilisation d’une instruction RES pour
L’instruction remet à zéro
TIMER la valeur .ACC
les bits d’état du contrôle
COUNTER la valeur .ACC
les bits d’état du contrôle
CONTROL la valeur .POS
les bits d’état du contrôle
ATTENTION Etant donné que l’instruction RES remet à zéro la valeur .ACC, les bits .DN et .TT, n’utilisez pas l’instruction RES pour réinitialiser un temporisateur TOF.
140 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Chapitre 3
Exécution :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction RES réinitialise la structure spécifiée.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 141
Chapitre 3 Instructions de temporisation et de comptage (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Notes :
142 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 4
Instructions d’entrée/de sortie(MSG, GSV, SSV, IOT)
Introduction Les instructions d’entrée/de sortie lisent ou écrivent, soit des données vers ou à partir de l’automate, soit un bloc de données vers ou à partir d’un autre module sur un autre réseau.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
envoyer des données vers ou à partir d’un autre module
MSG Logique à relais
Texte structuré
144
obtenir des informations sur l’état de l’automate
GSV Logique à relais
Texte structuré
176
régler les informations sur l’état de l’automate SSV Logique à relais
Texte structuré
176
• envoyer des valeurs de sortie à un module d’E/S ou à un automate consommateur à un moment précis du programme logique
IOT Logique à relais
Texte structuré
201
• déclencher une tâche événementielle dans un autre automate
143Publication 1756-RM003K-FR-P – Juillet 2008 143
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Message (MSG) L’instruction MSG écrit ou lit un bloc de données de façon asynchrone vers un autre module sur un réseau.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction MSG en logique à relais.
Structure MESSAGE
Opérande Type Format Description
Contrôle de message
MESSAGE point structure de message
MSG(MessageControl);
ATTENTION Si vous vérifiez le bit d’état plus d’une fois
L’automate change les bits DN, ER, EW et ST de façon asynchrone par rapport à la scrutation de votre programme. Utilisez une copie des bits si vous les vérifiez à plusieurs endroits dans votre programme. Autrement, les bits peuvent être modifiés au cours de la scrutation et votre programme ne fonctionnera pas comme prévu.
Une façon de faire une copie est d’utiliser le mot FLAGS (indicateurs). Copiez le mot FLAGS dans un autre point et vérifiez les bits dans la copie.
IMPORTANT Ne changez pas les bits d’état suivants de l’instruction MSG :
• DN• EN• ER• EW• ST
Ne changez pas ces bits, ni de façon individuelle, ni comme élément du mot FLAGS. Le cas échéant, cela peut provoquer un défaut irrécupérable dans l’automate. L’automate efface le projet de sa mémoire lorsqu’il présente un défaut irrécupérable.
144 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Mnémonique Type de données
Description
.FLAGS INT Le membre FLAGS permet l’accès aux membres d’état (bits) via un mot de 16 bits.
Ce bit est le membre
2 .EW
4 .ER
5 .DN
6 .ST
7 .EN
8 .TO
9 .EN_CC
Important : ne modifiez pas le bit EW, ER, DN ou ST du membre FLAGS. Par exemple, n’effacez pas tout le mot FLAGS. L’automate ignore la modification et utilise les valeurs des bits mémorisées en interne.
.ERR INT Si le bit .ER est activé, le mot de code d’erreur identifie les codes d’erreur pour l’instruction MSG.
.EXERR INT Le mot de code d’erreur étendu spécifie des informations de code d’erreur supplémentaires pour certains codes d’erreur.
.REQ_LEN INT La longueur requise spécifie le nombre de mots que l’instruction de message tentera de transférer.
.DN_LEN INT La longueur de fin indique le nombre de mots ayant effectivement été transférés.
.EW BOOL Le bit d’activation en attente est activé lorsque l’automate détecte qu’une demande de message est entrée dans la file d’attente. L’automate réinitialise le bit .EW lorsque le bit .ST est activé.
Important : ne modifiez pas le bit EW. L’automate ignore la modification et utilise la valeur du bit mémorisée en interne.
.ER BOOL Le bit d’erreur est activé lorsque l’automate détecte qu’un transfert a échoué. Le bit .ER est réinitialisé au passage de l’état d’entrée de la ligne de faux à vrai suivant.
Important : ne modifiez pas le bit ER.
.DN BOOL Le bit de fin est activé lorsque la dernière trame du message est transférée avec succès. Le bit .DN est réinitialisé au passage de l’état d’entrée de la ligne de faux à vrai suivant.
Important : ne modifiez pas le bit DN.
.ST BOOL Le bit de début est activé lorsque l’automate commence l’exécution de l’instruction MSG. Le bit .ST est réinitialisé lorsque le bit .DN ou le bit .ER est activé.
Important : ne modifiez pas le bit ST. L’automate ignore la modification et utilise la valeur du bit mémorisée en interne.
.EN BOOL Le bit d’activation est activé lorsque l’état d’entrée de la ligne passe à vrai et reste activé jusqu’à ce que le bit .DN ou le bit .ER soit activé et que l’état d’entrée de la ligne soit faux. Si l’état d’entrée de la ligne passe à faux, mais que le bit .DN et le bit .ER sont désactivés, le bit .EN reste activé.
Important : ne modifiez pas le bit EN.
.TO BOOL Si vous activez le bit .TO manuellement, l’automate arrête de traiter le message et active le bit .ER.
.EN_CC BOOL Le bit d’activation de cache détermine la gestion de la connexion MSG. Reportez-vous à Choix d’une option de cache, page 4-173. Les connexions d’instructions MSG sortant par le port série ne sont pas mises en mémoire cache, même si le bit .EN_CC est activé.
.ERR_SRC SINT Utilisé par le logiciel RSLogix 5000 pour indiquer l’erreur de chemin dans la boîte de dialogue Configuration du message.
.DestinationLink INT Pour changer le lien destinataire d’un message DH+ ou CIP avec ID source, régler le membre sur la valeur requise.
Publication 1756-RM003K-FR-P – Juillet 2008 145
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
.DestinationNode INT Pour changer la station destinataire d’un message DH+ ou CIP avec ID source, régler le membre sur la valeur requise.
.SourceLink INT Pour changer le lien source d’un message DH+ ou CIP avec ID source, régler le membre sur la valeur requise.
.Class INT Pour changer le paramètre de classe d’un message générique CIP, régler le membre sur la valeur requise.
.Attribute INT Pour changer le paramètre d’attribut d’un message générique CIP, régler le membre sur la valeur requise.
.Instance DINT Pour changer le paramètre d’instance d’un message générique CIP, régler le membre sur la valeur requise.
.LocalIndex DINT Si vous utilisez un astérisque [*] pour désigner le numéro d’élément du tableau local, LocalIndex fournit le numéro d’élément. Pour changer le numéro d’élément, réglez ce membre sur la valeur requise.
Si le message : Le tableau local est :
lit les données l’élément de destination
écrit les données l’élément source
.Channel SINT Pour envoyer le message par une voie différente du module 1756-DHRIO, réglez ce membre sur la valeur requise. Utilisez le caractère ASCII A ou B.
.Rack SINT Pour changer le numéro de rack d’un message de bloc-transfert, réglez ce membre sur le numéro de rack requis (octal).
.Group SINT Pour changer le numéro de groupe d’un message de bloc-transfert, réglez ce membre sur le numéro de groupe requis (octal).
.Slot SINT Pour changer le numéro d’emplacement d’un message de bloc-transfert, réglez ce membre sur le numéro d’emplacement requis (octal).
Si le message passe par ce réseau :
Spécifiez le numéro d’emplacement en :
RIO octal
ControlNet décimal (0 – 15)
.Path STRING Pour envoyer le message vers un automate différent, réglez ce membre sur le nouveau chemin.
• Entrez le chemin en valeurs hexadécimales.
• N’entrez pas les virgules [,]
Par exemple, pour ce chemin : 1, 0, 2, 42, 1, 3, entrez $01$00$02$2A$01$03.
Pour naviguer jusqu’à un équipement et créer automatiquement une partie de la nouvelle chaîne ou la nouvelle chaîne entière, cliquez avec le bouton droit de la souris sur une chaîne de caractères et choisissez Go to Message Path Editor.
.RemoteIndex DINT Si vous utilisez un astérisque [*] pour désigner le numéro d’élément du tableau distant, RemoteIndex fournit le numéro d’élément. Pour changer le numéro d’élément, réglez ce membre sur la valeur requise.
Si le message : Le tableau distant est :
lit les données l’élément source
écrit les données l’élément de destination
Mnémonique Type de données
Description
146 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Description L’instruction MSG transfère des éléments de données.
C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle ne s’exécute que lors d’une transition. Voir l’annexe B.
La taille de chaque élément dépend du type de données que vous spécifiez et du type de message de commande que vous utilisez.
.RemoteElement STRING Pour spécifier une adresse ou un point différent dans l’automate auquel est envoyé le message, réglez ce membre sur la valeur requise. Entrez l’adresse ou le point en caractères ASCII.
Si le message : Le tableau distant est :
lit les données l’élément source
écrit les données l’élément de destination
.UnconnnectedTimeout DINT Dépassement du temps autorisé pour un message sans connexion ou pour établir une connexion. La valeur par défaut est de 30 secondes.
Si le message est Action
sans connexion Le bit ER est activé si l’automate n’obtient pas de réponse dans le délai autorisé par UnconnectedTimeout.
avec connexion Le bit ER est activé si l’automate n’obtient pas de réponse pour établir la connexion dans le délai autorisé par UnconnectedTimeout.
.ConnectionRate DINT Dépassement du temps autorisé pour un message avec connexion une fois qu’il a établi une connexion. Ce dépassement de temps est valable pour la réponse venant de l’autre dispositif à propos de l’envoi des données.
• Ce timeout n’entre en vigueur qu’après l’établissement de la connexion.
• Timeout = ConnectionRate x TimeoutMultiplier.
• Le temps de connexion (ConnectionRate) par défaut est de 7,5 secondes.
• Le multiplicateur de dépassement de temps (TimeoutMultiplier) par défaut est 0 (ce qui équivaut à un facteur de multiplication de 4).
• Le dépassement de temps par défaut des messages connectés est de 30 secondes (7,5 secondes x 4 = 30 secondes).
• Pour changer le dépassement de temps, changez le taux de connexion (ConnectionRate) et laissez le multiplicateur de dépassement de temps (TimeoutMultiplier) à sa valeur par défaut.
.TimeoutMultiplier SINT
Mnémonique Type de données
Description
Publication 1756-RM003K-FR-P – Juillet 2008 147
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
connexion avec .EN_CC = 1
état d’entrée de la ligne
bit .EW
connexion avec .EN_CC = 0
41382
bit .ST
bit .DN ou bit .ER
bit .EN
1 2 3 4 5 6 7
148 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Exécution :
Où Description Où Description
1 l’état d’entrée de la ligne est vrai
.EN est activé
.EW est activé
la connexion est ouverte*
5 le message est envoyé
.ST est activé
.EW est désactivé
2 le message est envoyé
.ST est activé
.EW est désactivé
6 le message est terminé ou défaillant
l’état d’entrée de la ligne est encore vrai
.DN ou .ER est activé
.ST est désactivé
la connexion est fermée (si .EN_CC = 0)
3 le message est terminé ou défaillant
l’état d’entrée de la ligne est faux
.DN ou .ER est activé
.ST est désactivé
la connexion est fermée (si .EN_CC = 0)
.EN est désactivé (l’état d’entrée de la ligne est faux)
7 l’état d’entrée de la ligne passe à faux et .DN ou .ER est activé
.EN est désactivé
4 l’état d’entrée de la ligne est vrai
.DN ou .ER était précédemment activé
.EN est activé
.EW est activé
la connexion est ouverte*
.DN ou .ER est désactivé
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 149
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
l’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
--
Condition Action logique à relais Action texte structuré
L’état d’entrée de la ligne est faux
fin
l’état de sortie de la ligne est faux
examiner le bit .EN
bit .EN = 1
bit .EN = 0
examiner le bit .EWbit .EW = 1
bit .EW = 0
examiner le bit .STbit .ST = 1
bit .ST = 0
examiner le bit .DNbit .DN =
bit .DN = 0
examiner le bit .DNbit .DN = 1
bit .DN = 0
examiner le bit .ERbit .ER = 1
bit .ER = 0
le bit .EN est désactivé
examiner le bit .ERbit .ER = 1 bit .ER = 0 commande de
bloc-transfertchemin du module
valide
oui non
non
exécuter la demande de message
le bit .EW est activé
connexion du module établie
non
oui
oui
le bit .ER est activé
150 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Condition Action logique à relais Action texte structuré
EnableIn est activé -- EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Exécution de l’instruction
fin
l’état de sortie de la ligne est faux
bit .EN = 0
examiner le bit .EWbit .EW = 1
bit .EW = 0
examiner le bit .STbit .ST = 1
bit .ST = 0
examiner le bit .DNbit .DN = 1
bit .DN = 0
examiner le bit .ERbit .ER = 1 bit .ER = 0 commande de
bloc-transfertchemin du module
valide
oui non
non
les bits .EW, .ST, .TO, .DN et .ER sont désactivésle bit .EN est activéexécuter la demande de messagele bit .EW est activé
connexion du module établie
non
oui
oui
le bit .ER est activé
examiner le bit .ENbit .EN = 1
examiner le bit .EW
bit .EW = 0
examiner le bit .ST
bit .ST = 0
les bits .EW, .ST, .TO, .DN et .ER sont désactivés
le bit .EN est activé
le bit .EN est activé
bit .EW = 1
bit .ST = 1
Publication 1756-RM003K-FR-P – Juillet 2008 151
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Codes d’erreur MSG Les codes d’erreur dépendent du type d’instruction MSG.
Codes d’erreur
Le logiciel RSLogix 5000 n’affiche pas toujours la description complète.
Code d’erreur (hex)
Description Affichage dans le logiciel
0001 Echec de la connexion (voir les codes d’erreur étendus) identique à la description
0002 Ressources insuffisantes identique à la description
0003 Valeur incorrecte identique à la description
0004 Erreur de syntaxe ESE (voir les codes d’erreur étendus) identique à la description
0005 Destination inconnue, classe non prise en charge, instance indéfinie ou élément de structure indéfini (voir les codes d’erreur étendus)
identique à la description
0006 Espace de trame insuffisant identique à la description
0007 Connexion perdue identique à la description
0008 Service non pris en charge identique à la description
0009 Erreur dans le segment de données ou valeur d’attribut incorrecte
identique à la description
000A Erreur de liste d’attributs identique à la description
000B L’état existe déjà identique à la description
000C Conflit de modèle d’objet identique à la description
000D L’objet existe déjà identique à la description
000E Attribut non réglable identique à la description
000F Permission refusée identique à la description
0010 Conflit d’état du dispositif identique à la description
0011 La réponse ne peut être insérée identique à la description
0012 Primitive du fragment identique à la description
0013 Données de commande insuffisantes identique à la description
0014 Attribut non pris en charge identique à la description
0015 Trop de données identique à la description
001A Demande de passerelle trop longue identique à la description
001B Réponse de passerelle trop longue identique à la description
001C Manque de liste d’attributs identique à la description
001D Liste d’attributs incorrecte identique à la description
001E Erreur de service intégré identique à la description
001F Panne liée à la connexion (voir les codes d’erreur étendus) identique à la description
0022 Réponse reçue incorrecte identique à la description
0025 Erreur de segment clé identique à la description
0026 Erreur ESE non valable identique à la description
152 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
0027 Attribut inattendu dans la liste identique à la description
0028 Erreur DeviceNet – identité de membre incorrecte identique à la description
0029 Erreur DeviceNet – membre non réglable identique à la description
00D1 Le module n’est pas en état de marche erreur inconnue
00FB Port de message pas pris en charge erreur inconnue
00FC Types de données de message pas pris en charge erreur inconnue
00FD Message non initialisé erreur inconnue
00FE Timeout de message erreur inconnue
00FF Erreur générale (voir les codes d’erreur étendus) erreur inconnue
Code d’erreur (hex)
Description Affichage dans le logiciel
Publication 1756-RM003K-FR-P – Juillet 2008 153
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Codes d’erreur étendus
Le logiciel RSLogix 5000 n’affiche pas de texte pour les codes d’erreur étendus.
Les codes suivants sont les codes d’erreur étendus pour le code d’erreur 0001.
Les codes suivants sont les codes d’erreur étendus pour le code d’erreur 001F.
Les codes suivants sont les codes d’erreur étendus pour les codes d’erreur 0004 et 0005.
Code d’erreur étendu (hex)
Description
0100 Connexion en cours d’utilisation
0103 Transport pas pris en charge
0106 Conflit de propriété
0107 Connexion introuvable
0108 Type de connexion incorrect
0109 Taille de connexion incorrecte
0110 Module non configuré
0111 EPR pas prise en charge
0114 Module incorrect
0115 Type de dispositif incorrect
0116 Révision incorrecte
0118 Format de configuration incorrect
011A Plus de connexions disponibles pour l’application
0203 Timeout de connexion
0204 Timeout de message non connecté
0205 Erreur de paramètre d’envoi non connecté
0206 Message trop long
0301 Pas de mémoire tampon
0302 Bande passante indisponible
0303 Aucun filtre disponible
0305 Correspondance de signature
0311 Port indisponible
0312 Adresse de lien indisponible
0315 Type de segment incorrect
0317 Connexion non programmée
Code d’erreur étendu (hex)
Description
Code d’erreur étendu (hex)
Description
0203 Timeout de connexion
Code d’erreur étendu (hex)
Description
0000 Insuffisance de mémoire pour l’état étendu
0001 Insuffisance d’instances pour l’état étendu
154 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Les codes suivants sont les codes d’erreur étendus pour le code d’erreur 00FF.
Code d’erreur étendu (hex)
Description
2001 ESE excessif
2002 Mauvaise valeur de paramètre
2018 Rejet de sémaphore
201B Taille trop petite
201C Taille incorrecte
2100 Echec de privilège
2101 Position de commutateur à clé incorrecte
2102 Mot de passe incorrect
2103 Aucun mot de passe attribué
2104 Adresse hors limites
2105 Adresse et quantité hors limites
2106 Données utilisées
2107 Type incorrect ou pas pris en charge
2108 Automate en mode de transfert ou de chargement
2109 Essai de changement des dimensions de tableau
210A Nom de symbole incorrect
210B Le symbole n’existe pas
210E Echec de la recherche
210F La tâche ne peut commencer
2110 Ecriture impossible
2111 Lecture impossible
2112 Sous-programme partagé non modifiable
2113 Automate en mode de défaut
2114 Mode Run verrouillé
Code d’erreur étendu (hex)
Description
P
ublication 1756-RM003K-FR-P – Juillet 2008 155Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Codes d’erreur PLC et SLC (.ERR)
La révision 10.x et ultérieure, du firmware Logix fournit de nouveaux codes d’erreur pour les erreurs associées aux types de messages PLC et SLC (messages PCCC).
• Ce changement permet au logiciel RSLogix 5000 d’afficher une description plus significative pour bon nombre d’erreurs. Auparavant, le logiciel ne donnait pas de description pour les erreurs associées au code d’erreur 00F0.
• Le changement rend également les codes d’erreur plus cohérents avec les erreurs renvoyées par d’autres automates, comme les PLC-5.
Le tableau suivant présente les modifications des codes d’erreur entre les révisions R9.x et antérieures et la révision R10.x et ultérieure. En raison du changement, le membre .ERR renvoie une valeur unique pour chaque erreur PCCC. .EXERR n’est plus nécessaire pour ces erreurs.
Codes d’erreur PLC et SLC (hex)
R9.x et antérieure R10.x et ultérieure Description
.ERR .EXERR .ERR .EXERR
0010 1000 Commande ou format non admis de la part du processeur local
0020 2000 Module de communication hors service
0030 3000 Station décentralisée manquante, déconnectée ou hors tension
0040 4000 Processeur connecté mais en défaut (matériel)
0050 5000 Mauvais numéro de station
0060 6000 La fonction demandée n’est pas disponible
0070 7000 Le processeur est en mode Programme
0080 8000 Le fichier de compatibilité du processeur n’existe pas
0090 9000 La station décentralisée ne peut mettre la commande dans le buffer
00B0 B000 Le processeur est en cours de chargement et n’est pas accessible
00F0 0001 F001 Le processeur a incorrectement converti l’adresse
00F0 0002 F002 Adresse incomplète
00F0 0003 F003 Adresse incorrecte
00F0 0004 F004 Format d’adresse non admis – symbole non trouvé
00F0 0005 F005 Format d’adresse non admis – le symbole a 0 ou plus de caractères que le nombre maximum accepté par le dispositif
00F0 0006 F006 Le fichier d’adresses n’existe pas dans le processeur cible
00F0 0007 F007 Le fichier de destination est trop petit pour le nombre de mots demandé
00F0 0008 F008 La demande ne peut être exécutée
La situation a changé pendant l’opération multi-trames
00F0 0009 F009 Les données ou le fichier sont trop grands
Mémoire indisponible
156 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
00F0 000A F00A Le processeur cible ne peut mettre les informations demandées en trames
00F0 000B F00B Erreur de privilège; accès refusé
00F0 000C F00C La fonction demandée n’est pas disponible
00F0 000D F00D La demande est redondante
00F0 000E F00E La commande ne peut être exécutée
00F0 000F F00F Dépassement ; dépassement d’histogramme
00F0 0010 F010 Pas d’accès
00F0 0011 F011 Le type de données demandé ne correspond pas aux données disponibles
00F0 0012 F012 Paramètres de commande incorrects
00F0 0013 F013 La référence d’adresse existe dans une zone effacée
00F0 0014 F014 Echec de l’exécution de la commande pour une raison inconnue
Dépassement d’histogramme de PLC-3
00F0 0015 F015 Erreur de conversion des données
00F0 0016 F016 Le scrutateur n’est pas disponible pour communiquer avec un adaptateur de rack 1771
00F0 0017 F017 L’adaptateur n’est pas disponible pour communiquer avec le module
00F0 0018 F018 La réponse du module 1771 était incorrecte
00F0 0019 F019 Etiquette en double
00F0 001A F01A Le propriétaire du fichier est actif – le fichier est utilisé
00F0 001B F01B Le propriétaire du programme est actif – quelqu’un effectue un chargement ou des modifications en ligne
00F0 001C F01C Le fichier disque est protégé en écriture ou inaccessible pour toute autre raison (hors ligne uniquement)
00F0 001D F01D Le fichier disque est utilisé par une autre application
Mise à jour non effectuée (hors ligne uniquement)
Codes d’erreur PLC et SLC (hex) (suite)
R9.x et antérieure R10.x et ultérieure Description
.ERR .EXERR .ERR .EXERR
Publication 1756-RM003K-FR-P – Juillet 2008 157
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Codes d’erreur de bloc-transfert
Les codes suivants sont les codes d’erreur spécifiques aux blocs-transferts Logix5000.
Code d’erreur (hex)
Description Affichage dans le logiciel
00D0 Le scrutateur n’a pas reçu de réponse de bloc-transfert du module à bloc-transfert dans les 3,5 secondes après la demande
erreur inconnue
00D1 Le checksum de la réponse de lecture ne correspond pas au checksum des données erreur inconnue
00D2 Le scrutateur a demandé une lecture ou une écriture, mais le module de bloc-transfert a répondu avec l’inverse
erreur inconnue
00D3 Le scrutateur a demandé une longueur et le module de bloc-transfert a répondu avec une longueur différente
erreur inconnue
00D6 Le scrutateur a reçu une réponse du module de bloc-transfert indiquant que la demande d’écriture a échoué
erreur inconnue
00EA Le scrutateur n’a pas été configuré pour communiquer avec le rack qui doit contenir ce module de bloc-transfert
erreur inconnue
00EB L’emplacement logique spécifié n’est pas disponible pour la taille de rack donnée erreur inconnue
00EC Une demande de bloc-transfert est en cours et une réponse est requise avant qu’une autre demande ne puisse commencer
erreur inconnue
00ED La taille des demandes de bloc-transfert ne correspond pas aux tailles de demandes de bloc-transfert valables
erreur inconnue
00EE Le type de demande de bloc-transfert ne correspond pas au BT_READ ou BT_WRITE attendu
erreur inconnue
00EF Le scrutateur n’a pas trouvé d’emplacement disponible dans la table des blocs-transferts pour permettre la demande de bloc-transfert
erreur inconnue
00F0 Le scrutateur a reçu une demande de réinitialisation des voies d’E/S décentralisées alors qu’il y avait des blocs-transferts en attente
erreur inconnue
00F3 Les files d’attente pour les bloc-transferts à distance sont pleines erreur inconnue
00F5 Aucune voie de communication n’est configuré pour le rack ou l’emplacement demandé erreur inconnue
00F6 Aucune voie de communication n’est configuré pour les E/S décentralisées erreur inconnue
00F7 Le timeout du bloc-transfert, défini dans l’instruction, a été dépassé avant la fin erreur inconnue
00F8 Erreur du protocole de bloc-transfert – bloc-transfert non sollicité erreur inconnue
00F9 Les données de bloc-transfert ont été perdues en raison d’une mauvaise voie de communication
erreur inconnue
00FA Le module de bloc-transfert a demandé une longueur différente de celle de l’instruction de bloc-transfert associée
erreur inconnue
00FB Le checksum des données de lecture du bloc-transfert est faux erreur inconnue
00FC Un transfert incorrect de données d’écriture du bloc-transfert a été effectué entre l’adaptateur et le module de bloc-transfert
erreur inconnue
00FD La taille du bloc-transfert plus celle de l’index de la table des données de bloc-transfert est supérieure à la taille du fichier de la table des données de bloc-transfert
erreur inconnue
158 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Spécification des détails de configuration
Une fois que vous avez entré l’instruction MSG et que vous avez spécifié la structure MESSAGE, utilisez l’onglet Configuration de Message dans le logiciel de programmation pour définir les détails du message.
Les détails que vous configurez dépendent du type de message que vous sélectionnez.
Cliquez ici pour configurer l’instruction MSG
42976
Si le dispositif cible est un Sélectionnez l’un de ces types de message
Voir page
Automate Logix5000 Lecture de table de données CIP 160
Ecriture de table de données CIP
Module d’E/S que vous configurez avec le logiciel RSLogix 5000
Reconfiguration du module 161
CIP générique 162
Automate PLC-5 Ecriture de type PLC5 163
Ecriture de type PLC5
Lecture de plage de mot PLC5
Ecriture de plage de mot PLC5
Automate SLC
Automate MicroLogix
Ecriture de type SLC 165
Ecriture de type SLC
Module de bloc-transfert Bloc-transfert de lecture 165
Bloc-transfert d’écriture
Processeur PLC-3 Lecture de type PLC3 165
Ecriture de type PLC3
Lecture de plage de mot PLC3
Ecriture de plage de mot PLC3
Processeur PLC-2 Lecture non protégée PLC2 167
Ecriture non protégée PLC2
Publication 1756-RM003K-FR-P – Juillet 2008 159
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Vous devez définir les informations de configuration suivantes.
Spécification des messages de lecture et d’écriture des fichiers de données CIP
Les types de messages de lecture et d’écriture du fichier de données CIP transfère les données entre les automates Logix5000.
Pour cette propriété Spécifiez
Elément source • Si vous sélectionnez un type de message de lecture, l’élément source est l’adresse des données que vous voulez lire dans le dispositif cible. Utilisez la syntaxe d’adressage du dispositif cible.
• Si vous sélectionnez un type de message d’écriture, le point source est le premier élément du point que vous voulez envoyer vers l’équipement cible.
Nombre d’éléments Le nombre d’éléments que vous lisez/écrivez dépend du type de données que vous utilisez. Un élément renvoie à un « bloc » de données liées. Par exemple, le point timer1 est un élément constitué d’une structure de commande de temporisateur.
Elément de destination • Si vous sélectionnez un type de message de lecture, l’élément de destination est le premier élément du point dans l’automate Logix5000 où vous voulez stocker les données que vous lisez à partir de l’équipement cible.
• Si vous sélectionnez un type de message d’écriture, l’élément de destination est l’adresse de l’emplacement dans le dispositif cible où vous voulez écrire les données.
Sélectionnez cette commande Si vous voulez
Lecture de fichiers de données CIP lire des données à partir d’un autre automate.
Les types source et de destination doivent concorder.
Ecriture de fichiers de données CIP écrire des données vers un autre automate.
Les types source et de destination doivent concorder.
160 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Reconfiguration d’un module d’E/S
Utilisez le message de reconfiguration du module (Module Reconfigure) pour envoyer une nouvelle configuration vers un module d’E/S. Pendant la reconfiguration :
• les modules d’entrée continuent d’envoyer des données d’entrée à l’automate ;
• les modules de sortie continuent de commander leurs équipements de sortie.
Un message de reconfiguration du module requiert ces propriétés de configuration.
Exemple : Pour reconfigurer un module d’E/S :
1. réglez le membre requis du point de configuration du module sur la nouvelle valeur ;
2. envoyez un message de reconfiguration du module au module.
Lorsque reconfigure[5] est activé, réglez l’alarme haute sur 60 pour le module local dans l’emplacement 4. Le message de reconfiguration du module envoie alors la nouvelle valeur de l’alarme au module. L’instruction impulsionnelle empêche la ligne d’envoyer des messages multiples au module pendant que reconfigure[5] est actif.
Logique à relais
Texte structuré
IF reconfigure[5] AND NOT reconfigure[6]THEN
Local:4:C.Ch0Config.HAlarmLimit := 60;
IF NOT change_Halarm.EN THEN
MSG(change_Halarm);
END_IF;
END_IF;
reconfigure[6] := reconfigure[5];
Dans cette propriété Sélection
Type de message Reconfiguration du module
Publication 1756-RM003K-FR-P – Juillet 2008 161
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Définition des messages CIP génériques
Un message CIP générique exécute une opération spécifique sur le module d’E/S.
Si vous voulez Dans cette propriété Saisissez ou sélectionnez
Effectuer un test d’impulsion sur un module de sorties TOR
Type de message CIP générique
Type de service Test par impulsion
Source tag_name de type INT [5]
Ce tableau contient :
tag_name[0] bit de masque de points à tester (ne teste qu’un point à la fois)
tag_name[1] réservé, laisser à 0
tag_name[2] largeur d’impulsion (centaines de μs, généralement 20)
tag_name[3] délai de passage par zéro pour E/S ControlLogix (centaines de μs, généralement 40)
tag_name[4] vérifier le délai
Destination laisser vide
Réinitialiser les fusibles électroniques sur un module de sorties TOR
Type de message CIP générique
Type de service Réinitialiser le fusible électronique
Source tag name de type DINT
Ce point représente un masque de bit des points sur lequel réinitialiser les fusibles.
Destination laisser vide
Réinitialiser les diagnostics verrouillés sur un module d’entrées
Type de message CIP générique
Type de service Réinitialiser les diagnostics verrouillés (I)
Source tag_name de type DINT
Ce point représente un masque de bit des points sur lequel réinitialiser les diagnostics.
Réinitialiser les diagnostics verrouillés sur un module de sorties
Type de message CIP générique
Type de service Réinitialiser les diagnostics verrouillés (O)
Source tag_name de type DINT
Ce point représente un masque de bit des points sur lequel réinitialiser les diagnostics.
162 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Définition des messages PLC-5
Utilisez les types de message PLC-5 pour communiquer avec les automates PLC-5.
Déverrouiller l’alarme d’un module d’entrées analogiques
Type de message CIP générique
Type de service Sélectionner l’alarme que vous voulez déverrouiller :
• Déverrouiller toutes les alarmes (I)
• Déverrouiller l’alarme haute analogique (I)
• Déverrouiller l’alarme haute haute analogique (I)
• Déverrouiller l’alarme basse analogique (I)
• Déverrouiller l’alarme basse basse analogique (I)
• Déverrouiller l’alarme de variation (I)
Instance Voie de l’alarme que vous voulez déverrouiller
Déverrouiller l’alarme d’un module de sorties analogiques
Type de message CIP générique
Type de service Sélectionner l’alarme que vous voulez déverrouiller :
• Déverrouiller toutes les alarmes (O)
• Déverrouiller l’alarme haute (O)
• Déverrouiller l’alarme basse (O)
• Déverrouiller l’alarme de rampe (O)
Instance Voie de l’alarme que vous voulez déverrouiller
Si vous voulez Dans cette propriété Saisissez ou sélectionnez
Sélectionnez cette commande
Si vous voulez
Lecture de type PLC5 Lire des données de type nombre entier à 16 bits, virgule flottante ou chaîne et maintenir l’intégrité des données. Voir Types de données pour les messages de lecture et d’écriture de type PLC5, page 164.
Ecriture de type PLC5 Ecrire des données de type nombre entier à 16 bits, virgule flottante ou chaîne et maintenir l’intégrité des données. Voir Types de données pour les messages de lecture et d’écriture de type PLC5, page 164.
Lecture de plage de mot PLC5 Lire une plage contiguë de mots de 16 bits dans la mémoire du PLC-5 quel que soit le type de données.
Cette commande commence à l’adresse définie comme élément source et lit de façon séquentielle le nombre de mots de 16 bits demandé.
Les données de l’élément source sont stockées, en commençant à l’adresse spécifiée comme point de destination.
Ecriture de plage de mot PLC5 Ecrire une plage contiguë de mots de 16 bits à partir de la mémoire du Logix5000 quel que soit le type de données vers la mémoire du PLC-5.
Cette commande commence à l’adresse définie comme point source et lit de façon séquentielle le nombre de mots de 16 bits demandé.
Les données du point source sont stockées, en commençant à l’adresse spécifiée comme élément de destination dans le processeur PLC-5.
Publication 1756-RM003K-FR-P – Juillet 2008 163
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Le tableau suivant indique les types de données à utiliser avec les messages de lecture et d’écriture de type PLC5.
Les commandes de type lecture et écriture fonctionnent également avec les processeurs SLC 5/03 (OS303 et ultérieur), SLC 5/04 (OS402 et ultérieur) et SLC 5/05.
Le diagramme suivant montre comment les commandes de type lecture et écriture et de plage de mots diffèrent. L’exemple utilise des commandes de lecture d’un processeur PLC-5 vers un automate Logix5000.
Types de données pour les messages de lecture et d’écriture de type PLC5
Pour ce type de données PLC-5 Utilisez ce type de données Logix5000
B INT
F REAL
N INT
DINT (N’écrivez des valeurs DINT sur un automate PLC-5 que si la valeur est ≥ –32 768 et ≤ 32 767.)
S INT
ST STRING
mots de 16 bits dans processeur PLC-5
mots de 32 bits dans automate Logix5000
Les commandes de type lecture et écriture maintiennent la structure et la valeur des données.
1
2
3
4
Commande de type lecture
1
2
3
4
mots de 16 bits dans processeur PLC-5
mots de 32 bits dans automate Logix5000
Les commandes de plage de mots remplissent le point de destination de façon contiguë. La structure et la valeur des données changent selon le type des données de destination.
1
2
3
4
Commande de lecture de plage de mots
1
3
2
4
164 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Définition des messages SLC
Utilisez les types de message SLC pour communiquer avec les automates SLC et MicroLogix. Le tableau suivant indique à quels types de données l’instruction vous permet d’accéder. Le tableau indique également le type de données Logix5000 correspondant.
Définition des messages de bloc-transfert
Les types de message bloc-transfert sont utilisés pour communiquer avec les modules par bloc-transfert sur un réseau RIO.
Pour configurer un message bloc-transfert, observez les directives suivantes :
• les points source (pour BTW) et destination (pour BTR) doivent être assez longs pour accepter les données demandées, excepté pour les structures MESSAGE, AXIS et MODULE ;
• spécifiez combien de nombres entiers de 16 bits (INT) envoyer ou recevoir. Vous pouvez spécifier de 0 à 64 nombres entiers.
Définition des messages PLC-3
Les messages de type PLC-3 sont conçus pour les processeurs PLC-3.
Pour ce type de données SLC ou MicroLogix
Utilisez ce type de données Logix5000
F REAL
L (automates MicroLogix 1200 et 1500) DINT
N INT
Si vous voulez Sélectionnez cette commande
Lire des données à partir d’un module par bloc-transfert.
Ce type de message remplace l’instruction BTR.
Bloc-transfert lecture
Ecrire des données vers un module par bloc-transfert.
Ce type de message remplace l’instruction BTW.
Bloc-transfert écriture
Si vous voulez que Définissez
le module à bloc-transfert détermine combien de nombres entiers de 16 bits envoyer (BTR).
0 comme nombre d’éléments
l’automate envoie 64 nombres entiers (BTW).
Publication 1756-RM003K-FR-P – Juillet 2008 165
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Sélectionnez cette commande
Si vous voulez
Ecriture de type PLC3 Lire des données de nombres entiers ou de type REAL.
Pour les nombres entiers, cette commande lit des entiers de 16 bits à partir du processeur PLC-3 et les stocke dans des tableaux de données SINT, INT ou DINT dans l’automate Logix5000 et maintient l’intégrité des données.
Cette commande lit également les données à virgule flottante à partir du processeur PLC-3 et les stocke dans un point de type de données REAL dans l’automate Logix5000.
Ecriture de type PLC3 Ecrire des données de nombres entiers ou de type REAL.
Cette commande écrit des données SINT ou INT, dans le fichier de nombres entiers PLC-3 et maintient l’intégrité des données. Vous pouvez écrire des données DINT tant qu’elles entrent dans un type de données INT (−32 768 ≥ données ≤ 32 767).
Cette commande écrit également les données REAL à partir de l’automate Logix5000 vers un fichier à virgule flottante PLC-3 (fichier de type F).
Lecture de plage de mot PLC3 Lire une plage contiguë de mots de 16 bits dans la mémoire du PLC-3 quel que soit le type de données.
Cette commande commence à l’adresse définie comme élément source et lit de façon séquentielle le nombre de mots de 16 bits demandé.
Les données de l’élément source sont stockées, en commençant à l’adresse spécifiée comme point de destination.
Ecriture de plage de mot PLC3 Ecrire une plage contiguë de mots de 16 bits à partir de la mémoire du Logix5000 quel que soit le type de données vers la mémoire du PLC-3.
Cette commande commence à l’adresse définie comme point source et lit de façon séquentielle le nombre de mots de 16 bits demandé.
Les données du point source sont stockées, en commençant à l’adresse spécifiée comme élément de destination dans le processeur PLC-3.
166 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Le diagramme suivant montre comment les commandes de type lecture et écriture et de plage de mots diffèrent. L’exemple utilise des commandes de lecture d’un processeur PLC-3 vers un automate Logix5000.
Définition des messages PLC-2
Les messages de type PLC-2 sont conçus pour les processeurs PLC-2.
Le message de transfert utilise des mots de 16 bits, assurez-vous que le point du Logix5000 stocke les données transférées de façon appropriée (généralement sous forme de tableau INT).
mots de 16 bits dans processeur PLC-3
mots de 32 bits dans automate Logix5000
Les commandes de type lecture et écriture maintiennent la structure et la valeur des données.
1
2
3
4
Commande de type lecture
1
2
3
4
mots de 16 bits dans processeur PLC-3
mots de 32 bits dans automate Logix5000
Les commandes de plage de mots remplissent le point de destination de façon contiguë. La structure et la valeur des données changent selon le type des données de destination.
1
2
3
4
Commande de lecture de plage de mot
1
3
2
4
Sélectionnez cette commande
Si vous voulez
Lecture non protégée PLC2 lire des mots de 16 bits à partir de n’importe quelle zone de la table de données PLC-2 ou du fichier de compatibilité PLC-2 d’un autre processeur.
Ecriture non protégée PLC2 écrire des mots de 16 bits vers n’importe quelle zone de la table de données PLC-2 ou du fichier de compatibilité PLC-2 d’un autre processeur.
Publication 1756-RM003K-FR-P – Juillet 2008 167
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Exemples de configuration MSG
Les exemples suivants montrent des points source et destination et des éléments pour différentes combinaisons d’automates.
Pour des instructions MSG ayant pour origine un automate Logix5000 et écrivant dans un autre automate :
Pour des instructions MSG ayant pour origine un automate Logix5000 et lisant à partir d’un autre automate :
Chemin du message Exemple de source et de destination
Logix5000 → Logix5000 point source array_1[0]
point de destination array_2[0]
Vous pouvez utiliser un point d’alias pour le point source (dans l’automate Logix5000 d’origine).
Vous ne pouvez pas utiliser un alias pour le point de destination. La destination doit être un point de base.
Logix5000 → PLC-5
Logix5000 → SLC
point source array_1[0]
élément de destination N7:10
Vous pouvez utiliser un point d’alias pour le point source (dans l’automate Logix5000 d’origine).
Logix5000 → PLC-2 point source array_1[0]
élément de destination 010
Chemin du message Exemple de source et de destination
Logix5000 → Logix5000 point source array_1[0]
point de destination array_2[0]
Vous ne pouvez pas utiliser un point d’alias pour le point source. La source doit être un point de base.
Vous pouvez utiliser un point d’alias pour le point de destination (dans l’automate Logix5000 d’origine).
Logix5000 → PLC-5
Logix5000 → SLC
élément source N7:10
point de destination array_1[0]
Vous pouvez utiliser un point d’alias pour le point de destination (dans l’automate Logix5000 d’origine).
Logix5000 → PLC-2 élément source 010
point de destination array_1[0]
168 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Définition de la communication
Pour configurer une instruction MSG, spécifiez les détails suivants dans l’onglet Communication.
Définition d’un chemin
Le chemin décrit l’acheminement du message vers la destination. Il utilise soit les noms dans la configuration des E/S de l’automate, soit les nombres que vous saisissez, ou les deux.
Définition d’un chemin
Définition d’une méthode de communication ou d’une adresse de module
Choix d’une option de cache
Si Action
La configuration des E/S de l’automate inclut le module qui obtient le message.
Utilisez le bouton Browse (parcourir) pour sélectionner le module.
La configuration des E/S de l’automate n’inclut que le module de communication local.
1. Utilisez le bouton Browse pour sélectionner le module de communication local.
2. Entrez le reste du chemin.
La configuration des E/S de l’automate n’inclut aucun des modules dont vous avez besoin pour le message.
Entrez le chemin.
Publication 1756-RM003K-FR-P – Juillet 2008 169
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Pour entrer un chemin, utilisez ce format :
port, adresse_suivante, port, adresse_suivante, …
Exemple
La configuration des E/S de l’automate inclut le module qui obtient le message.
La configuration des E/S de l’automate n’inclut que le module de communication local.
La configuration des E/S de l’automate n’inclut aucun des modules dont vous avez besoin pour le message.
Cliquez sur le bouton Browse (parcourir) et sélectionnez le module.
Aller au module de communication local.
Sorter par le port EtherNet/IP...
pour aller à l’adresse 10.10.10.10.
Passer par le bus intermodules…
jusqu’au module dans le logement 0.
jusqu’au module de communication dans le logement 1
Sorter par le port ControlNet...
pour aller à la station 4
Passer par le bus intermodules…
jusqu’au module dans le logement 0.
Passer par le bus intermodules…
170 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Où Est
Pour ce réseau Entrer
port bus intermodules 1
DF1 (série, voie série 0) 2
ControlNet
EtherNet/IP
DH+ voie A
DH+ voie B 3
DF1 voie 1 (voie série 1)
adresse_suivante bus intermodules numéro de logement du module
DF1 (série) adresse de station (0 – 254)
ControlNet numéro de station (1 – 99 décimal)
DH+ 8# suivi du numéro de station (1 – 77 octal)
Par exemple, pour définir l’adresse de station octale 37, tapez 8#37.
EtherNet/IP Vous pouvez spécifier un module sur un réseau Ethernet/IP à l’aide d’un des formats suivants :
adresse IP (par exemple, 10.10.10.10) ;
adresse IP:Port (par exemple, 10.10.10.10:24).
nom DNS (par exemple, réservoirs)
nom DNS:Port (par exemple, réservoirs:24)
Publication 1756-RM003K-FR-P – Juillet 2008 171
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Pour les blocs-transferts
Pour les messages de bloc-transfert, ajoutez les modules suivants à la configuration des E/S de l’automate :
Définition d’une méthode de communication ou d’une adresse de module
Utilisez le tableau suivant pour sélectionner une méthode de communication ou une adresse de module pour le message.
Pour les blocs-transferts sur ce réseau
Ajoutez ces modules à la configuration des E/S
ControlNet • module de communication local (par exemple, module 1756-CNB)
• module adaptateur distant (par exemple, module 1771-ACN)
RIO • module de communication local (par exemple, module 1756-DHRIO)
• un module adaptateur distant (par exemple, module 1771-ASB) pour chaque rack, ou partie de rack, dans un châssis
• module bloc-transfert (en option)
Si le dispositif de destination est un
Sélectionnez Et spécifiez
Automate Logix5000 CIP aucune autre spécification requise
Automate PLC-5 sur réseau EtherNet/IP
Automate PLC-5 sur réseau ControlNet
Automate SLC 5/05
Automate PLC-5 sur réseau DH+ DH+ Voie : Voie A ou B du module 1756-DHRIO connecté au réseau DH+
Automate SLC sur réseau DH+ Lien source : Identificateur de liaison attribué au fond de panier de l’automate dans la table de routage du module 1756-DHRIO. (La station source dans la table de routage est automatiquement le numéro d’emplacement de l’automate).
Processeur PLC-3 Lien destinataire : Identificateur de la liaison DH+ à l’endroit où le dispositif cible réside
Processeur PLC-2 Station destinataire : Adresse de station de l’équipement cible, en octal
S’il n’y a qu’une liaison DH+ et que vous n’avez pas utilisé le logiciel RSLinx pour configurer le module DH/RIO pour les liaisons décentralisées, spécifiez 0 pour Lien source et Lien destinataire.
172 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Choix d’une option de cache
Selon la configuration choisie pour une instruction MSG, elle peut utiliser une connexion pour envoyer et recevoir des données.
Application sur une station de travail qui reçoit un message non sollicité acheminé via un réseau Ethernet/IP ou ControlNet à l’aide de RSLinx
CIP avec ID source
(Ceci permet à l’application de recevoir des données d’un automate.)
Lien source : Identificateur distant de la rubrique dans le logiciel RSLinx
Lien destinataire : Identificateur de liaison virtuelle configuré dans RSLinx (0 – 65 535)
Station destinataire : Identificateur de destination (0 – 77 octal) fourni par l’application à RSLinx Pour une rubrique DDE dans RSLinx, utilisez 77.
Le numéro d’emplacement de l’automate ControlLogix est utilisé comme station source.
Module bloc-transfert sur un réseau d’E/S décentralisées
RIO Voie : Voie A ou B du module 1756-DHRIO connecté au réseau RIO
Rack : Numéro de rack (octal) du module
Groupe : Numéro de groupe du module
Emplacement : Numéro de l’emplacement où se trouve le module
Module bloc-transfert sur réseau ControlNet
ControlNet Emplacement : Numéro de l’emplacement où se trouve le module
Si le dispositif de destination est un
Sélectionnez Et spécifiez
Ce type de message Et cette méthode de communication
Utilise une connexion
Lecture ou écriture de table de données CIP ✓
PLC2, PLC3, PLC5 ou SLC (tous types) CIP
CIP avec ID source
DH+ ✓
CIP générique votre option (1)
Bloc-transfert lecture ou écriture ✓
(1) Vous pouvez connecter des messages CIP génériques. Mais pour la plupart des applications, il est recommandé de laisser les messages CIP génériques sans connexion.
Publication 1756-RM003K-FR-P – Juillet 2008 173
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Si une instruction MSG utilise une connexion, vous avez la possibilité de laisser la connexion ouverte (cache) ou de fermer la connexion lorsque le message est transmis.
L’automate possède les limites suivantes pour le nombre de connexions que vous pouvez mettre en cache:
Si plusieurs messages vont vers le même dispositif, les messages peuvent partager une connexion.
Si vous Action
Mettez la connexion en cache
La connexion reste ouverte une fois l’instruction MSG terminée. Ceci permet d’optimiser le temps d’exécution. Etablir une connexion à chaque exécution du message augmente le temps d’exécution.
Ne mettez pas la connexion en cache
La connexion est fermée une fois l’instruction MSG terminée. Ceci permet de libérer la connexion pour d’autres utilisations.
Avec cette révision de firmware
Vous pouvez mettre en cache
11.x ou antérieure • des messages de bloc-transfert pour 16 connexions au maximum
• d’autres types de messages pour 16 connexions au maximum
12.x ou ultérieure jusqu’à 32 connexions
Si les instructions MSG sont pour Et qu’elles sont Action
différents dispositifs Chaque instruction MSG utilise 1 connexion.
le même dispositif activées en même temps Chaque instruction MSG utilise 1 connexion.
PAS activées en même temps Les instructions MSG partagent la connexion. (Elles comptent ensemble comme 1 connexion.)
EXEMPLE Partager une connexion
Si l’automate alterne entre envoyer un message de lecture de bloc-transfert et un message d’écriture de bloc-transfert vers le même module, les deux messages comptent ensemble comme 1 connexion. Mettre les messages en cache compte comme 1 dans la liste de la mémoire cache.
174 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Recommandations
Observez les recommandations suivantes pour la planification et la programmation de vos instructions MSG :
Recommandation Détails
1. Pour chaque instruction MSG, créez un point de commande.
Chaque instruction MSG requiert son propre point de commande.
• Type de données = MESSAGE
• Champ d’application = automate
• Le point ne peut pas faire partie d’un tableau ou d’un type de données utilisateur
2. Conservez les données source et/ou destination comme des données d’automate.
Une instruction MSG ne peut accéder qu’aux points qui se trouvent dans le dossier Controller Tags (points d’automate).
3. Si votre instruction MSG est destinée à un dispositif qui utilise des nombres entiers de 16 bits, utilisez un buffer de valeurs INT dans l’instruction MSG et de DINT dans le projet.
Si votre message est destiné à un dispositif qui utilise des nombres entiers de 16 bits, comme un automate PLC-5® ou SLC 500™, et qu’il transfère des nombres entiers (pas des valeurs REAL), utilisez un buffer de valeurs INT dans le message et des valeurs DINT dans le projet.
Ceci permet d’améliorer l’efficacité de votre projet parce que les automates Logix sont exécutés plus efficacement et utilisent moins de mémoire pour travailler avec des nombres entiers de 32 bits (DINT).
Pour la conversion de valeurs INT en DINT, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
4. Mettez en cache les instructions MSG avec connexion qui sont exécutées le plus souvent.
Mettez en cache la connexion de ces instructions MSG qui sont exécutées le plus souvent, jusqu’au nombre maximum autorisé en fonction de la révision de votre automate.
Ceci permet d’optimiser le temps d’exécution parce que l’automate n’a pas besoin d’établir une connexion à chaque fois qu’un message est exécuté.
5. Si vous voulez activer plus de 16 instructions MSG à la fois, utilisez une stratégie de gestion.
Si vous activez plus de 16 instructions MSG à la fois, certaines de ces instructions peuvent subir des retards pour entrer dans la file d’attente. Pour garantir l’exécution de chaque message, utilisez une des options suivantes :
• activez chaque message séquentiellement ;
• activez les messages en groupes ;
• programmez un message pour qu’il communique avec plusieurs dispositifs. Pour plus d’informations, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
• créez un programme pour coordonner l’exécution des messages. Pour plus d’informations, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
6. Maintenez le nombre d’instructions MSG sans connexion et sans cache inférieur au nombre de buffers sans connexion.
L’automate peut avoir 10 à 40 buffers sans connexion. Le nombre par défaut est 10.
• Si tous les buffers sans connexion sont utilisés lorsqu’une instruction sort de la file des messages, l’instruction génère une erreur et ne transfère pas les données.
• Vous pouvez augmenter le nombre de buffers sans connexion (40 max.), mais observez en permanence la recommandation 5.
• Pour augmenter le nombre de buffers sans connexion, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Publication 1756-RM003K-FR-P – Juillet 2008 175
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Lire une valeur système (GSV) et écrire une valeur système (SSV)
Les instructions GSV/SSV lisent et écrivent les données système de l’automate qui sont stockées dans les objets.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux des instructions GSV et SSV en logique à relais.
Opérande Type Format Description
Nom de la classe nom nom de l’objet
Nom d’instance nom nom de l’objet spécifique, lorsque celui-ci a besoin d’un nom
Nom d’attribut nom attribut de l’objet
le type des données dépend de l’attribut sélectionné
Destination (GSV) SINT
INT
DINT
REAL
structure
point destination des données de l’attribut
Source (SSV) SINT
INT
DINT
REAL
structure
point point contenant les données que vous voulez copier dans l’attribut
GSV(ClassName,InstanceName,AttributeName,Dest);
SSV(ClassName,InstanceName,AttributeName,Source);
176 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Description : Les instructions GSV/SSV lisent et écrivent les données système de l’automate qui sont stockées dans les objets. L’automate stocke les données système dans des objets. Il n’y a pas de fichier d’état, comme dans le processeur PLC-5.
Lorsqu’elle est activée, l’instruction GSV récupère les informations spécifiées et les stocke dans la destination. Lorsqu’elle est activée, l’instruction SSV écrit des données de la source dans l’attribut spécifié.
Lorsque vous entrez une instruction GSV/SSV, le logiciel de programmation affiche les classes d’objets valables, les noms d’objets et les noms d’attributs pour chaque instruction. Pour l’instruction GSV, vous pouvez obtenir des valeurs pour tous les attributs disponibles. Pour l’instruction SSV, le logiciel n’affiche que les attributs pouvant être écrits (SSV).
La section Objets GSV/SSV montre les attributs de chaque objet et les types de données associés. Par exemple, l’attribut MajorFaultRecord de l’objet Program nécessite un type de données DINT[11].
ATTENTION Utilisez les instructions GSV et SSV avec précaution. La modification des objets peut entraîner un fonctionnement inattendu de l’automate ou des blessures corporelles.
Vous devez tester et vous assurez que les instructions ne modifient pas des données que vous voulez préservées.
Les instructions GVS et SSV sont susceptibles d’écrire ou de lire au-delà d’un membre dans d’autres membres d’un point. Si le point est trop petit, les instructions n’écrivent pas et ne lisent pas les données. Elles génèrent un défaut mineur à la place.
Exemple 1
Le Membre_A est trop petit pour l’attribut. L’instruction GSV écrit la dernière valeur dans le Membre_B.
Exemple 2
Mon_Point est trop petit pour l’attribut. L’instruction GSV s’arrête et enregistre un défaut mineur.
Publication 1756-RM003K-FR-P – Juillet 2008 177
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Un défaut mineur se produit si Type de défaut Code de défaut
l’adresse d’objet est incorrecte 4 5
l’objet spécifié ne prend pas en charge GSV/SSV 4 6
l’attribut est incorrect 4 6
l’information disponible n’est pas suffisante pour une instruction SSV
4 6
la destination de GSV n’était pas assez grande pour contenir les données demandées
4 7
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. --
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
--
EnableIn est activé -- EnableIn est toujours activé.
L’instruction est exécutée.
L’instruction est exécutée Lire ou définir la valeur spécifiée. Lire ou définir la valeur spécifiée.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
178 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Objets GSV/SSV Lorsque vous entrez une instruction GSV/SSV, vous spécifiez l’objet et l’attribut auquel vous voulez accéder. Dans certains cas, il y a plus d’une occurrence du même type d’objet, vous pouvez donc éventuellement devoir aussi spécifier le nom de l’objet. Par exemple, il peut y avoir plusieurs tâches dans votre application. Chaque tâche a son propre objet TASK auquel vous accédez par le nom de la tâche.
Vous pouvez accéder aux objets suivants :
Accéder à l’objet CONTROLLER
L’objet CONTROLLER fournit des informations d’état sur l’exécution d’un automate.
ATTENTION Pour l’instruction GSV, seule la taille de données spécifiée est copiée vers la destination. Par exemple, si l’attribut est défini comme SINT et la destination est DINT, seuls les 8 bits de poids faible de la destination DINT sont mis à jour, les autres 24 bits restent inchangés.
Pour des informations sur cet objet Voir la page ou la publication suivante
AXIS ControlLogix Motion Module Setup and Configuration Manual, publication 1756-UM006
CONTROLLER 179
CONTROLLERDEVICE 181
CST 183
DF1 184
FAULTLOG 187
MESSAGE 188
MODULE 190
MOTIONGROUP 191
PROGRAM 192
ROUTINE 193
SERIALPORT 193
TASK 195
WALLCLOCKTIME 197
Publication 1756-RM003K-FR-P – Juillet 2008 179
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Attribut Type de données
Instruction Description
TimeSlice INT GSV
SSV
Pourcentage d’UC disponible attribué aux communications.
Les valeurs acceptables vont de 10 à 90. Cette valeur ne peut pas être modifiée lorsque le commutateur à clé de l’automate est en position Exécution.
ControllerLogTotalEntryCount DINT SSV
GSV
Nombre d’entrées du journal de l’automate depuis la dernière mise à jour du firmware.
Le nombre est réinitialisé si la RAM passe dans un mauvais état.
Le nombre est limité à la valeur DINT la plus élevée.
ControllerLogExecutionModificationCount DINT SSV
GSV
Nombre d’entrées du journal de l’automate provenant d’une modification des propriétés du programme/tâche, d’une modification en ligne ou d’une modification de la tranche de temps de l’automate. Peut également être configuré pour inclure des entrées de journal provenant des forçages.
Le nombre est réinitialisé si la RAM passe dans un mauvais état.
Le nombre n’est pas limité à la valeur DINT la plus élevée et un retour à la valeur de départ peut se produire.
ControllerLogUnsavedEntryCount DINT GSV Nombre d’entrées du journal de l’automate qui ne sont pas encore mémorisées sur un support amovible.
Le nombre est compris entre 0 et le nombre maximum d’entrées.
ControllerLogAutoWrite BOOL MSG Indicateur utilisé pour déterminer si l’écriture automatique du journal de l’automate sur un support amovible est activée.
0 = écriture auto désactivée (par défaut).
1 = le journal de l’automate tente d’écrire sur un support amovible lorsque le journal est plein à 80 %.
ExecutionCountConfigureMask DINT MSG Tableau de bits utilisé pour déterminer ce qui provoque l’augmentation de Modify Execution Count (modifier comptage d’exécution).
0 = réglage par défaut (tout sauf les forçages).
1 = forçages inclus (tout et les forçages).
180 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet CONTROLLERDEVICE
L’objet CONTROLLERDEVICE identifie la partie matérielle de l’automate.
Attribut Type de données
Instruction Description
DeviceName SINT[33] GSV Chaîne ASCII qui identifie la référence de l’automate et de la carte mémoire.
Le premier octet contient le nombre de caractères ASCII renvoyés dans la chaîne de tableau.
ProductCode INT GSV Identifie le type de l’automate
ProductRev INT GSV Identifie la version du produit. L’affichage doit être hexadécimal.
L’octet de poids faible contient la révision majeure ; l’octet de poids fort contient la révision mineure.
SerialNumber DINT GSV Numéro de série du dispositif.
Le numéro de série est attribué lors de la construction du dispositif.
Automate Logix Code produit
CompactLogix5320 43
CompactLogix5330 44
CompactLogix5335E 65
ControlLogix5550 3
ControlLogix5553 50
ControlLogix5555 51
ControlLogix5561 54
ControlLogix5562 55
ControlLogix5563 56
DriveLogix5720 48
FlexLogix5433 41
FlexLogix5434 42
SoftLogix5860 15
Publication 1756-RM003K-FR-P – Juillet 2008 181
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Status INT GSV Les bits identifient l’état :
Les bits 3 à 0 sont réservés
Bits d’état du dispositif
Bits 7-4 : Signification :0000 réservé
0001 mise à jour mémoire flash en cours
0010 réservé
0011 réservé
0100 mémoire flash défectueuse
0101 en défaut
0110 exécution
0111 programme
Bits d’état de défaut
Bits 11-8 : Signification :0001 défaut mineur récupérable
0010 défaut mineur irrécupérable
0100 défaut majeur récupérable
1000 défaut majeur irrécupérable
Bits d’état spécifiques au Logix5000
Bits 13-12 : Signification :01 commutateur à clé sur Run
10 commutateur à clé sur Program
11 commutateur à clé sur Remote
Bits 15-14 : Signification :
01 l’automate change de mode
10 mode de débogage si l’automate est en mode Run
Type INT GSV Identifie le dispositif comme automate.
Automate = 14
Vendor INT GSV Identifie le fournisseur du dispositif.
Allen-Bradley = 0001
Attribut Type de données
Instruction Description
182 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet CST
L’objet CST (temps système coordonné) fournit le temps système coordonné à des dispositifs dans un châssis.
Attribut Type de données
Instruction Description
CurrentStatus INT GSV Etat en cours du temps système coordonné. Les bits identifient :
Bit : Signification :
0 panne matérielle du temporisateur : le matériel du temporisateur interne du dispositif est en état de défaut
1 effet de rampe activé : la valeur en cours des 16 bits de poids faible positifs du temporisateur monte à la valeur requise, au lieu de sauter à la valeur inférieure. Ces bits sont manipulés par la méthode de synchronisation par incréments spécifique au réseau.
2 maître de temps système : l’objet CST est une source de temps maître dans le système ControlLogix
3 synchronisé : la valeur en cours de 64 bits de l’objet CST est synchronisée par un objet CST maître via une mise à jour du temps système
4 maître de réseau local : l’objet CST est la source de temps maître du réseau local
5 en mode relais : l’objet CST agit en mode relais temporel
6 maître double détecté : un maître de temps du réseau local en double a été détecté. Ce bit est toujours à 0 pour les stations temporelles
7 non utilisé
8 – 9 00 = station temporelle01 = station maître temporelle10 = station de relais temporelle11 = non utilisé
10 – 15 non utilisé
CurrentValue DINT[2] GSV Valeur en cours du temporisateur. DINT[0] contient les 32 bits de poids faible ; DINT[1] contient les 32 bits de poids fort.
La source de temporisateur est ajustée pour correspondre à la valeur fournie par les services de mise à jour et par la synchronisation du réseau de communication local. L’ajustement est soit une montée jusqu’à la valeur requise, soit un réglage immédiat à cette valeur, tel qu’indiqué dans l’attribut CurrentStatus.
Publication 1756-RM003K-FR-P – Juillet 2008 183
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Accéder à l’objet DF1
L’objet DF1 fournit une interface au driver de communication DF1 que vous pouvez configurer pour le port série.
Attribut Type de données
Instruction Description
ACKTimeout DINT GSV La durée d’attente pour un accusé de réception à une transmission de message (point à point et maître uniquement).
Valeur admissible de 0 à 32 767. Durée exprimée en incréments de 20 ms. La valeur par défaut est 50 (1 seconde).
DiagnosticCounters INT[19] GSV Tableau de compteurs de diagnostic pour le driver de communication DF1.
offset de mot point à point DF1 esclave DF1 maître 0 signature (0x0043) signature (0x0042) signature (0x0044) 1 bits de modem bits de modem bits de modem 2 trames envoyées trames envoyées trames envoyées 3 trames reçues trames reçues trames reçues 4 trames non délivrées trames non délivrées trames non délivrées 5 inutilisé messages réessayés messages réessayés 6 NAK reçus NAK reçus inutilisé 7 ENQ reçus trames d’appel reçues inutilisé 8 trames défectueuses trames défectueuses trames défectueuses
non-acquittées non-acquittées non-acquittées 9 pas de mémoire envoyée NAK pas de mémoire non-acquittée inutilisé 10 trames reçues en double trames reçues en double trames reçues en double 11 mauvais caractères reçus inutilisé inutilisé 12 comptage de récupération DCD comptage de récupération DCD comptage de récupération DCD 13 comptage de modem perdu comptage de modem perdu comptage de modem perdu
14 inutilisé inutilisé durée de scrutation prioritaire maximum 15 inutilisé inutilisé dernière durée de scrutation prioritaire
16 inutilisé inutilisé durée de scrutation normale maximum17 inutilisé inutilisé dernière durée de scrutation normale18 ENQ envoyés inutilisé inutilisé
DuplicateDetection SINT GSV Permet la détection des messages en double.
Value : Signification :0 détection de messages en double désactivéeautre que zéro détection de message en double activée
EmbeddedResponseEnable SINT GSV Active la fonctionnalité de réponse intégrée (point à point uniquement).
Value : Signification :0 lancé uniquement après qu’une réponse ait été
reçue (valeur par défaut)1 activé sans condition
ENQTransmitLimit SINT GSV Le nombre de demandes (ENQ) à envoyer après un timeout ACK (point à point uniquement).
Valeurs admissibles de 0 à 127. La valeur par défaut est 3.
EOTSuppression SINT GSV Active la suppression des transmissions EOT en réponse aux trames d’appel (esclave uniquement).
Value : Signification :0 suppression EOT désactivée (désactivé)autre que zéro suppression EOT activée
184 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
ErrorDetection SINT GSV Spécifie le schéma de détection des erreurs.
Value : Signification :0 BCC (valeur par défaut)1 CRC
MasterMessageTransmit SINT GSV Valeur en cours de la transmission de message maître (maître uniquement).
Value : Signification :0 entre appels de station
1 en séquence d’appel (au lieu du numéro de stationdu maître)
La valeur par défaut est 0.
NAKReceiveLimit SINT GSV Le nombre de NAK reçus en réponse à un message avant l’arrêt de la transmission (communication point à point uniquement).
Valeurs admissibles de 0 à 127. La valeur par défaut est 3.
NormalPollGroupSize INT GSV Nombre de stations à appeler dans le tableau d’appel normal des stations après l’appel de toutes les stations dans le tableau d’appel prioritaire des stations (maître uniquement).
Valeurs admissibles de 0 à 255. La valeur par défaut est 0.
PollingMode SINT GSV Mode d’appel en cours (maître uniquement).
Value : Signification :0 basé sur message, mais n’autorise pas
les esclaves à initier des messages1 basé sur message, et autorise les esclaves
à initier des messages (valeur par défaut)2 standard, transfert de message unique
par scrutation de station3 standard, transfert de multiples messages
par scrutation de station
La valeur par défaut est 1.
ReplyMessageWait DINT GSV La durée (agissant comme maître) d’attente après la réception d’un ACK avant d’appeler l’esclave pour une réponse (maître uniquement).
Valeur admissible de 0 à 65 535. Durée exprimée en incréments de 20 ms. La période par défaut est 5 (100 ms).
StationAddress INT GSV Adresse de station en cours du port série.
Valeurs admissibles de 0 à 254. La valeur par défaut est 0.
SlavePollTimeout DINT GSV La durée en ms, pendant laquelle l’esclave attend que le maître appelle avant qu’il déclare ne pas pouvoir transmettre, parce que le maître est inactif (esclave uniquement).
Valeur admissible de 0 à 32 767. Durée exprimée en incréments de 20 ms. La valeur par défaut est de 3 000 (1 minute).
TransmitRetries SINT GSV Nombre de fois qu’un message est envoyé sans obtenir d’accusé de réception (maître et esclave uniquement).
Valeurs admissibles de 0 à 127. La valeur par défaut est 3.
Attribut Type de données
Instruction Description
Publication 1756-RM003K-FR-P – Juillet 2008 185
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Pour attribuer des valeurs à un des attributs DF1 en attente :
1. Utilisez une instruction SSV pour établir la valeur de l’attribut en attente.
Vous pouvez attribuer autant d’attributs en attente que vous le voulez en utilisant une instruction SSV pour chacun d’eux.
2. Utilisez une instruction MSG pour attribuer la valeur. L’instruction MSG s’applique à chaque attribut en attente que vous réglez. Configurez l’instruction MSG comme suit :
PendingACKTimeout DINT SSV Valeur en attente pour l’attribut ACKTimeout.
PendingDuplicateDetection SINT SSV Valeur en attente pour l’attribut DuplicateDetection.
PendingEmbeddedResponseEnable
SINT SSV Valeur en attente pour l’attribut EmbeddedResponse.
PendingENQTransmitLimit SINT SSV Valeur en attente pour l’attribut ENQTransmitLimit.
PendingEOTSuppression SINT SSV Valeur en attente pour l’attribut EOTSuppression.
PendingErrorDetection SINT SSV Valeur en attente pour l’attribut ErrorDetection.
PendingNormalPollGroupSize INT SSV Valeur en attente pour l’attribut NormalPollGroupSize.
PendingMasterMessageTransmit
SINT SSV Valeur en attente pour l’attribut MasterMessageTransmit.
PendingNAKReceiveLimit SINT SSV Valeur en attente pour l’attribut NAKReceiveLimit.
PendingPollingMode SINT SSV Valeur en attente pour l’attribut PollingMode.
PendingReplyMessageWait DINT SSV Valeur en attente pour l’attribut ReplyMessageWait.
PendingStationAddress INT SSV Valeur en attente pour l’attribut StationAddress.
PendingSlavePollTimeout DINT SSV Valeur en attente pour l’attribut SlavePollTimeout.
PendingTransmitRetries SINT SSV Valeur en attente pour l’attribut TransmitRetries.
Attribut Type de données
Instruction Description
Onglet de configuration MSG Champ Valeur
Configuration Type de message CIP générique
Code de service 0d hex
Type d’objet a2
Identificateur de l’objet 1
Attribut de l’objet laisser vide
Source laisser vide
Nombre d’éléments 0
Destination laisser vide
Communication Chemin chemin de communication vers soi-même (1,s où s = numéro du logement de l’automate)
186 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet FAULTLOG
L’objet FAULTLOG fournit des informations sur les défauts de l’automate.
Attribut Type de données
Instruction Description
MajorEvents INT GSV
SSV
Le nombre d’événements majeurs qui se sont produits depuis la dernière remise à zéro de ce compteur.
MinorEvents INT GSV
SSV
Le nombre de défauts mineurs qui se sont produits depuis la dernière remise à zéro de ce compteur.
MajorFaultBits DINT GSV
SSV
Les bits individuels indiquent la raison du défaut majeur en cours.
Bit : Signification :1 perte d’alimentation3 E/S4 exécution d’instruction (programme)5 gestionnaire des défauts6 chien de garde7 pile8 changement de mode11 mouvement
MinorFaultBits DINT GSV
SSV
Les bits individuels indiquent la raison du défaut mineur en cours.
Bit : Signification :4 exécution d’instruction (programme)6 chien de garde9 port série10 pile
Publication 1756-RM003K-FR-P – Juillet 2008 187
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Accéder à l’objet MESSAGE
Vous pouvez accéder à l’objet MESSAGE par les instructions GSV/SSV. Spécifiez le nom du point du message pour déterminer quel objet MESSAGE vous voulez. L’objet MESSAGE fournit une interface pour la configuration et le déclenchement des communications d’égal à égal. Cet objet remplace le type de données MG du processeur PLC-5.
Pour changer l’attribut d’un MESSAGE, procédez comme suit :
1. Utilisez l’instruction GSV pour obtenir l’attribut MessageType et sauvegardez-le dans un point.
2. Utilisez une instruction SSV pour mettre MessageType à 0.
3. Utilisez une instruction SSV pour régler l’attribut du MESSAGE que vous voulez changer.
4. Utilisez l’instruction SSV pour remettre l’attribut MessageType à sa valeur d’origine obtenue à l’étape 1.
Attribut Type de données
Instruction Description
ConnectionPath SINT[130] GSV
SSV
Données de configuration du chemin de connexion. Les deux premiers octets (octets de poids faible et de poids fort) forment la longueur, en octets, du chemin de connexion.
ConnectionRate DINT GSV
SSV
Débit de trame requis de la connexion.
MessageType SINT GSV
SSV
Spécifie le type de message.
Value : Signification :0 non initialisé
Port SINT GSV
SSV
Indique le port par lequel le message doit être envoyé.
Value : Signification :1 fond de panier2 port série
TimeoutMultiplier SINT GSV
SSV
Détermine le moment où une connexion doit être considérée comme ayant dépassé le timeout et doit être coupée.
Value : Signification :0 la connexion dépassera le timeout à la fréquence
de 4 fois la vitesse d’actualisation (valeur pardéfaut)
1 la connexion dépassera le timeout à la fréquencede 8 fois la vitesse d’actualisation
2 la connexion dépassera le timeout à la fréquencede 16 fois la vitesse d’actualisation
UnconnectedTimeout DINT GSV
SSV
Période du timeout en microsecondes pour tous les messages non connectés. La valeur par défaut est de 30 000 000 microsecondes (30 secondes).
188 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Exemple : L’exemple suivant modifie l’attribut ConnectionPath, pour que le message soit envoyé à un automate différent. Lorsque msg_path est activé, règle le chemin du message msg_1 sur la valeur de msg_1_path. Ceci envoie le message vers un autre automate.
Logique à relais
Texte structuré
IF msg_path THEN
GSV(MESSAGE,msg_1,MessageType,msg_1_type);
SSV(MESSAGE,msg_1,MessageType,tag_a);
SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]);
SSV(MESSAGE,msg_1,MessageType,msg_1_type);
END_IF;
IF NOT msg_1.EN THEN
MSG(msg_1);
END_IF;
Où Est
msg_1 message dont vous voulez changer l’attribut
msg_1_type point qui stocke la valeur de l’attribut Type de message
tag_a point qui stocke un 0.
msg_1_path point de tableau qui stocke le nouveau chemin de connexion du message
0 msg_path
Get System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeDest msg_1_type 2
GSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource tag_a 0
SSV
Set System ValueClass name MESSAGEInstance name msg_1Attribute Name ConnectionPathSource msg_1_path[0] 6
SSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource msg_1_type 2
SSV
1 /msg_1.EN
ENDNER
Type - CIP Data Table WriteMessage Control msg_1 ...
MSG
Get System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeDest msg_1_type
2
Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource tag_a
0
Set System ValueClass name MessageInstance name msg_1Attribute Name ConnectionPathSource msg_1path[0]
6
Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource msg_1_type
2
Type – CIP Data Table WriteMessage Control msg_1
GSV SSV
SSV SSV
MSG
msg_path
msg_1.ENENDNER
Publication 1756-RM003K-FR-P – Juillet 2008 189
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Accéder à l’objet MODULE
L’objet MODULE fournit des informations d’état sur un module. Pour sélectionner un objet MODULE particulier, réglez l’opérande Object Name de l’instruction GSV/SSV sur le nom du module. Le module spécifié doit être présent dans la section de configuration des E/S de l’arborescence de l’automate, et doit avoir un nom de dispositif.
Type de données
Instruction Description
EntryStatus INT GSV Indique l’état en cours de l’entrée de configuration spécifiée. Les 12 bits de poids faible doivent être masqués lors d’une opération de comparaison. Seuls les bits 12 à 15 sont valables.
Value : Signification :16#0000 En veille : l’automate est en cours de démarrage
à la mise sous tension.
16#1000 En défaut : une des connexions de l’objet MODULE au module associé échoue. Cette valeur ne doit pasêtre utilisée pour déterminer si le module a échoué,parce que l’objet MODULE quitte cet état périodiquementlorsqu’il essaie de se reconnecter au module. Testez plutôtl’état d’exécution (16#4000). Recherchez les FaultCodedifférents de 0 pour déterminer si un module est en défaut. Lorsqu’il sont en défaut, les attributs FaultCode et FaultInfo sont valables jusqu’à ce que le défaut soitcorrigé.
16#2000 Validation : l’objet MODULE vérifie l’intégrité de l’objet MODULE avant d’établir des connexions vers le module.
16#3000 Connexion : l’objet MODULE initie des connexions vers le module.
16#4000 Exécution : toutes les connexions vers le module sont établies et les données sont transférées avec succès.
16#5000 Arrêt : l’objet MODULE est en train de couper toutes les connexions vers le module.
16#6000 Inhibition : l’objet MODULE est inhibé (le bit d’inhibition de l’attribut Mode est activé).
16#7000 En attente : l’objet MODULE parent dont cet objet MODULE dépend ne fonctionne pas.
FaultCode INT GSV Nombre qui identifie un défaut de module, le cas échéant.
FaultInfo DINT GSV Fournit des informations spécifiques sur le code de défaut de l’objet MODULE.
ForceStatus INT GSV Spécifie l’état des forçages.
Bit : Signification :0 forçages installés (1=oui, 0=non)1 forçages activés (1=oui, 0=non)2 – 15 inutilisés
190 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet MOTIONGROUP
L’objet MOTIONGROUP fournit des informations d’état sur un groupe d’axes pour le module d’asservissement. Spécifiez le nom du point du groupe d’axes pour déterminer quel objet MOTIONGROUP vous voulez.
Instance DINT GSV Fournit le numéro d’instance de cet objet MODULE.
LEDStatus INT GSV Spécifie l’état en cours des voyants d’E/S sur l’avant de l’automate.
Value : Signification :0 Voyant éteint : aucun objet MODULE n’est configuré pour
l’automate (il n’y a aucun module dans la section deconfiguration des E/S de l’arborescence de l’automate).
1 Rouge clignotant : aucun des objets MODULE nefonctionne.
2 Vert clignotant : au moins un objet MODULE ne fonctionne pas.
3 Vert fixe : tous les objets Module fonctionnent.
Note : vous n’entrez pas de nom d’objet avec cet attribut parce qu’il sert à l’ensemble des modules.
Mode INT GSV
SSV
Spécifie le mode en cours de l’objet MODULE.
Bit : Signification :0 Lorsqu’il est activé, génère un défaut majeur si une des
connexions de l’objet MODULE se met en défaut pendant que l’automate est en mode Run.
2 Lorsqu’il est activé, fait passer l’objet MODULE à l’étatd’inhibition après avoir coupé toutes les connexions versle module.
Type de données
Instruction Description
Attribut Type de données
Instruction Description
Instance DINT GSV Fournit le numéro d’instance de cet objet MOTION_GROUP.
Publication 1756-RM003K-FR-P – Juillet 2008 191
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Accéder à l’objet PROGRAM
L’objet PROGRAM fournit des informations d’état sur un programme. Spécifiez le nom du programme pour déterminer quel objet MESSAGE vous voulez.
Attribut Type de données Instruction Description
DisableFlag SINT GSV
SSV
Commande l’exécution de ce programme.
Value : Signification :0 exécution activée1 exécution désactivée
Instance DINT GSV Fournit le numéro d’instance de cet objet PROGRAM.
LastScanTime DINT GSV
SSV
Durée nécessaire à l’exécution de ce programme la dernière fois qu’il a été exécuté. La durée est en microsecondes.
MajorFaultRecord DINT[11] GSV
SSV
Enregistre les défauts majeurs pour ce programme.
Il est recommandé de créer une structure utilisateur pour simplifier l’accès à l’attribut MajorFaultRecord :
Nom : Type de données : Style : Description :
TimeLow DINT Décimal 32 bits de poids faible de la valeur d’horodatage du défaut
TimeHigh DINT Décimal 32 bits de poids fort de la valeur d’horodatage du défaut
Type INT Décimal type du défaut (programme, E/S, etc.)
Code INT Décimal code unique pour le défaut (dépend du type du défaut)
Info DINT[8] Hexadécimal information spécifique sur le défaut (dépend du type et du code du défaut)
MaxScanTime DINT GSV
SSV
Durée d’exécution maximum enregistrée pour ce programme. La durée est en microsecondes.
MinorFaultRecord DINT[11] GSV
SSV
Enregistre les défauts mineurs pour ce programme.
Il est recommandé de créer une structure utilisateur pour simplifier l’accès à l’attribut MinorFaultRecord :
Nom : Type de données : Style : Description :
TimeLow DINT Décimal 32 bits de poids faible de la valeur d’horodatage du défaut
TimeHigh DINT Décimal 32 bits de poids fort de la valeur d’horodatage du défaut
Type INT Décimal type du défaut (programme, E/S, etc.)
Code INT Décimal code unique pour le défaut (dépend du type du défaut)
Info DINT[8] Hexadécimal information spécifique sur le défaut (dépend du type et du code du défaut)
SFCRestart INT GSV
SSV
inutilisé – réservé à une utilisation future
192 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet ROUTINE
L’objet ROUTINE fournit des informations d’état sur un sous-programme. Spécifiez le nom du sous-programme pour déterminer quel objet ROUTINE vous voulez.
Accéder à l’objet SERIALPORT
L’objet SERIALPORT fournit une interface au port de communication série.
Attribut Type de données
Instruction Description
Instance DINT GSV Fournit le numéro d’instance de cet objet ROUTINE.
Les valeurs acceptables vont de 0 à 65 535.
Attribut Type de données
Instruction Description
BaudRate DINT GSV Spécifie la vitesse en bauds.
Les valeurs disponibles sont 110, 300, 600, 1 200, 2 400, 4 800, 9 600 et 19 200 (valeur par défaut).
DataBits SINT GSV Spécifie le nombre de bits de données par caractère.
Value : Signification :7 7 bits de données (ASCII uniquement)8 8 bits de données (valeur par défaut)
Parity SINT GSV Spécifie la parité.
Value : Signification :0 pas de parité (pas de valeur par défaut)1 parité impaire (ASCII uniquement)2 parité paire
RTSOffDelay INT GSV Délai d’arrêt de la ligne RTS après la transmission du dernier caractère.
Valeur admissible de 0 à 32 767. Durée exprimée en incréments de 20 ms. La valeur par défaut est de 0 ms.
RTSSendDelay INT GSV Délai de transmission du premier caractère d’un message après le démarrage de la ligne RTS.
Valeur admissible de 0 à 32 767. Durée exprimée en incréments de 20 ms. La valeur par défaut est de 0 ms.
StopBits SINT GSV Spécifie le nombre de bits d’arrêt.
Value : Signification :1 1 bit d’arrêt (valeur par défaut)2 2 bits d’arrêts (ASCII uniquement)
PendingBaudRate DINT SSV Valeur en attente pour l’attribut BaudRate.
PendingDataBits SINT SSV Valeur en attente pour l’attribut DataBits.
Publication 1756-RM003K-FR-P – Juillet 2008 193
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Pour attribuer des valeurs à un des attributs SERIALPORT en attente :
1. Utilisez une instruction SSV pour régler la valeur de l’attribut en attente.
Vous pouvez attribuer autant d’attributs en attente que vous le voulez en utilisant une instruction SSV pour chacun d’eux.
2. Utilisez une instruction MSG pour attribuer la valeur. L’instruction MSG s’applique à chaque attribut en attente que vous réglez. Configurez les instructions MSG comme suit :
PendingParity SINT SSV Valeur en attente pour l’attribut Parity.
PendingRTSOffDelay INT SSV Valeur en attente pour l’attribut RTSOffDelay.
PendingRTSSendDelay INT SSV Valeur en attente pour l’attribut RTSSendDelay.
PendingStopBits SINT SSV Valeur en attente pour l’attribut StopBits.
Attribut Type de données
Instruction Description
Onglet de configuration MSG Champ Valeur
Configuration Type de message CIP générique
Code de service 0d hex
Type d’objet 6f hex
Identificateur de l’objet 1
Attribut de l’objet laisser vide
Source laisser vide
Nombre d’éléments 0
Destination laisser vide
Communication Chemin chemin de communication vers soi-même (1,s où s = numéro du logement de l’automate)
194 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet TASK
L’objet TASK fournit des informations d’état sur une tâche. Spécifiez le nom de la tâche pour déterminer quel objet TASK vous voulez.
Attribut Type de données
Instruction Description
DisableUpdateOutputs DINT GSV
SSV
Active ou désactive le traitement des sorties à la fin d’une tâche.
Pour : Réglez l’attribut sur :
activer le traitement des sorties à la fin de la tâche
0
désactiver le traitement des sorties à la fin de la tâche
1 (ou toute valeur différente de zéro)
EnableTimeOut DINT GSV
SSV
Active ou désactive la fonction de timeout d’une tâche événementielle.
Pour : Réglez l’attribut sur :
désactiver la fonction de timeout 0
activer la fonction de timeout 1 (ou toute valeur différente de zéro)
InhibitTask DINT GSV
SSV
Empêche l’exécution de la tâche. Si une tâche est inhibée, l’automate préscrute tout de même la tâche lorsque l’automate passe du mode Programmation au mode Exécution ou Test.
Pour : Réglez l’attribut sur :
activer la tâche 0 (par défaut)
inhiber (désactiver) la tâche 1 (ou toute valeur différente de zéro)
Instance DINT GSV Fournit le numéro d’instance de cet objet TASK.
Les valeurs acceptables vont de 0 à 31.
LastScanTime DINT GSV
SSV
Durée nécessaire à l’exécution de cette tâche la dernière fois qu’elle a été exécutée. La durée est en microsecondes.
MaxInterval DINT[2] GSV
SSV
L’intervalle de temps maximum entre les exécutions successives de la tâche. DINT[0] contient les 32 bits de poids faible de la valeur, DINT[1] contient les 32 bits de poids fort de la valeur.
Une valeur de 0 indique une exécution ou moins de la tâche.
MaxScanTime DINT GSV
SSV
Durée d’exécution maximum enregistrée pour ce programme. La durée est en microsecondes.
MinInterval DINT[2] GSV
SSV
L’intervalle de temps minimum entre les exécutions successives de la tâche. DINT[0] contient les 32 bits de poids faible de la valeur, DINT[1] contient les 32 bits de poids fort de la valeur.
Une valeur de 0 indique une exécution ou moins de la tâche.
OverlapCount DINT GSV
SSV
Nombre de fois que la tâche a été déclenchée alors qu’elle était encore en cours d’exécution. Valable pour une tâche événementielle ou périodique.
Pour effacer le comptage, réglez l’attribut sur 0.
Publication 1756-RM003K-FR-P – Juillet 2008 195
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Priority INT GSV
SSV
Priorité relative de cette tâche comparée aux autres tâches.
Les valeurs acceptables vont de 1 à 15.
Rate DINT GSV
SSV
Si la tâche est de type : L’attribut de fréquence (Rate) définit :
périodique La période de la tâche. La durée est en microsecondes.
événementielle La valeur de timeout de la tâche. La durée est en microsecondes.
StartTime DINT[2] GSV
SSV
Valeur de WALLCLOCKTIME au début de la dernière exécution de la tâche. DINT[0] contient les 32 bits de poids faible de la valeur, DINT[1] contient les 32 bits de poids fort de la valeur.
Status DINT GSV
SSV
Fournit des informations sur l’état de la tâche. Une fois que l’automate active l’un de ces bits, vous devez effacer le bit manuellement.
Pour déterminer si : Examinez ce bit :
Une instruction EVNT a déclenché la tâche (tâche événementielle uniquement).
0
Un timeout a déclenché la tâche (tâche événementielle uniquement).
1
Un chevauchement s’est produit pour cette tâche.
2
Watchdog DINT GSV
SSV
Limite de temps pour l’exécution de tous les programmes associés avec cette tâche. La durée est en microsecondes.
Si vous entrez 0, ces valeurs sont attribuées :
Temps : Type de tâche :
0,5 s périodique ou événementielle
5 s continue
Attribut Type de données
Instruction Description
196 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Accéder à l’objet WALLCLOCKTIME
L’objet WALLCLOCKTIME fournit un horodatage que l’automate peut utiliser pour la planification.
Attribut Type de données
Instruction Description
CSTOffset DINT[2] GSV
SSV
Décalage positif de CurrentValue de l’objet CST (temps système coordonné, voir page 183). DINT[0] contient les 32 bits de poids faible de la valeur, DINT[1] contient les 32 bits de poids fort de la valeur.
Valeur en μs. La valeur par défaut est 0.
CurrentValue DINT[2] GSV
SSV
Valeur en cours de l’horloge. DINT[0] contient les 32 bits de poids faible de la valeur, DINT[1] contient les 32 bits de poids fort de la valeur.
La valeur est le nombre de microsecondes écoulées depuis 00:00 heure le 1er janvier 1972.
Les objets CST et WALLCLOCKTIME sont mathématiquement reliés dans l’automate. Par exemple, si vous additionnez la valeur CurrentValue CST et la valeur WALLCLOCKTIME CTSOffset, le résultat est la valeur WALLCLOCKTIME CurrentValue.
DateTime DINT[7] GSV
SSV
La date et l’heure dans un format lisible.
DINT[0] année
DINT[1] représentation du mois sous forme de nombre entier(1 – 12)
DINT[2] représentation du jour sous forme de nombre entier(1 – 31)
DINT[3] heure (0 – 23)
DINT[4] minute (0 – 59)
DINT[5] secondes (0 – 59)
DINT[6] microsecondes (0 – 999 999)
Publication 1756-RM003K-FR-P – Juillet 2008 197
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Exemple de programmation GSV/SSV
Obtenir les informations sur les défauts
Les exemples suivants utilisent des instructions GSV pour obtenir des informations sur les défauts.
Exemple 1 : Cet exemple donne des information sur les défauts à partir du module d’E/S disc_in_2 et stocke les données dans une structure définie par l’utilisateur disc_in_2_info.
Logique à relais
Texte structuré
GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode);
GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo);
GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);
Exemple 2 : Cet exemple donne des informations d’état sur le programme discrete et stocke les données dans une structure définie par l’utilisateur discrete_info.
Logique à relais
Texte structuré
GSV(PROGRAM,DISCRETE,LASTSCANTIME,discrete_info.LastScanTime);
GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
198 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Exemple 3 : Cet exemple donne des informations d’état sur la tâche IO_test et stocke les données dans une structure définie par l’utilisateur io_test_info.
Logique à relais
Texte structuré
GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime);
GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime);
GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);
Publication 1756-RM003K-FR-P – Juillet 2008 199
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Configuration d’indicateurs d’activation et de désactivation
L’exemple suivant utilise l’instruction SSV pour activer ou désactiver un programme. Vous pouvez également utiliser cette méthode pour activer ou désactiver un module d’E/S, ce qui est similaire à l’utilisation de bits d’inhibition avec un processeur PLC-5.
Exemple : Selon l’état de SW.1, placez la valeur appropriée dans l’attribut disableflag du programme discrete.
Logique à relais
Texte structuré
IF SW.1 THEN
discrete_prog_flag := enable_prog;
ELSE
discrete_prog_flag := disable_prog;
END_IF;
SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);
200 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Sortie immédiate (IOT) L’instruction IOT actualise immédiatement les données de sortie spécifiées (tâche de sortie ou point produit).
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction IOT en logique à relais.
Description : L’instruction IOT ne tient pas compte de l’intervalle entre trames requis (RPI) d’une connexion de sortie et envoie de nouvelles données par la connexion.
• Une connexion de sortie est une connexion associée au point de sortie d’un module d’E/S ou à un point produit.
• Si la connexion se fait avec un point produit, l’instruction IOT envoie également le déclencheur d’événement à l’automate consommateur. Ceci permet à l’instruction IOT de déclencher une tâche événementielle dans l’automate consommateur.
Pour utiliser une instruction IOT et un point produit pour déclencher une tâche événementielle dans un automate consommateur, configurez le point produit comme suit :
Opérande Type Format Description
actualiser point
point point que vous voulez actualiser, soit un :
• point de sortie d’un module d’E/S
• point produit
Ne pas choisir un membre ou un élément de point. Par exemple, Local:5:0 est OK, mais Local:5:0.Data n’est pas OK.
IOT(output_tag);
Cochez cette case.
Ceci configure le point pour qu’il actualise son déclencheurd’événement uniquement via une instruction IOT.
Publication 1756-RM003K-FR-P – Juillet 2008 201
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Le type de réseau entre les automates détermine quand l’automate consommateur reçoit les nouvelles données et le déclencheur d’événement via l’instruction IOT.
Les schémas suivants comparent la réception des données via une instruction IOT sur les réseaux EtherNet/IP et ControlNet.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Avec l’automate Sur ce réseau Le dispositif consommateur reçoit les données et le déclencheur d’événement
ControlLogix bus intermodules immédiatement
réseau EtherNet/IP immédiatement
réseau ControlNet dans l’intervalle entre trames réel (API) du point consommé (connexion)
SoftLogix5800 Vous pouvez produire et consommer des points uniquement sur un réseau ControlNet.
dans l’intervalle entre trames réel (API) du point consommé (connexion)
Réseau EtherNet/IP Réseau ControlNet
tâche événementielledans l’automate
consommateur
valeurs chargées dans lepoint produit
instruction IOT dansl’automate producteur
tâche événementielledans l’automate
consommateur
valeurs chargées dans lepoint produit
instruction IOT dansl’automate producteur
RPI du point produit
202 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT) Chapitre 4
Exécution :
Exemple 1 : Lorsqu’elle est exécutée, l’instruction IOT envoie immédiatement les valeurs du point Local:5:0 au module de sortie.
Logique à relais
Texte structuré
IOT (Local:5:O);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. --
L’état d’entrée de la ligne est vrai
L’instruction est exécutée. --
L’état de sortie de la ligne est réglé sur vrai.
EnableIn est activé -- EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction :
• actualise la connexion du point spécifié.
• réinitialise le temporisateur RPI de la connexion.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 203
Chapitre 4 Instructions d’entrée/de sortie (MSG, GSV, SSV, IOT)
Exemple 2 : Cet automate commande la station 24 et produit les données pour la station suivante (station 25). Pour utiliser une instruction IOT pour signaler la transmission de nouvelles données, le point produit est configuré comme suit :
Logique à relais
Texte structuré
Produced_Tag est configuré pour actualiser sondéclencheur d’événement via une instruction IOT.
Si New_Data = on, les événements suivants se produisent pendant une scrutation :
L’instruction CPS active Produced_Tag = Source_Tag.
L’instruction IOT actualise Produced_Tag et envoie cette valeur actualisée à l’automate consommateur (station 25). Lorsque l’automate consommateur reçoit cette valeur actualisée, il déclenche la tâche événementielle associée dans cet automate.
IF New_Data AND NOT Trigger_Consumer THEN
CPS (Source_Tag,Produced_Tag,1);
IOT (Produced_Tag);
END_IF;
Trigger_Consumer := New_Data;
204 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 5
Instructions de comparaison(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introduction Les instructions de comparaison vous permettent de comparer des valeurs à l’aide d’une expression ou d’une instruction de comparaison spécifique.
Vous pouvez comparer des valeurs de différents types de données, tels que virgule flottante et nombre entier.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
comparer des valeurs sur la base d’une expression
CMP Logique à relaisTexte structuré(1)
206
tester si deux valeurs sont égales EQU Logique à relaisTexte structuré(2)
Bloc fonctionnel
211
tester si une valeur est supérieure ou égale à une autre valeur
GEQ Logique à relaisTexte structuré(1)
Bloc fonctionnel
215
tester si une valeur est supérieure à une autre valeur
GRT Logique à relaisTexte structuré(1)
Bloc fonctionnel
219
tester si une valeur est inférieure ou égale à une autre valeur
LEQ Logique à relaisTexte structuré(1)
Bloc fonctionnel
223
tester si une valeur est inférieure à une autre valeur
LES Logique à relaisTexte structuré(1)
Bloc fonctionnel
227
tester si une valeur est comprise entre deux autres valeurs
LIM Logique à relaisTexte structuré(1)
Bloc fonctionnel
231
passer deux valeurs dans un masque et tester si elles sont égales
MEQ Logique à relaisTexte structuré(1)
Bloc fonctionnel
237
tester si une valeur n’est pas égale à une autre valeur
NEQ Logique à relaisTexte structuré(1)
Bloc fonctionnel
242
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l’instruction.
(2) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez l’opérateur dans une expression.
205Publication 1756-RM003K-FR-P – Juillet 2008 205
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Comparaison (CMP) L’instruction CMP effectue une comparaison sur les opérations arithmétiques que vous spécifiez dans l’expression.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction CMP, mais vous pouvez obtenir le même résultat en utilisant une structure SI...ALORS (IF...THEN).
IF BOOL_expression THEN
<déclaration>;
END_IF;
Pour plus d’informations sur la syntaxe des structures et des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : Définissez l’expression CMP avec des opérateurs, des points et des valeurs immédiates. Utilisez des parenthèses ( ) pour définir les sections d’expressions plus complexes.
L’exécution d’une instruction CMP est légèrement plus lente et utilise plus de mémoire que l’exécution des autres instructions de comparaison. L’avantage de l’instruction CMP est qu’elle vous autorise à entrer des expressions complexes dans une seule instruction.
Indicateurs d’état arithmétique : L’instruction CMP n’affecte les indicateurs d’état arithmétique que si l’expression contient un opérateur (ex., +, −, *, /) qui affecte les indicateurs d’état arithmétique.
Conditions d’erreur : Aucune
Opérande Type Format Description
Expression SINT
INT
DINT
REAL
chaîne
immédiat
point
expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
206 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exécution :
Exemples : Si l’instruction CMP trouve l’expression vraie, l’état de sortie de la ligne est réglé sur vrai.
Si vous entrez une expression sans opérateur de comparaison, telle que value_1 + value_2, ou value_1, l’instruction évalue l’expression ainsi :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
fin
évaluer l’expressionl’expression est vraie
l’expression est fausse
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
L’état d’entrée de la ligne est vrai
Si l’expression L’état de sortie de la ligne est réglé sur
différent de zéro vrai
zéro faux
Publication 1756-RM003K-FR-P – Juillet 2008 207
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Expressions CMP
Vous programmez les expressions en instructions CMP de la même façon que les expressions en instructions FSC. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l’ordre d’opération valables, qui sont communs aux deux instructions.
Opérateurs valables
Opérateur Description Optimal
+ addition DINT, REAL
– soustraction/négation DINT, REAL
* multiplication DINT, REAL
/ division DINT, REAL
= égalité DINT, REAL
< inférieur DINT, REAL
<= inférieur ou égal DINT, REAL
> supérieur DINT, REAL
>= supérieur ou égal DINT, REAL
<> différent DINT, REAL
** exposant (x à y) DINT, REAL
ABS valeur absolue DINT, REAL
ACS cosinus d’arc REAL
AND ET sur bits DINT
ASN sinus d’arc REAL
ATN tangente d’arc REAL
COS cosinus REAL
DEG radians en degrés DINT, REAL
FRD DBC à nombre entier DINT
LN logarithme naturel REAL
LOG logarithme décimal REAL
MOD modulo DINT, REAL
NOT complément sur bits DINT
OR OU sur bits DINT
RAD degrés en radians DINT, REAL
SIN sinus REAL
SQR racine carrée DINT, REAL
TAN tangente REAL
TOD DBC à nombre entier DINT
TRN troncation DINT, REAL
XOR OU exclusif sur bits DINT
Opérateur Description Optimal
208 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Formatage d’expressions
Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.
Déterminer l’ordre des opérations
Les opérations que vous écrivez dans l’expression sont effectuées par l’instruction dans un ordre précis, qui n’est pas nécessairement l’ordre dans lequel vous les écrivez. Vous pouvez modifier l’ordre des opérations en groupant des termes entre parenthèses, cela force l’instruction à effectuer une opération entre parenthèses avant les autres opérations.
Les opérations d’ordre identique sont effectuées de gauche à droite.
Pour les opérateurs opérant sur
Utilisez ce format Exemples
un opérande opérateur(opérande) ABS(tag_a)
deux opérandes opérande_a opérateur opérande_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
Ordre Fonctionnement
1. ()
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN
3. **
4. − (négation), NOT
5. *, /, MOD
6. <, <=, >, >=, =
7. − (soustraction), +
8. AND
9. XOR
10. OR
Publication 1756-RM003K-FR-P – Juillet 2008 209
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Utilisation de chaînes dans une expression
Utilisez une expression en logique à relais ou en texte structuré pour comparer les types de données de chaîne. Pour utiliser des chaînes dans une expression, conformez-vous aux directives suivantes :
• Une expression vous permet de comparer deux chaînes de caractères.
• Vous ne pouvez pas entrer des caractères ASCII directement dans l’expression.
• Seuls les opérateurs suivants sont autorisés :
• Les chaînes sont égales si leurs caractères se correspondent.
• Les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
• Les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel.
• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Opérateur Description
= égalité
< inférieur
<= inférieur ou égal
> supérieur
>= supérieur ou égal
<> différent
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
210 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Egal à (EQU) L’instruction EQU teste si Source A est égale à Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les valeurs REAL sont rarement parfaitement égales. Si vous devez déterminer l’égalité de deux valeurs REAL, utilisez l’instruction LIM.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
– tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type chaîne pour Source A et Source B.
Texte structuré
Utilisez le signe égal « = » comme opérateur dans une expression. Cette expression évalue si sourceA est égale à sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
IF sourceA = sourceB THEN
<déclarations>;
Publication 1756-RM003K-FR-P – Juillet 2008 211
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloc fonctionnel
Structure FBD_COMPARE
Description : Utilisez l’instruction EQU pour comparer deux nombres ou deux chaînes de caractères ASCII. Lorsque vous comparez des chaînes :
• les chaînes sont égales si leurs caractères se correspondent ;
• les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
point EQU FBD_COMPARE structure structure EQU
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne de l’instruction logique à relais EQU.
212 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A = Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 213
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est égale à value_2, light_a s’allume. Si value_1 est différente de value_2, light_a s’éteint.
Logique à relais
Texte structuré
light_a := (value_1 = value_2);
Bloc fonctionnel
214 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Supérieur ou égal (GEQ) L’instruction GEQ teste si Source A est supérieure ou égale à Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
– tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type de chaîne pour Source A et Source B.
Texte structuré
Utilisez des signes supérieur à et égal « >= » adjacents comme opérateur dans une expression. Cette expression évalue si sourceA est supérieure ou égale à sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
IF sourceA >= sourceB THEN
<déclarations>;
Publication 1756-RM003K-FR-P – Juillet 2008 215
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloc fonctionnel
Structure FBD_COMPARE
Description : L’instruction GEQ teste si Source A est supérieure ou égale à Source B.
Lorsque vous comparez des chaînes :
• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel ;
• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Opérande Type Format Description
point GEQ FBD_COMPARE structure structure GEQ
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais GEQ.
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
216 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution : Non affectés
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A ≥ Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 217
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est supérieure ou égale à value_2, light_b s’allume. Si value_1 est inférieure à value_2, light_b s’éteint.
Logique à relais
Texte structuré
light_b := (value_1 >= value_2);
Bloc fonctionnel
218 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Supérieur à (GRT) L’instruction GRT teste si Source A est supérieure à Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
– tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type de chaîne pour Source A et Source B.
Texte structuré
Utilisez le signe supérieur à « > » comme opérateur dans une expression. Cette expression évalue si sourceA est supérieure à sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
Opérande Type Format Description
point GRT FBD_COMPARE structure structure GRT
sourceA = sourceB THEN
<déclarations>;
Publication 1756-RM003K-FR-P – Juillet 2008 219
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Description : L’instruction GRT teste si Source A est supérieure à Source B.
Lorsque vous comparez des chaînes :
• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel ;
• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais GRT.
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
220 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A > Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 221
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est supérieure à value_2, light_1 s’allume. Si value_1 est inférieure ou égale à value_2, light_1 s’éteint.
Logique à relais
Texte structuré
light_1 := (value_1 > value_2);
Bloc fonctionnel
222 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Inférieur ou égal (LEQ) L’instruction LEQ teste si Source A est inférieure ou égale à Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
– tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type de chaîne pour Source A et Source B.
Texte structuré
Utilisez des signes inférieur à et égal « >= » adjacents comme opérateur dans une expression. Cette expression évalue si sourceA est inférieure ou égale à sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
IF sourceA <= sourceB THEN
<déclarations>;
Publication 1756-RM003K-FR-P – Juillet 2008 223
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloc fonctionnel
Structure FBD_COMPARE
Description : L’instruction LEQ teste si Source A est inférieure ou égale à Source B.
Lorsque vous comparez des chaînes :
• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel ;
• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Opérande Type Format Description
point LEQ FBD_COMPARE structure structure LEQ
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais LEQ.
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
224 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A ≤ Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 225
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est inférieure ou égale à value_2, light_2 s’allume. Si value_1 est supérieure à value_2, light_2 s’éteint.
Logique à relais
Texte structuré
light_2 := (value_1 <= value_2);
Bloc fonctionnel
226 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Inférieur à (LES) L’instruction LES teste si Source A est inférieure à Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
• Tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type de chaîne pour Source A et Source B.
Texte structuré
Utilisez le signe inférieur à « < » comme opérateur dans une expression. Cette expression évalue si sourceA est inférieure à sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
Opérande Type Format Description
point LES FBD_COMPARE structure structure LES
IF sourceA < sourceB THEN
<déclarations>;
Publication 1756-RM003K-FR-P – Juillet 2008 227
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_COMPARE
Description : L’instruction LES teste si Source A est inférieure à Source B.
Lorsque vous comparez des chaînes :
• les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel ;
• lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais LES.
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
228 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A < Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est faux EnableOut est effacé.
EnableIn est vrai L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 229
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple : Si value_1 est inférieure à value_2, light_3 s’allume. Si value_1 est supérieure ou égale à value_2, light_3 s’éteint.
Logique à relais
Texte structuré
light_3 := (value_1 < value_2);
Bloc fonctionnel
230 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Limite (LIM) L’instruction LIM teste si la valeur Test est comprise entre la limite inférieure (Low Limit) et la limite supérieure (High Limit).
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction LIM, mais vous pouvez obtenir le même résultat en utilisant le texte structuré.
IF (LowLimit <= HighLimit AND(Test >= LowLimit AND Test <= HighLimit)) OR (LowLimit >= HighLimit AND(Test <= LowLimit OR Test >= HighLimit)) THEN
<déclaration>;
END_IF;
Opérande Type Format Description
Limite inférieure
SINT
INT
DINT
REAL
immédiat
point
valeur de la limite inférieure
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Test SINT
INT
DINT
REAL
immédiat
point
valeur à tester
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Limite supérieure
SINT
INT
DINT
REAL
immédiat
point
valeur de la limite supérieure
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Publication 1756-RM003K-FR-P – Juillet 2008 231
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloc fonctionnel
Structure FBD_LIMIT
Description : L’instruction LIM teste si la valeur Test est comprise entre la limite inférieure (Low Limit) et la limite supérieure (High Limit).
Opérande Type Format Description
point LIM FBD_LIMIT structure structure LIM
Paramètre d’entrée Type de données Description
EnableIn BOOL Si effacé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Si activé, l’instruction est exécutée comme décrit sous Exécution.
Réglage par défaut activé.
LowLimit REAL Valeur de la limite inférieure.
Valable = toute valeur en virgule flottante
Test REAL Valeur à tester par rapport aux limites.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais LIM.
HighLimit REAL Valeur de la limite supérieure
Valable = toute valeur en virgule flottante
Si limite inférieure
Et la valeur test est L’état de sortie de la ligne est
≤ limite supérieure égale ou entre les limites vrai
non égale ou hors des limites faux
≥ limite supérieure égale ou hors des limites vrai
non égale ou entre les limites faux
232 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Les nombres entiers signés passent du nombre positif maximum au nombre négatif maximum lorsque le bit de poids fort est activé. Par exemple, dans les nombres entiers de 16 bits (type INT), le nombre entier positif maximum est 32 767, représenté en hexadécimal par 16#7FFF (les bits 0 à 14 sont tous activés). Si vous augmentez ce nombre de un, le résultat est 16#8000 (le bit 15 est activé). Pour les nombres entiers signés, hexadécimal 16#8000 est égal à –32 768 décimal. En augmentant à partir de ce point jusqu’à ce que les 16 bits soient activés, on atteint 16#FFFF, qui est égal à –1 décimal.
Ceci peut être représenté comme une ligne numérique circulaire (voir les diagrammes suivants). L’instruction LIM commence à la limite inférieure (Low Limit) et augmente dans le sens horaire jusqu’à la limite supérieure (High Limit). Toute valeur Test dans la plage de sens horaire, de la limite inférieure (Low Limit) à la limite supérieure (High Limit), règle l’état de sortie de la ligne sur vrai. Toute valeur Test dans la plage de sens horaire, de la limite supérieure (High Limit) à la limite inférieure (Low Limit), règle l’état de sortie de la ligne sur faux.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
−1
0
+1
Limite inférieure
Limite supérieure
+n−(n+1)
n = valeur maximum
Limite inférieure ≤ Limite supérieure
L’instruction est vraie si la valeur de test est égale ou entre les limites inférieure et supérieure
Limite inférieure ≥ Limite supérieure
L’instruction est vraie si la valeur de test est égale à ou hors des limites inférieure et supérieure
−1
0
+1
Limite supérieure
Limite inférieure
+n−(n+1)n = valeur maximum
Publication 1756-RM003K-FR-P – Juillet 2008 233
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
évaluer la limitela comparaison est vraie
la comparaison est
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
234 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exemple 1 : Limite inférieure ≤ Limite supérieure :Lorsque 0 ≤ value ≥ 100, light_1 s’allume. Si value < 0 ou value >100, light_1 s’éteint.
Logique à relais
Texte structuré
IF (value <= 100 AND(value >= 0 AND value <= 100)) OR (value >= 100 AND value <= 0 OR value >= 100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 235
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple 2 : Limite inférieure ≥ Limite supérieure :Lorsque value ≥ 0 ou value ≤ –100, light_1 s’allume. Si value < 0 ou value >−100, light_1 s’éteint.
Logique à relais
Texte structuré
IF (0 <= -100 AND value >= 0 AND value <= -100)) OR (0 >= -100 AND(value <= 0 OR value >= -100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloc fonctionnel
236 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Masque égal à (MEQ) L’instruction MEQ passe les valeurs Source et Compare par un masque et compare les résultats.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction MEQ, mais vous pouvez obtenir le même résultat en utilisant le texte structuré.
IF (Source AND Mask) = (Compare AND Mask) THEN
<déclaration>;
END_IF;
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
valeur à tester par rapport à Compare
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Masque SINT
INT
DINT
immédiat
point
définit les bits à bloquer ou à passer
Un point SINT ou INT est converti en valeur DINT par remplissage par zéros.
Comparer SINT
INT
DINT
immédiat
point
valeur à tester par rapport à Source
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Opérande Type Format Description
point MEQ FBD_MASK_EQUAL structure structure MEQ
Publication 1756-RM003K-FR-P – Juillet 2008 237
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Structure FBD_MASK_EQUAL
Description : Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué. Généralement, les valeurs Source, Mask et Compare sont de même type.
Si vous mélangez des types d’entiers, l’instruction écrit des 0 pour les bits supérieurs dans des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Entrée d’une valeur de masque immédiate
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique : Non affectés
Paramètre d’entrée Type de données Description
EnableIn BOOL Si effacé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Si activé, l’instruction est exécutée comme décrit sous Exécution.
Réglage par défaut activé.
Source DINT Valeur à tester par rapport à Compare.
Valable = tout nombre entier
Masque DINT Définit les bits à bloquer (masque).
Valable = tout nombre entier
Comparer DINT Valeur de comparaison.
Valable = tout nombre entier
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais MEQ.
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
238 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
source masquée = comparaison
oui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 239
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemple 1 : Si la valeur masquée value_1 est égale à la valeur masquée value_2, light_1 s’allume. Si la valeur masquée value_1 est différente de la valeur masquée value_2, light_1 s’éteint. Cet exemple montre que les valeurs masquées sont égales. Un 0 dans le masque empêche l’instruction de comparer ce bit (indiqué par x dans l’exemple).
Logique à relais
Texte structuré
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloc fonctionnel
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
value_1 masquée 0 1 0 1 0 1 0 1 1 1 1 1 X X X X value_2 masquée 0 1 0 1 0 1 0 1 1 1 1 1 X X X X
240 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exemple 2 : Si la valeur masquée value_1 est égale à la valeur masquée value_2, light_1 s’allume. Si la valeur masquée value_1 est différente de la valeur masquée value_2, light_1 s’éteint. Cet exemple montre que les valeurs masquées sont différentes. Un 0 dans le masque empêche l’instruction de comparer ce bit (indiqué par x dans l’exemple).
Logique à relais
Texte structuré
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloc fonctionnel
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
value_1 masquée X X X X X X X X X X X X 1 1 1 1 value_2 masquée X X X X X X X X X X X X 0 0 0 0
Publication 1756-RM003K-FR-P – Juillet 2008 241
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Différent de (NEQ) L’instruction NEQ teste si Source A est différente de Source B.
Opérandes :
Logique à relais
• Si vous entrez un point SINT ou INT, la valeur est convertie en valeur DINT par extension de signe.
• Les types de données de chaîne sont :
– le type de données STRING par défaut ;
– tout type de données de chaîne nouveau que vous créez.
• Pour tester les caractères d’une chaîne, entrez un point de type de chaîne pour Source A et Source B.
Texte structuré
Utilisez les signes inférieur à et supérieur à « <> » ensemble comme opérateur dans une expression. Cette expression évalue si sourceA est différente de sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source B
Source B SINT
INT
DINT
REAL
chaîne
immédiat
point
valeur à tester par rapport à Source A
IF sourceA <> sourceB THEN
<déclarations>;
242 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Bloc fonctionnel
Structure FBD_COMPARE
Description : L’instruction NEQ teste si Source A est différente de Source B.
Lorsque vous comparez des chaînes :
• les chaînes de ne sont pas égales si un seul de leurs caractères ne correspond pas dans les deux chaînes ;
• les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
point NEQ FBD_COMPARE structure structure NEQ
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à tester par rapport à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à tester par rapport à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest BOOL Résultat de l’instruction. Ceci est équivalent à l’état de sortie de la ligne pour l’instruction logique à relais NEQ.
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
Publication 1756-RM003K-FR-P – Juillet 2008 243
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source A = Source Boui
non
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
244 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Chapitre 5
Exemple : Si value_1 est différente de value_2, light_4 s’allume. Si value_1 est égale à value_2, light_4 s’éteint.
Logique à relais
Texte structuré
light_4 := (value_1 <> value_2);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 245
Chapitre 5 Instructions de comparaison (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Notes :
246 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 6
Instructions de calcul/mathématiques(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introduction Les instructions de calcul/mathématiques évaluent les opérations arithmétiques à l’aide d’une expression ou d’une instruction arithmétique spécifique.
Vous pouvez mélanger des types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
évaluer une expression CPT Logique à relaisTexte structuré(1)
248
additionner deux valeurs ADD Logique à relaisTexte structuré(2)
Bloc fonctionnel
252
soustraire deux valeurs SUB Logique à relaisTexte structuré(2)
Bloc fonctionnel
255
multiplier deux valeurs MUL Logique à relaisTexte structuré(2)
Bloc fonctionnel
258
diviser deux valeurs DIV Logique à relaisTexte structuré(2)
Bloc fonctionnel
261
déterminer le reste après la division d’une valeur par une autre
MOD Logique à relaisTexte structuré(2)
Bloc fonctionnel
266
calculer la racine carrée d’une valeur SQR
SQRT(3)
Logique à relaisTexte structuré
Bloc fonctionnel
270
prendre le signe opposé d’une valeur NEG Logique à relaisTexte structuré(2)
Bloc fonctionnel
274
prendre la valeur absolue d’une valeur ABS Logique à relaisTexte structuré
Bloc fonctionnel
277
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l’instruction.
(2) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez l’opérateur dans une expression.
(3) Texte structuré uniquement.
247Publication 1756-RM003K-FR-P – Juillet 2008 247
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Calcul (CPT) L’instruction CPT effectue les opérations arithmétiques que vous définissez dans l’expression.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction CPT, mais vous pouvez obtenir le même résultat en utilisant une affectation et une expression.
destination := numeric_expresion;
Pour plus d’informations sur la syntaxe des affectations et des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : L’instruction CPT effectue les opérations arithmétiques que vous définissez dans l’expression. Lorsqu’elle est activée, l’instruction CPT évalue l’expression et stocke le résultat dans la Destination.
L’exécution d’une instruction CPT est légèrement plus lente et utilise plus de mémoire que l’exécution des autres instructions de calcul/mathématiques. L’avantage de l’instruction CPT est qu’elle vous autorise à entrer des expressions complexes dans une seule instruction.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Opérande Type Format Description
Destination SINTINTDINTREAL
point point pour le stockage du résultat
Expression SINTINTDINTREAL
immédiat
point
expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
CONSEIL Il n’y a pas de limite à la longueur d’une expression.
248 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Exécution :
Exemple 1 : Lorsqu’elle est activée, l’instruction CPT évalue value_1 multipliée par 5 et divise ce résultat par le résultat de value_2 divisée par 7 et stocke le résultat final dans result_1.
Exemple 2 : Lorsqu’elle est activée, l’instruction CPT tronque float_value_1 et float_value_2, porte la valeur tronquée float_value_2 à la puissance deux et divise la valeur tronquée float_value_1 par ce résultat, puis stocke le reste après la division dans float_value_result_cpt.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction évalue l’expression et stocke le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 249
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Opérateurs valables
Formatage d’expressions
Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.
Opérateur Description Optimal
+ addition DINT, REAL
- soustraction/négation DINT, REAL
* multiplication DINT, REAL
/ division DINT, REAL
** exposant (x à y) DINT, REAL
ABS valeur absolue DINT, REAL
ACS cosinus d’arc REAL
AND ET sur bits DINT
ASN sinus d’arc REAL
ATN tangente d’arc REAL
COS cosinus REAL
DEG radians en degrés DINT, REAL
FRD DBC à nombre entier DINT
LN logarithme naturel REAL
LOG logarithme décimal REAL
MOD modulo DINT, REAL
NOT complément sur bits DINT
OR OU sur bits DINT
RAD degrés en radians DINT, REAL
SIN sinus REAL
SQR racine carrée DINT, REAL
TAN tangente REAL
TOD DBC à nombre entier DINT
TRN troncation DINT, REAL
XOR OU exclusif sur bits DINT
Opérateur Description Optimal
Pour les opérateurs opérant sur
Utilisez ce format Exemples
un opérande opérateur(opérande) ABS(tag_a)
deux opérandes opérande_a opérateur opérande_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
250 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Déterminer l’ordre des opérations
Les opérations que vous écrivez dans l’expression sont effectuées par l’instruction dans un ordre précis, qui n’est pas nécessairement l’ordre dans lequel vous les écrivez. Vous pouvez modifier l’ordre des opérations en groupant des termes entre parenthèses, cela force l’instruction à effectuer une opération entre parenthèses avant les autres opérations.
Les opérations d’ordre identique sont effectuées de gauche à droite.
Ordre Opération
1. ()
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN
3. **
4. − (négation), NOT
5. *, /, MOD
6. − (soustraction), +
7. AND
8. XOR
9. OR
Publication 1756-RM003K-FR-P – Juillet 2008 251
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Addition (ADD) L’instruction ADD ajoute Source A à Source B et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez le signe plus « + » comme opérateur dans une expression. Cette expression ajoute sourceA à sourceB et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
immédiat
point
valeur à ajouter à Source B
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source B SINT
INT
DINT
REAL
immédiat
point
valeur à ajouter à Source A
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point ADD FBD_MATH structure structure ADD
dest := sourceA + sourceB;
252 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Structure BD_MATH
Description : L’instruction ADD ajoute Source A à Source B et stocke le résultat dans la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à ajouter à SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à ajouter à SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = Source A + Source B
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 253
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Exemple : Ajouter float_value_1 à float_value_2 et placer le résultat dans add_result.
Logique à relais
Texte structuré
add_result := float_value_1 + float_value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
254 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Soustraction (SUB) L’instruction SUB soustrait Source B de Source A et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez le signe moins « − » comme opérateur dans une expression. Cette expression soustrait sourceB de sourceA et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
immédiat
point
valeur à laquelle soustraire Source B
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source B SINT
INT
DINT
REAL
immédiat
point
valeur à soustraire de Source A
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point SUB FBD_MATH structure structure SUB
dest := sourceA – sourceB;
Publication 1756-RM003K-FR-P – Juillet 2008 255
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Structure BD_MATH
Description : L’instruction SUB soustrait Source B à Source A et stocke le résultat dans la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA REAL Valeur à laquelle soustraire SourceB.
Valable = toute valeur en virgule flottante
SourceB REAL Valeur à soustraire de SourceA.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = Source B – Source A
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
256 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Bloc fonctionnel
Exemple : Soustraire float_value_2 de float_value_1 et placer le résultat dans subtract_result.
Logique à relais
Texte structuré
subtract_result := float_value_1 – float_value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 257
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Multiplication (MUL) L’instruction MUL multiplie Source A par Source B et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez le signe de multiplication « ∗ » comme opérateur dans une expression. Cette expression multiplie sourceA par sourceB et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
immédiat
point
valeur du multiplicande
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source B SINT
INT
DINT
REAL
immédiat
point
valeur du multiplicateur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point MUL FBD_MATH structure structure MUL
dest := sourceA * sourceB;
258 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Structure BD_MATH
Description : L’instruction MUL multiplie Source A par Source B et stocke le résultat dans la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source A REAL Valeur du multiplicande.
Valable = toute valeur en virgule flottante
Source B REAL Valeur du multiplicateur.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = Source B x Source A
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 259
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Exemple : Multiplier float_value_1 par float_value_2 et placer le résultat dans multiply_result.
Logique à relais
Texte structuré
multiply_result := float_value_1 ∗ float_value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
260 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Division (DIV) L’instruction DIV divise Source A par Source B et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez le signe de division « / » comme opérateur dans une expression. Cette expression divise sourceA par sourceB et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
immédiat
point
valeur du dividende
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source B SINT
INT
DINT
REAL
immédiat
point
valeur du diviseur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
dest := sourceA / sourceB;
Publication 1756-RM003K-FR-P – Juillet 2008 261
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Structure BD_MATH
Description : Si la Destination n’est pas une valeur REAL, l’instruction gère la partie fractionnaire du résultat comme suit :
Opérande Type Format Description
point DIV FBD_MATH structure structure DIV
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source A REAL Valeur du dividende.
Valable = toute valeur en virgule flottante
Source B REAL Valeur du diviseur.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si Source A La partie fractionnaire du résultat
Exemple
et Source B ne sont pas des valeurs REAL
est tronquée Source A DINT 5
Source B DINT 3
Destination DINT 1
ou Source B est une valeur REAL
est arrondie Source A REAL 5.0
Source B DINT 3
Destination DINT 2
262 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Si Source B (le diviseur) est zéro :
• un défaut mineur se produit :
– Type 4 : défaut programme
– Code 4 : dépassement arithmétique
• la destination est réglée comme suit :
Pour détecter une division par zéro, examinez le bit de défaut mineur (S:MINOR). Voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Exécution :
Logique à relais
Si Source B est zéro et Et la destination est un Et le résultat est La destination est réglée sur
tous les opérandes sont des nombres entiers (SINT, INT ou DINT)
Source A
au moins un opérande est une valeur REAL
SINT, INT ou DINT positif –1
négatif 0
REAL positif 1.$ (infini positif)
négatif –1.$ (infini négatif)
Un défaut mineur se produit si
Type de défaut Code de défaut
le diviseur est zéro 4 4
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = Source A / Source B
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 263
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloc fonctionnel
Exemple 1 : Diviser float_value_1 par float_value_2 et placer le résultat dans divide_result.
Logique à relais
Texte structuré
divide_result := float_value_1 / float_value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
264 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Exemple 2 : Les instructions DIV et MOV travaillent ensemble pour diviser deux nombres entiers, arrondir le résultat et le placer dans un point de nombre entier :
• l’instruction DIV divise dint_a par dint_b ;
• pour arrondir le résultat, la destination est un point REAL. (Si la destination est un point de nombre entier (SINT, INT ou DINT), l’instruction tronque le résultat) ;
• l’instruction MOV déplace le résultat arrondi (real_temp) de DIV vers divide_result_rounded ;
• puisque divide_result_rounded est un point DINT, la valeur de real_temp est arrondie et placée dans la destination DINT.
Logique à relais
43009
Publication 1756-RM003K-FR-P – Juillet 2008 265
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Modulo (MOD) L’instruction MOD divise Source A par Source B et stocke le reste dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez MOD comme opérateur dans une expression. Cette expression divise sourceA par sourceB et enregistre le reste dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
REAL
immédiat
point
valeur du dividende
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source B SINT
INT
DINT
REAL
immédiat
point
valeur du diviseur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point MOD FBD_MATH structure structure MOD
dest := sourceA MOD sourceB;
266 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Structure BD_MATH
Description : si Source B (le diviseur) est zéro :
• un défaut mineur se produit :
– Type 4 : défaut programme
– Code 4 : dépassement arithmétique
• la destination est réglée comme suit :
Pour détecter une division par zéro, examinez le bit de défaut mineur (S:MINOR). Voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source A REAL Valeur du dividende.
Valable = toute valeur en virgule flottante
Source B REAL Valeur du diviseur.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si Source B est zéro et Et la destination est un Et le résultat est La destination est réglée sur
tous les opérandes sont des nombres entiers (SINT, INT ou DINT)
Source A
au moins un opérande est une valeur REAL
SINT, INT ou DINT positif –1
négatif 0
REAL positif 1.$ (infini positif)
négatif –1.$ (infini négatif)
Publication 1756-RM003K-FR-P – Juillet 2008 267
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Exécution :
Logique à relais
Bloc fonctionnel
Un défaut mineur se produit si
Type de défaut Code de défaut
le diviseur est zéro 4 4
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = Source A – ( TRN ( Source A / Source B ) * Source B )
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
Post-scrutation Aucune.
268 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Exemple : Diviser dividend par divisor et placer le reste dans remainder. Dans cet exemple, trois va trois fois dans 10, avec un reste de un.
Logique à relais
Texte structuré
remainder := dividend MOD divisor;
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 269
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Racine carrée (SQR) L’instruction SQR calcule la racine carrée de la Source et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez SQRT comme une fonction. Cette expression calcule la racine carrée de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouve la racine carrée de cette valeur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
dest := SQRT(source);
270 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Description : Si la Destination n’est pas une valeur REAL, l’instruction gère la partie fractionnaire du résultat comme suit :
Si la valeur Source est négative, l’instruction prend la valeur absolue de la Source avant de calculer la racine carrée.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Opérande Type Format Description
point SQR FBD_MATH_ADVANCED structure structure SQR
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Trouve la racine carrée de cette valeur.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si la source est La partie fractionnaire du résultat
Exemple
n’est pas REAL est tronquée Source DINT 3
Destination DINT 1
est REAL est arrondie Source REAL 3.0
Destination DINT 2
Publication 1756-RM003K-FR-P – Juillet 2008 271
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Destination Source=
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
272 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Exemple : Calculer la racine carrée de value_1 et placer le résultat dans sqr_result.
Logique à relais
Texte structuré
sqr_result := SQRT(value_1);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 273
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Négation (NEG) L’instruction NEG change le signe de la Source et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez le signe moins « − » comme opérateur dans une expression. Cette expression change le signe de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
valeur de négation
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point NEG FBD_MATH_ADVANCED structure structure NEG
dest := -source;
274 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Structure BD_MATH
Description : Si vous mettez un signe moins à une valeur négative, le résultat est positif. Si vous mettez un signe moins à une valeur positive, le résultat est négatif.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Par défaut activé
Source REAL Valeur de négation.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = 0 − Source
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 275
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Exemple : Changer le signe de value_1 et placer le résultat dans negate_result.
Logique à relais
Texte structuré
negate_result := -value_1;
Bloc fonctionnel
276 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Valeur absolue (ABS) L’instruction ABS prend la valeur absolue de la Source et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez ABS comme une fonction. Cette expression calcule la valeur absolue de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
valeur de laquelle prendre la valeur absolue
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point ABS FBD_MATH_ADVANCED structure structure ABS
dest := ABS(source);
Publication 1756-RM003K-FR-P – Juillet 2008 277
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Structure FBD_MATH_ADVANCED
Description : L’instruction ABS prend la valeur absolue de la Source et stocke le résultat dans la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Paramètre d’entrée Type de données Description
EnableIn BOOL Entrée activée. Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Valeur de laquelle prendre la valeur absolue.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Destination = | Source |
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
278 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Chapitre 6
Exemple : Placer la valeur absolue de value_1 dans value_1_absolute. Dans cet exemple, la valeur absolue de quatre négatif est quatre positif.
Logique à relais
Texte structuré
value_1_absolute := ABS(value_1);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 279
Chapitre 6 Instructions de calcul/mathématiques (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Notes :
280 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 7
Instructions de transfert/logiques(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introduction Vous pouvez mélanger des types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Les instructions de transfert modifient et déplacent les bits.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
copier une valeur MOV Logique à relais
Texte structuré(1)
283
copier une partie spécifique d’un nombre entier MVM Logique à relais 285
copier une partie spécifique d’un nombre entier dans un bloc fonctionnel
MVMT Texte structuré
Bloc fonctionnel
288
transférer des bits à l’intérieur d’un nombre entier ou entre des nombres entiers
BTD Logique à relais 292
déplacer des bits dans un nombre entier ou entre des nombres entiers dans un bloc fonctionnel
BTDT Texte structuré
Bloc fonctionnel
295
effacer une valeur CLR Texte structuré(1)
Logique à relais
298
réarranger les octets d’un point INT, DINT ou REAL
SWPB Logique à relais
Texte structuré
300
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l’instruction.
Publication 1756-RM003K-FR-P – Juillet 2008 281
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Les instructions logiques effectuent des opérations sur les bits.
Si vous voulez faire : Utilisez cette instruction :
Disponible dans ces langages Voir page
une opération ET sur bits ET sur bits
&(1)
Logique à relais
Texte structuré(2)
Bloc fonctionnel
304
une opération OU sur bits OU sur bits Logique à relais
Texte structuré(2)
Bloc fonctionnel
307
une opération OU exclusif sur bits XOR sur bits Logique à relais
Texte structuré(2)
Bloc fonctionnel
310
une opération NON sur bits NON sur bits Logique à relais
Texte structuré(2)
Bloc fonctionnel
313
une opération ET logique sur un maximum de huit entrées booléennes
ET booléen (BAND) Texte structuré(2)
Bloc fonctionnel
316
une opération OU logique sur un maximum de huit entrées booléennes
OU booléen (BOR) Texte structuré(2)
Bloc fonctionnel
319
une opération OU exclusive sur deux entrées booléennes
OU exclusif booléen (BXOR) Texte structuré(2)
Bloc fonctionnel
322
complémenter une entrée booléenne NON booléen (BNOT) Texte structuré(2)
Bloc fonctionnel
325
(1) Texte structuré uniquement.
(2) En texte structuré, les opérations ET, OU, XOR et NON peuvent être sur bits ou logiques.
282 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Transfert (MOV) L’instruction MOV copie la Source vers la Destination. La Source reste inchangée.
Opérandes :
Logique à relais
Texte structuré
Utilisez une affectation « := » avec une expression. Cette affectation transfert la valeur de source vers dest.
Pour plus d’informations sur la syntaxe des affectations et des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : L’instruction MOV copie la Source vers la Destination. La Source reste inchangée.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
valeur à transférer (copier)
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
dest := source;
Publication 1756-RM003K-FR-P – Juillet 2008 283
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exécution :
Exemple : Transférer les données de value_1 vers value_2.
Logique à relais
Texte structuré
value_2 := value _1;
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction copie la Source dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
284 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Transfert avec masque (MVM)
L’instruction MVM copie la Source vers une Destination et permet de masquer une partie des données.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom MVMT, voir page 288.
Opérandes :
Logique à relais
Texte structuré
Cette instruction est disponible en texte structuré sous le nom MVMT. Ou vous pouvez combiner la logique sur bits avec une expression et affecter le résultat à la destination. L’expression effectue un transfert avec masque sur Source.
Pour plus d’informations sur la syntaxe des affectations et des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : L’instruction MVM utilise un masque pour passer ou bloquer les bits de données Source. Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
valeur à transférer
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Masque SINT
INT
DINT
immédiat
point
bits à bloquer ou à passer
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point point pour le stockage du résultat
dest := (Dest AND NOT (Mask))OR (Source AND Mask);
Publication 1756-RM003K-FR-P – Juillet 2008 285
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Entrée d’une valeur de masque immédiate
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur Aucune
Exécution :
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction passe la Source par le masque et copie le résultat dans la Destination. Les bits non masqués de la Destination restent inchangés.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
286 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exemple : Copier les données de value_a vers value_b, tout en autorisant les données à être masquées (un 0 masque les données de value_a).
Logique à relais
Texte structuré
value_b := (value_b AND NOT (mask_2)) OR(value_a AND mask_2);
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
Les parties grisées montrent les bits qui ont changé dans value_b.
Publication 1756-RM003K-FR-P – Juillet 2008 287
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Transfert masqué avec cible (MVMT)
L’instruction MVMT copie d’abord la Cible (consigne) vers la Destination. Elle compare ensuite la Source masquée à la Destination et applique les changements nécessaires à la Destination. La Cible et la Source ne sont pas modifiées.
Cette instruction est disponible en logique à relais sous le nom MVM, voir page 285.
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_MASKED_MOVE
Variable Type Format Description
point MVMT FBD_MASKED_MOVE structure structure MVMT
Opérande Type Format Description
point MVMT FBD_MASKED_MOVE structure structure MVMT
MVMT(MVMT_tag);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Bloc fonctionnel
Si effacé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré
Pas d’effet. L’instruction est exécutée.
Source DINT Valeur d’entrée à transférer vers la Destination en fonction de la valeur du Masque.
Valable = tout nombre entier
Masque DINT Masque de bits à transférer de Source vers Dest. Pour tous les bits réglés sur 1, les bits correspondant sont transférés de Source vers Dest. Pour tous les bits réglés sur 0, les bits correspondant ne sont pas transférés de Source vers Dest.
Valable = tout nombre entier
Cible DINT Valeur d’entrée à transférer vers Dest avant de transférer les bits de Source à travers le Masque.
Valable = tout nombre entier
288 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Description : Lorsqu’elle est activée, l’instruction MVMT utilise un masque pour passer ou bloquer les bits de données Source. Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Entrée d’une valeur de masque immédiate à l’aide d’une référence d’entrée
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat d’une instruction de transfert avec masque. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
Publication 1756-RM003K-FR-P – Juillet 2008 289
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exécution :
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
Aucune. Aucune.
Première exécution de l’instruction
Aucune. Aucune.
EnableIn est effacé EnableOut est effacé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation Aucune. Aucune.
290 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exemple : 1. Copier Target (cible) dans Dest.
2. Masquer Source et la comparer avec Dest. Tous les changements nécessaires sont faits dans Dest. Source et Cible restent inchangées. Un 0 dans le masque empêche l’instruction de comparer ce bit (indiqué par x dans l’exemple).
Texte structuré
MVMT_01.Source := value _1;
MVMT_01.Mask := mask1;
MVMT_01.Target := target;
MVMT(MVMT_01);
value_masked := MVMT_01.Dest;
Bloc fonctionnel
Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Mask1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
Les parties grisées montrent les bits qui ont changé.
Publication 1756-RM003K-FR-P – Juillet 2008 291
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Répartition champ de bits (BTD)
L’instruction BTD copie les bits spécifiés de la Source, les place dans la position appropriée et les écrit dans la Destination.
Cette instruction est disponible en texte structuré et en bloc fonctionnel sous le nom BTDT, voir page 295.
Opérandes :
Logique à relais
Description : Lorsqu’elle est activée, l’instruction BTD copie un groupe de bits de la Source vers la Destination. Le groupe de bits est identifié par le bit Source (bit de poids faible du groupe) et la Longueur (nombre de bits à copier). Le bit de Destination identifie le bit de poids faible par lequel commencer dans la Destination. La Source reste inchangée.
Si la longueur du champ de bit dépasse la Destination, l’instruction n’enregistre pas les bits supplémentaires. Ces bits ne passent pas au mot suivant.
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
point qui contient les bits à transférer
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Bit source DINT immédiat
(0 – 31 DINT)(0 – 15 INT)(0 – 7 SINT)
numéro du bit (bit de poids faible) à partir duquel commencer le transfert
doit être dans la plage valable du type de données Source
Destination SINT
INT
DINT
point point vers lequel transférer les bits
Bit destination
DINT immédiat
(0 – 31 DINT)(0 – 15 INT)(0 – 7 SINT)
numéro du bit (bit de poids faible) à partir duquel commencer la copie de bits Source
doit être dans la plage valable du type de données Destination
Longueur DINT immédiat (1 – 32)
nombre de bits à transférer
292 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exécution :
Exemple 1 : Lorsqu’elle est activée, l’instruction BTD transfère les bits dans value_1.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction copie et déplace les bits de Source vers la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
value_1avant l’instruction BTD
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
value_1après l’instruction BTD
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Les parties grisées montrent les bits qui ont changé dans value_1.
Bit sourceBit destination
Publication 1756-RM003K-FR-P – Juillet 2008 293
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple 2 : Lorsqu’elle est activée, l’instruction BTD transfère 10 bits de value_1 vers value_2.
value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
value_2avant l’instruction BTD
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
value_2après l’instruction BTD
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
Les parties grisées montrent les bits qui ont changé dans value_2.
Bit source
Bit destination
294 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Répartition champ de bits avec cible (BTDT)
L’instruction BTDT copie d’abord la Cible vers la Destination. L’instruction copie ensuite les bits spécifiés de la Source, les place dans la position appropriée et les écrit dans la Destination. La Cible et la Source ne sont pas modifiées.
Cette instruction est disponible en logique à relais sous le nom BTD, voir page 292.
Opérandes :
Texte structuré
Bloc fonctionnel
Structure FBD_BIT_FIELD_DISTRIBUTE
Variable Type Format Description
point BTDT FBD_BIT_FIELD_DISTRIBUTE structure structure BTDT
Opérande Type Format Description
point BTDT FBD_BIT_FIELD_DISTRIBUTE structure structure BTDT
BTDT(BTDT_tag);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Bloc fonctionnel :
Si désactivé, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Lorsqu’activé, l’instruction est exécutée.
Réglage par défaut activé.
Texte structuré :
Pas d’effet. L’instruction est exécutée.
Source DINT Valeur d’entrée contenant les bits à transférer vers la Destination.
Valable = tout nombre entier
SourceBit DINT La position du bit dans Source (le bit de poids faible à partir duquel commencer le transfert).
Valable = 0 – 31
Longueur DINT Nombre de bits à transférer
Valable = 1 – 32
DestBit DINT La position du bit dans Dest (le bit de poids faible à partir duquel commencer à copier des bits).
Valable = 0 – 31
Publication 1756-RM003K-FR-P – Juillet 2008 295
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Description : Lorsqu’elle est activée, l’instruction BTD copie un groupe de bits de la Source vers la Destination. Le groupe de bits est identifié par le bit Source (bit de poids faible du groupe) et la Longueur (nombre de bits à copier). Le bit de Destination identifie le bit de poids faible par lequel commencer dans la Destination. La Source reste inchangée.
Si la longueur du champ de bit dépasse la Destination, l’instruction n’enregistre pas les bits supplémentaires. Ces bits ne passent pas au mot suivant.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Cible DINT Valeur d’entrée à transférer vers Dest avant de transférer les bits à partir de la Source.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’opération de transfert de bit. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Paramètre d’entrée Type de données
Description
Condition Action bloc fonctionnel Action texte structuré
Pré-scrutation Aucune. Aucune.
Première scrutation de l’instruction
Aucune. Aucune.
Première exécution de l’instruction
Aucune. Aucune.
EnableIn est effacé EnableOut est effacé, l’instruction ne fait rien et les sorties ne sont pas actualisées.
–
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation Aucune. Aucune.
296 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exemple : 1. L’automate copie la Cible dans Dest.
2. SourceBit et Length spécifient quel bits de Source sont copiés dans Dest, en commençant par DestBit. Source et Cible ne sont pas modifiées.
Texte structuré
BTDT_01.Source := source;
BTDT_01.SourceBit := source_bit;
BTDT_01.Length := length;
BTDT_01.DestBit := dest_bit;
BTDT_01.Target := target;
BTDT(BTDT_01);
distributed_value := BTDT_01.Dest;
Bloc fonctionnel
Cible 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SourceBitDestBit
Publication 1756-RM003K-FR-P – Juillet 2008 297
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Effacer (CLR) L’instruction CLR efface tous les bits de la Destination.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction CLR. A la place, affectez un 0 au point que vous voulez effacer. Cette instruction d’affectation efface dest.
Pour plus d’informations sur la syntaxe des affectations et des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : L’instruction CLR efface tous les bits de la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
Destination SINT
INT
DINT
REAL
point point à effacer
dest := 0;
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction efface la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
298 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exemple : Mettre tous les bits de value à 0.
Logique à relais
Texte structuré
value := 0;
Publication 1756-RM003K-FR-P – Juillet 2008 299
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Permutation d’octet (SWPB)
L’instruction SWPB réarrange les octets d’une valeur.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SWPB en logique à relais. Si vous sélectionnez le mode HIGH/LOW, entrez-le ainsi : HIGHLOW ou HIGH_LOW (sans la barre oblique).
Opérande Type Format Entrez
Source INT
DINT
REAL
point point qui contient les octets que vous voulez réarranger
Mode Ordre Si la source est un
Et que vous voulez mettre les octets dans cette configuration (chaque lettre représente un octet différent)
Sélectionnez
INT – n’importe quelle option
DINT
REAL
ABCD ⇒ DCBA REVERSE (ou entrez 0)
ABCD ⇒ CDAB WORD (ou entrez 1)
ABCD ⇒ BADC HIGH/LOW (ou entrez 2)
Destination INT
DINT
REAL
point point qui stocke les octets dans le nouvel ordre
Si la source est un
La destination doit être un
INT INT
DINT
DINT DINT
REAL REAL
SWPB(Source,OrderMode,Dest);
300 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Description : L’instruction SWPB réorganise l’ordre des octets de la Source. Elle place le résultat dans la Destination.
Lorsque vous lisez ou écrivez des caractères ASCII, vous n’avez généralement pas besoin de permuter les caractères. Les instructions de lecture et d’écriture ASCII (ARD, ARL, AWA, AWT) permutent automatiquement les caractères, comme illustré ci-dessous.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
42969
42968
B A Nom du point Valeur Style Type
bar_code[0] AB ASCII INT
A B
lecteur de code à barres
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’état de sortie de la ligne est réglé sur vrai. –
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction réorganise les octets spécifiés. L’instruction réorganise les octets spécifiés.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 301
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple 1 : Chacune des trois instructions SWPB réorganise les octets de DINT_1 selon un ordre différent. L’affichage est de style ASCII et chaque caractère représente un octet. Chaque instruction place les octets, dans le nouvel ordre, dans une Destination différente.
Logique à relais
Texte structuré
SWPB(DINT_1,REVERSE,DINT_1_reverse);
SWPB(DINT_1,WORD,DINT_1_swap_word);
SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);
Exemple 2 : L’exemple suivant inverse les octets dans chaque élément d’un tableau. Pour un projet RSLogix 5000 qui contient cet exemple, ouvrez le dossier RSLogix 5000\Projects\Samples, fichier Swap_Bytes_in_Array.ACD.
1. Initialisez les points. L’instruction SIZE trouve le nombre d’éléments dans array et stocke cette valeur dans array_length. Une instruction suivante utilise cette valeur pour déterminer quand le sous-programme a eu une action sur tous les éléments dans le tableau.
2. Inversez les octets d’un élément dans array.
• L’instruction SWPB inverse les octets du numéro d’élément qui est indiqué par la valeur de index. Par exemple, lorsque index est égal à 0, l’instruction SWPB agit sur array[0].
• L’instruction ADD incrémente index. A l’exécution suivante de l’instruction, l’instruction SWPB agit sur l’élément suivant dans array.
3. Déterminez quand l’instruction SWPB a eu une action sur tous les éléments dans le tableau.
• Si index est inférieur au nombre d’éléments dans le tableau (array_length), poursuivez avec l’élément suivant dans le tableau.
• Si index est égal à array_length, l’instruction SWPB a agi sur tous les éléments du tableau.
302 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Logique à relais
Texte structuré
index := 0;
SIZE (array[0],0,array_length);
REPEAT
SWPB(array[index],REVERSE,array_bytes_reverse[index]);
index := index + 1;
UNTIL(index >= array_length)END_REPEAT;
Initialiser les points.
Inverser les octets.
Déterminer si l’instruction SWPB a eu une action sur tous les éléments dans le tableau.
Publication 1756-RM003K-FR-P – Juillet 2008 303
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
ET sur bits (AND) L’instruction AND effectue une opération ET à l’aide des bits dans Source A et Source B et stocke le résultat dans la Destination.
Pour effectuer une opération ET logique, voir page 316.
Opérandes :
Logique à relais
Texte structuré
Utilisez ET ou le signe « & » comme opérateur dans une expression. Cette expression évalue sourceA ET sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction AND avec Source B
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Source B SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction AND avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point AND FBD_LOGICAL structure structure AND
dest := sourceA AND sourceB
304 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Structure FBD_LOGICAL
Description : Lorsqu’elle est activée, l’instruction évalue l’opération ET :
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA DINT Valeur utilisée par l’instruction AND avec SourceB.
Valable = tout nombre entier
SourceB DINT Valeur utilisée par l’instruction AND avec SourceA.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si le bit de Source A est
Si le bit de Source B est
Le bit de Destination est
0 0 0
0 1 0
1 0 0
1 1 1
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction effectue une opération ET sur bits.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 305
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloc fonctionnel
Exemple : Lorsqu’elle est activée, l’instruction ET effectue une opération ET sur bits sur SourceA et SourceB et place le résultat dans Dest.
Logique à relais
Texte structuré
value_result_and := value_1 AND value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
306 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
OU sur bits (OR) L’instruction OR effectue une opération OU à l’aide des bits dans Source A et Source B et stocke le résultat dans la Destination.
Pour effectuer une opération OU logique, voir page 319.
Opérandes :
Logique à relais
Texte structuré
Utilisez OR comme opérateur dans une expression. Cette expression évalue sourceA OU sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction OR avec Source B
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Source B SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction OR avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point OR FBD_LOGICAL structure structure OR
dest := sourceA OR sourceB
Publication 1756-RM003K-FR-P – Juillet 2008 307
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Structure FBD_LOGICAL
Description : Lorsqu’elle est activée, l’instruction évalue l’opération OU :
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Indicateurs d’état arithmétique Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA DINT Valeur utilisée par l’instruction OR avec SourceB.
Valable = tout nombre entier
SourceB DINT Valeur utilisée par l’instruction OR avec SourceA.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si le bit de Source A est
Si le bit de Source B est
Le bit de Destination est
0 0 0
0 1 1
1 0 1
1 1 1
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction effectue une opération OU sur bits.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
308 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Bloc fonctionnel
Exemple : Lorsqu’elle est activée, l’instruction OU effectue une opération OU sur bits sur SourceA et SourceB et place le résultat dans Dest.
Logique à relais
Texte structuré
value_result_or := value_1 OR value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1
Publication 1756-RM003K-FR-P – Juillet 2008 309
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
OU exclusif sur bits (XOR) L’instruction XOR effectue une opération OU exclusif sur bits à l’aide des bits dans Source A et Source B et stocke le résultat dans la Destination.
Pour effectuer une opération XOR logique, voir page 322.
Opérandes :
Logique à relais
Texte structuré
Utilisez XOR comme opérateur dans une expression. Cette expression évalue sourceA OU exclusif sourceB.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source A SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction XOR avec Source B
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Source B SINT
INT
DINT
immédiat
point
valeur utilisée par l’instruction XOR avec Source A
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point XOR FBD_LOGICAL structure structure XOR
dest := sourceA XOR sourceB
310 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Structure FBD_LOGICAL
Description : Lorsqu’elle est activée, l’instruction évalue l’opération XOR :
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Indicateurs d’état arithmétique Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
SourceA DINT Valeur utilisée par l’instruction XOR avec SourceB.
Valable = tout nombre entier
SourceB DINT Valeur utilisée par l’instruction XOR avec SourceA.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si le bit de Source A est
Si le bit de Source B est
Le bit de Destination est
0 0 0
0 1 1
1 0 1
1 1 0
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction effectue une opération OU sur bits.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 311
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloc fonctionnel
Exemple : Lorsqu’elle est activée, l’instruction XOR effectue une opération XOR sur bits sur SourceA et SourceB et place le résultat dans le point de destination.
Logique à relais
Texte structuré
value_result_xor := value_1 XOR value_2;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1
312 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
NON sur bits (NOT) L’instruction NOT effectue une opération NON à l’aide des bits de la Source et stocke le résultat dans la Destination.
Pour effectuer une opération NON logique, voir page 325.
Opérandes :
Logique à relais
Texte structuré
Utilisez NON comme opérateur dans une expression. Cette expression évalue NON source.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
valeur de négation
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point NON FBD_LOGICAL structure structure NOT
dest := NOT source
Publication 1756-RM003K-FR-P – Juillet 2008 313
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Structure FBD_LOGICAL
Description : Lorsqu’elle est activée, l’instruction évalue l’opération NON :
Si vous mélangez des types d’entiers, l’instruction écrit des 0 dans les bits de poids fort des entiers de taille inférieure, pour qu’ils aient la même taille que les entiers de grande taille.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Par défaut activé
Source DINT Valeur de négation.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Si le bit de la Source est
Le bit de Destination est
0 1
1 0
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction effectue une opération NON sur bits.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
314 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Bloc fonctionnel
Exemple : Lorsqu’elle est activée, l’instruction NON effectue une opération NON sur bits sur Source et place le résultat dans Dest.
Logique à relais
Texte structuré
value_result_not := NOT value_1;
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
Publication 1756-RM003K-FR-P – Juillet 2008 315
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
ET booléen (BAND) L’instruction BAND effectue une opération ET logique sur un maximum de 8 entrées booléennes.
Pour effectuer une opération ET sur bits, voir page 304.
Opérandes :
Texte structuré
Utilisez ET ou le signe « & » comme opérateur dans une expression. Les opérandes doivent être des valeurs ou expressions BOOL qui évaluent les valeurs BOOL. Cette expressions évalue si operandA et operandB sont tous deux activés (vrais).
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe B.
Bloc fonctionnel
Structure FBD_BOOLEAN_AND
Opérande Type Format Description
point BAND FBD_BOOLEAN_AND structure structures BAND
IF operandA AND operandB THEN
<déclaration>;
END_IF;
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
In1 BOOL Première entrée booléenne.
Réglage par défaut activé.
In2 BOOL Deuxième entrée booléenne.
Réglage par défaut activé.
In3 BOOL Troisième entrée booléenne.
Réglage par défaut activé.
In4 BOOL Quatrième entrée booléenne.
Réglage par défaut activé.
In5 BOOL Cinquième entrée booléenne.
Réglage par défaut activé.
In6 BOOL Sixième entrée booléenne.
Réglage par défaut activé.
In7 BOOL Septième entrée booléenne.
Réglage par défaut activé.
316 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Description : L’instruction BAND effectue une opération ET sur un maximum de huit entrées booléennes. Si une entrée n’est pas utilisée, elle est activée (1) par défaut.
Sortie = In1 ET In2 ET In3 ET In4 ET In5 ET In6 ET In7 ET In8
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple 1 : Cet exemple additionne (ET) bool_in1 et bool_in2 et place le résultat dans value_result_and.
Texte structuré
value_result_and := bool_in1 AND bool_in2;
In8 BOOL Huitième entrée booléenne.
Réglage par défaut activé.
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
Out BOOL La sortie de l’instruction.
Paramètre d’entrée Type de données
Description
Condition Action bloc fonctionnel
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Si BOOL_IN1 est
Si BOOL_IN2 est
VALUE_RESULT_AND est
0 0 0
0 1 0
1 0 0
1 1 1
Publication 1756-RM003K-FR-P – Juillet 2008 317
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloc fonctionnel
Exemple 2 : Si bool_in1 et bool_in2 sont activés (vrais), light1 est activé (allumé). Autrement, light1 est désactivé (éteint).
Texte structuré
IF bool_in1 AND bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
318 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
OU booléen (BOR) L’instruction BOR effectue une opération OU logique sur un maximum de huit entrées booléennes.
Pour effectuer une opération OU sur bits, voir page 307.
Opérandes :
Texte structuré
Utilisez OR comme opérateur dans une expression. Les opérandes doivent être des valeurs ou expressions BOOL qui évaluent les valeurs BOOL. Cette expressions évalue si operandA ou operandB, ou les deux sont activés (vrais).
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe B.
Bloc fonctionnel
Structure FBD_BOOLEAN_OR
Opérande Type Format Description
point BOR FBD_BOOLEAN_OR structure structure BOR
IF operandA OR operandB THEN
<déclaration>;
END_IF;
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
In1 BOOL Première entrée booléenne.
Réglage par défaut effacé.
In2 BOOL Deuxième entrée booléenne.
Réglage par défaut effacé.
In3 BOOL Troisième entrée booléenne.
Réglage par défaut effacé.
In4 BOOL Quatrième entrée booléenne.
Réglage par défaut effacé.
In5 BOOL Cinquième entrée booléenne.
Réglage par défaut effacé.
In6 BOOL Sixième entrée booléenne.
Réglage par défaut effacé.
In7 BOOL Septième entrée booléenne.
Réglage par défaut effacé.
Publication 1756-RM003K-FR-P – Juillet 2008 319
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Description : L’instruction BOR effectue une opération OU sur un maximum de huit entrées booléennes. Si une entrée n’est pas utilisée, elle est désactivée (0) par défaut.
Sortie = In1 OU In2 OU In3 OU In4 OU In5 OU In6 OU In7 OU In8
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple 1 : Cet exemple effectue une opération OU sur bool_in1 et bool_in2 et place le résultat dans value_result_or.
Texte structuré
value_result_or := bool_in1 OR bool_in2;
In8 BOOL Huitième entrée booléenne.
Réglage par défaut effacé.
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
Out BOOL La sortie de l’instruction.
Paramètre d’entrée Type de données
Description
Condition Action bloc fonctionnel
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Si BOOL_IN1 est
Si BOOL_IN2 est
VALUE_RESULT_OR est
0 0 0
0 1 1
1 0 1
1 1 1
320 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Bloc fonctionnel
Exemple 2 : Dans cet exemple, light1 est activé (allumé) si :
• uniquement bool_in1 est activé (vrai) ;
• uniquement bool_in2 est activé (vrai) ;
• bool_in1 et bool_in2 sont activés (vrais).
Autrement, light1 est effacé (éteint).
Texte structuré
IF bool_in1 OR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 321
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
OU exclusif booléen (BXOR)
L’instruction BXOR effectue une opération OU exclusive sur deux entrées booléennes.
Pour effectuer une opération XOR sur bits, voir page 310.
Opérandes :
Texte structuré
Utilisez XOR comme opérateur dans une expression. Les opérandes doivent être des valeurs ou expressions BOOL qui évaluent les valeurs BOOL. Cette expressions évalue si uniquement operandA ou uniquement operandB est activé (vrai).
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe B.
Bloc fonctionnel
Structure FBD_BOOLEAN_XOR
Description : L’instruction BXOR effectue une opération OU exclusive sur deux entrées booléennes.
Sortie = In1 XOR In2
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
point BXOR FBD_BOOLEAN_XOR structure structure BXOR
IF operandA XOR operandB THEN
<déclaration>;
END_IF;
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
In1 BOOL Première entrée booléenne.
Réglage par défaut effacé.
In2 BOOL Deuxième entrée booléenne.
Réglage par défaut effacé.
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
Out BOOL La sortie de l’instruction.
322 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
Exécution :
Exemple 1 : Cet exemple effectue une opération OU exclusive sur bool_in1 et bool_in2 et place le résultat dans value_result_xor.
Texte structuré
value_result_xor := bool_in1 XOR bool_in2;
Bloc fonctionnel
Condition Action bloc fonctionnel
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Si BOOL_IN1 est
Si BOOL_IN2 est
VALUE_RESULT_XOR est
0 0 0
0 1 1
1 0 1
1 1 0
Publication 1756-RM003K-FR-P – Juillet 2008 323
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemple 2 : Dans cet exemple, light1 est activé (allumé) si :
• uniquement bool_in1 est activé (vrai) ;
• uniquement bool_in2 est activé (vrai) ;
Autrement, light1 est effacé (éteint).
Texte structuré
IF bool_in1 XOR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
324 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Chapitre 7
NON booléen (BNOT) L’instruction BNOT complète une entrée booléenne.
Pour effectuer une opération NON sur bits, voir page 313.
Opérandes :
Texte structuré
Utilisez NON comme opérateur dans une expression. L’opérande doit être une valeur ou expression BOOL qui évalue les valeurs BOOL. Cette expression évalue si operand est effacé (faux).
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_BOOLEAN_NOT
Description : L’instruction BNOT complémente une entrée booléenne.
Sortie = NOT In
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
point BNOT FBD_BOOLEAN_NOT structure structure BNOT
IF NOT operand THEN
<déclaration>;
END_IF;
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
In BOOL Entrée de l’instruction.
Réglage par défaut activé.
Paramètre de sortie Type de données
Description
EnableOut BOOL Activation de la sortie.
Out BOOL La sortie de l’instruction.
Publication 1756-RM003K-FR-P – Juillet 2008 325
Chapitre 7 Instructions de transfert/logiques (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exécution :
Exemple 1 : Cet exemple complète bool_in1 et place le résultat dans value_result_not.
Texte structuré
value_result_not := NOT bool_in1;
Bloc fonctionnel
Exemple 2 : Si bool_in1 est effacé, light1 est effacé (éteint). Autrement, light1 est activé (allumé).
Texte structuré
IF NOT bool_in1 THEN
light1 := 0;
ELSE
light1 := 1;
END_IF;
Condition Action bloc fonctionnel
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Si BOOL_IN1 est VALUE_RESULT_NOT est
0 1
1 0
326 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 8
Instructions de tableau (fichier)/Instructions diverses(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introduction Les instructions de fichier/instructions diverses fonctionnent sur des tableaux de données.
Vous pouvez mélanger des types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
effectuer des opérations arithmétiques, logiques, de décalage et de fonction sur des valeurs de tableaux
FAL Logique à relais
Texte structuré(1)
333
chercher et comparer des valeurs de tableaux FSC Logique à relais 344
copier le contenu d’un tableau dans un autre COP Logique à relais
Texte structuré
352
copier le contenu d’un tableau dans un autre sans interruption
CPS Logique à relais
Texte structuré
352
remplir un tableau avec des données spécifiques
FLL Logique à relais
Texte structuré(1)
358
calculer la moyenne d’un tableau de valeurs AVE Logique à relais
Texte structuré(1)
362
classer une dimension de données de tableau en ordre croissant
SRT Logique à relais
Texte structuré
367
calculer l’écart type d’un tableau de valeurs STD Logique à relais
Texte structuré(1)
372
trouver la taille d’une dimension de tableau SIZE Logique à relais
Texte structuré
377
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez une autre programmation en texte structuré pour obtenir le même résultat. Voir la description de l’instruction.
Publication 1756-RM003K-FR-P – Juillet 2008 327
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Sélection du mode de fonctionnement
Pour les instructions FAL et FSC, le mode indique à l’automate comment distribuer l’opération de tableau.
Mode Tout
En mode Tout, tous les éléments spécifiés dans le tableau subissent l’opération avant de continuer avec l’instruction suivante. L’opération commence lorsque l’état d’entrée de la ligne de l’instruction passe de faux à vrai. La valeur de position (.POS) de la structure de contrôle indique l’élément du tableau actuellement utilisé par l’instruction. L’opération s’arrête lorsque la valeur .POS est égale à la valeur .LEN.
Si vous voulez Sélectionnez ce mode
opérer sur tous les éléments spécifiés dans un tableau avant de continuer avec l’instruction suivante
Tout
distribuer l’opération de tableau sur plusieurs scrutations
entrez le nombre d’éléments sur lesquels effectuer l’opération à chaque scrutation (1-2147483647)
Numérique
manipuler un élément du tableau chaque fois que l’état d’entrée de la ligne passe de faux à vrai
Incrémental
Tableau de données une scrutation
16639
328 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Le diagramme de temporisation ci-dessous indique la relation entre les bits d’état et le fonctionnement de l’instruction. Lorsque l’exécution de l’instruction est terminée, le bit .DN est activé. Les bits .DN et .EN, ainsi que la valeur .POS, sont effacés lorsque l’état d’entrée de la ligne est faux. A ce stade seulement une autre exécution de l’instruction peut être déclenchée par une transition faux-vrai de l’état d’entrée de la ligne.
Mode Numérique
Le mode Numérique répartit l’opération de tableau entre un certain nombre de scrutations. Ce mode est utile pour travailler avec des données sans temps critique ou avec de grandes quantités de données. Vous entrez le nombre d’éléments sur lesquels agir à chaque scrutation, ce qui réduit la durée de la scrutation.
unescrutation
opération terminée
efface les bits d’état et la valeur .POS
état d’entrée de la ligne
bit .EN
bit .DN
scrutation de l’instruction
40010aucune exécution
Publication 1756-RM003K-FR-P – Juillet 2008 329
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
L’exécution est déclenchée lorsque l’état d’entrée de la ligne passe de faux à vrai. Une fois déclenchée, l’instruction est exécutée continuellement chaque fois qu’elle est scrutée, pendant le nombre de scrutations nécessaires pour terminer l’opération sur le tableau entier. Une fois déclenchée, l’état d’entrée de la ligne peut changer plusieurs fois sans interrompre l’exécution de l’instruction.
Le diagramme de temporisation ci-dessous indique la relation entre les bits d’état et le fonctionnement de l’instruction. Lorsque l’exécution de l’instruction est terminée, le bit .DN est activé.
IMPORTANT Evitez d’utiliser les résultats d’une instruction de fichier fonctionnant en mode Numérique tant que le bit .DN n’est pas activé.
une scrutation
16641
deuxième scrutation
scrutation suivante
scrutations multiples
scrutations multiples
état d’entrée de la ligne
bit .EN
bit .DN
scrutation de l’instruction
efface les bits d’état et la valeur .POS
efface les bits d’état et la valeur .POS
La ligne est vraie à la fin de l’opération La ligne est fausse à la fin de l’opération
40013opération terminée opération terminée
330 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Si l’état d’entrée de la ligne est vrai à la fin de l’opération, les bits .EN et .DN sont activés jusqu’à ce que l’état d’entrée de la ligne passe à faux. Lorsque l’état d’entrée de la ligne passe à faux, ces bits et la valeur .POS sont effacés.
Si l’état d’entrée de la ligne est faux à la fin de l’opération, le bit .EN est immédiatement effacé. Une scrutation après l’effacement du bit .EN, le bit .DN et la valeur .POS sont effacés.
Mode incrémental
Le mode incrémental manipule un élément du tableau chaque fois que l’état d’entrée de la ligne de l’instruction passe de faux à vrai.
Le diagramme de temporisation ci-dessous indique la relation entre les bits d’état et le fonctionnement de l’instruction. L’exécution ne se produit que pendant une scrutation au cours de laquelle l’état d’entrée de la ligne passe de faux à vrai. Chaque fois que ceci se produit, un seul élément du tableau est manipulé. Si l’état d’entrée de la ligne reste vrai pendant plus d’une scrutation, l’instruction n’est exécutée que pendant la première scrutation.
����
16643
1e instruction d’activation2e instruction d’activation3e instruction d’activation
dernière instruction d’activation
unescrutation
état d’entrée de la ligne
bit .EN
bit .DN
scrutation de l’instruction
opérationterminée
efface les bits d’état et la valeur .POS
40014
Publication 1756-RM003K-FR-P – Juillet 2008 331
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Le bit .EN est activé lorsque l’état d’entrée de la ligne est vrai. Le bit .DN est activé lorsque le dernier élément du tableau a été manipulé. Lorsque le dernier élément a été manipulé et que l’état d’entrée de la ligne passe à faux, les bits .EN et .DN, ainsi que la valeur .POS, sont effacés.
Différence entre le mode Incrémental et Numérique au rythme d’un élément par scrutation :
• Le mode Numérique avec n’importe quel nombre d’éléments par scrutation ne requiert qu’une transition de faux à vrai de l’état d’entrée de la ligne pour commencer l’exécution. L’instruction continue d’exécuter le nombre d’éléments spécifié à chaque scrutation jusqu’à la fin, quel que soit l’état d’entrée de la ligne.
• Le mode Incrémental requiert que l’état d’entrée de la ligne passe de faux à vrai pour manipuler un élément du tableau.
332 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Arithmétique et logique sur fichier (FAL)
L’instruction FAL effectue des opérations de copie, arithmétiques, logiques et de fonction sur des données stockées dans un tableau.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction FAL, mais vous pouvez obtenir le même résultat en utilisant une instruction SIZE et une structure POUR...FAIRE (FOR...DO) ou une autre structure de boucle.
SIZE(destination,0,length-1);
FOR position = 0 TO length DO
destination[position] := numeric_expression;
END_FOR;
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Commande CONTROL point structure de commande pour l’opération
Longueur DINT immédiat nombre d’éléments du tableau à manipuler
Position DINT immédiat élément en cours du tableau
la valeur initiale est en général 0
Mode DINT immédiat comment distribuer l’opération
sélectionner INC, ALL ou entrer un nombre
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Expression SINT
INT
DINT
REAL
immédiat
point
expression constituée de points et/ou de valeurs immédiates séparées par des opérateurs
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Publication 1756-RM003K-FR-P – Juillet 2008 333
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Structure CONTROL
Description : L’instruction FAL effectue les mêmes opérations sur les tableaux que l’instruction CPT sur les éléments.
Les exemples qui commencent à la page page 340 indiquent comment utiliser la valeur .POS pour progresser dans un tableau. Si un indice dans l’expression de la Destination est hors limites, l’instruction FAL génère un défaut majeur (type 4, code 20).
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction FAL est activée.
.DN BOOL Le bit de fin est activé lorsque l’instruction a été exécutée sur le dernier élément (.POS = .LEN).
.ER BOOL Le bit d’erreur est activé si l’expression génère un dépassement supérieur (S:V est activé). L’instruction s’arrête jusqu’à ce que le programme remette à 0 le bit .ER. La valeur .POS contient la position de l’élément qui produit le dépassement.
.LEN DINT La longueur spécifie le nombre d’éléments du tableau sur lesquels l’instruction FAL est exécutée.
.POS DINT La position contient la position de l’élément auquel l’instruction est en train d’accéder.
Un défaut majeur se produit si Type de défaut Code de défaut
l’indice est hors limites 4 20
.POS < 0 ou .LEN < 0 4 21
334 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exécution :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DN
bit .DN = 0
bit .DN = 1
L’état d’entrée de la ligne est faux
l’état de sortie de la ligne est faux
fin
le bit .EN est effacéle bit .ER est effacéle bit .DN est effacéla valeur .POS est effacée
mode INCnon
oui
mode TOUTnon
oui
le bit .EN est effacé
.POS = .POS + 1
mode Numérique
le bit interne est effacé
.LEN < 0 ou .POS < 0
oui
non
défaut majeur
.POS = .POS – 1
.POS = 0oui
non
le bit .DN est activé le bit .EN est activé
.POS < .LENnon
oui
.LEN > mode
oui
non
mode = .LEN
.LEN = 0oui
non
le bit .DN est activé le bit .EN est effacé
page 339
Publication 1756-RM003K-FR-P – Juillet 2008 335
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
l’état de sortie de la ligne est vrai
fin
examiner le bit .DN
bit .DN = 0
bit .DN = 1
.LEN = 0non
oui
mode INCnon
oui
mode TOUT
non
oui
loop_count = loop_count – 1
loop_count < 0non
oui
.POS = .POS + 1
évaluer l’expression
.POS = .POS + 1
examiner S:Vnon
oui
le bit .ER est activé
.POS = .LENnon
oui
le bit .DN est activé le bit .EN est activé .POS = .POS + 1
examiner le bit .ER
bit .ER = 0
bit .ER = 1
le bit .DN est activé le bit .EN est activé mode
INCmode TOUT
mode Numérique
commun
page 339
page 337 page 338
.LEN < 0 ou
.POS < 0oui
non
défaut majeur
336 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Condition Action logique à relais
examiner le bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LENoui
non
le bit .EN est activéloop_count = 1.POS = .POS – 1
examinerle bit interne
bit = 1
bit = 0
le bit interne est activé
mode INC
commun
.POS = .POS – 1
.POS = 0oui
non
le bit .DN est activé le bit .EN est activé
l’état de sortie de la ligne est vrai
fin
page 336
Publication 1756-RM003K-FR-P – Juillet 2008 337
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condition Action logique à relais
examiner le bit .EN
bit .EN = 0
bit .EN = 1
.POS = .POS + 1
.POS ≥ .LENoui
non
loop_count = .LEN – .POS.POS = .POS – 1
examinerle bit interne
bit = 1
bit = 0
le bit .EN est activé
mode TOUT
commun
.POS = .POS – 1
.POS = 0oui
non
le bit .DN est activé le bit .EN est activé
l’état de sortie de la ligne est vrai
finpage 336
338 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
examiner le bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LENoui
non
examinerle bit interne
bit = 1
bit = 0
le bit interne est activé
mode Numérique
commun
.POS = .POS – 1
.POS = 0oui
non
le bit .DN est activé le bit .EN est activé
l’état de sortie de la ligne est vrai
fin
.LEN ≥ mode
oui
nonmode = .LEN
le bit .EN est activéloop_count = .LEN – .POS.POS = .POS – 1
mode ≥loop_count
non
le bit .EN est activéloop_count = mode
oui
page 336
Publication 1756-RM003K-FR-P – Juillet 2008 339
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 1 : Lorsqu’elle est activée, l’instruction FAL copie chaque élément de array_2 dans la même position dans array_1.
Exemple 2 : Lorsqu’elle est activée, l’instruction FAL copie value_1 dans les 10 premières positions de la deuxième dimension de array_2.
Exemple 3 : Chaque fois que l’instruction FAL est activée, elle copie la valeur en cours de array_1 vers value_1. L’instruction FAL utilise le mode incrémental, une seule valeur de tableau est ainsi copiée chaque fois que l’instruction est activée. A son activation suivante, l’instruction écrase value_1 avec la valeur suivante de array_1.
Exemple 4 : Lorsqu’elle est activée, l’instruction FAL additionne value_1 et value_2 et enregistre le résultat dans la position en cours de array_1.
copie de tableau à tableau
Expression :array_2[control_2.pos]
Destination :array_1[control_2.pos]
copie d’élément vers tableau
Expression :value_1
Destination :array_2[0,control_2.pos]
copie de tableau vers élément
Expression :array_1[control_1.pos]
Destination :value_1
opération arithmétique : (élément + élément) vers tableau
Expression :value_1 + value_2
Destination :array_1[control_1.pos]
340 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 5 : Lorsqu’elle est activée, l’instruction FAL divise la valeur de la position en cours de array_2 par la valeur de la position en cours de array_3 et enregistre le résultat dans la position en cours de array_1.
Exemple 6 : Lorsqu’elle est activée, l’instruction FAL ajoute la valeur de la position en cours de array_1 à value_1 et enregistre le résultat dans la position en cours de array_3. L’instruction doit être exécutée 10 fois pour que array_1 et array_3 soient entièrement manipulés.
Exemple 7 : Chaque fois que l’instruction FAL est activée, elle ajoute value_1 à la valeur en cours de array_1 et enregistre le résultat dans value_2. L’instruction FAL utilise le mode incrémental, une seule valeur de tableau est ainsi ajoutée à value_1 chaque fois que l’instruction est activée. A son activation suivante, l’instruction écrase value_2.
opération arithmétique : (tableau / tableau) vers tableau
Expression :array_2[control_2.pos] / array_3[control_2.pos]
Destination :array_1[control_2.pos]
opération arithmétique : (tableau + élément) vers tableau
Expression :array_1[control_1.pos] + value_1
Destination :array_3[control_1.pos]
opération arithmétique : (élément + tableau) vers élément
Expression :value_1 + array_1[control_1.pos]
Destination :value_2
Publication 1756-RM003K-FR-P – Juillet 2008 341
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 8 : Lorsqu’elle est activée, l’instruction FAL multiplie la valeur en cours de array_1 par la valeur en cours de array_3 et enregistre le résultat dans value_1. L’instruction FAL utilise le mode incrémental, une seule paire de valeurs de tableau est ainsi multipliée chaque fois que l’instruction est activée. A son activation suivante, l’instruction écrase value_1.
Expressions FAL
Vous programmez les expressions en instructions FAL de la même façon que les expressions en instructions CPT. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l’ordre d’opération valables, qui sont communs aux deux instructions.
Opérateurs valables
opération arithmétique : (tableau ∗ tableau) vers élément
Expression :array_1[control_1.pos] * array_3[control_1.pos]
Destination :value_1
Opérateur Description Optimal
+ addition DINT, REAL
– soustraction/négation DINT, REAL
* multiplication DINT, REAL
/ division DINT, REAL
** exposant (x à y) DINT, REAL
ABS valeur absolue DINT, REAL
ACS cosinus d’arc REAL
AND ET sur bits DINT
ASN sinus d’arc REAL
ATN tangente d’arc REAL
COS cosinus REAL
DEG radians en degrés DINT, REAL
FRD DCB à nombre entier DINT
LN logarithme naturel REAL
LOG logarithme décimal REAL
MOD modulo DINT, REAL
NOT complément sur bits DINT
OR OU sur bits DINT
RAD degrés en radians DINT, REAL
SIN sinus REAL
SQR racine carrée DINT, REAL
TAN tangente REAL
TOD nombre entier à DCB DINT
TRN troncation DINT, REAL
XOR OU exclusif sur bits DINT
Opérateur Description Optimal
342 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Formatage d’expressions
Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.
Déterminer l’ordre des opérations
Les opérations que vous écrivez dans l’expression sont effectuées par l’instruction dans un ordre précis, qui n’est pas nécessairement l’ordre dans lequel vous les écrivez. Vous pouvez modifier l’ordre des opérations en groupant des termes entre parenthèses, cela force l’instruction à effectuer une opération entre parenthèses avant les autres opérations.
Les opérations d’ordre identique sont effectuées de gauche à droite.
Pour les opérateurs opérant sur
Utilisez ce format Exemples
un opérande opérateur(opérande) ABS(tag_a)
deux opérandes opérande_a opérateur opérande_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
Ordre Fonctionnement
1. ()
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN
3. **
4. − (négation), NOT
5. *, /, MOD
6. − (soustraction), +
7. AND
8. XOR
9. OR
Publication 1756-RM003K-FR-P – Juillet 2008 343
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Recherche et comparaison sur fichier (FSC)
L’instruction FSC compare des valeurs dans un tableau, élément par élément.
Opérandes :
Logique à relais
Structure CONTROL
Description : Lorsque l’instruction FSC est activée et que la comparaison est vraie, l’instruction active le bit .FD et le bit .POS reflète la position du tableau à laquelle l’instruction a trouvé la comparaison vraie. L’instruction active le bit .IN pour empêcher la recherche de continuer.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Opérande Type Format Description
Commande CONTROL point structure de commande pour l’opération
Longueur DINT immédiat nombre d’éléments du tableau à manipuler
Position DINT immédiat offset dans le tableau
la valeur initiale est en général 0
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction FSC est activée.
.DN BOOL Le bit de fin est activé lorsque l’instruction a été exécutée sur le dernier élément (.POS = .LEN).
.ER BOOL Le bit d’erreur n’est pas modifié.
.IN BOOL Le bit d’inhibition indique que l’instruction FSC a détecté une vraie comparaison. Vous devez effacer ce bit pour continuer l’opération de recherche.
.FD BOOL Le bit trouvé indique que l’instruction FSC a détecté une vraie comparaison.
.LEN DINT La longueur spécifie le nombre d’éléments du tableau sur lesquels l’instruction est exécutée.
.POS DINT La position contient la position de l’élément auquel l’instruction est en train d’accéder.
Un défaut majeur se produit si Type de défaut Code de défaut
.POS < 0 ou .LEN < 0 4 21
344 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exécution :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DN
bit .DN = 0
bit .DN = 1
L’état d’entrée de la ligne est faux
l’état de sortie de la ligne est faux
fin
le bit .EN est effacéle bit .ER est effacéle bit .DN est effacéla valeur .POS est effacée
mode INCnon
oui
mode TOUTnon
oui
le bit .EN est effacé
.POS = .POS + 1
mode Numérique
le bit interne est effacé
.LEN < 0 ou .POS < 0
oui
non
défaut majeur
.POS = .POS – 1
.POS = 0oui
non
le bit .DN est activé le bit .EN est activé
.POS < .LENnon
oui
.LEN > mode
oui
non
mode = .LEN
.LEN = 0oui
non
le bit .DN est activé le bit .EN est effacé
page 339
Publication 1756-RM003K-FR-P – Juillet 2008 345
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
l’état de sortie de la ligne est vrai
fin
examiner le bit .IN
bit .DN = 0
bit .DN = 1
.LEN = 0non
oui
mode INCnon
oui
mode TOUT
non
oui
loop_count = loop_count – 1
loop_count < 0non
oui
.POS = .POS + 1
évaluer la comparaison
.POS = .POS + 1
correspondancenon
oui
le bit .EN est activéle bit .FD est activéle bit .IN est activé
.POS = .LENnon
oui
le bit .DN est activé le bit .EN est activé .POS = .POS + 1
examiner le bit .ER
bit .ER = 0
bit .ER = 1
le bit .DN est activé le bit .EN est activé mode
INCmode TOUT
mode Numérique
commun
page 339
page 337 page 338
.LEN < 0 ou
.POS < 0oui
non
défaut majeur
examiner le bit .DN
bit .DN = 1
bit .IN = 0
bit .DN = 0
346 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 1 : Recherche d’une correspondance entre deux tableaux Lorsqu’elle est activée, l’instruction FSC compare chacun des 10 premiers éléments de array_1 aux éléments correspondants dans array_2.
Exemple 2 : Recherche d’une correspondance dans un tableau Lorsqu’elle est activée, l’instruction FSC compare MySearchKey à 10 éléments dans array_1.
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
array_1 array_2
L’instruction FSC trouve que ces éléments ne sont pas égaux. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position des éléments qui ne sont pas égaux. Pour continuer à comparer le reste du tableau, effacez le bit .IN.
control_3.pos
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000001111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
MySearchKey référence
L’instruction FSC trouve que cet élément de tableau correspond à MySearchKey. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position de l’élément correspondant. Pour continuer à comparer le reste du tableau, effacez le bit .IN.
control_3.pos
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
11111111111111110000000000000000
Publication 1756-RM003K-FR-P – Juillet 2008 347
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 3 : Recherche d’une chaîne dans un tableau de chaînes Lorsqu’elle est activée, l’instruction FSC compare les caractères dans code à 10 éléments dans code_table.
Expressions FSC
Vous programmez les expressions en instructions FSC de la même façon que les expressions en instructions CMP. Utilisez les sections suivantes pour trouver les informations sur les opérateurs, le format et l’ordre d’opération valables, qui sont communs aux deux instructions.
SAM
AFG 0
BEH 1
HUO 2
SAK 3
SAM 4
FQG 5
CLE 6
CAK 7
DET 8
BWG 9
code code_table
L’instruction FSC trouve que cet élément de tableau correspond à code. Elle active les bits .FD et .IN. La valeur .POS (4) indique la position de l’élément correspondant. Pour continuer à comparer le reste du tableau, effacez le bit .IN.
code_table_search.POS
348 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Opérateurs valables
Formatage d’expressions
Pour chaque opérateur utilisé dans une expression, vous devez fournir un ou deux opérandes (points ou valeurs immédiates). Utilisez le tableau suivant pour formater les opérateurs et les opérandes dans une expression.
Opérateur Description Optimal
+ addition DINT, REAL
– soustraction/négation DINT, REAL
* multiplication DINT, REAL
/ division DINT, REAL
= égalité DINT, REAL
< inférieur DINT, REAL
<= inférieur ou égal DINT, REAL
> supérieur DINT, REAL
>= supérieur ou égal DINT, REAL
<> différent DINT, REAL
** exposant (x à y) DINT, REAL
ABS valeur absolue DINT, REAL
ACS cosinus d’arc REAL
AND ET sur bits DINT
ASN sinus d’arc REAL
ATN tangente d’arc REAL
COS cosinus REAL
DEG radians en degrés DINT, REAL
FRD DCB à nombre entier DINT
LN logarithme naturel REAL
LOG logarithme décimal REAL
MOD modulo DINT, REAL
NOT complément sur bits DINT
OR OU sur bits DINT
RAD degrés en radians DINT, REAL
SIN sinus REAL
SQR racine carrée DINT, REAL
TAN tangente REAL
TOD nombre entier à DCB DINT
TRN troncation DINT, REAL
XOR OU exclusif sur bits DINT
Opérateur Description Optimal
Pour les opérateurs opérant sur
Utilisez ce format Exemples
un opérande opérateur(opérande) ABS(tag_a)
deux opérandes opérande_a opérateur opérande_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
Publication 1756-RM003K-FR-P – Juillet 2008 349
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Déterminer l’ordre des opérations
Les opérations que vous écrivez dans l’expression sont effectuées par l’instruction dans un ordre précis, qui n’est pas nécessairement l’ordre dans lequel vous les écrivez. Vous pouvez modifier l’ordre des opérations en groupant des termes entre parenthèses, cela force l’instruction à effectuer une opération entre parenthèses avant les autres opérations.
Les opérations d’ordre identique sont effectuées de gauche à droite.
Ordre Fonctionnement
1. ()
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN
3. **
4. − (négation), NOT
5. *, /, MOD
6. <, <=, >, >=, =
7. − (soustraction), +
8. AND
9. XOR
10. OR
350 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Utilisation de chaînes dans une expression
Pour utiliser des chaînes de caractères ASCII dans une expression, conformez-vous aux directives suivantes :
• Une expression vous permet de comparer deux chaînes de caractères.
• Vous ne pouvez pas entrer des caractères ASCII directement dans l’expression.
• Seuls les opérateurs suivants sont autorisés :
• Les chaînes sont égales si leurs caractères se correspondent.
• les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
• Les valeurs hexadécimales des caractères déterminent si une chaîne est inférieure ou supérieure à une autre chaîne. Pour trouver le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel.
• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
Opérateur Description
= égalité
< inférieur
<= inférieur ou égal
> supérieur
>= supérieur ou égal
<> différent
Caractères ASCII Codes Hex
71ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
Publication 1756-RM003K-FR-P – Juillet 2008 351
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Copie de fichier (COP) Copie synchrone de fichier (CPS)
Les instructions COP et CPS copient les valeurs de la Source vers la Destination. La Source reste inchangée.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux des instructions COP et CPS de la logique à relais.
Opérande Type Format Description
Source SINT
INT
DINT
REAL
chaîne
structure
point élément initial à copier
Important : les opérandes Source et Destination doivent avoir les mêmes types de données, ou des résultats inattendus peuvent se produire.
Destination SINT
INT
DINT
REAL
chaîne
structure
point élément initial à écraser par la Source
Important : les opérandes Source et Destination doivent avoir les mêmes types de données, ou des résultats inattendus peuvent se produire.
Longueur DINT immédiat
point
nombre d’éléments de Destination à copier
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
352 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Description : Pendant l’exécution des instructions COP et CPS, d’autres actions de l’automate peuvent tenter d’interrompre l’opération de copie et de changer les données de la source ou de la destination :
Le nombre d’octets copiés est :
Nombre d’octets = Longueur ∗ (nombre d’octets du type de données de la Destination)
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Si la source ou la destination est un
Et que vous voulez Sélectionnez Remarques
• point produit
• point consommé
• données d’E/S
• données qu’une autre tâche peut écraser
empêcher les données de changer pendant l’opération de copie
CPS • Les tâches qui tentent d’interrompre une instruction CPS sont interrompues jusqu’à ce que l’instruction soit terminée.
• Pour faire une estimation de la durée d’exécution de l’instruction CPS, voir Système ControlLogix – Manuel utilisateur, publication 1756-UM001.
permettre aux données d’être changées pendant l’opération de copie
COP
aucune des solutions ci-dessus COP
ATTENTION Si le nombre d’octets est supérieur à la longueur de la Source, des données non attendues sont copiées pour les éléments restants.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
Les instructions COP et CPS fonctionne avec une mémoire contiguë. Elle effectue une copie de la mémoire octet par octet. Dans certains cas, elles écrivent au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
La longueur est trop grande si elle est supérieure au nombre total d’éléments du tableau Destination.
Si le point est Action
un type de données utilisateur
Si la longueur est trop grande, l’instruction écrit au-delà de la fin du tableau dans d’autres membres du point. Elle s’arrête à la fin du point. Aucun défaut majeur n’est généré.
PAS un type de données utilisateur
Si la longueur est trop grande, l’instruction s’arrête à la fin du tableau. Aucun défaut majeur n’est généré.
Publication 1756-RM003K-FR-P – Juillet 2008 353
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exécution :
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Exécution de l’instruction
l’état de sortie de la ligne est vrai
fin
end_address = start_address + (Longueur ∗ nombre d’octets dans un élément de destination)
oui
non
end_address > fin du tableau de
destination
end_address = fin du tableau de destination
source_address = Source
oui
non
destination_address = end_address
copier les données de source_address dans destination_address
source_address = source_address + 1
destination_address = destination_address + 1
354 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 1 : array_4 et array_5 ont le même type de données. Lorsqu’elle est activée, l’instruction COP copie les 10 premiers éléments de array_4 dans les 10 premiers éléments de array_5.
Logique à relais
Texte structuré
COP(array_4[0],array_5[0],10);
Exemple 2 : Lorsqu’elle est activée, l’instruction COP copie la structure timer_1 dans l’élément 5 de array_timer. L’instruction ne copie qu’une structure vers un seul élément de tableau.
Logique à relais
Texte structuré
COP(timer_1,array_timer[5],1);
Publication 1756-RM003K-FR-P – Juillet 2008 355
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 3 : Le tableau project_data (100 éléments) stocke des valeurs qui changent à différents moments dans l’application. Pour envoyer une image complète de project_data à un instant donné vers un autre automate, l’instruction CPS copie project_data dans produced_array.
• Pendant que l’instruction CPS copie les données, aucune autre mise à jour des E/S ou aucune autre tâche ne peut modifier les données.
• Le point produced_array produit les données sur un réseau ControlNet pour qu’elles soient consommées par d’autres automates.
• Pour utiliser la même image de données (c.-à-d., une copie synchronisée des données), les automates consommateurs utilisent une instruction CPS pour copier les données du point consommé dans un autre point pour leur utilisation dans l’application.
Logique à relais
Texte structuré
CPS(project_data[0],produced_array[0],100);
Exemple 4 : Local:0:I.Data stocke les données d’entrées pour le réseau DeviceNet qui est connecté au module 1756-DNB dans l’emplacement 0. Pour synchroniser les entrées avec l’application, l’instruction CPS copie les données d’entrées dans input_buffer.
• Pendant que l’instruction CPS copie les données, aucune autre mise à jour des E/S ne peut modifier les données.
• Lors de l’exécution de l’application, elle utilise comme entrées les données d’entrées dans input_buffer.
Logique à relais
Texte structuré
CPS(Local:0:I.Data[0],input_buffer[0],20);
356 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 5 : Cet exemple initialise un tableau de structures temporisateur. Lorsqu’elle est activée, l’instruction MOV initialise les valeurs .PRE et .ACC du premier élément array_timer. Lorsqu’elle est activée, l’instruction COP copie un bloc d’octets contigus, commençant à array_timer[0]. La longueur est de neuf structures temporisateur.
Logique à relais
Texte structuré
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
array_timer[0] Tout d’abord, l’instruction copie les valeurs timer[0] dans timer[1]
array_timer[1] Puis l’instruction copie les valeurs timer[1] dans timer[2]
array_timer[2] Puis l’instruction copie les valeurs timer[2] dans timer[3]
array_timer[3] Puis l’instruction copie les valeurs timer[3] dans timer[4]
array_timer[4]
•
•
•
array_timer[9] Enfin, l’instruction copie les valeurs timer[9] dans timer[10]
array_timer[10]
Publication 1756-RM003K-FR-P – Juillet 2008 357
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Remplir un fichier (FLL) L’instruction FLL remplit les éléments d’un tableau avec la valeur Source. La Source reste inchangée.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction FLL, mais vous pouvez obtenir le même résultat en utilisant une instruction SIZE et une structure POUR...FAIRE (FOR...DO) ou une autre structure de boucle.
SIZE(destination,0,length);
FOR position = 0 TO length-1 DO
destination[position] := source;
END_FOR;
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
élément à copier
Important : les opérandes Source et Destination doivent avoir les mêmes types de données, ou des résultats inattendus peuvent se produire.
Destination SINT
INT
DINT
REAL
structure
point élément initial à écraser par la Source
Important : les opérandes Source et Destination doivent avoir les mêmes types de données, ou des résultats inattendus peuvent se produire.
La meilleure façon d’initialiser une structure est d’utiliser l’instruction COP.
Longueur DINT immédiat nombre d’éléments à remplir
358 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Description : Le nombre d’octets remplis est :
Nombre d’octets = Longueur ∗ (nombre d’octets du type de données de la Destination)
Pour de meilleurs résultats, la Source et la Destination doivent être de même type. Si vous voulez remplir une structure, utilisez l’instruction COP (voir l’exemple 3, page 356). Si vous mélangez les types de données pour la Source et la Destination, les éléments de Destination sont remplis par des valeurs Source converties.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction FLL fonctionne sur des données de mémoire contiguës. Dans certains cas, elle écrit au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
La longueur est trop grande si elle est supérieure au nombre total d’éléments du tableau Destination.
Si le point est Action
un type de données utilisateur
Si la longueur est trop grande, l’instruction écrit au-delà de la fin du tableau dans d’autres membres du point. Elle s’arrête à la fin du point. Aucun défaut majeur n’est généré.
PAS un type de données utilisateur
Si la longueur est trop grande, l’instruction arrête à la fin du tableau. Aucun défaut majeur n’est généré.
Si la source est Et la destination est La Source est convertie en
SINT, INT, DINT ou REAL SINT SINT
SINT, INT, DINT ou REAL INT INT
SINT, INT, DINT ou REAL DINT DINT
SINT, INT, DINT ou REAL REAL REAL
SINT structure SINT (non convertie)
INT structure INT (non convertie)
DINT structure DINT (non convertie)
REAL structure REAL (non convertie)
Publication 1756-RM003K-FR-P – Juillet 2008 359
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exécution :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
l’état de sortie de la ligne est vrai
fin
end_address = start_address + (Longueur ∗ nombre d’octets dans un élément de destination)
oui
non
end_address > fin du tableau de
destination
end_address = fin du tableau de destination
source_address = Source
oui
non
destination_address = end_address
copier les données de source_address dans destination_address
destination_address = destination_address + 1
360 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple : L’instruction FLL copie la valeur de value_1 dans dest_1
Logique à relais
Texte structuré
dest_1 := value _1;
Type de données Source (value_1)
Valeur Source (value_1)
Type de données Destination (dest_1)
Valeur Destination (dest_1) après FLL
SINT 16#80 (-128) DINT 16#FFFF FF80 (-128)
DINT 16#1234 5678 SINT 16#78
SINT 16#01 REAL 1.0
REAL 2.0 INT 16#0002
SINT 16#01 TIMER 16#0101 0101
16#0101 0101
16#0101 0101
INT 16#0001 TIMER 16#0001 0001
16#0001 0001
16#0001 0001
DINT 16#0000 0001 TIMER 16#0000 0001
16#0000 0001
16#0000 0001
Publication 1756-RM003K-FR-P – Juillet 2008 361
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Moyenne de fichier (AVE) L’instruction AVE calcule la moyenne d’un ensemble de valeurs.
Opérandes :
Logique à relais
Texte structuré
Le texte structuré n’a pas d’instruction AVE, mais vous pouvez obtenir le même résultat en utilisant une instruction SIZE et une structure POUR...FAIRE (FOR...DO) ou une autre structure de boucle.
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
END_FOR;
destination := sum / length;
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe C, Programmation en texte structuré.
Opérande Type Format Description
Tableau SINT
INT
DINT
REAL
point de tableau
trouve la moyenne des valeurs dans ce tableau
spécifie le premier élément du groupe d’éléments sur lequel faire un moyenne
n’utilisez pas CONTROL.POS dans l’indice
Dimension variable
DINT immédiat
(0, 1, 2)
dimension à utiliser
selon le nombre de dimensions, l’ordre est
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination SINT
INT
DINT
REAL
point résultat de l’opération
Commande CONTROL point structure de commande pour l’opération
Longueur DINT immédiat nombre d’éléments du tableau sur lesquels faire la moyenne
Position DINT immédiat élément en cours du tableau
la valeur initiale est en général 0
362 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Structure CONTROL
Description : L’instruction AVE calcule la moyenne d’un ensemble de valeurs.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction AVE est activée.
.DN BOOL Le bit de fin est activé lorsque l’instruction a été exécutée sur le dernier élément du tableau (.POS = .LEN).
.ER BOOL Le bit d’erreur est activé si l’instruction génère un dépassement supérieur. L’instruction s’arrête jusqu’à ce que le programme remette à 0 le bit .ER. La position de l’élément qui a provoqué le dépassement est stockée dans la valeur .POS.
.LEN DINT La longueur spécifie le nombre d’éléments du tableau sur lesquels l’instruction est exécutée.
.POS DINT La position contient la position de l’élément auquel l’instruction est en train d’accéder.
IMPORTANT Assurez-vous que la longueur n’entraîne pas l’instruction au-delà de la variation de Dimension spécifiée. Si cela se produit, la Destination sera incorrecte.
Un défaut majeur se produit si Type de défaut Code de défaut
.POS < 0 ou .LEN < 0 4 21
La variation de Dimension n’existe pas dans le tableau spécifié
4 20
Publication 1756-RM003K-FR-P – Juillet 2008 363
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exécution :
Condition Action logique à relais
Pré-scrutation Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction AVE calcule la moyenne en additionnant tous les éléments spécifiés dans le tableau et en divisant par le nombre d’éléments.
En interne, l’instruction utilise une instruction FAL pour calculer la moyenne :
Expression = calcul de moyenne
Mode = TOUT
Pour plus de détails sur l’exécution de l’instruction FAL, voir page page 335.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DNbit .DN = 0
bit .DN = 1
L’état d’entrée de la ligne est faux
l’état de sortie de la ligne est faux
fin
le bit .EN est effacéle bit .ER est effacéle bit .DN est effacéla valeur .POS est effacée
364 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 1 : array_dint moyen, qui est DINT[4,5].
Logique à relais
Texte structuré
SIZE(array_dint,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
dint_ave := sum / length;
dimension1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 19 14 9 4+ + +4
------------------------------------- 464------ 11.5= = =
dint_ave = 12
indices
Publication 1756-RM003K-FR-P – Juillet 2008 365
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 2 : array_dint moyen, qui est DINT[4,5].
Logique à relais
Texte structuré
SIZE(array_dint,1,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
dint_ave := sum / length;
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 5 4 3 2 1+ + + +5
---------------------------------------- 155------ 3= = =
indices
dint_ave = 3
366 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Tri sur fichier (SRT) L’instruction SRT trie un jeu de valeurs dans une dimension (variation de Dimension) du tableau en ordre croissant.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SRT en logique à relais. Cependant, vous définissez les valeurs Longueur et Position en accédant aux membres .LEN et .POS de la structure CONTROL, plutôt qu’en incluant des valeurs dans la liste des opérandes.
Structure CONTROL
Opérande Type Format Description
Tableau SINT
INT
DINT
REAL
point de tableau
tableau à trier
spécifie le premier élément du groupe d’éléments à trier
n’utilisez pas CONTROL.POS dans l’indice
Dimension variable
DINT immédiat
(0, 1, 2)
dimension à utiliser
selon le nombre de dimensions, l’ordre est
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Commande CONTROL point structure de commande pour l’opération
Longueur DINT immédiat nombre d’éléments du tableau à trier
Position DINT immédiat élément en cours du tableau
la valeur initiale est en général 0
SRT(Array,Dimtovary,Control);
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction SRT est activée.
.DN BOOL Le bit de fin est activé lorsque les éléments spécifiés ont été triés.
.ER BOOL Le bit d’erreur est activé lorsque .LEN < 0 ou .POS < 0. Ces deux états entraînent un défaut majeur.
.LEN DINT La longueur spécifie le nombre d’éléments du tableau sur lesquels l’instruction est exécutée.
.POS DINT La position contient la position de l’élément auquel l’instruction est en train d’accéder.
Publication 1756-RM003K-FR-P – Juillet 2008 367
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Description : L’instruction SRT trie un jeu de valeurs dans une dimension (variation de Dimension) du tableau en ordre croissant.
C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne d’effacé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle ne s’exécute que lors d’une transition. Voir Annexe C, Programmation en texte structuré.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction SRT fonctionne avec une mémoire contiguë. Dans certains cas, l’instruction change des données dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
IMPORTANT Assurez-vous que la longueur n’entraîne pas l’instruction au-delà de la variation de Dimension spécifiée. Si cela se produit, des résultats inattendus se produiront.
Un défaut majeur se produit si Type de défaut Code de défaut
.POS < 0 ou .LEN < 0 4 21
La variation de Dimension n’existe pas dans le tableau spécifié
4 20
L’instruction essaie d’accéder aux données hors des limites du tableau
4 20
368 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exécution :
Condition Action logique à relais Action texte structuré
Pré-scrutation Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
L’état de sortie de la ligne est réglé sur faux.
Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
–
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction trie les éléments spécifiés du tableau en ordre croissant.
L’instruction trie les éléments spécifiés du tableau en ordre croissant.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
examiner le bit .DN bit .DN = 0
bit .DN = 1
l’état de sortie de la ligne est faux
fin
le bit .EN est effacéle bit .ER est effacéle bit .DN est effacéla valeur .POS est effacée
L’état d’entrée de la ligne est faux
Publication 1756-RM003K-FR-P – Juillet 2008 369
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 1 : Trier int _array, qui est DINT[4,5].
Logique à relais
Texte structuré
control_1.LEN := 4;
control_1.POS := 0;
SRT(int_array[0,2],0,control_1);
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimension 1
dimension 0
0 20 19 3 17 16
15 14 8 12 11
10 9 13 7 6
5 4 18 2 1
1
2
3
0 1 2 3 4
Avant Après
indices
indices
370 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 2 : Trier int _array, qui est DINT[4,5].
Logique à relais
Texte structuré
control_1.LEN := 5;
control_1.POS := 0;
SRT(int_array[2,0],1,control_1);
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
6 7 8 9 10
5 4 3 2 1
1
2
3
0 1 2 3 4
Avant Après
indices
indices
Publication 1756-RM003K-FR-P – Juillet 2008 371
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ecart type de fichier (STD) L’instruction STD calcule l’écart type d’un ensemble de valeurs dans une dimension du tableau et stocke le résultat dans la Destination.
Opérandes :
Logique à relais
Structure CONTROL
Opérande Type Format Description
Tableau SINT
INT
DINT
REAL
point de tableau
trouver l’écart type des valeurs dans ce tableau
spécifie le premier élément du groupe d’éléments à utiliser pour calculer l’écart type
n’utilisez pas CONTROL.POS dans l’indice
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Dimension variable
DINT immédiat
(0, 1, 2)
dimension à utiliser
selon le nombre de dimensions, l’ordre est
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination REAL point résultat de l’opération
Commande CONTROL point structure de commande pour l’opération
Longueur DINT immédiat nombre d’éléments du tableau à utiliser pour calculer l’écart type
Position DINT immédiat élément en cours du tableau
la valeur initiale est en général 0
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction STD est activée.
.DN BOOL Le bit de fin est activé lorsque le calcul est terminé.
.ER BOOL Le bit d’erreur est activé lorsque l’instruction génère un dépassement supérieur. L’instruction s’arrête jusqu’à ce que le programme remette à 0 le bit .ER. La position de l’élément qui a provoqué le dépassement est stockée dans la valeur .POS.
.LEN DINT La longueur spécifie le nombre d’éléments du tableau sur lesquels l’instruction est exécutée.
.POS DINT La position contient la position de l’élément auquel l’instruction est en train d’accéder.
372 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Texte structuré
Le texte structuré n’a pas d’instruction STD, mais vous pouvez obtenir le même résultat en utilisant une instruction SIZE et une structure POUR...FAIRE (FOR...DO) ou une autre structure de boucle.
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + ((array[position] – average)**2);
END_FOR;
destination := SQRT(sum /(length-1));
Pour plus d’informations sur la syntaxe des structures du texte structuré, voir Annexe C, Programmation en texte structuré.
Description : L’écart type est calculé selon la formule suivante :
Où :
• start = indice de variation de dimension de l’opérande du tableau
• xi = élément variable dans le tableau
• N = nombre d’éléments spécifiés dans le tableau
• AVE =
X start i+( ) AVE–⟨ ⟩2[ ]
i 1=
N
∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞
N 1–( )--------------------------------------------------------------------
Ecart type =
x start i+( )
i 1=
N
∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞
N-----------------------------------------
IMPORTANT Assurez-vous que la longueur n’entraîne pas l’instruction au-delà de la variation de Dimension spécifiée. Si cela se produit, la Destination sera incorrecte.
Publication 1756-RM003K-FR-P – Juillet 2008 373
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Exécution :
Un défaut majeur se produit si Type de défaut Code de défaut
.POS < 0 ou .LEN < 0 4 21
La variation de Dimension n’existe pas dans le tableau spécifié
4 20
Condition Action logique à relais
Pré-scrutation Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’instruction STD calcule l’écart type de l’élément spécifié.
En interne, l’instruction utilise une instruction FAL pour calculer la moyenne :
Expression = calcul de l’écart type
Mode = TOUT
Pour plus de détails sur l’exécution de l’instruction FAL, voir page page 335.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
examiner le bit .DN bit .DN = 0
bit .DN = 1
L’état d’entrée de la ligne est faux
l’état de sortie de la ligne est faux
fin
le bit .EN est effacéle bit .ER est effacéle bit .DN est effacéla valeur .POS est effacée
374 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 1 : Calculer l’écart type de dint_array, qui est DINT[4,5].
Logique à relais
Texte structuré
SIZE(dint_array,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + dint_array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((dint_array[position] – average)**2);
END_FOR;
real_std := SQRT(sum / (length-1));
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 16 8.5–⟨ ⟩2 11 8.5–⟨ ⟩2 6 8.5–⟨ ⟩2 1 8.5–⟨ ⟩2+ + +
4 1–⟨ ⟩--------------------------------------------------------------------------------------------------------------------------- 6.454972= =
AVE 16 11 6 1+ + +4
------------------------------------- 344------ 8.5= = =
indices
real_std = 6.454972
Publication 1756-RM003K-FR-P – Juillet 2008 375
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exemple 2 : Calculer l’écart type de dint_array, qui est DINT[4,5].
Logique à relais
Texte structuré
SIZE(dint_array,1,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + dint_array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((dint_array[position] – average)**2);
END_FOR;
real_std := SQRT(sum / (length-1));
dimension 1
dimension 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 20 18–⟨ ⟩2 19 18–⟨ ⟩2 18 18–⟨ ⟩2 17 18–⟨ ⟩2 16 18–⟨ ⟩2+ + + +
5 1–⟨ ⟩------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= =
AVE 20 19 18 17 16+ + + +5
------------------------------------------------------- 905------ 18= = =
indices
real_std = 1.581139
376 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Taille en éléments (SIZE) L’instruction SIZE trouve la taille d’une dimension d’un tableau.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SIZE en logique à relais.
Description : L’instruction SIZE trouve le nombre d’éléments (taille) dans la dimension indiquée du tableau Source et place le résultat dans l’opérande Taille.
• L’instruction SIZE trouve la taille d’une dimension d’un tableau.
• L’instruction agit sur un :
– tableau ;
– tableau dans une structure ;
– tableau qui fait partie d’un tableau plus grand.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : aucune
Opérande Type Format Description
Source SINT
INT
DINT
REAL
structure
string
point de tableau
tableau sur lequel l’instruction effectue son opération
Dimension variable
DINT immédiat (0, 1, 2)
dimension à utiliser :
SIZE SINT
INT
DINT
REAL
point le point dans lequel le nombre d’éléments de la dimension spécifiée du tableau est stocké
Pour la taille de Entrez
première dimension 0
deuxième dimension 1
troisième dimension 2
SIZE(Source,Dimtovary,Size);
Publication 1756-RM003K-FR-P – Juillet 2008 377
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Exécution :
Exemple 1 : Trouver le nombre d’éléments dans la dimension 0 (première dimension) de array_a. Enregistrer la taille dans array_a_size. Dans cet exemple, la dimension 0 de array_a possède 10 éléments.
Logique à relais
Texte structuré
SIZE(array_a,0,array_a_size);
Exemple 2 : Trouver le nombre d’éléments dans le membre DATA de string_1, qui est une chaîne. Enregistrer la taille dans string_1_size. Dans cet exemple, le membre DATA de string_1 possède 82 éléments. (La chaîne utilise le type de données STRING par défaut.) Puisque chaque élément possède un caractère, string_1 peut contenir jusqu’à 82 caractères.
Logique à relais
Texte structuré
SIZE(string_1.DATA[0],0,string_1_size);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction trouve la taille d’une dimension. L’instruction trouve la taille d’une dimension.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Size in ElementsSource array_a[0]
255Dim. To Vary 0Size array_a_size
10
SIZESize in ElementsSource array_a[0]
255Dim. To Vary 0Size array_a_size
10
SIZE
Size in ElementsSource string_1.DATA[0]
'$00'Dim. To Vary 0Size string_1_size
82
SIZESize in ElementsSource string_1.DATA[0]
’$00’Dim. To Vary 0Size string_1_size
82
SIZE
378 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Chapitre 8
Exemple 3 : Strings_a est un tableau de structures de chaînes. L’instruction SIZE trouve le nombre d’éléments dans le membre DATA de la structure de chaîne et enregistre la taille dans data_size_a. Dans cet exemple, le membre DATA possède 24 éléments. (La structure de la chaîne a une longueur définie par l’utilisateur de 24.)
Logique à relais
Texte structuré
SIZE(strings_a[0].DATA[0],0,data_size_a);
Size in ElementsSource strings_a[0].DATA[0]
'$00'Dim. To Vary 0Size data_size_a
24
SIZESize in ElementsSource strings_a[0].DATA[0]
’$00’Dim. To Vary 0Size data_size_a
24
SIZE
Publication 1756-RM003K-FR-P – Juillet 2008 379
Chapitre 8 Instructions de tableau (fichier)/ Instructions diverses (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Notes :
380 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 9
Instructions de tableau (fichier)/décalage(BSL, BSR, FFL, FFU, LFL, LFU)
Introduction Utilisez les instructions de tableau (fichier)/décalage pour modifier l’emplacement des données dans les tableaux.
Vous pouvez mélanger des types de données, mais cela peut entraîner une perte de précision et des erreurs d’arrondis.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
charger des bits dans, décaler des bits dans et décharger des bits à partir d’un tableau de bits, un bit à la fois
BSL Logique à relais 382
BSR Logique à relais 386
charger et décharger des valeurs dans le même ordre
FFL Logique à relais 390
FFU Logique à relais 396
charger et décharger des valeurs dans l’ordre inverse
LFL Logique à relais 402
LFU Logique à relais 408
Publication 1756-RM003K-FR-P – Juillet 2008 381
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Décalage binaire à gauche (BSL)
L’instruction BSL décale les bits spécifiés d’une position vers la gauche dans le tableau.
Opérandes :
Logique à relais
Structure CONTROL
Description : Lorsqu’elle est activée, l’instruction décharge le bit de poids fort des bits spécifiés dans le bit .UL, décale les bits restants d’une position à gauche et charge le bit Source dans le bit 0 du tableau.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
Tableau DINT point de tableau
tableau à modifier,
spécifie le premier élément du groupe d’éléments
n’utilisez pas CONTROL.POS dans l’indice
Commande CONTROL point structure de commande pour l’opération
Bit source BOOL point bit à décaler
Longueur DINT immédiat nombre de bits à décaler dans le tableau
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction BSL est activée.
.DN BOOL Le bit de fin est activé pour indiquer que les bits ont été décalés d’une position vers la gauche.
.UL BOOL Le bit de déchargement est la sortie de l’instruction. Le bit .UL enregistre l’état du bit qui a été décalé en dehors de la plage de bits.
.ER BOOL Le bit d’erreur est activé lorsque .LEN < 0.
.LEN DINT La longueur définit le nombre de bits de tableau à décaler.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction BSL fonctionne avec une mémoire contiguë. Dans certains cas, elle décale les bits au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
382 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exécution :
Condition Action logique à relais
Pré-scrutation Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
La valeur .POS est effacé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
La valeur .POS est effacé.
L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 383
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
examiner le bit .EN bit .EN = 1
bit .EN = 0
fin
le bit .DN est activé
décaler le tableau d’une position à gauche
le bit .EN est activé
l’état de sortie de la ligne est vrai
le bit .DN est activé
.POS = .LEN
.LEN = 0 oui
non
.LEN < 0 oui
non
bit sourcebit .UL tableau
examiner le bit source
bit .source = 1
bit .source = 0
le bit .UL reste activé
le bit .UL est activé
le bit .ER est activé
384 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple 1 : Lorsqu’elle est activée, l’instruction BSL démarre au bit 0 de array_dint[0]. L’instruction décharge array_dint[0].9 dans le bit .UL, décale les bits restants et charge input_1 dans array_dint[0].0. Les valeurs des bits restants (10 – 31) ne sont pas valables.
Exemple 2 : Lorsqu’elle est activée, l’instruction BSL démarre au bit 0 de array_dint[0]. L’instruction décharge array_dint[1].25 dans le bit .UL, décale les bits restants et charge input_1 dans array_dint[0].0. Les valeurs des bits restants (31-26 dans array_dint[1]) ne sont pas valables. Remarquez comment array_dint[0].31 décale les mots dans array_dint[1].0.
9 8 7 6 5 4 3 2 1 0
array_dint[0]avant décalage
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
9 8 7 6 5 4 3 2 1 0
array_dint[0]après décalage
0 1 1 1 1 0 0 0 0 1
1
input_10
bit .UL
ces bits sont décalés à gauche
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1
input_1ces bits sont décalés à gauche
0
bit .UL
ces bits sont décalés à gauche
Publication 1756-RM003K-FR-P – Juillet 2008 385
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Décalage binaire à droite (BSR)
L’instruction BSR décale les bits spécifiés d’une position vers la droite dans le tableau.
Opérandes :
Logique à relais
Structure CONTROL
Description : Lorsqu’elle est activée, l’instruction décharge la valeur du bit 0 du tableau dans le bit .UL, décale les bits restants d’une position à droite et charge le bit Source dans le bit de poids fort des bits spécifiés.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Description
Tableau DINT point de tableau
tableau à modifier,
spécifier l’élément sur lequel démarrer le décalage
n’utilisez pas CONTROL.POS dans l’indice
Commande CONTROL point structure de commande pour l’opération
Bit source BOOL point bit à décaler
Longueur DINT immédiat nombre de bits à décaler dans le tableau
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction BSR est activée.
.DN BOOL Le bit de fin est activé pour indiquer que les bits ont été décalés d’une position vers la droite.
.UL BOOL Le bit de déchargement est la sortie de l’instruction. Le bit .UL enregistre l’état du bit qui a été décalé en dehors de la plage de bits.
.ER BOOL Le bit d’erreur est activé lorsque .LEN < 0.
.LEN DINT La longueur définit le nombre de bits de tableau à décaler.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction BSR fonctionne avec une mémoire contiguë. Dans certains cas, l’instruction change des bits dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
386 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exécution :
Condition Action logique à relais
Pré-scrutation Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
La valeur .POS est effacé.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .EN est effacé.
Le bit .DN est effacé.
Le bit .ER est effacé.
La valeur .POS est effacé.
L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 387
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Condition Action logique à relais
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
examiner le bit .EN bit .EN = 1
bit .EN = 0
fin
le bit .DN est activé
décaler le tableau d’une position à gauche
le bit .EN est activé
l’état de sortie de la ligne est vrai
le bit .DN est activé
.POS = .LEN
.LEN = 0 oui
non
.LEN < 0 oui
non
bit source
bit .ULtableau
examiner le bit source
bit .source = 1
bit .source = 0
le bit .UL reste activé
le bit .UL est activé
le bit .ER est activé
388 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple 1 : Lorsqu’elle est activée, l’instruction BSR démarre au bit 9 de array_dint[0]. L’instruction décharge array_dint[0].0 dans le bit .UL bit, décale à droite les bits restants et charge input_1 dans array_dint[0].9. Les valeurs des bits restants (10 – 31) ne sont pas valables.
Exemple 2 : Lorsqu’elle est activée, l’instruction BSR démarre au bit 25 de array_dint[1]. L’instruction décharge array_dint[0].0 dans le bit .UL bit, décale à droite les bits restants et charge input_1 dans array_dint[1].25. Les valeurs des bits restants (31-26 dans dint_array[1]) ne sont pas valables. Remarquez comment array_dint[1].0 décale les mots dans array_dint[0].31.
9 8 7 6 5 4 3 2 1 0
array_dint[0]avant décalage
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
9 8 7 6 5 4 3 2 1 0
array_dint[0]après décalage
1 0 0 1 1 1 1 0 0 0
ces bits sont décalés à droite0
bit .UL1
input_1
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
ces bits sont décalés à droite 0
bit .UL
ces bits sont décalés à droite1
input_1
Publication 1756-RM003K-FR-P – Juillet 2008 389
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Chargement FIFO (FFL) L’instruction FFL copie la valeur Source dans la pile FIFO.
Opérandes :
Logique à relais
Si vous utilisez une structure définie par l’utilisateur comme type de données pour la Source ou l’opérande FIFO, utilisez la même structure pour les deux opérandes.
Opérande Type Format Description
Source SINT
INT
DINT
REAL
string
structure
immédiat
point
données à stocker dans la pile FIFO
La Source est convertie au type de données du point de tableau. Un petit nombre entier est converti à un nombre entier plus grand par extension du signe.
FIFO SINT
INT
DINT
REAL
string
structure
point de tableau
FIFO à modifier
spécifier le premier élément de la pile FIFO.
n’utilisez pas CONTROL.POS dans l’indice
Commande CONTROL point structure de commande pour l’opération
utilise généralement le même type de commande que l’opérande FFU associée
Longueur DINT immédiat le nombre maximum d’éléments que la pile FIFO peut contenir en même temps
Position DINT immédiat l’emplacement suivant dans la pile FIFO où l’instruction charge les données
la valeur initiale est en général 0
390 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Structure CONTROL
Description : Utilisez l’instruction FFL avec l’instruction FFU pour stocker et récupérer des données dans un ordre premier entré/premier sorti. Lorsqu’elles sont jumelées, les instructions FFL et FFU constituent un registre à décalage asynchrone.
Généralement, Source et FIFO sont du même type de données.
Lorsqu’elle est activée, l’instruction FFL charge la valeur Source dans l’emplacement de la pile FIFO identifié par la valeur .POS. L’instruction charge une valeur à chaque fois que l’instruction est activée, jusqu’à ce que la pile FIFO soit pleine.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction FFL est activée.
.DN BOOL Le bit de fin est activé pour indiquer que la pile FIFO est pleine (.POS = .LEN). Le bit .DN bloque le chargement de la pile FIFO jusqu’à ce que .POS < .LEN.
.EM BOOL Le bit vide indique que la pile FIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.
.LEN DINT La longueur indique le nombre maximum d’éléments que l’opérande FIFO peut contenir en même temps.
.POS DINT La position identifie l’emplacement dans la pile FIFO où l’instruction chargera la prochaine valeur.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction FFL fonctionne avec une mémoire contiguë. Dans certains cas, elle charge des données au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
Un défaut majeur se produit si Type de défaut Code de défaut
(élément de départ + .POS) > taille du tableau FIFO
4 20
Publication 1756-RM003K-FR-P – Juillet 2008 391
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Exécution :
Condition Action logique à relais
Pré-scrutation
fin
le bit .EN est activé pour éviter un faux chargement lorsque la scrutation commence
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
392 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Condition Action logique à relais
l’état d’entrée de la ligne est faux
fin
le bit .EN est effacé
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
Publication 1756-RM003K-FR-P – Juillet 2008 393
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
l’état d’entrée de la ligne est vrai
fin
l’état de sortie de la ligne est vrai
examiner le bit .EN
.EN = 0
.EN = 1
le bit .EN est activé .LEN < 0oui
non
.POS < 0oui
non
le bit .EM est activé
.DN est activé
le bit .EM est effacé
.DN est effacé
.POS = .POS + 1
.POS ≥ .LENoui
non
le bit .DN est activé
.POS ou .LEN > taille du tableau
oui
non
défaut majeur
.POS > .LENoui
non
.POS = .POS – 1
FIFO[.POS – 1] = source
.LEN < 0oui
non
.POS < 0oui
non
le bit .EM est effacé
.DN est effacé
.POS = 0oui
non
le bit .EM est activé
.POS ≥ .LENoui
non
le bit .DN est activé
le bit .EM est activé
.DN est activé
394 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple : Lorsqu’elle est activée, l’instruction FFL charge value_1 dans la position suivante de la pile FIFO, qui est array_dint[5] dans cet exemple.
avant chargement dela pile FIFO
après chargement dela pile FIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_1 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000
Publication 1756-RM003K-FR-P – Juillet 2008 395
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Déchargement de FIFO (FFU)
L’instruction FFU décharge la valeur de la position 0 (première position) de la pile FIFO et enregistre cette valeur dans la Destination. Les données restantes de la pile FIFO sont décalées d’une position vers le bas.
Opérandes :
Logique à relais
Si vous utilisez une structure définie par l’utilisateur comme type de données pour la Destination ou l’opérande FIFO, utilisez la même structure pour les deux opérandes.
Opérande Type Format Description
FIFO SINT
INT
DINT
REAL
string
structure
point de tableau
FIFO à modifier
spécifier le premier élément de la pile FIFO.
n’utilisez pas CONTROL.POS dans l’indice
Destination SINT
INT
DINT
REAL
string
structure
point valeur qui est extraite de la pile FIFO
La valeur de Destination est convertie au type de données du point Destination. Un petit nombre entier est converti à un nombre entier plus grand par extension du signe.
Commande CONTROL point structure de commande pour l’opération
utilise généralement le même type de commande que l’opérande FFL associée
Longueur DINT immédiat le nombre maximum d’éléments que la pile FIFO peut contenir en même temps
Position DINT immédiat l’emplacement suivant dans la pile FIFO où l’instruction décharge les données
la valeur initiale est en général 0
396 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Structure CONTROL
Description : Utilisez l’instruction FFU avec l’instruction FFL pour stocker et récupérer des données dans un ordre premier entré/premier sorti.
Lorsqu’elle est activée, l’instruction FFU décharge les données du premier élément de la pile FIFO et place cette valeur dans la Destination. L’instruction décharge une valeur à chaque fois que l’instruction est activée, jusqu’à ce que la pile FIFO soit vide. Si la pile FIFO est vide, l’instruction FFU renvoie 0 à la Destination.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Mnémonique Type de données
Description
.EU BOOL Le bit d’activation du déchargement indique que l’instruction FFU est activée. Le bit .EU est activé pour présélectionner une fausse décharge lorsque la scrutation du programme commence.
.DN BOOL Le bit de fin est activé pour indiquer que la pile FIFO est pleine (.POS = .LEN).
.EM BOOL Le bit vide indique que la pile FIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.
.LEN DINT La longueur indique le nombre maximum d’éléments dans la pile FIFO.
.POS DINT La position identifie la fin des données qui ont été chargées dans la pile FIFO.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction FFU fonctionne avec une mémoire contiguë. Dans certains cas, l’instruction décharge des données à partir d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
Un défaut majeur se produit si Type de défaut Code de défaut
Longueur > taille de tableau FIFO 4 20
Publication 1756-RM003K-FR-P – Juillet 2008 397
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Exécution :
Condition Action logique à relais
Pré-scrutation
fin
le bit .EU est activé pour éviter un faux déchargement lorsque la scrutation commence
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
398 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Condition Action logique à relais
L’état d’entrée de la ligne est faux
fin
le bit .EU est effacé
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
Publication 1756-RM003K-FR-P – Juillet 2008 399
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
fin
examiner le bit .EU
.EU = 0
.EU = 1
le bit .EU est activé .LEN < 0oui
non
.POS < 0oui
non
le bit .EM est activé
.DN est activéle bit .EM est effacé
.DN est effacé
.LEN > taille du tableau
oui
non
défaut majeur
.POS ≤ 1oui
non
le bit .EM est activé
.LEN < 0oui
non
.POS < 0oui
non
le bit .EM est effacé
.DN est effacé
.POS = 0oui
non
le bit .EM est activé
.POS ≥ .LENoui
non
le bit .DN est activé
le bit .EM est activé
.DN est activé
.POS < 1oui
non
Destination = 0
.POS = .POS –1
Destination = FIFO[0]i = 1
FIFO[i – 1] = FIFO[i]i = i +1
i < .LENoui
nonl’état de sortie de la ligne est vrai
400 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple : Lorsqu’elle est activée, l’instruction FFU décharge array_dint[0] dans value_2 et décale les éléments restants dans array_dint.
avant la décharge de la pile FIFO
après la décharge de la pile FIFO
array_dint[0] 00000 11111
11111 22222
22222 33333
33333 44444
44444 55555
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 00000
00000 00000
00000 00000
00000 00000
Publication 1756-RM003K-FR-P – Juillet 2008 401
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Chargement LIFO (LFL) L’instruction LFL copie la valeur Source vers la pile LIFO.
Opérandes :
Logique à relais
Si vous utilisez une structure définie par l’utilisateur comme type de données pour la Source ou l’opérande LIFO, utilisez la même structure pour les deux opérandes.
Opérande Type Format Description
Source SINT
INT
DINT
REAL
chaîne
structure
immédiat
point
données à stocker dans la pile LIFO
La Source est convertie au type de données du point de tableau. Un petit nombre entier est converti à un nombre entier plus grand par extension du signe.
LIFO SINT
INT
DINT
REAL
chaîne
structure
point de tableau
Pile LIFO à modifier
spécifier le premier élément de la pile LIFO
n’utilisez pas CONTROL.POS dans l’indice
Commande CONTROL point structure de commande pour l’opération
utilise généralement le même type de commande que l’opérande LFU associée
Longueur DINT immédiat nombre maximum d’éléments que la pile LIFO peut contenir en même temps
Position DINT immédiat l’emplacement suivant dans la pile LIFO où l’instruction charge les données
la valeur initiale est en général 0
402 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Structure CONTROL
Description : Utilisez l’instruction LFL avec l’instruction LFU pour stocker et récupérer des données dans un ordre dernier entré/premier sorti. Lorsqu’elles sont jumelées, les instructions LFL et LFU constituent un registre à décalage asynchrone.
Généralement, Source et LIFO sont du même type de données.
Lorsqu’elle est activée, l’instruction LFL charge la valeur Source dans l’emplacement de la pile LIFO identifié par la valeur .POS. L’instruction charge une valeur à chaque fois que l’instruction est activée, jusqu’à ce que la pile LIFO soit pleine.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction LFL est activée.
.DN BOOL Le bit de fin est activé pour indiquer que la pile LIFO est pleine (.POS = .LEN). Le bit .DN bloque le chargement de la pile LIFO jusqu’à ce que .POS < .LEN.
.EM BOOL Le bit vide indique que la pile LIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.
.LEN DINT La longueur indique le nombre maximum d’éléments que l’opérande LIFO peut contenir en même temps.
.POS DINT La position identifie l’emplacement dans la pile LIFO où l’instruction chargera la prochaine valeur.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction LFU fonctionne avec une mémoire contiguë. Dans certains cas, elle charge des données au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
Un défaut majeur se produit si Type de défaut Code de défaut
(élément de départ + .POS) > taille de tableau LIFO
4 20
Publication 1756-RM003K-FR-P – Juillet 2008 403
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Exécution :
Condition Action logique à relais
Pré-scrutation
fin
le bit .EN est activé pour éviter un faux chargement lorsque la scrutation commence
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
404 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Condition Action logique à relais
L’état d’entrée de la ligne est faux
fin
le bit .EN est effacé
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
Publication 1756-RM003K-FR-P – Juillet 2008 405
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
fin
l’état de sortie de la ligne est vrai
examinerle bit .EN
.EN = 0
.EN = 1
le bit .EN est activé .LEN < 0oui
non
.POS < 0oui
non
le bit .EM est activé
.DN est activé
le bit .EM est effacé
.DN est effacé
.POS = .POS + 1
.POS ≥ .LENoui
non
le bit .DN est activé
.POS ou .LEN > taille du tableau
oui
non
défaut majeur
.POS > .LENoui
non
.POS = .POS – 1
DEPS[.POS – 1] = source
.LEN < 0oui
non
.POS < 0oui
non
le bit .EM est effacé
.DN est effacé
.POS = 0oui
non
le bit .EM est activé
.POS ≥ .LENoui
non
le bit .DN est activé
le bit .EM est activé
.DN est activé
406 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple : Lorsqu’elle est activée, l’instruction LFL charge value_1 dans la position suivante de la pile LIFO, qui est array_dint[5] dans cet exemple.
avant chargement de la pile LIFO
après chargement de la pile LIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_1 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000
Publication 1756-RM003K-FR-P – Juillet 2008 407
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Déchargement LIFO (LFU) L’instruction LFU décharge la valeur dans la position .POS de la pile LIFO et enregistre 0 dans cet emplacement.
Opérandes :
Logique à relais
Si vous utilisez une structure définie par l’utilisateur comme type de données pour la Destination ou l’opérande LIFO, utilisez la même structure pour les deux opérandes.
Opérande Type Format Description
LIFO SINT
INT
DINT
REAL
string
structure
point de tableau
Pile LIFO à modifier
spécifier le premier élément de la pile LIFO
n’utilisez pas CONTROL.POS dans l’indice
Destination SINT
INT
DINT
REAL
string
structure
point valeur qui est extraite de la pile LIFO
La valeur de Destination est convertie au type de données du point Destination. Un petit nombre entier est converti à un nombre entier plus grand par extension du signe.
Commande CONTROL point structure de commande pour l’opération
utilise généralement le même type de commande que l’opérande LFL associée
Longueur DINT immédiat nombre maximum d’éléments que la pile LIFO peut contenir en même temps
Position DINT immédiat l’emplacement suivant dans la pile LIFO où l’instruction décharge les données
la valeur initiale est en général 0
408 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Structure CONTROL
Description : Utilisez l’instruction LFU avec l’instruction LFL pour stocker et récupérer des données dans un ordre dernier entré/premier sorti.
Lorsqu’elle est activée, l’instruction LFU décharge la valeur .POS de la pile LIFO et place cette valeur dans la Destination. L’instruction décharge une valeur et la remplace par 0 chaque fois que l’instruction est activée, jusqu’à ce que la pile LIFO soit vide. Si la pile LIFO est vide, l’instruction LFU renvoie 0 à la Destination.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Mnémonique Type de données
Description
.EU BOOL Le bit d’activation de décharge indique que l’instruction LFU est activée. Le bit .EU est activé pour présélectionner une fausse décharge lorsque la scrutation du programme commence.
.DN BOOL Le bit de fin est activé pour indiquer que la pile LIFO est pleine (.POS = .LEN).
.EM BOOL Le bit vide indique que la pile LIFO est vide. Si .LEN ≤ 0 ou .POS < 0, les bits .EM et .DN sont activés.
.LEN DINT La longueur indique le nombre maximum d’éléments que l’opérande LIFO peut contenir en même temps.
.POS DINT La position identifie la fin des données qui ont été chargées dans la pile LIFO.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction LFU fonctionne avec une mémoire contiguë. Dans certains cas, l’instruction décharge des données à partir d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
Un défaut majeur se produit si Type de défaut Code de défaut
Longueur > taille du tableau LIFO 4 20
Publication 1756-RM003K-FR-P – Juillet 2008 409
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Exécution :
Condition Action logique à relais
Pré-scrutation
fin
le bit .EU est activé pour éviter un faux déchargement lorsque la scrutation commence
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
410 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Condition Action logique à relais
L’état d’entrée de la ligne est faux
fin
le bit .EU est effacé
l’état de sortie de la ligne est faux
.LEN < 0 oui
non
.POS < 0 oui
.EM est effacé
.DN est effacé
non
.POS = 0 oui
non
.EM est activé
.POS ≥ .LEN oui
non
.DN est activé
.EM est activé
.DN est activé
Publication 1756-RM003K-FR-P – Juillet 2008 411
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
fin
l’état de sortie de la ligne est vrai
examiner le bit .EU
.EU = 0
.EU = 1
le bit .EU est activé .LEN < 0oui
non
.POS < 0oui
non
le bit .EM est activé
.DN est activéle bit .EM est effacé
.DN est effacé
.LEN > taille du tableau
oui
non
défaut majeur
.POS ≤ 1oui
non
le bit .EM est activé
.LEN < 0oui
non
.POS < 0oui
non
le bit .EM est effacé
.DN est effacé
.POS = 0oui
non
le bit .EM est activé
.POS ≥ .LENoui
non
le bit .DN est activé
le bit .EM est activé
.DN est activé
.POS < 1oui
non
.POS > .LENoui
non
.POS = .LEN
Destination = 0
Destination = LIFO[control.POS]
LIFO[control.POS) = 0
.POS = .POS – 1
412 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU) Chapitre 9
Exemple : Lorsqu’elle est activée, l’instruction LFU décharge array_dint[5] dans value_2.
avant déchargement de la pile LIFO
après déchargement de la pile LIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 33333
44444 44444
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 55555
00000 00000
00000 00000
00000 00000
Publication 1756-RM003K-FR-P – Juillet 2008 413
Chapitre 9 Instructions de tableau (fichier)/décalage (BSL, BSR, FFL, FFU, LFL, LFU)
Notes :
414 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 10
Instructions séquenceurs(SQI, SQO, SQL)
Introduction Aucune mesure n’est prise. Les instructions séquenceurs surveillent les opérations cohérentes et répétitives.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
détecter quand une étape est terminée SQI Logique à relais 416
activer les conditions de sortie pour l’étape suivante
SQO Logique à relais 420
charger les conditions de référence dans les tableaux séquenceurs
SQL Logique à relais 424
Publication 1756-RM003K-FR-P – Juillet 2008 415
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Entrée séquenceur (SQI) L’instruction SQI détecte quand une étape est terminée dans une paire en séquence d’instructions SQO/SQI.
Opérandes :
Logique à relais
Structure CONTROL
Opérande Type Format Description
Tableau DINT point de tableau
tableau de séquenceur
spécifier le premier élément du tableau de séquenceur
n’utilisez pas CONTROL.POS dans l’indice
Masque SINT
INT
DINT
point
immédiat
bits à bloquer ou à passer
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Source SINT
INT
DINT
point données d’entrée pour le tableau du séquenceur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Commande CONTROL point structure de commande pour l’opération
utilise généralement la même structure de commande que les instructions SQO et SQL
Longueur DINT immédiat nombre d’éléments dans le tableau (tableau du séquenceur) à comparer
Position DINT immédiat position en cours dans le tableau
la valeur initiale est en général 0
Mnémonique Type de données
Description
.ER BOOL Le bit d’erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT La longueur indique le nombre d’étapes dans le tableau du séquenceur.
.POS DINT La position identifie l’élément que l’instruction est en train de comparer.
416 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Description : Lorsqu’elle est activée, l’instruction SQI compare un élément Source par l’intermédiaire d’un masque avec un élément de tableau pour détecter une égalité.
Utilise généralement la même structure de commande que les instructions SQO et SQL.
L’instruction SQI fonctionne avec une mémoire contiguë.
Entrée d’une valeur de masque immédiate
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
Publication 1756-RM003K-FR-P – Juillet 2008 417
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Exécution :
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
.LEN ≤ 0
.POS < 0ou
.POS > .LEN
non
oui
fin
le bit .ER est activé
l’état de sortie de la ligne est faux
Source masquée = Tableau masqué[.POS]
oui
le bit .ER est effacé
non
l’état de sortie de la ligne est vrai
418 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Exemple : Lorsqu’elle est activée, l’instruction SQI passe value_2 à travers le masque pour déterminer si le résultat est égal à l’élément actuel dans array_dint. La comparaison masquée est vraie, l’état de sortie de la ligne passe donc à vrai.
Un 0 dans le masque signifie que le bit n’est pas comparé (indiqué par xxxx dans cet exemple).
Utiliser SQI sans SQO
Si vous utilisez l’instruction SQI sans une instruction SQO appariée, vous devez incrémenter le tableau séquenceur extérieurement.
L’instruction SQI compare la valeur source. L’instruction ADD incrémente le tableau du séquenceur. L’instruction GRT détermine s’il existe une autre valeur à vérifier dans le tableau du séquenceur. L’instruction MOV réinitialise la valeur de position après avoir complètement parcouru le tableau du séquenceur une fois.
Opérande SQI Exemple de valeurs (DINT affichées en binaire)
Source xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Masque 00000000 00000000 00001111 00001111
Tableau xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Publication 1756-RM003K-FR-P – Juillet 2008 419
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Sortie séquenceur (SQO) L’instruction SQO active les conditions de sortie pour l’étape suivante d’une paire en séquence d’instructions SQO/SQI.
Opérandes :
Logique à relais
Structure CONTROL
Opérande Type Format Description
Tableau DINT point de tableau
tableau de séquenceur
spécifier le premier élément du tableau de séquenceur
n’utilisez pas CONTROL.POS dans l’indice
Masque SINT
INT
DINT
point
immédiat
bits à bloquer ou à passer
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Destination DINT point données de sortie provenant du tableau du séquenceur
Commande CONTROL point structure de commande pour l’opération
utilise généralement la même structure de commande que les instructions SQI et SQL
Longueur DINT immédiat nombre d’éléments dans le tableau (tableau séquenceur) à sortir
Position DINT immédiat position en cours dans le tableau
la valeur initiale est en général 0
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction SQO est activée.
.DN BOOL Le bit de fin est activé lorsque tous les éléments spécifiés ont été déplacés dans la Destination.
.ER BOOL Le bit d’erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT La longueur indique le nombre d’étapes dans le tableau du séquenceur.
.POS DINT La position identifie l’élément que l’automate est en train de manipuler.
420 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Description : Lorsqu’elle est activée, l’instruction SQO incrémente la position, déplace les données de la position à travers le masque et enregistre le résultat dans la Destination. Si .POS > .LEN, l’instruction revient au début du tableau séquenceur et continue avec .POS = 1.
Utilise généralement la même structure de commande que les instructions SQI et SQL.
L’instruction SQO fonctionne avec une mémoire contiguë.
Entrée d’une valeur de masque immédiate
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique Non affectés
Conditions d’erreur : Aucune
Exécution :
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
Condition Action logique à relais
Pré-scrutation Le bit .EN est activé pour empêcher un faux chargement lorsque la scrutation du programme commence.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .EN est effacé.
L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 421
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
.LEN ≤ 0 ou .POS < 0
non
oui
le bit .DN est activé
.POS = .LENnon
oui
examiner le bit .EN
.EN = 0
.EN = 1
le bit .EN est activé
le bit .ER est effacé
le bit .DN est activé
.POS ≥ .LENoui
non
.POS = .POS + 1
la valeur.POS revient à sa
valeur de départ
oui
non
le bit .ER est activé
fin
l’état de sortie de la ligne est vrai
le bit .DN est activé.POS = .LENoui
non
Destination = (Destination AND (NOT(Mask)) OR (Array[control.POS] AND Mask)
.POS > .LENnon
oui
.POS = 1
erreur aller à
erreur
422 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Exemple : Lorsqu’elle est activée, l’instruction SQO incrémente la position, passe les données de la position dans array_dint à travers le masque et enregistre le résultat dans value_1.
Un 0 dans le masque signifie que le bit n’est pas comparé (indiqué par xxxx dans cet exemple).
Utiliser SQI avec SQOSi vous apparez l’instruction SQI avec une instruction SQO, assurez-vous que les deux instructions utilisent les mêmes valeurs Commande, Longueur et Position.
Réinitialisation de la position de SQOChaque fois que l’automate passe du mode Programmation au mode Exécution, l’instruction SQO efface (initialise) la valeur .POS. Pour réinitialiser .POS à la valeur d’initialisation (.POS = 0), utilisez une instruction RES pour effacer la valeur de position. Cet exemple utilise l’état du bit de première scrutation pour effacer la valeur .POS.
Opérande SQO Exemple de valeurs (utilisation de DINT affichées en binaire)
Tableau xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Masque 00000000 00000000 00001111 00001111
Destination xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Publication 1756-RM003K-FR-P – Juillet 2008 423
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Chargement de séquenceur (SQL)
L’instruction SQL charge les conditions de référence dans le tableau du séquenceur.
Opérandes :
Logique à relais
Structure CONTROL
Opérande Type Format Description
Tableau DINT point de tableau
tableau de séquenceur
spécifier le premier élément du tableau de séquenceur
n’utilisez pas CONTROL.POS dans l’indice
Source SINT
INT
DINT
point
immédiat
données d’entrée à charger dans le tableau du séquenceur
Un point SINT ou INT est converti en valeur DINT par extension de signe.
Commande CONTROL point structure de commande pour l’opération
utilise généralement la même structure de commande que les instructions SQI et SQO
Longueur DINT immédiat nombre d’éléments à charger dans le tableau (tableau de séquenceur)
Position DINT immédiat position en cours dans le tableau
la valeur initiale est en général 0
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction SQL est activée.
.DN BOOL Le bit de fin est activé lorsque tous les éléments spécifiés ont été chargés dans Tableau.
.ER BOOL Le bit d’erreur est activé lorsque .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT La longueur indique le nombre d’étapes dans le tableau du séquenceur.
.POS DINT La position identifie l’élément que l’automate est en train de manipuler.
424 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Description : Lorsqu’elle est activée, l’instruction SQL incrémente à la position suivante dans le tableau séquenceur et charge la valeur Source dans cette position. SI le bit .DN est activé ou si .POS ≥ .LEN, l’instruction active .POS=1.
Utilise généralement la même structure de commande que les instructions SQI et SQO.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction SQL fonctionne avec une mémoire contiguë. Dans certains cas, elle charge des données au-delà du tableau dans d’autres membres du point. Ceci se produit si la longueur est trop grande et que le point est un type de données utilisateur.
Un défaut majeur se produit si Type de défaut Code de défaut
Longueur > taille de Tableau 4 20
Condition Action logique à relais
Pré-scrutation Le bit .EN est activé pour empêcher un faux chargement lorsque la scrutation du programme commence.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Le bit .EN est effacé.
L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 425
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
L’état d’entrée de la ligne est vrai
.LEN ≤ 0 ou .POS < 0
non
oui
le bit .DN est activé
.POS = .LENnon
oui
examiner le bit .EN
.EN = 0
.EN = 1
le bit .EN est activé
le bit .ER est effacé
le bit .DN est activé
.POS ≥ .LENoui
non
.POS = .POS + 1
la valeur .POS revient à sa valeur de
départ
oui
non
le bit .ER est activé
fin
l’état de sortie de la ligne est vrai
le bit .DN est activé.POS = .LENoui
non
.POS > .LENnon
oui
.POS = 1
erreur aller à
erreur
.LEN > taille du tableau
oui
non
Array[control.POS] = Source
défaut majeur
426 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions séquenceurs (SQI, SQO, SQL) Chapitre 10
Exemple : Lorsqu’elle est activée, l’instruction SQL charge value_3 dans la position suivante du tableau du séquenceur, qui est array_dint[5] dans cet exemple.
avant chargement après chargement
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_3 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000
Publication 1756-RM003K-FR-P – Juillet 2008 427
Chapitre 10 Instructions séquenceurs (SQI, SQO, SQL)
Notes :
428 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 11
Instructions de commande de programme(JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Introduction Utilisez l’instruction de commande de programme pour changer le déroulement de la logique.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
sauter une section de logique qui n’a pas toujours besoin d’être exécutée
JMPLBL
Logique à relais 430
sauter à un sous-programme séparé, passer des données au sous-programme, exécuter le sous-programme et produire des résultats
JSRSBRRET
Logique à relais 432
Bloc fonctionnel
Texte structuré
sauter à un sous-programme externe (automate SoftLogix5800 uniquement)
JXR Logique à relais 443
marquer une fin temporaire qui arrête l’exécution du sous-programme
TND Logique à relais 446
Texte structuré
désactiver toutes les lignes dans une section logique
MCR Logique à relais 448
désactiver les tâches utilisateur UID Logique à relais 450
Texte structuré
activer les tâches utilisateur UIE Logique à relais 450
Texte structuré
désactiver une ligne AFI Logique à relais 452
insérer un marqueur dans la logique NOP Logique à relais 453
terminer une transition de graphe de fonctionnement séquentiel
EOT Logique à relais 454
Texte structuré
mettre en pause un graphe de fonctionnement séquentiel
SFP Logique à relais 456
Texte structuré
réinitialiser un graphe de fonctionnement séquentiel
SFR Logique à relais 458
Texte structuré
déclencher l’exécution d’une tâche événementielle
EVENT Logique à relais 460
Texte structuré
429Publication 1756-RM003K-FR-P – Juillet 2008 429
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Saut vers une étiquette (JMP)Etiquette (LBL)
Les instructions JMP et LBL sautent des portions de logique à relais.
Opérandes :
Logique à relais
Description : Lorsqu’elle est activée, l’instruction JMP passe à l’instruction LBL référencée et l’automate continue l’exécution à partir de là. Lorsqu’elle est désactivée, l’instruction JMP n’affecte pas l’exécution de la logique à relais.
L’instruction JMP peut déplacer l’exécution de la logique à relais vers l’avant ou l’arrière. Le saut avant vers une étiquette réduit la durée de scrutation du programme en laissant de côté un segment logique jusqu’à ce que vous en ayez besoin. Le saut arrière permet à l’automate de répéter des itérations de logique.
Prenez soin de ne pas faire trop de sauts arrières. Le temporisateur du chien de garde peut être dépassé parce que l’automate n’atteint jamais la fin de la logique, ce qui met l’automate en défaut.
L’instruction LBL est la cible de l’instruction JMP qui possède le même nom d’étiquette. Assurez-vous que l’instruction LBL est la première instruction sur sa ligne.
Un nom d’étiquette doit être unique dans un sous-programme. Le nom peut :
• avoir un maximum de 40 caractères ;
• contenir des lettres, des nombres et des caractères de soulignement (_).
Opérande Type Format Description
Instruction JMP
Nom d’étiquette
nom d’étiquette
entrer le nom de l’instruction LBL associée
Instruction LBL
Nom d’étiquette
nom d’étiquette
l’exécution saute à l’instruction LBL avec nom d’étiquette référencé
ATTENTION La logique sautée n’est pas scrutée. Placez la logique critique en dehors de la zone sautée.
430 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Exemple : Lorsque l’instruction JMP est activée, l’exécution saute des lignes de logique successives jusqu’à atteindre la ligne contenant l’instruction LBL avec label_20.
Un défaut majeur se produit si
Type de défaut Code de défaut
l’étiquette n’existe pas 4 42
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
L’exécution saute à la ligne contenant l’instruction LBL avec le nom d’étiquette référencé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
[autres lignes de code]
Publication 1756-RM003K-FR-P – Juillet 2008 431
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Saut vers sous-programme (JSR)Sous-programme (SBR) Retour (RET)
L’instruction JSR fait passer l’exécution à un autre sous-programme. Les instructions SBR et RET sont des instructions en option qui échangent les données avec l’instruction JSR.
Opérande JSR :
Logique à relais
Opérande Type Format Description
Nom du sous-programme
ROUTINE nom sous-programme à exécuter
Paramètre d’entrée
BOOL
SINT
INT
DINT
REAL
structure
immédiat
point
point de tableau
données de ce sous-programme que vous voulez copier vers un point dans le sous-programme secondaire
• Les paramètres d’entrée sont en option.
• Entrer plusieurs paramètres d’entrée, si nécessaire.
Paramètre de retour
BOOL
SINT
INT
DINT
REAL
structure
point
point de tableau
point de ce sous-programme vers lesquels vous voulez copier un résultat du sous-programme secondaire
• Les paramètres de retour sont en option.
• Entrer plusieurs paramètres de retour, si nécessaire.
432 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Opérande JSR (suite) :
Texte structuré
Bloc fonctionnel
Les opérandes sont identiques à ceux de l’instruction JSR en logique à relais.
Opérande Type Format Description
Nom du sous-programme
ROUTINE nom sous-programme à exécuter
Comptage d’entrée
SINT
INT
DINT
REAL
immédiat nombre de paramètres d’entrée
Paramètre d’entrée
BOOL
SINT
INT
DINT
REAL
structure
immédiat
point
point de tableau
données de ce sous-programme que vous voulez copier vers un point dans le sous-programme secondaire
• Les paramètres d’entrée sont en option.
• Entrer plusieurs paramètres d’entrée, si nécessaire.
Paramètre de retour
BOOL
SINT
INT
DINT
REAL
structure
point
point de tableau
point de ce sous-programme vers lesquels vous voulez copier un résultat du sous-programme secondaire
• Les paramètres de retour sont en option.
• Entrer plusieurs paramètres de retour, si nécessaire.
JSR(RoutineName,InputCount,InputPar,ReturnPar);
Paramètres d’entrée Paramètres de retour
❇ ❇
Publication 1756-RM003K-FR-P – Juillet 2008 433
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Opérandes SBR : L’instruction SBR doit être la première instruction dans un sous-programme en logique à relais ou en texte structuré.
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SBR en logique à relais.
Bloc fonctionnel
Les opérandes sont identiques à ceux de l’instruction SBR en logique à relais.
ATTENTION Pour chaque paramètre dans une instruction SBR ou RET, utilisez le même type de données (y compris les dimensions de tableau) que celui du paramètre correspondant dans l’instruction JSR. L’utilisation de types de données différents peut produire des résultats inattendus.
Opérande Type Format Description
Paramètre d’entrée
BOOL
SINT
INT
DINT
REAL
structure
point
point de tableau
point de ce sous-programme vers lequel vous voulez copier le paramètre d’entrée correspondant à partir de l’instruction JSR
SBR(InputPar);
Paramètres
❇
434 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Opérandes RET :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction RET en logique à relais.
Bloc fonctionnel
Les opérandes sont identiques à ceux de l’instruction RET en logique à relais.
Description : L’instruction JSR exécute le sous-programme spécifié, qui est renvoyé vers un sous-programme secondaire :
• Le sous-programme est exécuté une fois.
• Une fois le sous-programme exécuté, l’exécution logique revient au sous-programme qui contient l’instruction JSR.
Opérande Type Format Description
Paramètre de retour
BOOL
SINT
INT
DINT
REAL
structure
immédiat
point
point de tableau
donnée de ce sous-programme que vous voulez copier dans le paramètre de retour correspondant dans l’instruction JSR
RET(ReturnPar);
Paramètres
❇
Publication 1756-RM003K-FR-P – Juillet 2008 435
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Pour programmer un saut vers un sous-programme, suivez les directives suivantes :
Le schéma suivant illustre le fonctionnement des instructions.
IMPORTANT N’utilisez pas d’instruction JSR pour appeler (exécuter) le sous-programme principal.
• Vous pouvez insérer une instruction JSR dans le sous-programme principal ou dans tout autre sous-programme.
• Si vous utilisez une instruction JSR pour appeler le sous-programme principal, puis que vous insérez une instruction RET dans ce sous-programme principal, un défaut majeur se produit (type 4, code 31).
���
������
������ �������
Sous-programme
JSR
SBR
RET
RET
JSR
1. Si vous voulez copier des données vers un point dans le sous-programme, entrez un paramètre d’entrée.
2. Si vous voulez copier un résultat du sous-programme vers un point dans ce sous-programme, entrez un paramètre de retour.
3. Entrez autant de paramètres d’entrée et de retour que nécessaire.
SBR
1. Si l’instruction JSR possède un paramètre d’entrée, entrez une instruction SBR.
2. Placez l’instruction SBR comme première instruction dans le sous-programme.
3. Pour chaque paramètre d’entrée dans l’instruction JSR, entrez le point vers lequel vous voulez copier les données.
42974
Sous-programme
RET
1. Si l’instruction JSR possède un paramètre de retour, entrez une instruction RET.
2. Placez l’instruction RET comme dernière instruction dans le sous-programme.
3. Pour chaque paramètre de retour dans l’instruction JSR, entrez un paramètre de retour à envoyer à l’instruction JSR.
4. Dans un sous-programme à relais, placez des instructions RET supplémentaires pour quitter le sous-programme secondaire en fonction de différentes conditions d’entrée, si nécessaire. (Les sous-programmes de bloc-fonction ne permettent qu’une instruction RET.)
436 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Il n’y a pas de restrictions, à part la quantité de mémoire de l’automate, au nombre de sous-programmes imbriqués que vous pouvez avoir ou au nombre de paramètres que vous passez ou renvoyez.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Exécution :
Logique à relais et texte structuré
���
���
���
�����
������ �������
sous-programme principal
niveau 1 niveau 3niveau 2
JSRJSR
JSR
SBRSBRSBR
RETRETRET
action_1
action_2 action_3
Un défaut majeur se produit si Type de défaut Code de défaut
L’instruction JSR a moins de paramètres d’entrée que l’instruction SBR 4 31
L’instruction JSR passe à un sous-programme de gestion des défauts 4 ou fourni par l’utilisateur
0 ou fourni par l’utilisateur
L’instruction RET a moins de paramètres de retour que l’instruction JSR 4 31
Le sous-programme principal contient une instruction RET 4 31
Condition Action logique à relais Action texte structuré
Pré-scrutation L’automate exécute tous les sous-programmes quel que soit l’état de ligne. Pour assurer la pré-scrutation de toutes les lignes du sous-programme, l’automate ignore les instructions RET. (C.-à-d. que les instructions RET ne provoquent pas une sortie du sous-programme.)
• Version 6.x et antérieures, les entrées et les paramètres de retour sont passés.
• Version 7.x et ultérieures, les entrées et les paramètres de retour ne sont pas passés.
Si des appels récurrents existent dans le même sous-programme, le sous-programme n’est pré-scruté que la première fois. Si des appels multiples existent (non récurrents) dans le même sous-programme, le sous-programme est pré-scruté à chaque fois.
L’état de sortie de la ligne est réglée sur faux (logique à relais uniquement).
L’état d’entrée de la ligne est faux pour l’instruction JSR
Le sous-programme n’est pas exécuté.
Les sorties du sous-programme gardent leur dernier état.
L’état de sortie de la ligne est réglé sur faux.
–
Publication 1756-RM003K-FR-P – Juillet 2008 437
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Bloc fonctionnel
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction
Post-scrutation Même action que la pré-scrutation décrite ci-dessus. Même action que la pré-scrutation décrite ci-dessus.
Condition Action logique à relais Action texte structuré
paramètres d’entréeoui
non
JSR copie les paramètres d’entrée dans les points SBR
fin
l’exécution de la logique commence dans le sous-programme identifié par JSR
fin du sous-programme
oui
non
l’état de sortie de la ligne est faux
continue l’exécution du sous-programme
paramètres de retouroui
non
RET copie les paramètres de retour dans les points JSR appropriés
l’état de sortie de la ligne est vrai
l’exécution de la logique revient à JSR
Instruction REToui
non
438 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction
Aucune.
Première exécution de l’instruction
Aucune.
Exécution normale 1. Si le sous-programme contient une instruction SBR, l’automate exécute d’abord l’instruction SBR.
2. L’automate verrouille toutes les valeurs de données dans les IREF.
3. L’automate exécute les autres blocs fonctionnels dans l’ordre déterminé par leur câblage. Ceci comprend les autres instructions JSR.
4. L’automate écrit les sorties dans des OREF.
5. Si le sous-programme contient une instruction RET, l’automate exécute l’instruction RET en dernier.
Post-scrutation Le sous-programme est appelé.
Si le sous-programme est un sous-programme SFC, il est initialisé de la même façon que pendant la pré-scrutation.
Publication 1756-RM003K-FR-P – Juillet 2008 439
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Exemple 1 : L’instruction JSR passe value_1 et value_2 dans routine_1.
L’instruction SBR reçoit value_1 et value_2 de l’instruction JSR et copie ces valeurs dans value_a et value_b, respectivement. L’exécution de la logique continue dans ce sous-programme.
L’instruction RET envoie float_a à l’instruction JSR. L’instruction JSR reçoit float_a et copie la valeur dans float_value_1. L’exécution de la logique continue avec l’instruction suivant l’instruction JSR.
Logique à relais
Texte structuré
Sous-programme Programme
Sous-programme principal
Sous-programme
[autres lignes de code]
Sous-programme Programme
Sous-programme principal JSR(routine_1,2,value_1,value_2,float_value_1);
Sous-programme SBR(value_a,value_b);
<déclarations>;
RET(float_a);
440 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exemple 2 :
Logique à relais
MainRoutine
Lorsque abc est actif, subroutine_1 est exécuté, calcule le nombre de cookies et place une valeur dans cookies_1.
Ajoute la valeur de cookies_1 à cookies_2 et enregistre le résultat dans total_cookies.
Subroutine_1
Lorsque def est activé, l’instruction RET renvoie value_1 au paramètre JSR cookies_1 et le reste du sous-programme n’est pas scruté.
Lorsque def est désactivé (ligne précédente) et ghi est activé, l’instruction RET renvoie value_2 au paramètre JSR cookies_1 et le reste du sous-programme n’est pas scruté.
Lorsque def et ghi sont désactivés (lignes précédentes), l’instruction RET renvoie value_3 au paramètre JSR cookies_1.
Publication 1756-RM003K-FR-P – Juillet 2008 441
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Exemple 3 :
Bloc fonctionnel
42973
42972
2. Les instructions ADD additionnent Input_A, Input_B et Input_C et placent le résultat dans Sum_A_B_C.
Instruction JSR dans Routine_A
Blocs-fonctions du sous-programme Add_Three_Inputs
1. Les valeurs dans Add_Input_1, Add_Input_2 et Add_Input_3 sont copiées dans Input_A, Input_B et Input_C, respectivement.
3. La valeur de Sum_A_B_C est copiée dans Add_Three_Result.
442 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Saut vers sous-programme externe (JXR)
L’instruction JXR exécute un sous-programme externe. Cette instruction n’est prise en charge que par les automates SoftLogix5800.
Opérandes :
Logique à relais
.
Opérande Type Format Description
Nom du sous-programme externe
ROUTINE nom sous-programme externe à exécuter
Commande desous-programme externe
EXT_ROUTINE_CONTROL
point structure de commande (voir la page suivante)
Paramètre BOOL
SINT
INT
DINT
REAL
structure
immédiat
point
point de tableau
données de ce sous-programme que vous voulez copier vers une variable dans le sous-programme externe
• Les paramètres sont en option.
• Entrez plusieurs paramètres, si nécessaire.
• Vous pouvez avoir jusqu’à 10 paramètres.
Paramètre de retour
BOOL
SINT
INT
DINT
REAL
point point de ce sous-programme vers lequel vous voulez copier un résultat du sous-programme externe
• Le paramètre de retour est en option.
• Vous ne pouvez avoir qu’un paramètre de retour.
Publication 1756-RM003K-FR-P – Juillet 2008 443
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Structure EXT_ROUTINE_CONTROL
Mnémonique Type de données Description Exécution
ErrorCode SINT Si une erreur se produit, cette valeur identifie l’erreur. Les valeurs valables vont de 0 à 255.
Ce ne sont pas des codes d’erreur prédéfinis. Le développeur du sous-programme externe doit fournir les codes d’erreur.
NumParams SINT Cette valeur indique le nombre de paramètres associés à cette instruction.
Affichage uniquement – cette information est déduite de l’entrée de l’instruction.
ParameterDefs EXT_ROUTINE_PARAMETERS[10]
Ce tableau contient les définitions des paramètres à transmettre au sous-programme externe. L’instruction peut transmettre jusqu’à 10 paramètres.
Affichage uniquement – cette information est déduite de l’entrée de l’instruction.
ReturnParamDef EXT_ROUTIN_PARAMETERS
Cette valeur contient des définitions du paramètre de retour provenant du sous-programme externe. Il n’existe qu’un paramètre de retour.
Affichage uniquement – cette information est déduite de l’entrée de l’instruction.
EN BOOL Lorsqu’il est activé, le bit de validation indique que l’instruction JXR est activée.
Le sous-programme externe active ce bit.
ReturnsValue BOOL S’il est activé, ce bit indique qu’un paramètre de retour a été entré pour l’instruction. S’il est effacé, ce bit indique qu’aucun paramètre de retour n’a été entré pour l’instruction.
Affichage uniquement – cette information est déduite de l’entrée de l’instruction.
DN BOOL Le bit de fin est activé lorsque le sous-programme externe a été exécuté complètement une fois.
Le sous-programme externe active ce bit.
ER BOOL Le bit d’erreur est activé si une erreur se produit. L’instruction s’arrête jusqu’à ce que le programme efface le bit d’erreur.
Le sous-programme externe active ce bit.
FirstScan BOOL Ce bit recherche si c’est la première scrutation après la commutation de l’automate en mode Exécution. Utilisez FirstScan pour initialiser le sous-programme externe, si nécessaire.
L’automate active ce bit pour indiquer l’état de la scrutation.
EnableOut BOOL Activation de la sortie. Le sous-programme externe active ce bit.
EnableIn BOOL Entrée activée. L’automate active ce bit pour indiquer l’état d’entrée de la ligne. L’instruction est exécutée quel que soit l’état de la ligne. Le développeur du sous-programme externe doit surveiller cet état et doit agir en conséquence.
User1 BOOL Ces bits sont disponibles pour l’utilisateur. L’automate n’initialise pas ces bits.
Soit le sous-programme externe, soit le programme utilisateur peut activer ces bits.
User0 BOOL
ScanType1 BOOL Ces bits indiquent le type de scrutation en cours :
Valeurs de bit : Type de scrutation :
00 Normale
01 Pré-scruation
10 Post-scrutation (pas applicableau programmes en logique à relais)
L’automate active ces bits pour indiquer l’état de la scrutation.
ScanType0 BOOL
444 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Description : Utilisez l’instruction Saut vers sous-programme externe (JXR) pour appeler le sous-programme externe à partir d’une logique à relais dans votre projet. L’instruction JXR prend en charge plusieurs paramètres pour permettre de transmettre des valeurs entre la logique à relais et le sous-programme externe.
L’instruction JXR est similaire à l’instruction Saut vers sous-programme (JSR). L’instruction JXR initie l’exécution du sous-programme externe spécifié :
• le sous-programme est exécuté une fois ;
• une fois le sous-programme externe exécuté, l’exécution logique revient au sous-programme qui contient l’instruction JXR.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique ne sont pas affectés.
Conditions d’erreur :
Exécution : L’instruction JXR peut être synchrone ou asynchrone, selon la mise en œuvre de la DLL. Le code de la DLL définit également comment répondre à l’état de la scrutation, à l’état d’entrée de la ligne et à l’état de sortie de la ligne.
Pour plus d’informations sur l’utilisation de l’instruction JXR et sur la création de sous-programmes externes, voir la publication 1789-UM002, SoftLogix5800 System User Manual.
Un défaut majeur se produit si Type de défaut
Code du défaut
• une anomalie se produit dans la DLL du sous-programme externe
• la DLL n’a pas pu être chargée
• le point d’entrée n’a pas été trouvé dans la DLL
4 88
Publication 1756-RM003K-FR-P – Juillet 2008 445
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Fin temporaire (TND) L’instruction TND agit comme limite.
Opérandes :
Opérandes de logique à relais
Aucune
Texte structuré
Aucune
Vous devez saisir les parenthèses () après la mnémonique de l’instruction, même s’il n’y a pas d’opérandes.
Description : Lorsqu’elle est activée, l’instruction TND laisse l’automate exécuter la logique jusqu’à cette instruction.
Lorsqu’elle est activée, l’instruction TND agit comme fin du sous-programme. Lorsque l’automate scrute une instruction TND, l’automate se déplace jusqu’à la fin du sous-programme en cours. Si l’instruction TND est dans un sous-programme, la commande revient au sous-programme appelant. Si l’instruction TND est dans un sous-programme principal, la commande revient au programme suivant dans la tâche en cours.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
TND();
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction Le sous-programme en cours s’arrête. Le sous-programme en cours s’arrête.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
446 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exemple : Vous pouvez utiliser l’instruction TND lors du débogage ou du dépannage pour exécuter la logique jusqu’à un certain point. Déplacez l’instruction TND progressivement dans la logique pendant le débogage de chaque nouvelle section.
Lorsque l’instruction TND est activée, l’automate arrête de scruter le sous-programme en cours.
Logique à relais
Texte structuré
TND();
Publication 1756-RM003K-FR-P – Juillet 2008 447
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Relais de contrôle maître (MCR)
L’instruction MCR, utilisée par paire, crée une zone programme qui peut désactiver toutes les lignes entre les instructions MCR.
Opérandes :
Logique à relais
Aucune
Description : Lorsque la zone MCR est activée, les lignes de cette zone sont scrutées à la recherche d’états vrai ou faux normaux. Lorsqu’elle est désactivée, l’automate scrute toujours les lignes de la zone MCR, mais la durée de scrutation est réduite parce que les sorties non rémanentes de la zone sont désactivées. L’état d’entrée de la ligne est faux pour toutes les instructions dans la zone MCR désactivée.
Lorsque vous programmez une zone MCR, notez que :
• vous devez terminer la zone par une instruction MCR sans condition ;
• vous ne pouvez pas imbriquer une zone MCR dans une autre ;
• vous ne devez pas sauter à une autre zone MCR. Si la zone est fausse, sauter dans la zone l’active à partir du point où vous avez sauté jusqu’à la fin de la zone ;
• vous n’avez pas besoin de programmer une instruction MCR pour terminer la zone si celle-ci continue jusqu’à la fin du sous-programme.
L’instruction MCR ne remplace pas un relais de contrôle maître câblé offrant la capacité d’arrêt d’urgence. Vous devez quand même installer un relais de contrôle maître câblé pour pouvoir couper l’alimentation des E/S en cas d’urgence.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
ATTENTION Ne superposez pas et n’imbriquez pas les zones MCR. Chaque zone MCR doit être séparée et complète. S’il y a superposition ou imbrication, un fonctionnement imprévisible de la machine peut se produire, risquant de détériorer l’équipement et/ou d’occasionner des blessures.
Placez les opérations critiques en dehors de la zone MCR. Si vous commencez des instructions telles que des temporisateurs dans une zone MCR, l’exécution de l’instruction s’arrête lorsque la zone est désactivée et le temporisateur est effacé.
448 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exécution :
Exemple : Lorsque la première instruction MCR est activée (input_1, input_2 et input_3 sont activées), l’automate exécute les lignes de la zone MCR (entre les deux instructions MCR) et active ou efface les sorties, selon l’état des entrées.
Lorsque la première instruction MCR est désactivée (input_1, input_2 et input_3 ne sont pas toutes activées), l’automate exécute les lignes de la zone MCR (entre les deux instructions MCR) et l’état d’entrée de la ligne passe à faux pour toutes les lignes de la zone MCR, quel que soit l’état des entrées.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Les instructions de la zone sont scrutées, mais l’état de la ligne est faux et les sorties non rémanentes de la zone sont désactivées.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
Les instructions de la zone sont scrutées normalement.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 449
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Désactivation d’interruption par l’utilisateur (UID) Activation d’interruption par l’utilisateur (UIE)
Les instructions UID et UIE travaillent ensemble pour empêcher un petit nombre de lignes critiques d’être interrompues par d’autres tâches.
Opérandes :
Logique à relais
Aucune
Texte structuré
Aucune
Vous devez saisir les parenthèses () après la mnémonique de l’instruction, même s’il n’y a pas d’opérandes.
Description : Lorsque l’état d’entrée de la ligne est vrai :
• l’instruction UID empêche les tâches à priorité supérieure d’interrompre la tâche en cours, mais n’empêche pas l’exécution d’un sous-programme de gestion des défauts ou du gestionnaire des défauts de l’automate ;
• l’instruction UIE active d’autres tâches pour interrompre la tâche courante.
Pour empêcher une série de lignes d’être interrompues :
1. réduisez au minimum le nombre de lignes qui ne doivent pas être interrompues. La désactivation des interruptions pendant une durée prolongée peut entraîner la perte de la communication ;
2. entrez une ligne et une instruction UID avant la première ligne qui ne doit pas être interrompue ;
3. entrez une ligne et une instruction UIE après la dernière ligne qui ne doit pas être interrompue ;
4. au besoin, vous pouvez entrer des instructions UID/UIE par paires.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
UID();
UIE();
450 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exécution :
Exemple : Lorsqu’une erreur se produit (error_bit est activé), l’instruction FSC vérifie le code d’erreur par rapport à la liste des erreurs critiques. Si l’erreur est critique (error_check.FD est activé), un avertissement est généré. Les instructions UID et UIE empêchent les autres tâches d’interrompre la vérification d’erreur et l’avertissement.
Logique à relais
Texte structuré
UID();
<déclarations>;
UIE();
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction UID empêche l’interruption par des tâches ayant une priorité plus élevée.
L’instruction UIE permet l’interruption par des tâches ayant une priorité plus élevée.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
UID
error_bit
ENDNER
File Search/CompareControl error_checkLength 10Position 8Mode ALLExpression error_code=error_list[error_check.POS]
FSC
error_check.FD
alarm
UIE
File Search/CompareControlLengthPositionModeExpression
error_check
error_code=error_list[error_check.POS]ALL
Alarme
UID
ENDNER
FSCerror_bit
error_check.FD
Publication 1756-RM003K-FR-P – Juillet 2008 451
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Instruction toujours faux (AFI)
L’instruction AFI règle son état de sortie de ligne sur faux.
Opérandes :
Logique à relais
Aucune
Description : L’instruction AFI règle son état de sortie de ligne sur faux.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Utilisez l’instruction AFI pour désactiver temporairement une ligne lorsque vous déboguez un programme.
Lorsqu’elle est activée, l’instruction AFI désactive toutes les instructions sur cette ligne.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
452 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Pas d’opération (NOP) L’instruction NOP fonctionne comme caractère générique.
Opérandes :
Logique à relais
Aucune
Description : Vous pouvez placer l’instruction NOP n’importe où sur une ligne. Activée ou désactivée, cette instruction n’effectue aucune opération.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Cette instruction est utile pour localiser des lignes sans condition. Ceci en plaçant l’instruction NOP sur la ligne.
L’instruction NOP contourne l’instruction XIC pour activer la sortie.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 453
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Fin de transition (EOT) L’instruction EOT renvoie un état booléen à une transition SFC.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction EOT en logique à relais.
Description : Etant donné que l’instruction EOT renvoie un état booléen, plusieurs sous-programmes SFC peuvent partager le même sous-programme contenant l’instruction EOT. Si le sous-programme appelant n’est pas une transition, l’instruction EOT agit comme une instruction TND (voir page 446).
La mise en œuvre Logix de l’instruction EOT diffère de celle d’un automate PLC-5. Dans un automate PLC-5, l’instruction EOT n’a pas de paramètres. A la place, l’instruction EOT PLC-5 renvoie un état de ligne comme état. Dans un automate Logix, le paramètre de retour renvoie l’état de transition puisque l’état de la ligne n’est pas disponible dans tous les langages de programmation Logix.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
bit de données
BOOL point état de la transition(0=en exécution, 1=terminé)
EOT(data_bit);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction renvoie la valeur du bit de données au sous-programme appelant.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
454 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exemple : Lorsque limit_switch1 et interlock_1 sont activés, activer l’état. Une fois timer_1 terminé, EOT renvoie la valeur de state au sous-programme appelant.
Logique à relais
Texte structuré
State := limit_switch1 AND interlock_1;
IF timer_1.DN THEN
EOT(state);
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 455
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Pause SFC (SFP) L’instruction SFP met un sous-programme SFC en pause.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SFP en logique à relais.
Description : L’instruction SFP vous permet de mettre en pause un sous-programme SFC en cours d’exécution. Si un sous-programme SFC est en pause, utilisez l’instruction SFP à nouveau pour changer cet état et reprendre l’exécution du sous-programme.
Utilisez également l’instruction SFP pour reprendre l’exécution du graphe de fonctionnement séquentiel après avoir utilisé une instruction SFR (voir page 458) pour réinitialiser un sous-programme SFC.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Opérande Type Format Description
Nom SFCRoutine
ROUTINE nom sous-programme SFC à mettre en pause
TargetState DINT immédiat
point
sélectioner une option :
en exécution (ou entrez 0) ;
en pause (ou entrez 1).
SFP(SFCRoutineName,TargetState);
Un défaut majeur se produit si Type de défaut Code de défaut
le sous-programme n’est pas de type sous-programme SFC
4 85
456 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exécution :
Exemple : Si sfc_en_p est activé, mettre en pause le sous-programme SFC appelé normal. Redémarrer le graphe de fonctionnement séquentiel (SFC) lorsque sfc_en_e est activé.
Logique à relais
Texte structuré
Mettre en pause le sous-programme SFC : IF (sfp_en_p) THEN
SFP(normal,paused);
sfp_en_p := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction pause ou reprend l’exécution du sous-programme SFC spécifié.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Mettre en pause le sous-programme SFC.
Reprendre l’exécution du sous-programme SFC.
Publication 1756-RM003K-FR-P – Juillet 2008 457
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Reprendre l’exécution du sous-programme SFC : IF (sfp_en_e) THEN
SFP(normal,executing);
sfp_en_e := 0;
END_IF;
Réinitialisation SFC (SFR) L’instruction SFR réinitialise l’exécution d’un sous-programme SFC lors d’une étape spécifiée.
Opérandes :
Opérandes de logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction SFR en logique à relais.
Description : Lorsque l’instruction SFR est activée :
• dans le sous-programme SFC spécifié, toutes les actions mémorisées arrêtent leur exécution (réinitialisation) ;
• SFC commence l’exécution à l’étape définie.
Si l’étape cible est 0, le graphe est réinitialisé à son étape initiale.
La mise en œuvre Logix de l’instruction SFR diffère de celle d’un automate PLC-5. Dans l’automate PLC-5, l’instruction SFR a été exécutée lorsque l’état de la ligne était vrai. Après la réinitialisation, le graphe de fonctionnement séquentiel reste en pause jusqu’à ce que l’état de la ligne qui contient l’instruction SFR devient faux. Ceci permet de retarder l’exécution après une réinitialisation. Cette fonction de pause/reprise de l’instruction SFR PLC-5 a été découplée de l’état de la ligne et déplacée dans l’instruction SFP.
Indicateurs d’état arithmétique : Non affectés
Opérande Type Format Description
Nom SFCRoutine
ROUTINE nom sous-programme SFC à réinitialiser
Nom d’étape
SFC_STEP point étape cible où reprendre l’exécution
SFR(SFCRoutineName,StepName);
458 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Conditions d’erreur :
Exécution :
Exemple : Si une condition spécifique se produit (shutdown est activé), redémarrer le SFC à l’étape initialize.
Logique à relais
Texte structuré
IF shutdown THEN
SFR(mySFC,initialize);
END_IF;
Un défaut majeur se produit si Type de défaut Code de défaut
le sous-programme n’est pas de type sous-programme SFC
4 85
l’étape cible spécifiée n’existe pas dans le sous-programme SFC
4 89
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction réinitialise le sous-programme SFC spécifié.
L’instruction réinitialise le sous-programme SFC spécifié.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 459
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Déclenchement de tâche événementielle (EVENT)
L’instruction EVENT déclenche l’exécution d’une tâche événementielle.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction EVENT en logique à relais.
Description : Utilisez l’instruction EVENT pour exécuter de façon programmatique une tâche événementielle :
• chaque fois que l’instruction est exécutée, elle déclenche la tâche événementielle spécifiée ;
• assurez-vous de laisser suffisamment de temps à la tâche événementielle pour qu’elle termine son exécution avant de la redéclencher. Autrement, une chevauchement peut se produire ;
• si vous exécutez une instruction EVENT alors qu’une tâche événementielle est déjà en cours d’exécution, l’automate augmente le compteur de chevauchement mais il ne déclenche pas la tâche événementielle.
Opérande Type Format Description
Tâche TASK nom tâche événementielle à exécuter
Cette instruction vous permet de choisir d’autres types de tâches, mais elle ne les exécute pas.
EVENT(task_name);
460 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Déterminer de façon programmatique si une instruction EVENT déclenche une tâche
Pour déterminer si une instruction EVENT déclenche une tâche événementielle, utilisez l’instruction Obtenir valeur système (GSV) pour surveiller l’attribut d’état de la tâche.
L’automate n’efface pas les bits de l’attribut d’état une fois qu’ils sont activés.
• Pour utiliser un bit pour de nouvelles informations d’état, vous devez effacer le bit manuellement.
• Utilisez une instruction Régler valeur système (SSV) pour régler l’attribut sur une autre valeur.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Attribut d’état de l’objet TACHE
Attribut Type de données
Instruction Description
Status DINT GSV
SSV
Fournit des informations sur l’état de la tâche. Une fois que l’automate a activé un bit, vous devez effacer manuellement le bit pour déterminer si un autre défaut de ce type s’est produit.
Pour déterminer si : Examinez ce bit :
Une instruction EVENT a déclenché la tâche (tâche événementielle uniquement).
0
Un timeout a déclenché la tâche (tâche événementielle uniquement).
1
Un chevauchement s’est produit pour cette tâche. 2
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée. –
L’état de sortie de la ligne est réglé sur vrai.
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction déclenche l’exécution de la tâche événementielle spécifiée.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 461
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Exemple 1 : Un automate utilise plusieurs programmes mais pas une procédure d’arrêt commune. Chaque programme utilise un nom de point d’accès programme Shut_Down_Line qui est activé si le programme détecte une condition qui requiert un arrêt. La logique de chaque programme est exécutée comme suit :
Si Shut_Down_Line = on (les conditions requièrent un arrêt) alors
Exécuter la tâche Shut_Down une fois
Logique à relais
Programme A
Programme B
Texte structuré
Programme A
Programme B
IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN
EVENT (Shut_Down);
END_IF;
Shut_Down_Line_One_Shot := Shut_Down_Line;
IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN
EVENT (Shut_Down);
END_IF;
Shut_Down_Line_One_Shot := Shut_Down_Line;
462 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Chapitre 11
Exemple 2 : L’exemple suivant utilise une instruction EVENT pour initialiser une tâche événementielle. (Un autre type d’événement déclenche normalement la tâche événementielle.)
Tâche continue
Si Initialize_Task_1 = 1 alors
L’instruction ONS limite l’exécution de l’instruction EVENT à une scrutation.
L’instruction EVENT déclenche une exécution de Task_1 (tâche événementielle).
Task_1 (tâche événementielle)
L’instruction GSV active Task_Status (point DINT) = attribut Etat de la tâche événementielle. Dans l’attribut Nom d’instance, CECI signifie l’objet TACHE de la tâche dans laquelle se trouve l’instruction (c’est-à-dire, Task_1).
Si Task_Status.0 = 1, alors une instruction EVENT déclenche la tâche événementielle (c’est-à-dire, lorsque la tâche continue exécute son instruction EVENT pour initialiser la tâche événementielle).
L’instruction RES réinitialise un compteur utilisé par la tâche événementielle.
L’automate n’efface pas les bits de l’attribut d’état une fois qu’ils sont activés. Pour utiliser un bit pour de nouvelles informations d’état, vous devez effacer le bit manuellement.
Si Task_Status.0 = 1, alors effacer le bit.
L’instruction OTU active Task_Status.0 = 0.
L’instruction SSV active l’attribut Etat de CETTE tâche (Task_1) = Task_Status. Ceci inclut le bit effacé.
Publication 1756-RM003K-FR-P – Juillet 2008 463
Chapitre 11 Instructions de commande de programme (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Notes :
464 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 12
Instructions pour/rupture(FOR, FOR...DO, BRK, EXIT, RET)
Introduction Utilisez l’instruction FOR pour appeler un sous-programme de façon répétitive. Utilisez une instruction BRK pour interrompre l’exécution d’un sous-programme.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
exécuter un sous-programme de façon répétitive
FOR
FOR...DO(1)
Logique à relais
Texte structuré
466
arrêter l’exécution répétée d’un sous-programme
BRK
EXIT(1)
Logique à relais
Texte structuré
469
revenir à l’instruction FOR RET Logique à relais 470
(1) Texte structuré uniquement.
Publication 1756-RM003K-FR-P – Juillet 2008 465
Chapitre 12 Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET)
Pour (FOR) L’instruction FOR exécute un sous-programme de façon répétitive.
Opérandes :
Logique à relais
Texte structuré
Utilisez la structure FOR...DO (pour...faire). Pour plus d’informations sur les structures de texte structuré, voir Annexe C, Programmation en texte structuré.
Description :
Opérande Type Format Description
Nom du sous-programme
ROUTINE nom de sous-programme
sous-programme à exécuter
Index DINT point compte le nombre d’exécution du sous-programme
Valeur initiale SINT
INT
DINT
immédiat
point
valeur à laquelle démarre l’index
Valeur finale SINT
INT
DINT
immédiat
point
valeur à laquelle arrêter l’exécution du sous-programme
Taille d’étape SINT
INT
DINT
immédiat
point
quantité à ajouter à l’index chaque fois que l’instruction FOR exécute le sous-programme
FOR count:= initial_value TO final_value BY increment DO
<déclaration>;
END_FOR;
IMPORTANT N’utilisez pas d’instruction FOR pour appeler (exécuter) le sous-programme principal.
• Vous pouvez insérer une instruction FOR dans le sous-programme principal ou dans tout autre sous-programme.
• Si vous utilisez une instruction FOR pour appeler le sous-programme principal, puis que vous insérez une instruction RET dans ce sous-programme principal, un défaut majeur se produit (type 4, code 31).
466 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET) Chapitre 12
Lorsqu’elle est activée, l’instruction FOR exécute plusieurs fois le sous-programme jusqu’à ce que la valeur de l’index dépasse la valeur finale. Cette instruction ne transmet pas de paramètres au sous-programme.
Chaque fois que l’instruction FOR exécute le sous-programme, elle ajoute la taille de l’étape à l’index.
Attention à ne pas avoir trop de boucle dans une seule scrutation. Un nombre excessif de répétitions peut provoquer un dépassement de temps du chien de garde d’un automate, ce qui entraîne un défaut majeur.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Un défaut majeur se produit si Type de défaut Code de défaut
Le sous-programme principal contient une instruction RET
4 31
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’automate exécute le sous-programme une fois.
Si des instructions FOR récurrentes existent dans le même sous-programme, le sous-programme n’est pré-scruté que la première fois. Si des instructions FOR multiples existent (non récurrentes) dans le même sous-programme, le sous-programme est pré-scruté à chaque fois.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 467
Chapitre 12 Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET)
Exemple : Lorsqu’elle est activée, l’instruction FOR exécute plusieurs fois routine_2 et augmente value_2 de 1 à chaque fois. Lorsque value_2 est > 10 ou qu’une instruction BRK est activée, l’instruction FOR n’exécute plus routine_2.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
index ≥ valeur finalenonoui
exécuter sous-programme
index = (index + step_size)
L’état d’entrée de la ligne est vrai
fin
index = initial_value
l’état de sortie de la ligne est vrai
taille d’étape < 0non
oui
index ≤ valeur finalenon
oui
aller à la fin
finaller à la fin
468 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET) Chapitre 12
Rupture (BRK) L’instruction BRK interrompt l’exécution d’un sous-programme appelé par une instruction FOR.
Opérandes :
Logique à relais
Aucune
Texte structuré
Utilisez l’expression EXIT dans une structure de boucle. Pour plus d’informations sur les structures de texte structuré, voir Annexe B.
Description : Lorsqu’elle est activée, l’instruction BRK interrompt le sous-programme et ramène l’automate à l’instruction qui suit l’instruction FOR.
S’il existe des instructions FOR imbriquées, une instruction BRK renvoie la commande à l’instruction FOR la plus à l’intérieur.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Lorsqu’elle est activée, l’instruction BRK arrête l’exécution du sous-programme en cours et revient à l’instruction qui suit l’instruction FOR appelante.
EXIT;
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
L’exécution revient à l’instruction qui suit l’instruction FOR appelante.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 469
Chapitre 12 Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET)
Retour (RET) L’instruction RET revient à l’instruction FOR appelante.
Opérandes :
Logique à relais
Aucune
Description :
Lorsqu’elle est activée, l’instruction RET revient à l’instruction FOR appelante. Cette instruction augmente la valeur de l’index de la taille de l’étape et exécute à nouveau le sous-programme. Si la valeur de l’index dépasse la valeur finale, l’instruction FOR se termine et l’exécution passe à l’instruction qui suit l’instruction FOR.
L’instruction FOR n’utilise pas de paramètres. L’instruction FOR ignore tout paramètre que vous entrez dans une instruction RET.
Vous pouvez également utiliser une instruction TND pour terminer l’exécution d’un sous-programme.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
IMPORTANT Ne placez pas d’instruction RET dans le sous-programme principal. Si vous placez une instruction RET dans le sous-programme principal, un défaut majeur se produit (type 4, code 31).
Un défaut majeur se produit si Type de défaut Code de défaut
Le sous-programme principal contient une instruction RET
4 31
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai Renvoie les paramètres spécifiés au sous-programme appelant.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
470 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET) Chapitre 12
Exemple : L’instruction FOR exécute plusieurs fois routine_2 et augmente value_2 de 1 à chaque fois. Lorsque value_2 est > 10 ou qu’une instruction BRK est activée, l’instruction FOR n’exécute plus routine_2.
L’instruction RET revient à l’instruction FOR appelante. L’instruction FOR exécute à nouveau le sous-programme et augmente la valeur de l’index de la taille de l’étape ou, si la valeur de l’index dépasse la valeur finale, l’instruction FOR est terminée et l’exécution passe à l’instruction qui suit l’instruction FOR.
sous-programme appelant sous-programme
Publication 1756-RM003K-FR-P – Juillet 2008 471
Chapitre 12 Instructions pour/rupture (FOR, FOR...DO, BRK, EXIT, RET)
Notes :
472 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 13
Instructions spéciales(FBC, DDT, DTR, PID)
Introduction Les instructions spéciales effectuent des opérations spécifiques aux applications.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
comparer des données à une référence connue correcte et enregistrer toute différence
FBC Logique à relais 474
comparer des données à une référence connue correcte, enregistrer toute différence et actualiser la référence pour faire concorder la source
DDT Logique à relais 481
passer les données source dans un masque et comparer le résultat à des données de référence, puis écrire la source dans la référence pour la comparaison suivante
DTR Logique à relais 488
commander une boucle PID PID Logique à relais
Texte structuré
491
Publication 1756-RM003K-FR-P – Juillet 2008 473
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Comparaison de fichier de bits (FBC)
L’instruction FBC compare les bits d’un tableau Source avec les bits d’un tableau Référence.
Opérandes :
Logique à relais
Opérande Type Format Description
Source DINT point de tableau
tableau à comparer à la référence
n’utilisez pas CONTROL.POS dans l’indice
Référence DINT point de tableau
tableau à comparer à la source
n’utilisez pas CONTROL.POS dans l’indice
Résultat DINT point de tableau
tableau où enregistrer le résultat
n’utilisez pas CONTROL.POS dans l’indice
Commande Cmp
CONTROL structure structure de commande pour l’opération de comparaison
Longueur DINT immédiat nombre de bits à comparer
Position DINT immédiat position en cours dans la source
la valeur initiale est en général 0
Contrôle de résultat
CONTROL structure structure de commande pour les résultats
Longueur DINT immédiat nombre d’emplacements de stockage dans le résultat
Position DINT immédiat position en cours dans le résultat
la valeur initiale est en général 0
ATTENTION Utilisez différents points pour la structure de commande de comparaison et la structure de contrôle de résultat. L’utilisation du même point pour les deux peut provoquer un fonctionnement imprévu pouvant entraîner des dommages matériels et/ou des blessures.
474 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Structure COMPARE
Structure RESULT
Description : Lorsqu’elle est activée, l’instruction FBC compare les bits du tableau Source avec les bits du tableau Référence et enregistre le numéro de bit de chaque différence dans le tableau Résultat.
La différence entre les instructions DDT et FBC est qu’à chaque fois que l’instruction DDT trouve une différence, l’instruction change le bit de référence pour qu’il corresponde au bit source. L’instruction FBC ne change pas le bit de référence.
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction FBC est activée.
.DN BOOL Le bit de fin est activé lorsque l’instruction FBC compare le dernier bit dans les tableaux Source et Référence.
.FD BOOL Le bit trouvé est activé chaque fois que l’instruction FBC enregistre une différence (fonctionnement une à la fois) ou après l’enregistrement de toutes les différences (fonctionnement toutes par scrutation).
.IN BOOL Le bit d’inhibition indique le mode de recherche FBC.
0 = mode tout
1 = mode une différence à la fois
.ER BOOL Le bit d’erreur est activé si la comparaison .POS < 0, la comparaison .LEN < 0, le résultat .POS < 0 ou le résultat .LEN < 0 est vraie. L’instruction arrête son exécution jusqu’à ce que le programme efface le bit .ER.
.LEN DINT La valeur de la longueur indique le nombre de bits à comparer.
.POS DINT La valeur de la position indique le bit en cours.
Mnémonique Type de données
Description
.DN BOOL Le bit de fin est activé lorsque le tableau Résultat est plein.
.LEN DINT La valeur de la longueur indique le nombre d’emplacements de stockage dans le tableau Résultat.
.POS DINT La valeur de la position indique la position actuelle dans le tableau Résultat.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction FBC fonctionne avec une mémoire contiguë. Dans certains cas, elle recherche ou écrit au-delà du tableau dans d’autres membres du point. Ceci se produit si une longueur est trop grande et que le point est un type de données utilisateur.
Publication 1756-RM003K-FR-P – Juillet 2008 475
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Sélection du mode de recherche
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Si vous voulez détecter Sélectionnez ce mode
Une différence à la fois Activez le bit .IN dans la structure CONTROL de comparaison.
Chaque fois que l’état d’entrée de la ligne passe de faux à vrai, l’instruction FBC recherche la différence suivante entre les tableaux Source et Référence. Lorsqu’elle trouve une différence, l’instruction active le bit .FD, enregistre la position de la différence et arrête l’exécution.
Toutes les différences Effacez le bit .IN dans la structure CONTROL de comparaison.
Chaque fois que l’état d’entrée de la ligne passe de faux à vrai, l’instruction FSC recherche toutes les différences entre les tableaux Source et Référence.
Un défaut majeur se produit si Type de défaut Code de défaut
Result.POS > taille du tableau Résultat 4 20
Condition Action logique à relais
Pré-scrutation
fin
le bit compare.EN est effacé
le bit compare.FD est effacé
l’état de sortie de la ligne est faux
examiner le bit compare.DN
bit compare.DN = 0
compare.DN = 1
le bit compare.DN est effacé
la valeur compare.POS est effacée
le bit result.DN est effacé
la valeur result.POS est effacée
476 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Condition Action logique à relais
L’état d’entrée de la ligne est faux
fin
le bit compare.EN est effacé
le bit compare.FD est effacé
l’état de sortie de la ligne est faux
examiner le bit compare.DN
bit compare.DN = 0
compare.DN = 1
le bit compare.DN est effacé
la valeur compare.POS est effacée
le bit result.DN est effacé
la valeur result.POS est effacée
Publication 1756-RM003K-FR-P – Juillet 2008 477
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Condition Action logique à relais
examiner le bit compare.EN
compare.EN = 1
compare.EN = 0
L’état d’entrée de la ligne est vrai
examiner le bit compare.DN
compare.DN = 1
bit compare.DN = 0
le bit compare.EN est activé
le bit compare.ER est effacé le bit compare.FD est effacé
compare.LEN ≤ 0oui
non
compare.POS < 0oui
non le bit compare.ER est activé
comparer
page 479fin
l’état de sortie de la ligne est vrai
aller à quitter
quitter
aller à quitter
aller à quitter
478 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
compare.POS ≥ compare.LEN
oui
non
compare.POS = compare.LEN
le bit compare.DN est activé
comparer
aller à quitter
source[compare.POS] = reference[compare.POS]
non
oui
examiner le bit result.DN
result.DN = 1
result.DN = 0
compare.POS =compare.POS + 1
le bit compare.FD est activé
le bit result.DN est effacéla valeur result.POS est effacée
result.POS < 0oui
non
result.LEN ≤ 0oui
non le bit compare.ER est activé
aller à quitter
oui
non
défaut majeur
result[result.POS] = compare.POSresult.POS = result.POS + 1
result.POS > result.LEN
non
oui
le bit result.DN est activé
page 478
page 478
result.POS > taille du tableau Résultat
Publication 1756-RM003K-FR-P – Juillet 2008 479
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Exemple : Lorsqu’elle est activée, l’instruction FBC compare la source array_dint1 à la référence array_dint2 et enregistre le résultat dans les emplacements des différences dans le résultat array_dint3.
sourcearray_dint1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
référencearray_dint2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
résultatarray_dint3
5 3
480 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Détection de diagnostic (DDT)
L’instruction DDT compare les bits d’un tableau Source avec les bits d’un tableau Référence pour détecter les changements d’état.
Opérandes :
Logique à relais
Opérande Type Format Description
Source DINT point de tableau
tableau à comparer à la référence
n’utilisez pas CONTROL.POS dans l’indice
Référence DINT point de tableau
tableau à comparer à la source
n’utilisez pas CONTROL.POS dans l’indice
Résultat DINT point de tableau
tableau où enregistrer les résultats
n’utilisez pas CONTROL.POS dans l’indice
Commande Cmp
CONTROL structure structure de commande pour l’opération de comparaison
Longueur DINT immédiat nombre de bits à comparer
Position DINT immédiat position en cours dans la source
la valeur initiale est en général 0
Contrôle de résultat
CONTROL structure structure de commande pour les résultats
Longueur DINT immédiat nombre d’emplacements de stockage dans le résultat
Position DINT immédiat position en cours dans le résultat
la valeur initiale est en général 0
ATTENTION Utilisez différents points pour la structure de commande de comparaison et la structure de contrôle de résultat. L’utilisation du même point pour les deux peut provoquer un fonctionnement imprévu pouvant entraîner des dommages matériels et/ou des blessures.
Publication 1756-RM003K-FR-P – Juillet 2008 481
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Structure COMPARE
Structure RESULT
Description : Lorsqu’elle est activée, l’instruction DDT compare les bits du tableau Source avec les bits du tableau Référence, enregistre le numéro de bit de chaque différence dans le tableau Résultat et change la valeur du bit de Référence pour qu’elle corresponde à la valeur du bit Source correspondant.
La différence entre les instructions DDT et FBC est qu’à chaque fois que l’instruction DDT trouve une différence, l’instruction change le bit de référence pour qu’il corresponde au bit source. L’instruction FBC ne change pas le bit de référence.
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction DDT est activée.
.DN BOOL Le bit de fin est activé lorsque l’instruction DDT compare le dernier bit dans les tableaux Source et Référence.
.FD BOOL Le bit trouvé est activé chaque fois que l’instruction DDT enregistre une différence (fonctionnement une à la fois) ou après l’enregistrement de toutes les différences (fonctionnement toutes par scrutation).
.IN BOOL Le bit d’inhibition indique le mode de recherche DDT.
0 = mode tout
1 = mode une différence à la fois
.ER BOOL Le bit d’erreur est activé si la comparaison .POS < 0, la comparaison .LEN < 0, le résultat .POS < 0 ou le résultat .LEN < 0 est vraie. L’instruction arrête son exécution jusqu’à ce que le programme efface le bit .ER.
.LEN DINT La valeur de la longueur indique le nombre de bits à comparer.
.POS DINT La valeur de la position indique le bit en cours.
Mnémonique Type de données
Description
.DN BOOL Le bit de fin est activé lorsque le tableau Résultat est plein.
.LEN DINT La valeur de la longueur indique le nombre d’emplacements de stockage dans le tableau Résultat.
.POS DINT La valeur de la position indique la position actuelle dans le tableau Résultat.
IMPORTANT Vous devez tester et vous assurez que l’instruction ne change pas de données que vous ne voulez pas qu’elle change.
L’instruction DDT fonctionne avec une mémoire contiguë. Dans certains cas, elle recherche ou écrit au-delà du tableau dans d’autres membres du point. Ceci se produit si une longueur est trop grande et que le point est un type de données utilisateur.
482 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Sélection du mode de recherche
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Si vous voulez détecter Sélectionnez ce mode
une différence à la fois Activez le bit .IN dans la structure CONTROL de comparaison.
Chaque fois que l’état d’entrée de la ligne passe de faux à vrai, l’instruction DDT recherche la différence suivante entre les tableaux Source et Référence. Lorsqu’elle trouve une différence, l’instruction active le bit .FD, enregistre la position de la différence et arrête l’exécution.
toutes les différences Effacez le bit .IN dans la structure CONTROL de comparaison.
Chaque fois que l’état d’entrée de la ligne passe de faux à vrai, l’instruction DDT recherche toutes les différences entre les tableaux Source et Référence.
Un défaut majeur se produit si Type du défaut Code de défaut
Result.POS > taille du tableau Résultat 4 20
Condition Action logique à relais
Pré-scrutation
fin
le bit compare.EN est effacé
le bit compare.FD est effacé
l’état de sortie de la ligne est faux
examiner le bit compare.DN
bit compare.DN = 0
compare.DN = 1
le bit compare.DN est effacé
la valeur compare.POS est effacée
le bit result.DN est effacé
la valeur result.POS est effacée
Publication 1756-RM003K-FR-P – Juillet 2008 483
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Condition Action logique à relais
L’état d’entrée de la ligne est faux
fin
le bit compare.EN est effacé
le bit compare.FD est effacé
l’état de sortie de la ligne est faux
examiner le bit compare.DN
bit compare.DN = 0
compare.DN = 1
le bit compare.DN est effacé
la valeur compare.POS est effacée
le bit result.DN est effacé
la valeur result.POS est effacée
484 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Condition Action logique à relais
examiner le bit compare.EN
compare.EN = 1
compare.EN = 0
L’état d’entrée de la ligne est vrai
examiner le bit compare.DN
le bit compare.DN = 1
le bit compare.DN = 0
le bit compare.EN est activé
le bit compare.ER est effacé le bit compare.FD est effacé
compare.LEN ≤ 0oui
non
compare.POS < 0oui
non le bit compare.ER est activé
comparer
page 486fin
l’état de sortie de la ligne est vrai
aller à quitter
quitter
aller à quitter
aller à quitter
Publication 1756-RM003K-FR-P – Juillet 2008 485
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action logique à relais
compare.POS ≥ compare.LEN
oui
non
compare.POS = compare.LEN
le bit compare.DN est activé
comparer
aller à quitter
source[compare.POS] = reference[compare.POS]
non
oui
examiner le bit result.DN
result.DN = 1
result.DN = 0
compare.POS =compare.POS + 1
le bit compare.FD est activéreference[compare.POS] = source[compare.POS]
le bit result.DN est effacéla valeur result.POS est effacée
result.POS < 0oui
non
result.LEN ≤ 0oui
non le bit compare.ER est activé
aller à quitter
oui
non
défaut majeur
result[result.POS] = compare.POSresult.POS = result.POS + 1
result.POS ≥ result.LEN
non
oui
le bit result.DN est activé
page 485
page 478
result.POS > taille du tableau Résultat
486 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Exemple : Lorsqu’elle est activée, l’instruction DDT compare la source array_dint1 à la référence array_dint2 et enregistre le résultat dans les emplacements des différences dans le résultat array_dint3. L’automate change également les bits différents dans la référence array_dint2 pour qu’ils correspondent à la source array_dint1.
Source
array_dint1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
référence (avant comparaison)
array_dint2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
Résultat
array_dint3
5 3
référence (après comparaison)
array_dint2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Publication 1756-RM003K-FR-P – Juillet 2008 487
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Transition de données (DTR)
L’instruction DTR passe la valeur Source à travers un masque et compare le résultat avec la valeur Référence.
Opérandes :
Logique à relais
Description : L’instruction DTR passe la valeur Source à travers un masque et compare le résultat avec la valeur Référence. L’instruction DTR écrit également la valeur Source masquée dans la valeur Référence pour la prochaine comparaison. La Source reste inchangée.
Un « 1 » dans le masque signifie que le bit de données est passé. Un « 0 » dans le masque signifie que le bit de données est bloqué.
Lorsque la Source masquée diffère de la Référence, l’état de sortie de la ligne devient vrai pendant une scrutation. Lorsque la Source masquée est identique à la Référence, l’état de sortie de la ligne est faux.
Opérande Type Format Description
Source DINT immédiat
point
tableau à comparer à la référence
Masque DINT immédiat
point
bits à bloquer ou à passer
Référence DINT point tableau à comparer à la source
ATTENTION La programmation en ligne avec cette instruction peut être dangereuse. Si la valeur Référence est différente à la valeur Source, l’état de sortie de la ligne devient vrai. Prenez des précautions si vous insérez cette instruction lorsque le processeur est en mode Exécution ou en mode Exécution à distance.
488 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Entrée d’une valeur de masque immédiate
Lorsque vous entrez un masque, le logiciel de programmation passe à des valeurs décimales par défaut. Si vous voulez entrer un masque à l’aide d’un autre format, faites précéder la valeur du préfixe correct.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Préfixe Description
16# hexadécimal
par exemple ; 16#0F0F
8# octal
par exemple ; 8#16
2# binaire
par exemple ; 2#00110011
Condition Action logique à relais
Pré-scrutation Référence = Source ET Masque.
L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux Référence = Source ET Masque.
L’état de sortie de la ligne est réglé sur faux.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
source masquée = référence
non
oui
la référence est égale à la source masquée
l’état de sortie de la ligne est vrai
l’état de sortie de la ligne est faux
Publication 1756-RM003K-FR-P – Juillet 2008 489
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Exemple : Lorsqu’elle est activée, l’instruction DTR masque light_1. S’il existe une différence entre les deux valeurs, l’état de sortie de la ligne est réglé sur vrai.
Un 0 dans le masque laisse le bit inchangé.
13385
L’état de a ligne reste faux tant que la valeur d’entrée ne change pas.
L’état de la ligne reste vrai pendant une scrutation lorsqu’un changement est détecté.
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
1 8 3 1 8 7
masque = 0FFF
1 8 7
Source
value_1
Référence
value_2
1 8 3
1 8 3
1 8 3
scrutation encours
scrutationprécédente
scrutation précédente
scrutation en cours
exemple 1 exemple 2
97
0
0
0
0
490 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Proportionnel, intégral et dérivé (PID)
L’instruction PID commande une variable de procédé, tel que débit, pression, température ou niveau.
Opérandes :
Logique à relais
Opérande Type Format Description
PID PID structure structure PID
Variable de procédé
SINT
INT
DINT
REAL
point valeur que vous voulez commander
Rétro-liaison SINT
INT
DINT
REAL
immédiat
point
(facultatif) sortie d’une station matérielle manuelle/auto qui contourne la sortie de l’automate
Entrez 0 si vous ne voulez pas utiliser ce paramètre.
Variable de contrôle
SINT
INT
DINT
REAL
point valeur qui va au dispositif de commande final (vanne, amortisseur, etc.)
Si vous utilisez la zone morte, la variable de contrôle doit être une valeur REAL sinon elle sera forcée à 0 lorsque l’erreur se trouve dans la zone morte.
Boucle maître PID
PID structure (facultatif) point PID pour le PID maître
Si vous effectuez une commande en cascade et ce PID est une boucle esclave, entrez le nom du PID maître. Entrez 0 si vous ne voulez pas utiliser ce paramètre.
Bit maintien BOOL point (facultatif) état actuel du bit de maintien à partir d’une voie de sortie analogique 1756 pour prendre en charge un redémarrage sans à-coups
Entrez 0 si vous ne voulez pas utiliser ce paramètre.
Valeur maintien
SINT
INT
DINT
REAL
point (facultatif) valeur de lecture de données à partir d’une voie de sortie analogique 1756 pour prendre en charge le redémarrage sans à-coups
Entrez 0 si vous ne voulez pas utiliser ce paramètre.
Publication 1756-RM003K-FR-P – Juillet 2008 491
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Texte structuré
Les opérandes sont identiques à ceux de l’instruction PID en logique à relais. Cependant, vous définissez le point de consigne, la variable de procédé et le % de sortie en accédant aux membres .SP, .PV et .OUT de la structure PID, plutôt qu’en incluant les valeurs dans la liste des opérandes.
Structure PID
Point de consigne
Affiche la valeur actuelle du point de consigne
Variable de procédé
Affiche la valeur actuelle de la variable de procédé mise à l’échelle
% de sortie Affiche la valeur actuelle de la sortie en pourcentage
Opérande Type Format Description
PID(PID,ProcessVariable,Tieback,ControlVariable,PIDMasterLoop,InholdBit,InHoldValue);
Mnémonique Type de données Description
.CTL DINT Le membre .CTL permet l’accès aux membres d’état (bits) via un mot de 32 bits. L’instruction PID active les bits 07 à 15.
Ce bit est le membre
31 .EN
30 .CT
29 .CL
28 .PVT
27 .DOE
26 .SWM
25 .CA
24 .MO
23 .PE
22 .NDF
21 .NOBC
20 .NOZC
Ce bit est le membre suivant, activé par l’instruction PID
15 .INI
14 .SPOR
13 .OLL
12 .OLH
11 .EWD
10 .DVNA
09 .DVPA
08 .PVLA
07 .PVHA
.SP REAL point de consigne
492 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
.KP REAL indépendant gain proportionnel (sans unité)
dépendant gain automate (sans unité)
.KI REAL indépendant gain intégral (1/s)
dépendant temps d’intégration (minutes par répétition)
.KD REAL indépendant gain dérivé (secondes)
dépendant constante de temps de dérivation (minutes)
.BIAS REAL anticipation de vitesse ou % bias
.MAXS REAL valeur d’échelle d’unité procédé maximum
.MINS REAL valeur d’échelle d’unité procédé minimum
.DB REAL unités procédé de zone morte
.SO REAL % de sortie activée
.MAXO REAL limite de sortie maximum (% de la sortie)
.MINO REAL limite de sortie minimum (% de la sortie)
.UPD REAL temps de mise à jour de la boucle (secondes)
.PV REAL valeur PV mise à l’échelle
.ERR REAL valeur d’erreur mise à l’échelle
.OUT REAL % de sortie
.PVH REAL limite d’alarme haute de variable procédé
.PVL REAL limite d’alarme basse de variable procédé
.DVP REAL limite d’alarme d’écart positif
.DVN REAL limite d’alarme d’écart négatif
.PVDB REAL zone morte d’alarme de variable procédé
.DVDB REAL zone morte d’alarme d’écart
.MAXI REAL valeur PV maximum (entrée non mise à l’échelle)
.MINI REAL valeur PV minimum (entrée non mise à l’échelle)
.TIE REAL valeur de rétro-liaison pour commande manuelle
.MAXCV REAL valeur CV maximum (correspondant à 100 %)
.MINCV REAL valeur CV minimum (correspondant à 0 %)
.MINTIE REAL valeur de rétro-liaison minimum (correspondant à 100 %)
.MAXTIE REAL valeur de rétro-liaison maximum (correspondant à 0 %)
Mnémonique Type de données Description
Publication 1756-RM003K-FR-P – Juillet 2008 493
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
.DATA REAL[17] le membre .DATA stocke :
Elément : Description
.DATA[0] accumulation intégrale
.DATA[1] valeur temporaire de lissage des dérivées
.DATA[2] valeur .PV précédente
.DATA[3] valeur .ERR précédente
.DATA[4] valeur .SP valable précédente
.DATA[5] pourcentage de constante de mise à l’échelle
.DATA[6] constante de mise à l’échelle .PV
.DATA[7] constante de mise à l’échelle des dérivées
.DATA[8] valeur .KP précédente
.DATA[9] valeur .KI précédente
.DATA[10] valeur .KD précédente
.DATA[11] gain dépendant .KP
.DATA[12] gain dépendant .KI
.DATA[13] gain dépendant .KD
.DATA[14] valeur .CV précédente
.DATA[15] constante de non-mise à l’échelle .CV
.DATA[16] constante de non-mise à l’échelle de rétro-liaison
.EN BOOL actif
.CT BOOL type en cascade (0=esclave ; 1=maître)
.CL BOOL boucle en cascade (0=non ; 1=oui)
.PVT BOOL suivi de variable de procédé (0=non ; 1=oui)
.DOE BOOL dérivé de (0=PV ; 1=erreur)
.SWM BOOL mode manuel logiciel (0=non-auto ; 1=oui-manuel logiciel)
.CA BOOL action de commande (0 signifie E=SP-PV ; 1 signifie E=PV-SP)
.MO BOOL mode station (0=automatique ; 1=manuel)
.PE BOOL équation PID (0=indépendant ; 1=dépendant)
.NDF BOOL pas de lissage des dérivées(0=filtre de lissage des dérivées actif ; 1=filtre de lissage des dérivées inactif)
.NOBC BOOL rétrocalcul sans polarisation(0=rétrocalcul avec polarisation active ; 1=rétrocalcul avec polarisation inactive)
.NOZC BOOL zone morte sans passage par zéro(0=zone morte avec passage par zéro ; 1=zone morte sans passage par zéro)
.INI BOOL PID initialisé (0=non ; 1=oui)
.SPOR BOOL consigne hors limites (0=non ; 1=oui)
.OLL BOOL CV inférieur à la limite de sortie minimum (0=non ; 1=oui)
.OLH BOOL CV supérieur à la limite de sortie minimum (0=non ; 1=oui)
.EWD BOOL erreur dans les limites de la zone morte (0=non ; 1=oui)
.DVNA BOOL déviation avec alarme basse (0=non ; 1=oui)
Mnémonique Type de données Description
494 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Description : L’instruction PID reçoit généralement la variable de procédé (PV) d’un module d’entrées analogiques et module une sortie de variable de contrôle (CV) sur un module de sorties analogiques pour maintenir la variable de procédé au point de consigne voulu.
Le bit .EN indique l’état de l’exécution. Le bit .EN est activé lorsque l’état d’entrée de la ligne passe de faux à vrai. Le bit .EN est effacé lorsque l’état d’entrée de la ligne devient faux. L’instruction PID n’utilise pas de bit .DN. L’instruction PID s’exécute à chaque scrutation tant que l’état d’entrée de la ligne est vrai.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
.DVPA BOOL déviation avec alarme haute (0=non ; 1=oui)
.PVLA BOOL PV avec alarme basse (0=non ; 1=oui)
.PVHA BOOL PV avec alarme haute (0=non ; 1=oui)
Mnémonique Type de données Description
����
����
����
���état de ligne
exécution de l’instruction PID
bit .EN
IMPORTANT Ces défauts étaient des défauts majeurs dans l’automate PLC-5.
Un défaut mineur se produit si Type de défaut Code de défaut
.UPD ≤ 0 4 35
consigne hors limites 4 36
Publication 1756-RM003K-FR-P – Juillet 2008 495
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Exécution :
Configuration d’une instruction PID
Après avoir entré l’instruction PID et avoir spécifié la structure PID, utilisez les onglets de configuration pour définir comment l’instruction PID doit fonctionner.
Condition Action Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction exécute la boucle PID. L’instruction exécute la boucle PID.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Cliquez ici pour configurer l’instruction PID
496 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Spécification du réglage
Sélectionnez l’onglet Tuning (réglage). Les modifications prennent effet dès que vous cliquez sur un autre champ, sur OK, sur Appliquer ou sur la touche Entrée.
Dans ce champ Spécifiez
Setpoint (SP) (point de consigne)
Entrez une valeur de point de consigne (.SP).
Set output % (% de sortie active)
Entrez un pourcentage de sortie active (.SO).
En mode manuel logiciel, cette valeur est utilisée pour la sorte.
En mode auto, cette valeur affiche le pourcentage de sortie.
Output bias (polarisation de sortie)
Entrez un pourcentage de polarisation de sortie (.BIAS).
Proportional gain (Kp) (gain proportionnel)
Entrez le gain proportionnel (.KP).
Pour les gains indépendants, c’est le gain proportionnel (sans unité).
Pour les gains dépendants, c’est le gain automate (sans unité).
Integral gain (Ki) (gain intégral)
Entrez le gain intégral (.KI).
Pour les gains indépendants, c’est le gain intégral (1/s).
Pour les gains dépendants, c’est le temps d’intégration (minutes par répétition).
Derivative time (Kd) (temps dérivé)
Entrez le gain dérivé (.KD).
Pour les gains indépendants, c’est le gain dérivé (secondes).
Pour les gains dépendants, c’est la constante de temps de dérivation (minutes).
Manual mode (mode manuel)
Sélectionnez manuel (.MO) ou manuel logiciel (.SWM).
Le mode manuel est prioritaire sur le mode manuel logiciel, si les deux sont sélectionnés.
Publication 1756-RM003K-FR-P – Juillet 2008 497
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Spécification de la configuration
Sélectionnez l’onglet Configuration. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.
Dans ce champ Spécifiez
PID equation (équation PID) Sélectionnez gains indépendants ou gains dépendants (.PE).
Utilisez indépendant si vous voulez que les trois gains (P, I et D) fonctionnent de façon indépendante. Utilisez dépendant si vous voulez un gain automate global qui affecte les trois termes (P, I et D).
Control action (action de commande)
Sélectionnez E=PV-SP ou E=SP-PV pour l’action de commande (.CA).
Derivative of (dérivé de) Sélectionnez PV ou erreur (.DOE).
Utilisez la dérivée de PV pour éliminer les pointes de sortie résultant des modifications du point de consigne. Utilisez la dérivée de l’erreur pour des réponses rapides aux modifications du point de consigne lorsque l’algorithme peut tolérer des dépassements.
Loop update time (temps de rafraîchissement de boucle)
Entrez le temps de rafraîchissement (.UPD) de l’instruction.
CV high limit (limite haute CV)
Entrez une limite haute pour la variable de contrôle (.MAXO).
CV low limit (limite basse CV)
Entrez une limite basse pour la variable de contrôle (.MINO).
Deadband value (valeur de zone morte)
Entrez une valeur de zone morte (.DB).
No derivative smoothing (pas de lissage des dérivées)
Activez ou désactivez cette sélection (.NDF).
No bias calculation (pas de calcul de polarisation)
Activez ou désactivez cette sélection (.NOBC).
No zero crossing in deadband (pas de passage par zéro dans la zone morte)
Activez ou désactivez cette sélection (.NOZC).
PV tracking (suivi PV) Activez ou désactivez cette sélection (.PVT).
Cascade loop (boucle en cascade)
Activez ou désactivez cette sélection (.CL).
Cascade type (type de cascade)
Si la boucle en cascade est activée, sélectionnez esclave ou maître (.CT).
498 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Spécification des alarmes
Sélectionnez l’onglet Alarms. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.
Spécification de la mise à l’échelle
Sélectionnez l’onglet Scaling. Vous devez cliquer sur OK ou sur Appliquer pour que les modifications prennent effet.
Dans ce champ Spécifiez
PV high (PV haut) Entrez une valeur d’alarme haute PV (.PVH).
PV low (PV bas) Entrez une valeur d’alarme basse PV (.PVL).
PV deadband (zone morte PV)
Entrez une valeur d’alarme de zone morte PV (.PVDB).
positive deviation (écart positif)
Entrez une valeur d’écart positif (.DVP).
negative deviation (écart négatif)
Entrez une valeur d’écart négatif (.DVN).
deviation deadband (zone morte d’écart)
Entrez une valeur d’alarme de zone morte d’écart (.DVDB).
Dans ce champ Spécifiez
PV unscaled maximum (PV non à l’échelle maximum)
Entrez une valeur PV maximum (.MAXI) égale à la valeur non à l’échelle maximum reçue de la voie d’entrée analogique pour la valeur PV.
PV unscaled minimum (PV non à l’échelle minimum)
Entrez une valeur PV minimum (.MINI) égale à la valeur non à l’échelle minimum reçue de la voie d’entrée analogique pour la valeur PV.
PV engineering units maximum (unités de procédé PV maximum)
Entrez les unités de procédé maximum correspondant à .MAXI (.MAXS)
PV engineering units minimum (unités de procédé PV minimum)
Entrez les unités de procédé minimum correspondant à .MINI (.MINS)
CV maximum Entrez une valeur CV maximum correspondant à 100 % (.MAXCV).
CV minimum Entrez une valeur CV minimum correspondant à 0 % (.MINCV).
Tieback maximum (rétro-liaison maximum)
Entrez une valeur de rétro-liaison maximum (.MAXTIE) égale à la valeur non à l’échelle maximum reçue de la voie d’entrée analogique pour la valeur de rétro-liaison.
Tieback minimum (rétro-liaison minimum)
Entrez une valeur de rétro-liaison minimum (.MINTIE) égale à la valeur non à l’échelle minimum reçue de la voie d’entrée analogique pour la valeur de rétro-liaison.
PID Initialized (PID initialisé)
Si vous modifiez les constantes de mise à l’échelle en mode Exécution, désactivez ceci pour réinitialiser les valeurs de non-mise à l’échelle internes (.INI).
Publication 1756-RM003K-FR-P – Juillet 2008 499
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Utilisation des instructions PID
La commande en boucle fermée PID maintient une variable de procédé à un point de consigne voulu. La figure suivante donne un exemple de débit/niveau de liquide :
Dans l’exemple précédent, le niveau du réservoir est comparé au point de consigne. Si le niveau est supérieur au point de consigne, l’équation PID augmente la variable de contrôle et entraîne l’ouverture de la vanne de sortie du réservoir ; ce qui diminue le niveau dans le réservoir.
-
+
14271
point de consigne
débit
erreuréquation PID
variable de contrôlevariable de procédé
détecteur de niveau
500 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
L’équation PID utilisée dans l’instruction PID est une équation de positionnement qui peut utiliser soit les gains indépendants, soit les gains dépendants. Lorsque les gains indépendants sont utilisés, les gains proportionnels, intégraux et dérivés n’affectent que leurs termes proportionnel, intégral et dérivé, respectivement. Lorsque les gains dépendants sont utilisés, le gain proportionnel est remplacé par un gain d’automate qui affecte les trois termes. Vous pouvez utiliser n’importe quelle forme d’équation pour effectuer le même type de commande. Les deux types d’équation ne sont fournis que pour vous permettre d’utiliser le type d’équation que vous connaissez le mieux.
Option de gain Dérivé de Equation
Gains dépendants(norme ISA)
erreur (E)
variable de procédé (PV)
Gains indépendants erreur (E)
variable de procédé (PV)
CV KC E 1Ti---- Edt Td
dEdt-------+
0
t
∫+ BIAS+=
CV KC E 1Ti---- Edt Td–
dPVdt
-----------
0
t
∫+ BIAS+=
E = SP – PV
CV KC E 1Ti---- Edt Td
dPVdt
-----------+
0
t
∫+ BIAS+=
E = PV – SP
CV KPE Ki+ Edt KddEdt-------+
0
t
∫ BIAS+=
CV KPE Ki+ Edt Kd–dPVdt
-----------
0
t
∫ BIAS+=
E = SP – PV
CV KPE Ki+ Edt KddPVdt
-----------+
0
t
∫ BIAS+=
E = PV – SP
Publication 1756-RM003K-FR-P – Juillet 2008 501
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Où :
Si vous ne voulez pas utiliser un terme spécifique de l’équation PID, réglez simplement son gain sur zéro. Par exemple, si vous ne voulez pas d’action dérivée, réglez Kd ou Td à zéro.
Anti-saturation de l’action intégrale et transfert sans à-coups entre manuel et auto
L’instruction PID évite automatiquement la saturation de l’action intégrale en empêchant le cumul du terme intégral lorsque la sortie CV atteint ses valeurs maximum ou minimum, réglées par .MAXO et .MINO. Le terme intégral cumulé reste gelé jusqu’à ce que la sortie CV descende en dessous de la limite maximale ou augmente au-dessus de la limite minimale. Ensuite, le cumul intégral normal reprend automatiquement.
Variable Description
KP gain proportionnel (sans unité)
Kp = Kc sans unité
Ki gain intégral (secondes –1)
Pour convertir entre Ki (gain intégral) et Ti (temps d’intégration), utilisez :
Kd gain dérivé (secondes)
Pour convertir entre Kd (gain dérivé) et Td (constante de temps de dérivation), utilisez :
Kd = Kc (Td) 60
KC gain automate (sans unité)
Ti temps d’intégration (minutes/répétition)
Td constante de temps de dérivation (minutes)
SP point de consigne
PV variable de procédé
E erreur [(SP-PV) ou (PV-SP)]
BIAS anticipation de vitesse ou polarisation
CV variable de contrôle
dt temps de rafraîchissement de la boucle
KiKC
60Ti-----------=
502 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
L’instruction PID prend en charge deux modes de commande manuelle :
L’instruction PID fournit également automatiquement des transferts sans à-coups du mode manuel logiciel au mode auto ou du mode manuel au mode auto. L’instruction PID rétrocalcule la valeur du terme de cumul intégral requis pour que la sortie CV suive la valeur de réglage de sortie (.SO) en mode manuel logiciel ou l’entrée de rétro-liaison en mode manuel. Ainsi, lorsque la boucle passe en mode auto, la sortie CV démarre de la sortie activée ou de la valeur de rétro-liaison et il n’y a pas d’à-coups dans la valeur de sortie.
L’instruction PID peut aussi fournir automatiquement un transfert sans à-coups de manuel à auto, même si la commande intégrale n’est pas utilisée (c’est à dire Ki = 0). Dans ce cas, l’instruction modifie le terme
.BIAS pour que la sortie CV suive les valeurs de sortie activée ou de rétro-liaison. Lorsque la commande automatique reprend, le terme .BIAS garde sa dernière valeur. Vous pouvez désactiver le rétrocalcul du terme .BIAS en réglant le bit .NOBC dans la structure de données PID. Si vous réglez .NOBC sur vrai, l’instruction PID ne fournit plus de transfert sans à-coups entre manuel et auto lorsque la commande intégrale n’est pas utilisée.
Temporisation de l’instruction PID
L’instruction PID et l’échantillonnage de la variable de procédé doivent être actualisés régulièrement. Cette durée de rafraîchissement est liée au processus physique que vous commandez. Pour les boucles très lentes, comme les boucles de température, une durée de rafraîchissement d’une fois par seconde ou plus long est généralement suffisante pour obtenir une régulation correcte. Des boucles plus rapides, comme les boucles de pression ou de débit, peuvent nécessiter une durée de rafraîchissement de par exemple
Mode de commande manuelle
Description
manuel logiciel (.SWM) Egalement appelé mode de réglage de sortie.
Permet à l’utilisateur de régler le % de la sortie à partir du logiciel.
La valeur de réglage de sortie (.SO) est utilisée comme la sortie de la boucle. La valeur de réglage de sortie vient généralement d’une entrée opérateur à partir d’un dispositif d’interface opérateur.
manuel (.MO) Prend la valeur de rétro-liaison comme une entrée et règle ses variables internes pour générer la même valeur sur la sortie.
L’entrée de rétro-liaison vers l’instruction PID est mise à l’échelle à 0 – 100 % selon les valeurs de .MINTIE et .MAXTIE, et est utilisée comme sortie de la boucle. L’entrée de rétro-liaison vient généralement de la sortie d’une station matérielle manuel/auto qui contourne la sortie de l’automate.
Remarque : le mode manuel est prioritaire sur le mode manuel logiciel, si les deux bits de mode sont activés.
Publication 1756-RM003K-FR-P – Juillet 2008 503
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
250 millisecondes. Seuls de rares cas, comme la commande de la tension sur un dévidoir, nécessitent des rafraîchissements de boucle de l’ordre de 10 millisecondes ou plus rapide.
Etant donné que l’instruction PID utilise un calcul basé sur le temps, vous devez synchroniser l’exécution de cette instruction avec l’échantillonnage de la variable de procédé (PV).
La façon la plus facile d’exécuter l’instruction PID est de mettre cette instruction dans une tâche périodique. Réglez la durée de rafraîchissement de la boucle (.UPD) sur une valeur égale à celle de la tâche périodique et assurez-vous que l’instruction PID est exécutée à chaque scrutation de la tâche périodique.
Logique à relais
Texte structuré
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch4Data,0,Local:1:I.Ch4InHold,Local:1:I.Ch4Data);
Lorsque vous utilisez une tâche périodique, assurez-vous que l’entrée analogique utilisée pour la variable de procédé est actualisée dans le processeur à un intervalle significativement plus rapide que l’intervalle de la tâche périodique. Idéalement, la variable de procédé doit être envoyée au processeur au moins cinq à dix fois plus vite que l’intervalle de la tâche périodique. Ceci permet de minimiser la différence de temps entre les échantillons réels de la variable de procédé et l’exécution de la boucle PID. Par exemple, si la boucle PID est dans une tâche périodique de 250 millisecondes, utilisez un temps de mise à jour pour la boucle de 250 millisecondes (.UPD = .25) et configurez le module d’entrées analogiques pour qu’il produise des données au moins tous les 25 à 50 ms.
Une autre méthode moins précise pour exécuter une instruction PID consiste à placer l’instruction dans une tâche continue et à utiliser un bit de fin de temporisation pour déclencher l’exécution de l’instruction PID.
504 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Logique à relais
Texte structuré
PID_timer.pre := 1000
TONR(PID_timer);
IF PID_timer.DN THEN
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,Local:1:I.Ch0Data);
END_IF;
Dans cette méthode, le temps de mise à jour de la boucle de l’instruction PID doit être égal à la présélection du temporisateur. Comme dans le cas de l’utilisation d’une tâche périodique, vous devez régler le module d’entrées analogiques pour qu’il produise une variable de procédé à une fréquence plus rapide que le temps de mise à jour de la boucle. Vous devriez utiliser la méthode du temporisateur pour l’exécution PID de boucles uniquement avec des temps de mise à jour de boucle qui sont plusieurs fois plus longs que le temps d’exécution de votre tâche continue dans le cas le plus défavorable.
La façon la plus précise d’exécuter une instruction PID est d’utiliser la fonction d’échantillonnage en temps réel (RTS) des modules d’entrées analogiques 1756. Le module d’entrées analogiques échantillonne ses entrées à la fréquence d’échantillonnage en temps réel que vous configurez lorsque vous réglez le module. Lorsque la période d’échantillonnage en temps réel du module est terminée, il actualise ses entrées et rafraîchit un horodateur continu (représenté par le membre .RollingTimestamp de la structure de données d’entrées analogiques) produit par le module.
Publication 1756-RM003K-FR-P – Juillet 2008 505
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
L’horodatage est compris entre 0 et 32 767 millisecondes. Surveillez l’horodatage. Lorsqu’il change, un nouvel échantillon de variable de procédé a été reçu. Chaque fois qu’un horodatage change, exécutezl’instruction PID une fois. Etant donné que l’échantillon de variable de procédé est géré par le module d’entrées analogiques, le temps d’échantillonnage d’entrée est très précis, et le réglage du temps de mise à jour de boucle utilisé par l’instruction PID doit être égal au temps RTS du module d’entrées analogiques.
Pour être sûr de ne pas rater d’échantillons de la variable de procédé, exécutez votre programme à une fréquence supérieure au RTS. Par exemple, si le RTS est de 250 ms, vous pouvez mettre le programme PID dans une tâche périodique qui est exécutée toutes les 100 ms pour être sûr de ne jamais rater un échantillon. Vous pouvez même placer le programme PID dans une tâche continue, tant que vous vous assurez que le programme sera actualisé plus souvent que toutes les 250 millisecondes.
Un exemple de la méthode RTS d’exécution est donné ci-dessous. L’exécution de l’instruction PID dépend de la réception de nouvelles données d’entrées analogiques. Si le module d’entrées analogiques échoue ou est retiré, l’automate arrête de recevoir les horodatages continus et la boucle PID arrête son exécution. Vous devez surveiller le bit d’état de l’entrée analogique PV et si elle présente un mauvais état, forcez la boucle en mode manuel logiciel et exécutez la boucle à chaque scrutation. Ceci permet aux opérateurs de changer manuellement la sortie de la boucle PID.
Logique à relais
506 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Texte structuré
IF (Local:0:I.Ch0Fault) THENTIC101.SWM [:=] 1;
ELSETIC101.SWM := 0;
END_IF;
IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) OR(Local:0:I.Ch0Fault) THEN
PreviousTimestamp := Local:0:I.RollingTimestamp;
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,Local:1:I.Ch0Data);
END_IF;
Redémarrage sans à-coups
L’instruction PID peut dialoguer avec les modules de sorties analogiques 1756 pour la prise en charge d’un redémarrage sans à-coups lorsque l’automate passe du mode Programmation au mode Exécution lorsque l’automate est mis sous tension.
Lorsqu’un module de sorties analogiques 1756 perd la communication avec l’automate ou détecte que l’automate est en mode Programmation, le module de sorties analogiques active ses sorties avec les valeurs de condition de défaut que vous avez définies lors de la configuration du module. Lorsque l’automate revient en mode Exécution ou rétablit la communication avec le module de sorties analogiques, vous pouvez paramétrer l’instruction PID pour qu’elle réinitialise automatiquement ses sorties de variable de procédé à une valeur égale à celle des sorties analogiques en utilisant le bit Inhold et le paramètre Inhold Value sur l’instruction PID.
Publication 1756-RM003K-FR-P – Juillet 2008 507
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Pour régler un redémarrage sans à-coups :
Lissage des dérivées
Le calcul des dérivées est amélioré par le filtre de lissage des dérivées. Ce filtre numérique passe bas de premier ordre aide à minimiser les pointes de terme dérivé provoquées par les interférences dans PV. Ce lissage devient plus puissant avec les gains dérivés plus importants. Vous pouvez désactiver le lissage des dérivées si votre processus requiert des gains dérivés très importants (Kd > 10, par exemple).
Pour désactiver le lissage des dérivées, sélectionnez l’option « No derivative smoothing » (pas de lissage des dérivées) dans l’onglet Configuration ou activez le bit .NDF dans la structure PID.
Action Détails
Configurez la voie du module de sorties analogiques 1756 qui reçoit la variable de procédé provenant de l’instruction PID
Cochez la case « hold for initialization » (maintenir pour initialisation) de la page des propriétés pour la voie spécifique du module.
Ceci indique au module de sorties analogiques que lorsque l’automate revient en mode Exécution ou rétablit la communication avec le module, le module doit maintenir la sortie analogique à sa valeur actuelle jusqu’à ce que la valeur envoyée de l’automate corresponde (à moins de 0,1 % de la plage) à la valeur actuelle utilisée par la voie de sortie. La sortie de l’automate augmente ou diminue jusqu’à la valeur de sortie maintenue en utilisant le terme .BIAS. Cette rampe est similaire au transfert sans à-coups automatique.
Entrez le point du bit Inhold et le point Inhold Value dans l’instruction PID
Le module de sorties analogiques 1756 renvoie deux valeurs pour chaque voie dans sa structure de données d’entrées. Le bit d’état InHold (.Ch2InHold, par exemple), lorsqu’il est vrai, indique que la voie de sortie analogique maintient sa valeur. La valeur de lecture de données (.Ch2Data, par exemple) indique la valeur de sortie actuelle en unités procédé.
Entrez le point du bit d’état InHold en tant que paramètre du bit InHold de l’instruction PID. Entrez le point de la valeur de lecture de données comme paramètre Inhold Value.
Lorsque le bit Inhold est vrai, l’instruction PID déplace Inhold Value dans la sortie de variable de contrôle et est réinitialisée pour accepter un redémarrage sans à-coups à cette valeur. Lorsque le module de sorties analogiques reçoit à nouveau cette valeur de l’automate, il désactive le bit d’état InHold, ce qui permet à l’instruction PID de commander normalement.
508 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Réglage de la zone morte
La zone morte ajustable vous permet de sélectionner une plage d’erreur au-dessus et en dessous du point de consigne dans laquelle la sortie ne change pas tant que l’erreur reste dans cette plage. Cette zone morte vous permet de contrôler avec quelle précision la variable de procédé doit correspondre au point de consigne pour que la sortie ne soit pas modifiée. La zone morte permet également de limiter l’usure de vos dispositifs de commande.
Le passage par zéro est un contrôle de zone morte qui permet à l’instruction d’utiliser l’erreur pour les calculs lorsque la variable de procédé entre dans la zone morte et jusqu’à ce qu’elle croise le point de consigne. Une fois que la variable de procédé croise le point de consigne (l’erreur passe par zéro et change de signe) et tant que cette variable reste dans la zone morte, la sortie ne change pas.
La plage de la zone morte au-dessus et en dessous du point de consigne dépend de la valeur que vous spécifiez. Entrez un zéro pour désactiver la zone morte. La zone morte utilise la même unité de mesure que le point de consigne. Vous pouvez utiliser la zone morte sans la fonction de passage par zéro en sélectionnant l’option « no zero crossing for deadband » (pas de passage par zéro pour la zone morte) dans l’onglet Configuration ou en activant le bit .NOZC de la structure PID.
Si vous utilisez la zone morte, la variable de contrôle doit être une valeur REAL sinon elle sera forcée à 0 lorsque l’erreur se trouve dans la zone morte.
Utilisation de la limitation de sortie
Vous pouvez régler une limite de sortie (pourcentage de la sortie) pour la sortie de contrôle. Lorsque l’instruction détecte que la sortie a atteint une limite, elle active un bit d’alarme et empêche la sortie de dépasser la limite supérieure ou inférieure.
erreur dans la plage de la zone morte
+ zone morte
point de consigne
– zone morte
durée 41026
Publication 1756-RM003K-FR-P – Juillet 2008 509
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Anticipation de vitesse ou polarisation de sortie
Vous pouvez anticiper une perturbation du système en envoyant la valeur .BIAS dans la valeur anticipation de vitesse/polarisation de l’instruction PID.
La valeur d’anticipation de vitesse représente une perturbation envoyée à l’instruction PID avant que la perturbation réelle ait une chance de modifier la variable de procédé. L’anticipation est souvent utilisée pour contrôler des processus qui présente un retard de transfert. Par exemple, une valeur d’anticipation représentant « de l’eau froide versée dans un mélange chaud » peut amplifier la valeur de sortie plus rapidement que si l’on attend que la variable de procédé change à la suite du mélange.
Une valeur de polarisation est généralement utilisée lorsqu’aucune commande intégrale n’est utilisée. Dans ce cas, la valeur de polarisation peut être réglée de façon à maintenir la sortie dans la plage requise pour garder PV près du point de consigne.
Boucles en cascade
Pour mettre deux boucles en cascade, l’instruction PID attribue la sortie selon un pourcentage de la boucle maître au point de consigne de la boucle esclave. La boucle esclave convertit automatiquement la sortie de la boucle maître dans les unités procédé correctes pour le point de consigne de la boucle esclave, selon les valeurs .MAXS et .MINS de la boucle esclave.
Logique à relais
Texte structuré
PID(master,pv_master,0,cv_master,0,0,0);
PID (slave,pv_slave,0,cv_slave,master,0,0);
510 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions spéciales (FBC, DDT, DTR, PID) Chapitre 13
Contrôle d’un rapport
Vous pouvez maintenir deux valeurs dans un rapport donné en utilisant ces paramètres :
• valeur non asservie ;
• valeur asservie (point de consigne qui doit être utilisé par l’instruction PID) ;
• rapport entre ces deux valeurs.
Logique à relais
Texte structuré
pid_2.sp := uncontrolled_flow * ratio
PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);
Pour ce paramètre de multiplication Entez cette valeur
Destination valeur asservie
Source A valeur non asservie
Source B rapport
Publication 1756-RM003K-FR-P – Juillet 2008 511
Chapitre 13 Instructions spéciales (FBC, DDT, DTR, PID)
Théorie du PID Les figures suivantes montrent le déroulement du processus pour une instruction PID.
Processus PID
Processus PID avec boucles maître/esclave
+-
-1+
SP affiché en unités
de procédé
Erreur affichée en unités de
procédé
Mode logiciel A/Mou
station A/M Action de commande
Auto SP-PV
(Erreur)
Manuel
Non
Oui
PVT
SPPV-SP
Convertit binaire en unités de procédé
(PV-mini)(maxs-mins) + minsmaxi-mini
PV
PVaffiché en unités de procédé
Convertit unités en %
Erreurr X 100maxs-mins
Calcul PID
% polarisation de sortie
Mode logiciel A/M
Auto
Auto(% sortie)
% sortie active
Convertit unités rétro-liaison en %
tieback-mintiemaxtie-mintie
x 100
ManuelManuel
Limitation sortie
% sortie active
Mode station A/M
Sortie (CV) affiché en % d’échelle
d’unités de procédé
Convertit % en unités CV
% CV (maxcv-mincv)100
+ mincvCV
+-
-1+
+-
-1+
SP
Auto
Manuel
PVTNon
Oui
Convertit binaire en unités de procédé
(PV-mini)(maxs-mins)maxi-mini
+ mins
PV
SP-PV
PV-SP
(Erreur)Convertit unités
en %Erreurr X 100
maxs-mins
Calcul PID
% polarisation sortie
Mode logiciel A/M
Auto
Auto(% sortie)
Limitation sortie
% sortie activeMode station
A/M
% sortie active
ManuelManuel
(Master.Out)
SP
PV
Boucle maître Mode logiciel A/M
oustation A/M
Action de commande
Boucle esclave
(Master.Out)
Convertit binaire en unités de procédé
(PV-mini)(maxs-mins)maxi-mini
+ mins
(SP)
PV
Convertit % en unités de procédé
Convertit unités rétro-liaison en %
tieback-mintiemaxtie-mintie
x 100
Convertit unités en %
Erreur X 100maxs-mins
Convertit unités en %
Erreur X 100maxs-mins
X (maxs-mins)100
+ mins
Action de commande
SP-PV
PV-SP
Calcul PID
% polarisation de sortie
% sortie active
Auto
Auto
Manuel
Manuel
Mode station A/M
Limitation sortie
Mode logiciel A/M
% sortie active
Convertit % en unités CV
% CV (maxcv-mincv)100
+ mincv
Les éléments référencés dans cette case sont les paramètres, les unités et les modes pertinents pour la boucle esclave définie.
ManuelManuel
Auto
Mode logiciel A/M
512 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 14
Instructions trigonométriques(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introduction Les instructions trigonométriques évaluent les opérations arithmétiques à l’aide d’opérations trigonométriques.
Vous pouvez mélanger des types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit d’état de dépassement (S:V) pour vérifier si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
prendre le sinus d’une valeur SIN Logique à relaisTexte structuré
Bloc fonctionnel
514
prendre le cosinus d’une valeur COS Logique à relaisTexte structuré
Bloc fonctionnel
517
prendre la tangente d’une valeur TAN Logique à relaisTexte structuré
Bloc fonctionnel
520
prendre le sinus d’arc d’une valeur ASN
ASIN(1)
Logique à relaisTexte structuré
Bloc fonctionnel
523
prendre le cosinus d’arc d’une valeur ACS
ACOS(1)
Logique à relaisTexte structuré
Bloc fonctionnel
526
prendre la tangente d’arc d’une valeur ATN
ATAN(1)
Logique à relaisTexte structuré
Bloc fonctionnel
529
(1) Texte structuré uniquement.
Publication 1756-RM003K-FR-P – Juillet 2008 513
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Sinus (SIN) L’instruction SIN prend le sinus de la valeur Source (en radians) et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez SIN comme une fonction. Cette fonction calcule le sinus de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le sinus de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point SIN FBD_MATH_ADVANCED structure structure SIN
dest := SIN(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
514 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Description : La Source doit être supérieure ou égale à –205 887,4 (–2πx215) et
inférieure ou égale à 205 887,4 (2πx215). La valeur de résultat dans la Destination est toujours supérieure ou égale à –1 et inférieure ou égale à 1.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le sinus de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 515
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Exemple : Calculer le sinus de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := SIN(value);
Bloc fonctionnel
516 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Cosinus (COS) L’instruction COS prend le cosinus de la valeur Source (en radians) et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez COS comme une fonction. Cette fonction calcule le cosinus de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le cosinus de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point COS FBD_MATH_ADVANCED structure structure COS
dest := COS(source);
Publication 1756-RM003K-FR-P – Juillet 2008 517
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Structure FBD_MATH_ADVANCED
Description : La Source doit être supérieure ou égale à –205 887,4 (–2πx215) et
inférieure ou égale à 205 887,4 (2πx215). La valeur de résultat dans la Destination est toujours supérieure ou égale à –1 et inférieure ou égale à 1.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le cosinus de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
518 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Bloc fonctionnel
Exemple : Calculer le cosinus de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := COS(value);
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 519
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Tangente (TAN) L’instruction TAN prend la tangente de la valeur Source (en radians) et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez TAN comme une fonction. Cette fonction calcule la tangente de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver la tangente de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point TAN FBD_MATH_ADVANCED structure structure TAN
dest := TAN(source);
520 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Structure FBD_MATH_ADVANCED
Description : La Source doit être supérieure ou égale à –102 943,7 (–2πx214) et
inférieure ou égale à 102 943,7 (2πx214).
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule la tangente de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 521
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Exemple : Calculer la tangente de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := TAN(value);
Bloc fonctionnel
522 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Sinus d’arc (ASN) L’instruction ASN prend le sinus d’arc de la valeur Source et enregistre le résultat dans la Destination (en radians).
Opérandes :
Logique à relais
Texte structuré
Utilisez ASIN comme une fonction. Cette fonction calcule le sinus d’arc de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le sinus d’arc de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point ASN FBD_MATH_ADVANCED structure structure ASN
dest := ASIN(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Publication 1756-RM003K-FR-P – Juillet 2008 523
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Description : La Source doit être supérieur ou égale à ~1 et inférieure ou égale à 1. La valeur du résultat dans la Destination est toujours supérieure ou égale à –π/2 et inférieure ou égale à π/2 (où π = 3,141593).
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le sinus d’arc de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
524 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Exemple : Calculer le sinus d’arc de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := ASIN(value);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 525
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Cosinus d’arc (ACS) L’instruction ACS prend le cosinus d’arc de la valeur Source et enregistre le résultat dans la Destination (en radians).
Opérandes :
Logique à relais
Texte structuré
Utilisez ACOS comme une fonction. Cette fonction calcule le cosinus d’arc de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le cosinus d’arc de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point ACS FBD_MATH_ADVANCED structure structure ACS
dest := ACOS(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
526 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Description : La Source doit être supérieur ou égale à –1 et inférieure ou égale à 1. La valeur du résultat dans la Destination est toujours supérieure ou égale à 0 ou inférieure ou égale à π (où π = 3,141593).
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le cosinus d’arc de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 527
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Exemple : Calculer le cosinus d’arc de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := ACOS(value);
Bloc fonctionnel
528 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Tangente d’arc (ATN) L’instruction ATN prend la tangente d’arc de la valeur Source et enregistre le résultat dans la Destination (en radians).
Opérandes :
Logique à relais
Texte structuré
Utilisez ATAN comme une fonction. Cette fonction calcule la tangente d’arc de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver la tangente d’arc de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point ATN FBD_MATH_ADVANCED structure structure ATN
dest := ATAN(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Publication 1756-RM003K-FR-P – Juillet 2008 529
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Description : La valeur de résultat dans la Destination est toujours supérieure ou égale à –π/2 et inférieure ou égale à π/2 (où π = 3,141593).
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule la tangente d’arc de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
530 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Chapitre 14
Exemple : Calculer la tangente d’arc de value et place le résultat dans result.
Logique à relais
Texte structuré
result := ATAN(value);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 531
Chapitre 14 Instructions trigonométriques (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Notes :
532 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 15
Instructions mathématiques évoluées(LN, LOG, XPY)
Introduction Les instructions mathématiques évoluées incluent les instructions suivantes :
Vous pouvez mélanger des types de données ; cependant des erreurs de précision et un arrondissement des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
prendre le logarithme naturel d’une valeur LN Logique à relais
Texte structuré
Bloc fonctionnel
534
prendre le logarithme décimal d’une valeur LOG Logique à relais
Texte structuré
Bloc fonctionnel
537
élever une valeur à la puissance d’une autre valeur
XPY Logique à relais
Texte structuré(1)
Bloc fonctionnel
540
(1) Il n’y a pas d’instruction en texte structuré équivalente. Utilisez l’opérateur dans une expression.
Publication 1756-RM003K-FR-P – Juillet 2008 533
Chapitre 15 Instructions mathématiques évoluées (LN, LOG, XPY)
Logarithme naturel (LN) L’instruction LN prend le logarithme naturel de la Source et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez LN comme une fonction. Cette fonction calcule le logarithme naturel de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le logarithme naturel de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point LN FBD_MATH_ADVANCED structure structure LN
dest := LN(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
534 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions mathématiques évoluées (LN, LOG, XPY) Chapitre 15
Description : La Source doit être supérieure à zéro, sinon le bit d’état de dépassement (S:V) est activé. La valeur de résultat dans la Destination est supérieure ou égale à –87,33655 et inférieure ou égale à 88,72284.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le logarithme natuel de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 535
Chapitre 15 Instructions mathématiques évoluées (LN, LOG, XPY)
Exemple : Calculer le logarithme naturel de value et placer le résultat dans result.
Exemple de logique à relais
Texte structuré
result := LN(value);
Bloc fonctionnel
536 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions mathématiques évoluées (LN, LOG, XPY) Chapitre 15
Logarithme décimal (LOG) L’instruction LOG prend le logarithme décimal de la Source et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez LOG comme une fonction. Cette fonction calcule le logarithme de source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
trouver le logarithme de cette valeur
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point LOG FBD_MATH_ADVANCED structure structure LOG
dest := LOG(source);
Publication 1756-RM003K-FR-P – Juillet 2008 537
Chapitre 15 Instructions mathématiques évoluées (LN, LOG, XPY)
Structure FBD_MATH_ADVANCED
Description : La Source doit être supérieure à zéro, autrement le bit d’état de dépassement (S:V) est activé. La valeur de résultat dans la Destination est supérieure ou égale à –37,92978 et inférieure ou égale à 38,53184.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction mathématique.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate calcule le logarithme de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
538 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions mathématiques évoluées (LN, LOG, XPY) Chapitre 15
Exemple : Calculer le logarithme de value et placer le résultat dans result.
Logique à relais
Texte structuré
result := LOG(value);
Bloc fonctionnel
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Condition Action
Publication 1756-RM003K-FR-P – Juillet 2008 539
Chapitre 15 Instructions mathématiques évoluées (LN, LOG, XPY)
X à la puissance Y (XPY) L’instruction XPY élève Source A (X) à la puissance de Source B (Y) et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez deux signe de multiplication adjacents « ∗∗ » comme opérateur dans une expression. Cette expression élève sourceX à la puissance de sourceY et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Opérande Type Format Description
Source X SINT
INT
DINT
REAL
immédiat
point
valeur de base
Source Y SINT
INT
DINT
REAL
immédiat
point
exposant
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point XPY FBD_MATH structure structure XPY
dest := sourceX ** sourceY;
540 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions mathématiques évoluées (LN, LOG, XPY) Chapitre 15
Structure BD_MATH
Description : Si Source X est négatif, Source Y doit être une valeur entière ou un défaut mineur se produit.
L’instruction XPY utilise cet algorithme : Destination = X**Y
L’automate évalue x0=1 et 0x=0.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
Exécution :
Logique à relais
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source X REAL Valeur de base
Valable = toute valeur en virgule flottante
Source Y REAL Exposant.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction mathématique. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Un défaut mineur se produit si Type de défaut Code de défaut
Source X est négatif et Source Y n’est pas une valeur entière
4 4
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate élève Source X à la puissance de Source Y et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 541
Chapitre 15 Instructions mathématiques évoluées (LN, LOG, XPY)
Bloc fonctionnel
Exemple : L’instruction XPY met value_1 à la puissance de value_2 et place le résultat dans result.
Logique à relais
Texte structuré
result := (value_1 ∗∗ value_2);
Bloc fonctionnel
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
542 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 16
Instructions de conversion mathématique(DEG, RAD, TOD, FRD, TRN, TRUNC)
Introduction Les instructions de conversion mathématique convertissent des valeurs.
Vous pouvez mélanger des types de données, cependant des erreurs de précision et un arrondi des valeurs peuvent se produire et l’instruction est plus longue à exécuter. Vérifiez le bit S:V pour voir si le résultat a été tronqué.
Pour les instructions de logique à relais, les types de données en gras indiquent les types de données optimaux. Une instruction est exécutée plus rapidement et demande moins de mémoire si tous les opérandes de l’instruction utilisent le même type de données optimal, généralement DINT ou REAL.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
convertir des radians en degrés DEG Logique à relais
Texte structuré
Bloc fonctionnel
544
convertir des degrés en radians RAD Logique à relais
Texte structuré
Bloc fonctionnel
547
convertir une valeur entière en valeur DCB TOD Logique à relais
Bloc fonctionnel
550
convertir une valeur DCB en valeur entière FRD Logique à relais
Bloc fonctionnel
553
retirer la partie fractionnelle d’une valeur TRN
TRUNC(1)
Logique à relais
Texte structuré
Bloc fonctionnel
555
(1) Texte structuré uniquement.
Publication 1756-RM003K-FR-P – Juillet 2008 543
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Degrés (DEG) L’instruction DEG convertit la Source (en radians) en degrés et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez DEG comme une fonction. Cette fonction convertit la source en degrés et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
valeur à convertir en degrés
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point DEG FBD_MATH_ADVANCED structure structure DEG
dest := DEG(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction de conversion.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction de conversion. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
544 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Description : L’instruction DEG utilise cet algorithme :Source*180/π (où π = 3,141593)
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate convertit la Source en degrés et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 545
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Exemple : Convertir value en degrés et placer le résultat dans result.
Logique à relais
Texte structuré
result := DEG(value);
Bloc fonctionnel
546 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Radians (RAD) L’instruction RAD convertit la Source (en degrés) en radians et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez RAD comme une fonction. Cette fonction convertit la source en radians et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_MATH_ADVANCED
Opérande Type Format Description
Source SINT
INT
DINT
REAL
immédiat
point
valeur à convertir en radians
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point RAD FBD_MATH_ADVANCED structure structure RAD
dest := RAD(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction de conversion.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest REAL Résultat de l’instruction de conversion. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Publication 1756-RM003K-FR-P – Juillet 2008 547
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Description : L’instruction RAD utilise cet algorithme :Source*π/180 (où π = 3,141593)
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate convertit la Source en radians et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
548 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Exemple Convertir value en radians et placer le résultat dans result.
Logique à relais
Texte structuré
result := RAD(value);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 549
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Conversion en DCB (TOD) L’instruction TOD convertit une valeur décimale (0 ≤ Source ≤ 99 999 999) en valeur DCB et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Bloc fonctionnel
Structure FBD_CONVERT
Description : DCB est le système de numérotation à décimal codé binaire qui exprime des chiffres décimaux individuels (0 – 9) dans une notation binaire à 4 bits.
Si vous entrez une Source négative, l’instruction génère un défaut mineur et efface la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
valeur à convertir en décimale
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point TOD FBD_CONVERT structure structure TOD
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source DINT Entrée de l’instruction de conversion.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction de conversion. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
550 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Conditions d’erreur :
Exécution :
Logique à relais
Bloc fonctionnel
Un défaut mineur se produit si Type de défaut Code de défaut
Source < 0 4 4
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate convertit la Source en DCB et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai
fin
Source < 0non
oui
source > 99 999 999non
oui
convertit la source en DCB
S:V est réglé sur 1
l’état de sortie de la ligne est vrai
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 551
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Exemple : L’instruction TOD convertit value_1 en valeur DCB et place le résultat dans result_a.
Logique à relais
Bloc fonctionnel
552 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Conversion en nombre entier (FRD)
L’instruction FRD convertit une valeur DCB (Source) en valeur décimale et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Bloc fonctionnel
Structure FBD_CONVERT
Description : L’instruction FRD convertit une valeur DCB (Source) en valeur décimale et enregistre le résultat dans la Destination.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Opérande Type Format Description
Source SINT
INT
DINT
immédiat
point
valeur à convertir en décimale
Un point SINT ou INT est converti en valeur DINT par remplissage de zéros.
Destination SINT
INT
DINT
point stocke le résultat
Opérande Type Format Description
point FRD FBD_CONVERT structure structure FRD
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source DINT Entrée de l’instruction de conversion.
Valable = tout nombre entier
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction de conversion. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Publication 1756-RM003K-FR-P – Juillet 2008 553
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Exécution :
Logique à relais
Bloc fonctionnel
Exemple : L’instruction FRD convertit value_a en valeur décimale et place le résultat dans result_1.
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate convertit la Source en valeur décimale et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
554 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Troncation (TRN) L’instruction TRN retire (tronque) la partie fractionnelle de la Source et enregistre le résultat dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Utilisez TRUNC comme une fonction. Cette fonction tronque la source et enregistre le résultat dans dest.
Pour plus d’informations sur la syntaxe des expressions du texte structuré, voir Annexe C, Programmation en texte structuré.
Bloc fonctionnel
Structure FBD_TRUNCATE
Opérande Type Format Description
Source REAL immédiat
point
valeur à tronquer
Destination SINT
INT
DINT
REAL
point point pour le stockage du résultat
Opérande Type Format Description
point TRN FBD_TRUNCATE structure structure TRN
dest := TRUNC(source);
Paramètre d’entrée Type de données
Description
EnableIn BOOL Entrée activée. Si désactivée, l’instruction n’est pas exécutée et les sorties ne sont pas rafraîchies.
Réglage par défaut activé.
Source REAL Entrée de l’instruction de conversion.
Valable = toute valeur en virgule flottante
Paramètre de sortie Type de données
Description
EnableOut BOOL L’instruction a produit un résultat valable.
Dest DINT Résultat de l’instruction de conversion. Les indicateurs d’état arithmétiques sont activés pour cette sortie.
Publication 1756-RM003K-FR-P – Juillet 2008 555
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Description : La troncation n’arrondit pas la valeur ; au contraire, la partie non fractionnelle reste identique quelle que soit la valeur de la partie fractionnelle.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur : Aucune
Exécution :
Logique à relais
Bloc fonctionnel
Condition Action
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’automate retire la partie fractionnelle de la Source et enregistre le résultat dans la Destination.
L’état de sortie de la ligne est réglé sur vrai.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Condition Action
Pré-scrutation Aucune.
Première scrutation de l’instruction Aucune.
Première exécution de l’instruction Aucune.
EnableIn est effacé EnableOut est effacé.
EnableIn est activé L’instruction est exécutée.
EnableOut est activé.
Post-scrutation Aucune.
556 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC) Chapitre 16
Exemple : Retirer la partie fractionnelle de float_value_1, en laissant la partie non fractionnelle identique, et placer le résultat dans float_value_1_truncated.
Logique à relais
Texte structuré
float_value_1_truncated := TRUNC(float_value_1);
Bloc fonctionnel
Publication 1756-RM003K-FR-P – Juillet 2008 557
Chapitre 16 Instructions de conversion mathématique (DEG, RAD, TOD, FRD, TRN, TRUNC)
Notes :
558 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 17
Instructions du port série ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Introduction Utilisez les instructions du port série ASCII pour lire et écrire des caractères ASCII.
IMPORTANT Pour utiliser les instructions port série ASCII, vous devez configurer le port série de l’automate. Voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Si vous voulez Par exemple Utilisez cette instruction
Disponible dans ces langages
Voir page
déterminer quand le buffer contient des caractères de fin
trouver les données contenant des caractères de fin
ABL Logique à relais
Texte structuré
564
compter les caractères dans la mémoire tampon
vérifier qu’il y a le nombre de caractères requis avant de lire la mémoire tampon
ACB Logique à relais
Texte structuré
567
effacer la mémoire tampon • effacer les anciennes données de la mémoire tampon au démarrage
• synchroniser la mémoire tampon avec un équipement
ACL Logique à relais
Texte structuré
569
effacer les instructions port série ASCII qui sont en cours d’exécution ou qui sont en attente
obtenir l’état des lignes de commande du port série
faire raccrocher un modem AHL Logique à relais
Texte structuré
571
activer ou désactiver le signal DTR
activer ou désactiver le signal RTS
lire un nombre fixe de caractères lire des données d’un équipement qui envoie le même nombre de caractères à chaque transmission
ARD Logique à relais
Texte structuré
575
lire un nombre variable de caractères, jusqu’à et y compris le premier jeu de caractères de fin
lire des données d’un équipement qui envoie un nombre variable de caractères à chaque transmission
ARL Logique à relais
Texte structuré
579
envoyer des caractères et ajouter automatiquement un ou deux caractères supplémentaires pour marquer la fin des données
envoyer des messages qui utilisent toujours le ou les mêmes caractères de fin
AWA Logique à relais
Texte structuré
583
envoyer des caractères envoyer des messages qui utilisent différents caractères de fin
AWT Logique à relais
Texte structuré
588
Publication 1756-RM003K-FR-P – Juillet 2008 559
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Exécution de l’instruction
L’exécution des instructions port série ASCII est asynchrone par rapport à la scrutation de la logique.
Chaque instruction du port série ASCII (sauf ACL) utilise une structure SERIAL_PORT_CONTROL pour effectuer les fonctions suivantes :
• commander l’exécution de l’instruction ;
• fournir des informations d’état sur l’instruction.
L’instruction entre dans la file d’attente ASCII.
File d’attente ASCII
Instruction 1 L’instruction au sommet de la file d’attente est exécutée.
Mémoire tamponPort série
Instruction 2
Instruction 3
Instruction 4
L’état d’entrée de la ligne passe de faux à vrai
Les données circulent entre la tâche et la mémoire tampon.
Les données circulent entre la mémoire tampon et le port série.
Logique Tâche ASCII
560 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Le chronogramme suivant montre les changements dans les bits d’état pendant que l’instruction ABL teste la mémoire tampon pour les caractères de fin.
La file d’attente ASCII contient un maximum de 16 instructions. Lorsque la file d’attente est pleine, une instruction tente d’entrer dans la file à chacune des scrutations suivantes de l’instruction, comme indiqué ci-dessous :
scrutation scrutation scrutation scrutation
entre dans la file d’attente remet les bits d’état à zéro
exécute quand scruté et que .DN ou .ER est activé, active le bit EMdans cet exemple,
les caractères de fin sont trouvés
état d’entrée de la ligne faux vrai faux vrai faux
.EN off on off on off
.EU off on
.RN off on off on off
.DN ou .ER off on off on
.FD off on off on
.EM off on off on
scrutation scrutation scrutation scrutation
entre dans la file d’attente
tente d’entrer dans la file, mais celle-ci est pleine
état d’entrée de la ligne faux vrai faux
.EN off on
.EU off on
Publication 1756-RM003K-FR-P – Juillet 2008 561
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Codes d’erreur ASCII
Si l’exécution d’une instruction du port série ASCII échoue, le membre ERROR de sa structure SERIAL_PORT_CONTROL contient un des codes d’erreur hexadécimal suivants :
Types de données de chaîneVous stockez des caractères ASCII dans des points qui utilisent un type de données de chaîne.
• Vous pouvez utiliser le type de données STRING par défaut. Il peut stocker un maximum de 82 caractères.
• Vous pouvez créer un nouveau type de données de chaîne qui stocke plus ou moins de caractères.
Pour créer un nouveau type de données de chaîne, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Chaque type de données de chaîne contient les membres suivants :
Ce code hex Indique que
16#2 Le modem est hors ligne.
16#3 Le signal CTS a été perdu pendant la communication.
16#4 Le port série était en mode système.
16#A Le bit UL a été activé avant l’exécution de l’instruction. Ceci empêche l’exécution de l’instruction.
16#C L’automate est passé du mode Run au mode Program. Ceci arrête l’exécution de l’instruction port série ASCII et efface la file d’attente.
16#D Dans l’onglet Protocole utilisateur de la boîte de dialogue Propriétés de l’automate, les paramètres de taille ou de mode echo de la mémoire tampon ont été changés et appliqués. Ceci arrête l’exécution de l’instruction port série ASCII et efface la file d’attente.
16#E L’instruction ACL est exécutée.
16#F La configuration du port série passe du mode utilisateur au mode système. Ceci arrête l’exécution d’une instruction port série ASCII et efface la file d’attente des instructions port série ASCII.
16#51 La valeur LEN du point de chaîne est négative ou supérieure à la taille DATA du point de chaîne.
16#54 La longueur de contrôle du port série est supérieure à la taille de la mémoire tampon.
16#55 La longueur de contrôle du port série est négative ou supérieure à la taille de la Source ou de la Destination.
562 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Nom Type de données Description Remarques
LEN DINT nombre de caractères dans la chaîne
La valeur LEN est automatiquement mise à jour avec le nouveau nombre de caractères lorsque vous :
• utilisez la boîte de dialogue « Naviguer dans la chaîne » pour entrer des caractères
• utilisez des instructions qui lisent, convertissent ou manipulent une chaîne
La valeur LEN indique la longueur de la chaîne actuelle. Le membre DATA peut aussi contenir d’anciens caractères qui ne sont pas inclus dans la valeur LEN.
DATA tableau SINT caractères ASCII dans la chaîne
• Pour accéder aux caractères de la chaîne, adressez le nom du point.
Par exemple, pour accéder aux caractères du point string_1, entrez string_1.
• Chaque élément du tableau DATA contient un caractère.
• Vous pouvez créer des nouveaux types de données de chaîne qui stockent plus ou moins de caractères.
Publication 1756-RM003K-FR-P – Juillet 2008 563
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Test ASCII pour ligne de mémoire tampon (ABL)
L’instruction ABL compte le nombre de caractères dans la mémoire tampon, jusqu’à et y compris le premier caractère de terminaison.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction ABL en logique à relais. Vous pouvez accéder à la valeur Character Count via le membre .POS de la structure SERIAL_PORT_CONTROL.
Structure SERIAL_PORT_CONTROL
Opérande Type Format Description
Voie DINT immédiat
point
0
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Nombre de caractères
DINT immédiat 0
Affiche le nombre de caractères dans la mémoire tampon pendant l’exécution, y compris le premier jeu de caractères de fin.
ENDNER
ASCII Test For Buffer LineChannel ?SerialPort Control ?Character Count ?
ABLASCII Test For Buffer LineChannelSerialPort ControlCharacter Count
ABLENDNER
ABL(ChannelSerialPortControl);
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé indique que l’instruction a trouvé le ou les caractères de terminaison.
.POS DINT La position détermine le nombre de caractères dans la mémoire tampon, jusqu’à et y compris le premier jeu de caractères de terminaison. L’instruction renvoie ce nombre uniquement après avoir trouvé le ou les caractères de terminaison.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
564 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Description : L’instruction ABL recherche le premier jeu de caractères de terminaison dans la mémoire tampon. Si l’instruction trouve les caractères de terminaison, elle :
• active le bit .FD ;
• compte le nombre de caractères dans la mémoire tampon, jusqu’à et y compris le premier jeu de caractères de terminaison.
L’onglet Protocole utilisateur de la boîte de dialogue Propriétés de l’automate définit les caractères ASCII que l’instruction considère comme les caractères de fin.
Pour programmer l’instruction ABL, suivez ces directives :
1. Configurez le port série de l’automate pour le mode Utilisateur et définissez les caractères qui servent de caractères de fin.
2. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction compte les caractères dans la mémoire tampon.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 565
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Exemple : Tester en permanence la mémoire tampon pour la présence des caractères de terminaison
Logique à relais
Texte structuré
ABL(0,MV_line);
/MV_line.EN
ENDNER
ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0
ABLASCII Test For Buffer LineChannelSerialPort ControlCharacter Count
ABLENDNERMV_line
MV_line.EN
566 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Caractères ASCII dans la mémoire tampon (ACB)
L’instruction ACB compte les caractères dans la mémoire tampon.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction ACB en logique à relais. Cependant, vous définissez le valeur Nombre de caractères en accédant au membre .POS de la structure SERIAL_PORT_CONTROL, plutôt qu’en incluant la valeur dans la liste des opérandes.
Structure SERIAL_PORT_CONTROL
Opérande Type Format Entrez
Voie DINT immédiat
point
0
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Nombre de caractères
DINT immédiat 0
Affiche le nombre de caractères dans la mémoire tampon pendant l’exécution.
ENDNER
ASCII Chars in BufferChannel ?SerialPort Control ?Character Count ?
ACBASCII Chars in BufferChannelSerialPort ControlCharacter Count
ACBENDNER
ACB(ChannelSerialPortControl);
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé indique que l’instruction a trouvé un caractère.
.POS DINT La position détermine le nombre de caractères dans la mémoire tampon, jusqu’à et y compris le premier jeu de caractères de terminaison.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
Publication 1756-RM003K-FR-P – Juillet 2008 567
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Description : L’instruction ACB compte les caractères dans la mémoire tampon.
Pour programmer l’instruction ACB, suivez les directives suivantes :
1. Configurez le port série de l’automate en mode Utilisateur.
2. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Compter en permanence les caractères dans la mémoire tampon.
Logique à relais
Texte structuré
ACB(0,bar_code_count);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.L’instruction est exécutée.
Exécution de l’instruction L’instruction compte les caractères dans la mémoire tampon.Le bit .EN est activé.Les autres bits d’état, sauf UL, sont effacés.L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
/bar_code_count.EN
ENDNER
ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0
ACB
ASCII Chars in BufferChannelSerialPort ControlCharacter Count
ENDNERbar_code_count
ACBbar_code_count.EN
568 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Effacement ASCII de la mémoire tampon (ACL)
L’instruction ACL efface immédiatement la mémoire tampon et la file d’attente ASCII.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction ACL en logique à relais.
Description : L’instruction ACL effectue immédiatement l’une ou les deux actions suivantes :
• efface les caractères dans le buffer et efface les instructions de lecture de la file d’attente ASCII ;
• efface les instructions d’écriture de la file d’attente ASCII.
Pour programmer l’instruction ACL, suivez ces directives :
1. Configurez le port série de l’automate.
2. Pour déterminer si une instruction a été retirée de la file d’attente ou si elle a été abandonnée, examinez ce qui suit dans l’instruction appropriée :
• le bit .ER est activé
• membre .ERROR vaut 16#E
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Opérande Type Format Entrez
Voie DINT immédiat
point
0
Effacer lecture port série
BOOL immédiat
point
Pour effacer la mémoire tampon et retirer les instructions ARD et ARL de la file d’attente, entrez Oui.
Effacer écriture port série
BOOL immédiat
point
Pour retirer les instructions AWA et AWT de la file d’attente, entrez Oui.
ASCII Clear BufferChannel ?Clear Serial Port Read ?Clear Serial Port Write ?
ACLASCII Clear BufferChannelClear Serial Port ReadClear Serial Port Write
ACL
ACL(Channel,ClearSerialPortRead,ClearSerialPortWrite);
Si votre application Action
utilise des instructions ARD ou ARL
Sélectionnez le mode Utilisateur
n’utilise pas d’instructions ARD ou ARL
Sélectionnez le mode Système ou Utilisateur
Publication 1756-RM003K-FR-P – Juillet 2008 569
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Exécution :
Exemple : Lorsque l’automate passe en mode Run, il efface la mémoire tampon et la file d’attente ASCII.
Logique à relais
Texte structuré
osri_1.InputBit := S:FS;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ACL(0,0,1);
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction efface les instructions et la ou les mémoire(s) tampon spécifiées.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
S:FS
ASCII Clear BufferChannel 0Clear Serial Port Read 1Clear Serial Port Write 1
ACL
ASCII Clear BufferChannelClear Serial Port ReadClear Serial Port Write
ACL
570 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Lignes d’échange ASCII (AHL)
L’instruction AHL obtient l’état des lignes de commande et active ou désactive les signaux DTR et RTS.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction AHL en logique à relais. Cependant, vous spécifiez la valeur Channel Status en accédant au membre .POS de la structure SERIAL_PORT_CONTROL, plutôt que d’inclure la valeur dans la liste des opérandes.
EN
DN
ER
ASCII Handshake LinesChannel ?AND Mask ?
??OR Mask ?
??SerialPort Control ?Channel Status(Decimal) ?
AHLASCII Handshake LinesChannelAND Mask
OR Mask
SerialPort ControlChannel Status (Decimal)
AHLEN
DN
ER
Opérande Type Format Entrez
Voie DINT immédiat
point
0
ANDMask DINT immédiat
point
Reportez-vous à la description.
ORMask DINT immédiat
point
Contrôle du port série SERIAL_PORT_CONTROL point point qui commande l’opération
Etat du canal (décimal) DINT immédiat 0
Affiche l’état des lignes de commande pendant l’exécution.
Pour l’état de cette ligne de commande
Examinez ce bit :
CTS 0
RTS 1
DSR 2
DCD 3
DTR 4
Caractère XOFF reçu 5
AHL(Channel,ANDMask,ORMask,SerialPortControl);
Publication 1756-RM003K-FR-P – Juillet 2008 571
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Description : L’instruction AHL peut :
• obtenir l’état des lignes de commande du port série ;
• activer ou désactiver le signal de terminal de données prêt (DTR) ;
• activer ou désactiver le signal de demande pour émettre (RTS).
Pour programmer l’instruction AHL, suivez ces directives :
1. Configurez le port série de l’automate.
2. Utilisez le tableau suivant pour sélectionner les valeurs correctes pour les opérandes ANDMask et ORMask :
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé ne s’applique pas à cette instruction.
.POS DINT La position stocke l’état des lignes de commande.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
Si votre application Action
utilise des instructions ARD ou ARL
Sélectionnez le mode Utilisateur
n’utilise pas d’instructions ARD ou ARL
Sélectionnez le mode Système ou Utilisateur
Pour DTR Et pour RTS Entrez cette valeur ANDMask
Et entrez cette valeur ORMask
off off 3 0
on 1 2
inchangé 1 0
on off 2 1
on 0 3
inchangé 0 1
inchangé off 2 0
on 0 2
inchangé 0 0
572 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
3. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Type Code Cause Méthode de récupération
4 57 L’instruction AHL n’a pas été exécutée parce que le port série est réglé sur pas d’échange.
Choix :
• Changez le réglage de la ligne de contrôle du port série.
• Effacez l’instruction AHL.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction obtient l’état de la ligne de commande et active ou désactive les signaux DTR et RTS.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 573
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Exemple : Lorsque get_control_line_status devient actif, obtenir l’état des lignes de commande du port série et enregistrer l’état dans l’opérande Channel Status. Pour afficher l’état d’une ligne de commande spécifique, surveillez le point SerialPortControl et développez le membre POS.
Logique à relais
Texte structuré
osri_1.InputBit := get_control_line_status;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
AHL(0,0,0,serial_port);
END_IF;
get_control_line_status
EN
DN
ER
ASCII Handshake LinesChannel 0AND Mask 0 OR Mask 0 SerialPort Control serial_portChannel Status(Decimal) 29
AHL
ASCII Handshake LinesChannelAND Mask
OR Mask
SerialPort ControlChannel Status(Decimal)
AHLEN
DN
ER
serial_port
get_control_line_status
574 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Lecture ASCII (ARD) L’instruction ARD retire des caractères de la mémoire tampon et les stocke dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction ARD en logique à relais. Cependant, vous définissez les valeurs Longueur de contrôle port série et Lecture de caractères en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu’en incluant des valeurs dans la liste des opérandes.
EN
DN
ER
ASCII Read Channel ?Destination ?
??SerialPort Control ?SerialPort Control Length ?Characters Read ?
ARDARDEN
DN
ER
ASCII ReadChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
Opérande Type Format Entrez Remarques
Voie DINT immédiat
point
0
Destination chaîne
SINT
INT
DINT
point point dans lequel les caractères sont déplacés (lecture) :
• Pour un type de données de chaîne, entrez le nom du point.
• Pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.
• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données de chaîne.
• Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Longueur de contrôle
du port série
DINT immédiat nombre de caractères à transférer vers la destination (lecture)
• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Destination.
• Si vous voulez que la longueur de contrôle du port série soit égale à la taille de la Destination, entrez 0.
Lecture de caractères
DINT immédiat 0 Affiche le nombre de caractères lus pendant l’exécution.
ARD(Channel,Destination,SerialPortControl);
Publication 1756-RM003K-FR-P – Juillet 2008 575
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Description : L’instruction ARD retire le nombre de caractères spécifié de la mémoire tampon et les stocke dans la Destination.
• L’instruction ARD est exécutée jusqu’à ce que le nombre de caractères spécifié aient été retirés (Serial Port Control Length).
• Pendant l’exécution de l’instruction ARD, aucune autre instruction port série ASCII n’est exécutée.
Pour programmer l’instruction ARD, suivez ces directives :
1. Configurez le port série de l’automate en mode Utilisateur.
2. Utilisez les résultats d’une instruction ACB pour déclencher l’instruction ARD. Ceci évite que l’instruction ARD bloque la file d’attente ASCII pendant qu’elle attend le nombre de caractères spécifié.
3. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
4. Pour déclencher une action après l’exécution de l’instruction, examinez le bit EM.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé ne s’applique pas à cette instruction.
.LEN DINT La longueur indique le nombre de caractères à déplacer vers la destination (lecture).
.POS DINT La position affiche le nombre de caractères lus.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
576 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Exécution :
Exemple : Un lecteur de code à barres envoie des codes à barres au port série (canal 0) de l’automate. Chaque code à barres contient 24 caractères. Pour déterminer quand l’automate reçoit un code à barres, l’instruction ACB compte de façon continue les caractères dans la mémoire tampon. Quand la mémoire tampon contient au moins 24 caractères, l’automate a reçu un code à barres. L’instruction ARD déplace le code à barres vers le membre DATA du point bag_bar_code, qui est une chaîne.
Logique à relais
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction retire des caractères de la mémoire tampon et les stocke dans la Destination.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
/bar_code_count.EN
ENDNER
ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0
ACBASCII Chars in BufferChannelSerialPort ControlCharacter Count
ACB
bar_code_count
EN
ERDN
bar_code_count.EN
Grtr Than or Eql (A>=B)Source A bar_code_count.pos
0Source B 24
GEQEN
DN
ER
ASCII ReadChannel 0Destination bag_bar_code
''SerialPort Control bar_code_readSerialPort Control Length 24Characters Read 0
ARDARDASCII ReadChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
bag_bar_code
bar_code_read
EN
DN
ER
Grtr Than or Eql (A>=B)Source A bar_code_count.pos
Source B
GEQ
Publication 1756-RM003K-FR-P – Juillet 2008 577
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Texte structuré
ACB(0,bar_code_count);
IF bar_code_count.POS >= 24 THEN
bar_code_read.LEN := 24;
ARD(0,bag_bar_code,bar_code_read);
END_IF;
578 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Ligne de lecture ASCII (ARL)
L’instruction ARL retire les caractères spécifiés de la mémoire tampon et les stocke dans la Destination.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction ARL en logique à relais. Cependant, vous définissez les valeurs Longueur de contrôle port série et Lecteur de caractères en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu’en incluant des valeurs dans la liste des opérandes.
EN
DN
ER
ASCII Read LineChannel ?Destination ?
??SerialPort Control ?SerialPort Control Length ?Characters Read ?
ARLARLASCII Read LineChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
EN
DN
ER
Opérande Type Format Entrez Remarques
Voie DINT immédiat
point
0
Destination chaîne
SINT
INT
DINT
point point dans lequel les caractères sont déplacés (lecture) :
• Pour un type de données de chaîne, entrez le nom du point.
• Pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.
• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données de chaîne.
• Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Longueur de contrôle du port série
DINT immédiat nombre maximum de caractères à lire si aucun caractère de terminaison n’est trouvé.
• Entrez le nombre maximum de caractères qu’un message peut contenir (c’est à dire, quand arrêter la lecture si aucun caractère de fin n’est trouvé).
Par exemple, si les messages ont une longueur de 3 à 6 caractères, entrez 6.
• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Destination.
• Si vous voulez que la longueur de contrôle du port série soit égale à la taille de la Destination, entrez 0.
Lecture de caractères
DINT immédiat 0 Affiche le nombre de caractères lus pendant l’exécution.
ARL(Channel,Destination,SerialPortControl);
Publication 1756-RM003K-FR-P – Juillet 2008 579
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Description : L’instruction ARL retire des caractères de la mémoire tampon et les stocke dans la Destination comme suit :
• L’exécution de l’instruction ARL continue jusqu’à ce qu’elle ait retiré un des éléments suivants :
– le premier jeu de caractères de fin ;
– nombre de caractères spécifié (Serial Port Control Length).
• Pendant l’exécution de l’instruction ARL, aucune autre instruction port série ASCII n’est exécutée.
Pour programmer l’instruction ARL, suivez ces directives :
1. Configurez le port série de l’automate :
a. sélectionnez le mode Utilisateur ;
b. définissez les caractères qui servent de caractères de fin.
2. Utilisez les résultats d’une instruction ABL pour déclencher l’instruction ARL. Ceci évite que l’instruction ARL bloque la file d’attente ASCII pendant qu’elle attend les caractères de fin.
3. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
4. Pour déclencher une action après l’exécution de l’instruction, examinez le bit EM.
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé ne s’applique pas à cette instruction.
.LEN DINT La longueur indique le nombre maximum de caractères à déplacer vers la destination (c’est à dire, quand arrêter la lecture si aucun caractère de fin n’est trouvé).
.POS DINT La position affiche le nombre de caractères lus.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
580 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Tester en permanence la mémoire tampon pour détecter un message provenant du terminal MessageView. Puisque les messages finissent par un retour chariot ($r), le retour chariot est configuré comme caractère de fin dans l’onglet Protocole utilisateur de la fenêtre des propriétés de l’automate. Lorsque l’instruction ABL trouve un retour chariot, elle active le bit FD.
Lorsque l’instruction ABL trouve le retour chariot (MV_line.FD est activé), l’automate a reçu un message complet. L’instruction ARL retire les caractères de la mémoire tampon, jusqu’au et y compris le retour chariot, et les places dans le membre DATA du point MV_msg, qui est une chaîne.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction ARL retire les caractères spécifiés de la mémoire tampon et les stocke dans la Destination.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 581
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Logique à relais
Texte structuré
ABL(0,MV_line);
osri_1.InputBit := MVLine.FD;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
mv_read.LEN := 12;
ARL(0,MV_msg,MV_read);
END_IF;
/MV_line.EN
ENDNER
ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0
ABLABLASCII Test For Buffer LineChannelSerialPort ControlCharacters Count
MV_line
ENDNER
MV_line.EN
MV_line.FD
EN
DN
ER
ASCII Read LineChannel 0Destination MV_msg
''SerialPort Control MV_readSerialPort Control Length 12Characters Read 0
ARLARLASCII Read LineChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
EN
DN
ER
MV_msg
MV_read
MV_line.FD
582 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Ajout d’écriture ASCII (AWA)
L’instruction AWA envoie un nombre spécifique de caractères du point Source vers un équipement série et ajoute un ou deux caractères prédéterminés.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction AWA en logique à relais. Cependant, vous définissez les valeurs Longueur de contrôle port série et Envoi de caractères en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu’en incluant des valeurs dans la liste des opérandes.
EN
DN
ER
ASCII Write Append Channel ?Source ?
??SerialPort Control ?SerialPort Control Length ?Characters Sent ?
AWAAWAASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
EN
DN
ER
Opérande Type Format Entrez Remarques
Voie DINT immédiat
point
0
Source chaîne
SINT
INT
DINT
point point contenant les caractères à envoyer :
• Pour un type de données de chaîne, entrez le nom du point.
• Pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.
• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données de chaîne.
• Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Longueur de contrôle du port série
DINT immédiat nombre de caractères à envoyer
• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Source.
• Si vous voulez que la longueur de contrôle du port série soit égale au nombre de caractères de la Source, entrez 0.
Characters Sent DINT immédiat 0 Affiche le nombre de caractères envoyés pendant l’exécution.
AWA(Channel,Source,SerialPortControl);
Publication 1756-RM003K-FR-P – Juillet 2008 583
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Structure SERIAL_PORT_CONTROL
Description : L’instruction AWA :
• envoie le nombre de caractères spécifié (Serial Port Control Length) du point Source vers l’équipement connecté au port série de l’automate ;
• ajoute un ou deux caractères, définis dans l’onglet Protocole utilisateur de la boîte de dialogue Propriétés de l’automate, à la fin des caractères (ajout).
Pour programmer l’instruction AWA, suivez ces directives :
1. Configurez le port série de l’automate.
a. Votre application comprend-t-elle également des instructions ARD ou ARL ?
b. Définissez les caractères à ajouter aux données.
2. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé ne s’applique pas à cette instruction.
.LEN DINT La longueur indique le nombre de caractères à envoyer.
.POS DINT La position affiche le nombre de caractères envoyés.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
Si Action
Oui Sélectionnez le mode Utilisateur
Non Sélectionnez le mode Système ou Utilisateur
584 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
3. Envoyez-vous toujours le même nombre de caractères à chaque exécution de l’instruction ?
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Si Action
Oui Entrez le nombre de caractères à envoyer dans la longueur de contrôle du port série.
Non Avant que l’instruction ne soit exécutée, copiez le membre LEN du point Source vers le membre LEN du point de contrôle du port série.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction envoie un nombre spécifié de caractères et ajoute un ou deux caractères prédéfinis.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 585
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Exemple 1 : Lorsque la température dépasse la limite supérieure (temp_high est activé), l’instruction AWA envoie un message au terminal MessageView connecté au port série de l’automate. Le message contient cinq caractères provenant du membre DATA du point string[1], qui est un type de chaîne. ($14 compte pour un caractère, c’est le code hexadécimal du caractère Ctrl-T.) L’instruction envoie également (ajoute) les caractères définis dans les propriétés de l’automate. Dans cet exemple, l’instruction AWA envoie un retour chariot ($0D), qui marque la fin du message.
Logique à relais
Texte structuré
IF temp_high THEN
temp_high_write.LEN := 5;
AWA(0,string[1],temp_high_write);
temp_high := 0;
END_IF;
temp_high
EN
DN
ER
ASCII Write AppendChannel 0Source string[1]
'$1425\1'SerialPort Control temp_high_writeSerialPort Control Length 5Characters Sent 6
AWAAWAASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
string[1]
temp_high_write
EN
DN
ER
temp_high
586 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Exemple 2 : Lorsque alarm est activé, l’instruction AWA envoie le nombre de caractères spécifié dans alarm_msg et ajoute un caractère de fin. Le nombre de caractères dans alarm_msg pouvant varier, la ligne commence par déplacer la longueur de la chaîne (alarm_msg.LEN) dans la longueur de contrôle du port série de l’instruction AWA (alarm_write.LEN). Dans alarm_msg, $14 compte pour un caractère, c’est le code hexadécimal du caractère Ctrl-T.)
Logique à relais
Texte structuré
osri_1.InputBit := alarm;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
alarm_write.LEN := alarm_msg.LEN;
AWA(0,alarm_msg,alarm_write);
END_IF;
alarm
MoveSource alarm_msg.LEN 5Dest alarm_write.LEN 5
MOVEN
DN
ER
ASCII Write AppendChannel 0Source alarm_msg
'$1425\1'SerialPort Control alarm_writeSerialPort Control Length 5Characters Sent 6
AWAAWA
ASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
alarm_msg
alarm_write
EN
DN
ER
MOV
MoveSource alarm_msg.LEN
Dest. alarm_write.LEN
Alarme
Publication 1756-RM003K-FR-P – Juillet 2008 587
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Ecriture ASCII (AWT) L’instruction AWT envoie un nombre spécifié de caractères du point Source vers un équipement série.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction AWT en logique à relais. Cependant, vous définissez les valeurs Longueur de contrôle port série et Envoi de caractères en accédant aux membres .LEN et .POS de la structure SERIAL_PORT_CONTROL, plutôt qu’en incluant des valeurs dans la liste des opérandes.
EN
DN
ER
ASCII WriteChannel ?Source ?
??SerialPort Control ?SerialPort Control Length ?Characters Sent ?
AWTAWTASCII WriteChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
DN
ER
EN
Opérande Type Format Entrez Remarques
Voie DINT immédiat
point
0
Source chaîne
SINT
INT
DINT
point point contenant les caractères à envoyer :
• Pour un type de données de chaîne, entrez le nom du point.
• Pour un tableau SINT, INT ou DINT, entrez le premier élément du tableau.
• Si vous voulez comparer, convertir ou manipuler les caractères, utilisez un type de données de chaîne.
• Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Port série
Commande
SERIAL_PORT_
CONTROL
point point qui commande l’opération
Longueur de contrôle du port série
DINT immédiat nombre de caractères à envoyer
• La longueur de contrôle du port série doit être inférieure ou égale à la taille de la Source.
• Si vous voulez que la longueur de contrôle du port série soit égale au nombre de caractères de la Source, entrez 0.
Characters Sent DINT immédiat 0 Affiche le nombre de caractères envoyés pendant l’exécution.
AWT(Channel,Source,SerialPortControl);
588 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Structure SERIAL_PORT_CONTROL
Description : L’instruction AWT envoie le nombre de caractères spécifié (Serial Port Control Length) du point Source vers l’équipement connecté au port série de l’automate.
Pour programmer l’instruction AWT, suivez ces directives :
1. Configurez le port série de l’automate.
2. C’est une instruction de transition :
• en logique à relais, basculez l’état d’entrée de la ligne de désactivé à activé chaque fois que l’instruction doit être exécutée ;
• en texte structuré, conditionnez l’instruction de façon à ce qu’elle n’exécute que lors d’une transition.
3. Envoyez-vous toujours le même nombre de caractères à chaque exécution de l’instruction ?
Mnémonique Type de données
Description
.EN BOOL Le bit d’activation indique que l’instruction est activée.
.EU BOOL Le bit de file d’attente indique que l’instruction est en file d’attente ASCII.
.DN BOOL Le bit de fin indique quand l’instruction est terminée, mais il est asynchrone par rapport à la scrutation de la logique.
.RN BOOL Le bit d’exécution indique que l’instruction exécute.
.EM BOOL Le bit vide indique que l’instruction est terminée, mais il est synchrone par rapport à la scrutation de la logique.
.ER BOOL Le bit d’erreur indique quand l’instruction échoue (erreurs).
.FD BOOL Le bit trouvé ne s’applique pas à cette instruction.
.LEN DINT La longueur indique le nombre de caractères à envoyer.
.POS DINT La position affiche le nombre de caractères envoyés.
.ERROR DINT L’erreur contient une valeur hexadécimale qui identifie la cause d’une erreur.
Si votre application Action
utilise des instructions ARD ou ARL Sélectionnez le mode Utilisateur
n’utilise pas d’instructions ARD ou ARL
Sélectionnez le mode Système ou Utilisateur
Si Action
Oui Entrez le nombre de caractères à envoyer dans la longueur de contrôle du port série.
Non Avant que l’instruction ne soit exécutée, déplacez le membre LEN du point Source vers le membre LEN du point de contrôle du port série.
Publication 1756-RM003K-FR-P – Juillet 2008 589
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple 1 : Lorsque la température atteint la limite inférieure (temp_low est activé), l’instruction AWT envoie un message au terminal MessageView connecté au port série de l’automate. Le message contient neuf caractères provenant du membre DATA du point string[2], qui est un type de chaîne. ($14 compte pour un caractère, c’est le code hexadécimal du caractère Ctrl-T.) Le dernier caractère est un retour chariot ($r), qui marque la fin du message.
Logique à relais
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécuté lorsque l’état d’entrée de la ligne passe de désactivé à activé.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction envoie un nombre spécifié de caractères.
Le bit .EN est activé.
Les autres bits d’état, sauf UL, sont effacés.
L’instruction tente d’entrer dans la file d’attente ASCII.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
temp_low
EN
DN
ER
ASCII WriteChannel 0Source string[2]
'$142224\01$r'SerialPort Control temp_low_writeSerialPort Control Length 9Characters Sent 9
AWTAWT
ASCII Write ChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
string[2]
temp_low_write
EN
DN
ER
temp_low
590 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Chapitre 17
Texte structuré
osri_1.InputBit := temp_low;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
temp_low_write.LEN := 9;
AWT(0,string[2],temp_low_write);
END_IF;
Exemple 2 : Lorsque MV_update est activé, l’instruction AWT envoie les caractères dans MV_msg. Etant donné que le nombre de caractères dans MV_msg varie, la ligne déplace d’abord la longueur de la chaîne (MV_msg.LEN) vers le membre Longueur de contrôle du port série de l’instruction AWT (MV_write.LEN). Dans MV_msg, $16 compte pour un caractère, c’est le code hexadécimal du caractère Ctrl-V.
Logique à relais
Texte structuré
osri_1.InputBit := MV_update;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
MV_write.LEN := Mv_msg.LEN;
AWT(0,MV_msg,MV_write);
END_IF;
MV_update
MoveSource MV_msg.LEN
10Dest MV_write.LEN
10
MOVEN
DN
ER
ASCII WriteChannel 0Source MV_msg
'$161365\8\1$r'SerialPort Control MV_writeSerialPort Control Length 10Characters Sent 10
AWTAWTASCII Write ChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
MV_msg
MV_write
EN
DN
ER
MOVMoveSource MV_msg.LEN
Dest. MV_write.LEN
MV_update
Publication 1756-RM003K-FR-P – Juillet 2008 591
Chapitre 17 Instructions du port série ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Notes :
592 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 18
Instructions de chaîne ASCII(CONCAT, DELETE, FIND, INSERT, MID)
Introduction Utilisez les instructions de chaîne ASCII pour créer et modifier des chaînes de caractères ASCII.
Vous pouvez également utiliser les instructions suivantes pour comparer ou convertir des caractères ASCII :
Si vous voulez Par exemple Utilisez cette instruction
Disponible dans ces langages
Voir page
ajouter des caractères à la fin d’une chaîne
ajouter des caractères de fin ou des séparateurs dans une chaîne
CONCAT Logique à relais
Texte structuré
595
effacer des caractères dans une chaîne
retirer les caractères d’en-tête ou de contrôle d’une chaîne
DELETE Logique à relais
Texte structuré
597
déterminer le caractère de début d’une sous-chaîne
localiser un groupe de caractères dans une chaîne
FIND Logique à relais
Texte structuré
599
insérer des caractères dans une chaîne
créer une chaîne qui utilise des variables
INSERT Logique à relais
Texte structuré
601
extraire des caractères d’une chaîne extraire des informations d’un code à barres
MID Logique à relais
Texte structuré
603
Si vous voulez Utilisez cette instruction
Voir page
comparer une chaîne à une autre CMP 206
voir si les caractères sont égaux à des caractères spécifiques EQU 211
voir si les caractères ne sont pas égaux à des caractères spécifiques NEQ 242
voir si les caractères sont supérieurs ou égaux à des caractères spécifiques GEQ 211
voir si les caractères sont supérieurs à des caractères spécifiques GRT 219
voir si les caractères sont inférieurs ou égaux à des caractères spécifiques LEQ 223
voir si les caractères sont inférieurs à des caractères spécifiques LES 227
réarranger les octets d’un point INT, DINT ou REAL SWPB 300
trouver une chaîne dans un tableau de chaînes FSC 344
convertir des caractères en valeur SINT, INT, DINT ou REAL STOD 608
convertir des caractères en valeur REAL STOR 611
convertir une valeur SINT, INT, DINT ou REAL en chaîne de caractères ASCII DTOS 613
convertir une valeur REAL en chaîne de caractères ASCII RTOS 615
Publication 1756-RM003K-FR-P – Juillet 2008 593
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Types de données de chaîne
Vous stockez des caractères ASCII dans des points qui utilisent un type de données de chaîne.
• Vous pouvez utiliser le type de données STRING par défaut. Il peut stocker un maximum de 82 caractères.
• Vous pouvez créer un nouveau type de données de chaîne qui stocke plus ou moins de caractères.
Pour créer un nouveau type de données de chaîne, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Chaque type de données de chaîne contient les membres suivants :
Nom Type de données
Description Remarques
LEN DINT nombre de caractères dans la chaîne
La valeur LEN est automatiquement mise à jour avec le nouveau nombre de caractères lorsque vous :
• utilisez la boîte de dialogue « Parcourir la chaîne » pour entrer des caractères ;
• utilisez des instructions qui lisent, convertissent ou manipulent une chaîne.
La valeur LEN indique la longueur de la chaîne actuelle. Le membre DATA peut aussi contenir d’anciens caractères qui ne sont pas inclus dans la valeur LEN.
DATA tableau SINT caractères ASCII dans la chaîne
• Pour accéder aux caractères de la chaîne, adressez le nom du point.
Par exemple, pour accéder aux caractères du point string_1, entrez string_1.
• Chaque élément du tableau DATA contient un caractère.
• Vous pouvez créer des nouveaux types de données de chaîne qui stockent plus ou moins de caractères.
594 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) Chapitre 18
Concaténation de chaîne (CONCAT)
L’instruction CONCAT ajoute des caractères ASCII à la fin d’une chaîne.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction CONCAT en logique à relais.
Description : L’instruction CONCAT combine les caractères de Source A avec les caractères de Source B et place le résultat dans la Destination.
• Les caractères de la Source A sont les premiers, suivis des caractères de la Source B.
• A moins que la Source A et la Destination ne soient le même point, Source A ne change pas.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
String ConcatenateSource A ? ??Source B ? ??Dest ? ??
CONCATSting ConcatenateSource A ?
??Source B ?
??Dest ?
??
CONCAT
Opérande Type Format Entrez Remarques
Source A STRING point le point contenant les caractères de début
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Source B STRING point le point contenant les caractères de fin
Destination STRING point point pour le stockage du résultat
CONCAT(SourceA,SourceB,Dest);
Type Code Cause Méthode de récupération
4 51 La valeur LEN de la chaîne de points est supérieure à la taille DATA de la chaîne de points.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
Publication 1756-RM003K-FR-P – Juillet 2008 595
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Exécution :
Exemple : Pour déclencher un message dans un terminal MessageView, l’automate doit envoyer une chaîne ASCII contenant un numéro de message et un numéro de station. String_1 contient le numéro du message. Lorsque add_node est activé, l’instruction CONCAT ajoute les caractères de node_num_ascii (numéro de station) à la fin de la chaîne de caractères dans string_1, puis stocke le résultat dans msg.
Logique à relais
Texte structuré
IF add_node THEN
CONCAT(string_1,node_num_ascii,msg);
add_node := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction concatène les chaînes.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
add_node
String ConcatenateSource A string_1
'$1423\'Source B node_num_ascii
'1'Dest msg
'$1423\1'
CONCATString ConcatenateSource A string_1
’$1423\’Source B node_num_ascii
’1’Dest msg
’$1423\1’
CONCAT
596 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) Chapitre 18
Effacement de chaîne (DELETE)
L’instruction DELETE retire des caractères ASCII d’une chaîne.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction DELETE en logique à relais.
Description : L’instruction DELETE efface (retire) un groupe de caractères de la Source et place les caractères restants dans la Destination.
• La position de Début et la Quantité définissent les caractères à effacer.
• A moins que la Source et la Destination ne soient le même point, la Source ne change pas.
String DeleteSource ? ??Qty ? ??Start ? ??Dest ? ??
DELETEDELETESting DeleteSource ?
??Qty ?
??Start ?
??Dest ?
??
Opérande Type Format Entrez Remarques
Source STRING point le point qui contient la chaîne dans laquelle vous voulez retirer des caractères
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Quantité SINT
INT
DINT
immédiat
point
le nombre de caractères à effacer
Le Début et la Quantité doivent être inférieures ou égales à la taille DATA de la Source.
Début SINT
INT
DINT
immédiat
point
la position du premier caractère à effacer
Entrez un numéro entre 1 et la taille DATA de la Source.
Destination STRING point point pour le stockage du résultat
DELETE(Source,Qty,Start,Dest);
Publication 1756-RM003K-FR-P – Juillet 2008 597
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exécution :
Exemple : Les informations ASCII d’un terminal contiennent un caractère d’en-tête. Après que l’automate a lu les données (term_read.EM est activé), l’instruction DELETE efface le caractère d’en-tête.
Logique à relais
Texte structuréIF term_read.EM THEN
DELETE(term_input,1,1,term_text);
term_read.EM := 0;
END_IF;
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 56 La valeur de Début ou de Quantité est incorrecte.
1. Assurez-vous que la valeur de Début est entre 1 et la taille DATA de la Source.
2. Assurez-vous que la valeur de Début plus la valeur de Quantité est inférieure ou égale à la taille DATA de la Source.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction efface les caractères spécifiés.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
term_read.EM
String DeleteSource term_input
'$0655'Qty 1
Start 1
Dest term_text
'55'
DELETEDELETESting DeleteSource term_input
’$0655’Qty 1
Start 1
Dest term_text’55’
598 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) Chapitre 18
Rechercher une chaîne (FIND)
L’instruction FIND repère la position de début d’une chaîne spécifiée à l’intérieur d’une autre chaîne.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction FIND en logique à relais décrite ci-dessus.
Description : L’instruction FIND recherche la chaîne Search dans la chaîne Source. Si l’instruction trouve la chaîne recherchée, le Résultat indique la position de début de cette chaîne dans la chaîne Source.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Find StringSource ? ??Search ? ??Start ? ??Result ? ??
FINDFINDFind StringSource ?
??Search ?
??Start ?
??Result ?
??
Opérande Type Format Entrez Remarques
Source STRING point la chaîne dans laquelle faire la recherche
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Recherche STRING point la chaîne à rechercher
Début SINT
INT
DINT
immédiat
point
la position de début de recherche dans la Source
Entrez un numéro entre 1 et la taille DATA de la Source.
Résultat SINT
INT
DINT
point le point qui stocke la position de début de la chaîne à rechercher
FIND(Source,Search,Start,Result);
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 56 La valeur de début est incorrecte. Assurez-vous que la valeur de Début est entre 1 et la taille DATA de la Source.
Publication 1756-RM003K-FR-P – Juillet 2008 599
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Exécution :
Exemple : Un message de terminal MessageView contient plusieurs informations. La barre oblique inverse [ \ ] sépare chaque information. Pour trouver une information, l’instruction FIND recherche le caractère barre oblique inverse et enregistre sa position dans find_pos.
Logique à relais
Texte structuré
IF MV_read.EM THEN
FIND(MV_msg,find,1,find_pos);
MV_read.EM := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction recherche les caractères spécifiés.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
MV_read.EM
Find StringSource MV_msg '$06324\12\1\$r'Search find
'\'Start 1
Result find_pos
5
FINDFINDFind StringSource MV_msg
’$06324\12\1\$r’Search find
’\’Start 1
Result find_pos5
600 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) Chapitre 18
Insertion d’une chaîne (INSERT)
L’instruction INSERT ajoute des caractères ASCII à un emplacement défini d’une chaîne.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction INSERT en logique à relais.
Description : L’instruction INSERT ajoute les caractères de Source B dans une position définie de Source A et place le résultat dans la Destination:
• Début définie où Source B est inséré dans Source A.
• A moins que la Source A et la Destination ne soient le même point, Source A ne change pas.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Insert StringSource A ? ??Source B ? ??Start ? ??Dest ? ??
INSERTINSERTInsert StringSource A ?
??Source B ?
??Start ?
??Dest ?
??
Opérande Type Format Entrez Remarques
Source A STRING point la chaîne dans laquelle les caractères sont insérés
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Source B STRING point la chaîne qui contient les caractères à insérer
Début SINT
INT
DINT
immédiat
point
la position dans la Source A où sont ajoutés les caractères
Entrez un numéro entre 1 et la taille DATA de la Source.
Résultat STRING point la chaîne pour le stockage du résultat
INSERT(SourceA,SourceB,Start,Dest);
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 56 La valeur de début est incorrecte. Assurez-vous que la valeur de Début est entre 1 et la taille DATA de la Source.
Publication 1756-RM003K-FR-P – Juillet 2008 601
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Exécution :
Exemple : Lorsque temp_high est activé, l’instruction INSERT insère les caractères de string_2 à la position 2 dans string_1 et place le résultat dans string_3 :
Logique à relais
Texte structuré
IF temp_high THEN
INSERT(string_1,string_2,2,string_3);
temp_high := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction insère les caractères spécifiés.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
temp_high
Insert StringSource A string_1
'AD'Source B string_2
'BC'Start 2
Dest string_3
'ABCD'
INSERTINSERTInsert StringSource A string_1
’AD’Source B string_2
’BC’Start 2
Dest string_3’ABCD’
602 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID) Chapitre 18
Chaîne médiane (MID) L’instruction MID copie un nombre déterminé de caractères ASCII à partir d’une chaîne et les place dans une autre chaîne.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction MID en logique à relais.
Description : L’instruction MID copie un groupe de caractères de la Source et place le résultat dans la Destination.
• La position de Début et la Quantité définissent les caractères à copier.
• A moins que la Source et la Destination ne soient le même point, la Source ne change pas.
Indicateurs d’état arithmétique : Non affectés
Middle StringSource ? ??Qty ? ??Start ? ??Dest ? ??
MIDMIDMiddle StringSource ?
??Qty ?
??Start ?
??Dest ?
??
Opérande Type Format Entrez Remarques
Source STRING point la chaîne à partir de laquelle les caractères sont copiés
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Quantité SINT
INT
DINT
immédiat
point
le nombre de caractères à copier
Le Début et la Quantité doivent être inférieures ou égales à la taille DATA de la Source.
Début SINT
INT
DINT
immédiat
point
la position du premier caractère à copier
Entrez un numéro entre 1 et la taille DATA de la Source.
Destination STRING point la chaîne dans laquelle les caractères sont copiés
MID(Source,Qty,Start,Dest);
Publication 1756-RM003K-FR-P – Juillet 2008 603
Chapitre 18 Instructions de chaîne ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Conditions d’erreur :
Exécution :
Exemple : Sur les tapis roulants d’un aéroport, chaque valise reçoit un code à barres. Les caractères 9 à 17 de ce code représentent le numéro du vol et l’aéroport de destination. Une fois le code lu (bag_read.EM est activé), l’instruction MID copie le numéro du vol et l’aéroport de destination dans la chaîne bag_flt_and_dest.
Logique à relais
Texte structuré
IF bag_read.EM THEN
MID(bar_barcode,9,9,bag_flt_and_dest);
bag_read.EM := 0;
END_IF;
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 56 La valeur de Début ou de Quantité est incorrecte.
1. Assurez-vous que la valeur de Début est entre 1 et la taille DATA de la Source.
2. Assurez-vous que la valeur de Début plus la valeur de Quantité est inférieure ou égale à la taille DATA de la Source.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction copie les caractères spécifiés à partir d’une chaîne et les stocke dans une autre chaîne.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
bag_read.EM
Middle StringSource bag_barcode 'NWA HOP 5058 AMS 01'
Qty 9
Start 9
Dest bag_flt_and_dest '5058 AMS '
MIDMIDMiddle StringSource bag_barcode
’NWA HOP 5058 AMS 01?Qty 9
Start 9
Dest bag_flt_and_dest’5058 AMS’
604 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 19
Instructions de conversion ASCII(STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Introduction Utilisez les instructions de conversion ASCII pour modifier le format des données.
Si vous voulez Par exemple Utilisez cette instruction
Disponible dans ces langages
Voir page
convertir la représentation ASCII d’une valeur de nombre entier en valeur SINT, INT, DINT ou REAL
convertir une valeur de balance de pesage, ou autre équipement ASCII, en nombre entier pour l’utiliser dans votre programme
STOD Logique à relais
Texte structuré
608
convertir la représentation ASCII d’une valeur à virgule flottante en valeur REAL
convertir une valeur de balance de pesage, ou autre équipement ASCII, en valeur REAL pour l’utiliser dans votre programme
STOR Logique à relais
Texte structuré
611
convertir une valeur SINT, INT, DINT ou REAL en chaîne de caractères ASCII
convertir une variable en chaîne ASCII pour l’envoyer à un terminal MessageView
DTOS Logique à relais
Texte structuré
613
convertir une valeur REAL en chaîne de caractères ASCII
convertir une variable en chaîne ASCII pour l’envoyer à un terminal MessageView
RTOS Logique à relais
Texte structuré
615
convertir les lettres d’une chaîne de caractères ASCII en majuscules
convertir une entrée effectuée par un opérateur en majuscules pour que vous puissiez la chercher dans un tableau
UPPER Logique à relais
Texte structuré
617
convertir les lettres d’une chaîne de caractères ASCII en minuscules
convertir une entrée effectuée par un opérateur en minuscules pour que vous puissiez la chercher dans un tableau
LOWER Logique à relais
Texte structuré
619
Publication 1756-RM003K-FR-P – Juillet 2008 605
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Vous pouvez également utiliser les instructions suivantes pour comparer ou manipuler des caractères ASCII :
Si vous voulez Utilisez cette instruction
Voir page
ajouter des caractères à la fin d’une chaîne CONCAT 595
effacer des caractères dans une chaîne DELETE 597
déterminer le caractère de début d’une sous-chaîne FIND 599
insérer des caractères dans une chaîne INSERT 601
extraire des caractères d’une chaîne MID 603
réarranger les octets d’un point INT, DINT ou REAL SWPB 300
comparer une chaîne à une autre CMP 206
voir si les caractères sont égaux à des caractères spécifiques EQU 211
voir si les caractères ne sont pas égaux à des caractères spécifiques NEQ 242
voir si les caractères sont supérieurs ou égaux à des caractères spécifiques GEQ 215
voir si les caractères sont supérieurs à des caractères spécifiques GRT 219
voir si les caractères sont inférieurs ou égaux à des caractères spécifiques LEQ 223
voir si les caractères sont inférieurs à des caractères spécifiques LES 227
trouver une chaîne dans un tableau de chaînes FSC 344
606 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
Types de données de chaîne
Vous stockez des caractères ASCII dans des points qui utilisent un type de données de chaîne.
• Vous pouvez utiliser le type de données STRING par défaut. Il peut stocker un maximum de 82 caractères.
• Vous pouvez créer un nouveau type de données de chaîne qui stocke plus ou moins de caractères.
Pour créer un nouveau type de données de chaîne, voir Logix5000 Controllers Common Procedures, publication 1756-PM001.
Chaque type de données de chaîne contient les membres suivants :
Nom Type de données
Description Remarques
LEN DINT nombre de caractères dans la chaîne
La valeur LEN est automatiquement mise à jour avec le nouveau nombre de caractères lorsque vous :
• utilisez la boîte de dialogue « Parcourir la chaîne » pour entrer des caractères ;
• utilisez des instructions qui lisent, convertissent ou manipulent une chaîne.
La valeur LEN indique la longueur de la chaîne actuelle. Le membre DATA peut aussi contenir d’anciens caractères qui ne sont pas inclus dans la valeur LEN.
DATA tableau SINT caractères ASCII dans la chaîne
• Pour accéder aux caractères de la chaîne, adressez le nom du point.
Par exemple, pour accéder aux caractères du point string_1, entrez string_1.
• Chaque élément du tableau DATA contient un caractère.
• Vous pouvez créer des nouveaux types de données de chaîne qui stockent plus ou moins de caractères.
Publication 1756-RM003K-FR-P – Juillet 2008 607
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Chaîne vers DINT (STOD) L’instruction STOD convertit la représentation ASCII d’un nombre entier en valeur entière ou REAL.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction STOD en logique à relais.
Description : L’instruction STOD convertit la Source en nombre entier et enregistre le résultat dans la Destination.
• L’instruction convertit les nombres positifs et négatifs.
• Si la chaîne Source contient des caractères non numériques, l’instruction STOD convertit le premier groupe de chiffres contigus.
– L’instruction saute tous les caractères initiaux de contrôle ou non numériques (sauf le signe moins au début d’un nombre).
– Si la chaîne contient plusieurs groupes de chiffres séparés par des séparateurs (par ex., / ), l’instruction ne convertit que le premier groupe de chiffres.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
String To DINTSource ? ??Dest ? ??
STODString To DINTSource ?
??Dest ?
??
STOD
Opérande Type Format Entrez Remarques
Source STRING point le point qui contient la valeur ASCII
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Destination SINT
INT
DINT
REAL
point le point qui stocke la valeur entière
Si la valeur Source est un nombre à virgule flottante, l’instruction convertit uniquement la partie entière du nombre (quel que soit le type de données de la destination).
STOD(Source,Dest);
608 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
Conditions d’erreur
Exécution :
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 53 Le nombre de sortie est au-delà des limites du type de données de la destination.
Choix :
• diminuez la taille de la valeur ASCII ;
• utilisez un type de données plus grand pour la destination.
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction SC est activé.
La destination est effacée.
L’instruction convertit la Source.
Si le résultat est zéro, S:Z est activé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 609
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exemple : Lorsque MV_read.EM est activé, l’instruction STOD convertit le premier groupe de caractères numériques dans MV_msg en valeur entière. L’instruction saute le caractère de contrôle initial ($06) et s’arrête au séparateur ( \ ).
Logique à relais
Texte structuré
IF MV_read.EM THEN
STOD(MV_msg,MV_msg_nmbr);
MV_read.EM := 0;
END_IF;
MV_read.EM
String To DINTSource MV_msg '$06324\12\1\$r'Dest MV_msg_nmbr
324
STODString To DINTSource MV_msg
’$06324\12\1\$r’Dest MV_msg_nmbr
324
STOD
610 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
Chaîne vers REAL (STOR) L’instruction STOR convertit la représentation ASCII d’une valeur à virgule flottante en valeur REAL.
Opérandes :
Opérandes de logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction STOR en logique à relais.
Description : L’instruction STOR convertit la Source en valeur REAL et enregistre le résultat dans la Destination.
• L’instruction convertit les nombres positifs et négatifs.
• Si la chaîne Source contient des caractères non numériques, l’instruction STOR convertit le premier groupe de chiffres contigus, y compris la virgule décimale [ . ] :
– L’instruction saute tous les caractères initiaux de contrôle ou non numériques (sauf le signe moins au début d’un nombre).
– Si la chaîne contient plusieurs groupes de chiffres séparés par des séparateurs (par ex., / ), l’instruction ne convertit que le premier groupe de chiffres.
Indicateurs d’état arithmétique : Les indicateurs d’état arithmétique sont affectés.
Conditions d’erreur :
String to RealSource ? ??Dest ? ??
STORString to RealSource ?
??Dest ?
??
STOR
Opérande Type Format Entrez Remarques
Source STRING point le point qui contient la valeur ASCII
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
Destination REAL point le point qui stocke la valeur REAL
STOR(Source,Dest);
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 53 Le nombre de sortie est au-delà des limites du type de données de la destination.
Choix :
• diminuez la taille de la valeur ASCII ;
• utilisez un type de données plus grand pour la destination.
Publication 1756-RM003K-FR-P – Juillet 2008 611
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exécution :
Exemple : Après avoir lu le poids indiqué par une balance de pesage (weight_read.EM est activé), l’instruction STOR convertit les caractères numériques de weight_ascii en valeur REAL.
Il est possible qu’une petite différence apparaisse entre les parties fractionnelles de la Source et de la Destination.
Logique à relais
Texte structuré
IF weight_read.EM THEN
STOR(weight_ascii,weight);
weight_read.EM := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction S:C est activé.
La destination est effacée.
L’instruction convertit la Source.
Si le résultat est zéro, S:Z est activé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
weight_read.EM
String to RealSource weight_ascii
'428.259'Dest weight
428.259
STORString to RealSource weight_axcii
’428.259’Dest weight
428.259
STOR
612 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
DINT vers chaîne (DTOS) L’instruction DTOS produit la représentation ASCII d’une valeur.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction DTOS en logique à relais.
Description : L’instruction DTOS convertit la Source en chaîne de caractères ASCII et place le résultat dans la Destination.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
DINT to StringSource ? ??Dest ? ??
DTOSDTOSDINT to StringSource ?
??Dest ?
??
Opérande Type Format Entrez Remarques
Source SINT
INT
DINT
REAL
point le point qui contient la valeur
Si la source est une valeur REAL, l’instruction la convertit en valeur DINT. Reportez-vous à REAL vers nombre entier, page 634.
Destination STRING point le point qui stocke la valeur ASCII
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
DTOS(Source,Dest);
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 52 La chaîne de sortie est plus grande que la destination. Créez un nouveau type de données de chaîne suffisamment grand pour la chaîne de sortie. Utilisez le nouveau type de données de chaîne comme type de données pour la destination.
Publication 1756-RM003K-FR-P – Juillet 2008 613
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exécution :
Exemple : Lorsque temp_high est activé, l’instruction DTOS convertit la valeur dans msg_num en chaîne de caractères ASCII et place le résultat dans msg_num_ascii. Les lignes suivantes insère ou font une concaténation de msg_num_ascii avec d’autres chaînes pour produire un message complet pour un terminal d’affichage.
Logique à relais
Texte structuré
IF temp_high THEN
DTOS(msg_num,msg_num_ascii);
temp_high := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction convertit la Source.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
temp_high
DINT to StringSource msg_num
23Dest msg_num_ascii
'23'
DTOSDTOSDINT to StringSource msg_num
23Dest msg_num_ascii
’23’
614 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
REAL vers chaîne (RTOS) L’instruction RTOS produit la représentation ASCII d’une valeur REAL.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction RTOS en logique à relais.
Description : L’instruction RTOS convertit la Source en chaîne de caractères ASCII et place le résultat dans la Destination.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Real to StringSource ? ??Dest ? ??
RTOSRTOSReal to StringSource ?
??Dest ?
??
Opérande Type Format Entrez Remarques
Source REAL point le point qui contient la valeur REAL
Destination STRING point le point qui stocke la valeur ASCII
Les types de données de chaîne sont :
• type de données STRING par défaut ;
• tout type de données de chaîne nouveau que vous créez.
RTOS(Source,Dest);
Type Code Cause Méthode de récupération
4 51 La valeur LEN du point de chaîne est supérieure à la taille DATA du point de chaîne.
1. Vérifiez qu’aucune instruction n’écrit dans le membre LEN du point de chaîne.
2. Dans la valeur LEN, entrez le nombre de caractères contenu dans la chaîne.
4 52 La chaîne de sortie est plus grande que la destination. Créez un nouveau type de données de chaîne suffisamment grand pour la chaîne de sortie. Utilisez le nouveau type de données de chaîne comme type de données pour la destination.
Publication 1756-RM003K-FR-P – Juillet 2008 615
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exécution :
Exemple : Lorsque send_data est activé, l’instruction RTOS convertit la valeur dans data_1 en chaîne de caractères ASCII et place le résultat dans data_1_ascii. Les lignes suivantes insère ou font une concaténation de data_1_ascii avec d’autres chaînes pour produire un message complet pour un terminal d’affichage.
Il est possible qu’une petite différence entre les parties fractionnelles de la Source et de la Destination apparaisse.
Logique à relais
Texte structuré
IF send_data THEN
RTOS(data_1,data_1_ascii);
send_data := 0;
END_IF;
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction convertit la Source.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
send_data
Real to StringSource data_1
15.3001Dest data_1_ascii '15.3001003'
RTOSRTOSReal to StringSource data_1
15.3001Dest data_1_ascii
’15.301003’
616 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
Haut de casse (UPPER) L’instruction UPPER convertit les caractères alphabétiques d’une chaîne en caractères majuscules.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction UPPER en logique à relais.
Description : L’instruction UPPER convertit en majuscules toutes les lettres de la Source et place le résultat dans la Destination.
• Les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
• Si des opérateurs entrent directement des caractères ASCII, convertissez les caractères en majuscules ou en minuscules avant de les comparer.
Tout caractère de la chaîne Source qui n’est pas une lettre reste inchangé.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
Source STRING point le point qui contient les caractères que vous voulez convertir en majuscules
Destination STRING point le point qui stocke les caractères en majuscule
UPPER(Source,Dest);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction convertit la Source en majuscules.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 617
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exemple : Pour trouver des informations sur un élément spécifique, un opérateur entre la référence de l’élément dans un terminal ASCII. Après que l’automate a lu l’entrée à partir d’un terminal (terminal_read.EM est actif), l’instruction UPPER convertit les caractères dans catalog_number en caractères en majuscule et stocke le résultat dans catalog_number_upper_case. Une ligne postérieure recherche alors dans un tableau les caractères correspondant à ceux de catalog_number_upper_case.
Logique à relais
Texte structuré
IF terminal_read.EM THEN
UPPER(catalog_number,catalog_number_upper_case);
terminal_read.EM := 0;
END_IF;
618 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Chapitre 19
Bas de casse (LOWER) L’instruction LOWER convertit les caractères alphabétiques d’une chaîne en caractères minuscules.
Opérandes :
Logique à relais
Texte structuré
Les opérandes sont identiques à ceux de l’instruction LOWER en logique à relais.
Description : L’instruction LOWER convertit en minuscules toutes les lettres de la Source et place le résultat dans la Destination.
• Les caractères ASCII sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
• Si des opérateurs entrent directement des caractères ASCII, convertissez tous les caractères en majuscules ou en minuscules avant de les comparer.
Tout caractère de la chaîne Source qui n’est pas une lettre reste inchangé.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Opérande Type Format Description
Source STRING point le point qui contient les caractères que vous voulez convertir en minuscules
Destination STRING point le point qui stocke les caractères en minuscule
LOWER(Source,Dest);
Condition Action logique à relais Action texte structuré
Pré-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
L’état d’entrée de la ligne est faux
L’état de sortie de la ligne est réglé sur faux. –
L’état d’entrée de la ligne est vrai
L’instruction est exécutée.
L’état de sortie de la ligne est réglé sur vrai.
–
EnableIn est activé – EnableIn est toujours activé.
L’instruction est exécutée.
Exécution de l’instruction L’instruction convertit la Source en minuscules.
Post-scrutation L’état de sortie de la ligne est réglé sur faux. Aucune.
Publication 1756-RM003K-FR-P – Juillet 2008 619
Chapitre 19 Instructions de conversion ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Exemple : Pour trouver des informations sur un élément spécifique, un opérateur entre la référence de l’élément dans un terminal ASCII. Après que l’automate a lu l’entrée à partir d’un terminal (terminal_read.EM est actif), l’instruction LOWER convertit les caractères dans item_number en caractères en minuscule et stocke le résultat dans item_number_lower_case. Une ligne postérieure recherche alors dans un tableau les caractères correspondant à ceux de item_number_lower_case.
Logique à relais
Texte structuré
IF terminal_read.EM THEN
LOWER(item_number,item_number_lower_case);
terminal_read.EM := 0;
END_IF;
620 Publication 1756-RM003K-FR-P – Juillet 2008
Chapitre 20
Instructions de débogage(BPT, TPT)
Introduction Utilisez les instructions de débogage pour surveiller l’état de votre programme dans certaines conditions que vous définissez. Ces instructions ne sont compatibles qu’avec le logiciel RSLogix Emulate 5000, avec lequel vous pouvez émuler un automate Logix 5000 sur votre ordinateur personnel.
Points d’interruption (BPT) Les points d’interruption arrêtent l’émulation du programme lorsqu’une ligne est vraie
Opérandes :
Logique à relais
Description :
Les points d’interruption se programment avec l’instruction de sortie de point d’interruption (BPT). Lorsque les entrées d’une ligne contenant une instruction BPT sont vraies, l’instruction BPT arrête l’exécution du programme. Le logiciel affiche une fenêtre indiquant que le point d’interruption s’est déclenché, ainsi que les valeurs qui l’ont déclenché.
Si vous voulez Utilisez cette instruction Disponible dans ces langages Voir page
arrêter l’émulation du programme lorsqu’une ligne est vraie
BPT Logique à relais 621
enregistrer des données que vous sélectionnez lorsqu’une ligne est vraie
TPT Logique à relais 625
Opérande Type Format Description
Formater STRING point Chaîne qui active le formatage du texte qui apparaît dans la fenêtre de suivi du point d’interruption.
Suivre Ceci BOOL, SINT, INT, DINT, REAL
point Point avec la valeur que vous voulez afficher dans la fenêtre de suivi.
Publication 1756-RM003K-FR-P – Juillet 2008 621
Chapitre 20 Instructions de débogage (BPT, TPT)
Lorsqu’un point d’interruption s’est déclenché, l’émulateur affiche une fenêtre vous informant qu’un point d’interruption s’est produit. La barre de titre de la fenêtre indique l’emplacement contenant l’émulateur qui a rencontré le point d’interruption.
Lorsque vous cliquez sur OK, l’émulateur reprend l’exécution du programme. Si les conditions qui ont déclenché le point d’interruption persistent, le point d’interruption réapparaît.
En plus, l’émulateur ouvre une fenêtre de suivi pour le point d’interruption. La fenêtre de suivi affiche les informations sur le point d’interruption et les valeurs.
Format de chaîne
Avec le format de chaîne des instructions de point de suivi et de point d’interruption, vous pouvez contrôler la façon dont les points suivis apparaissent dans les fenêtres de suivi ou de point d’interruption. Le format de la chaîne est indiqué ci-après :
en-tête;(texte)%(type)
Où en-tête est une chaîne de texte identifiant le point de suivi ou le point d’interruption, texte est une chaîne décrivant le point (ou tout autre texte de votre choix) et %(type) indique le format du point. Il vous faut un type d’indicateur pour chaque point que vous suivez avec l’instruction de point de suivi ou de point d’interruption.
Par exemple, vous pouvez formater une chaîne de point de suivi comme indiqué ci-dessous :
Mon point de suivi:Point 1 = %e et Point 2 = %d
%e formate le premier point suivi comme une valeur en virgule flottante à double précision avec un exposant et %d formate le deuxième point suivi comme nombre entier décimal signé.
Dans ce cas, vous avez une instruction de point de suivi avec deux opérandes Suivre Ceci (un pour une valeur REAL et un pour une valeur INT, bien que la valeur de n’importe quel point peut être formatée avec n’importe quel indicateur).
ATTENTION Lorsqu’un point d’interruption est déclenché, vous ne pouvez pas modifier votre projet tant que vous n’autorisez pas la poursuite de l’exécution. Vous pouvez aller en ligne avec l’émulateur pour observer l’état de votre projet, mais vous ne pourrez pas le modifier. Si vous essayez d’accepter une modification de ligne lorsqu’un point d’interruption est déclenché, une fenêtre apparaît pour indiquer que l’automate n’est pas dans le mode correct.
622 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de débogage (BPT, TPT) Chapitre 20
La fenêtre du point de suivi résultante qui apparaît lorsque le point de suivi est déclenché ressemble à celle-ci.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
Exemple : Vous pouvez afficher de nombreuses valeurs de point avec l’instruction BPT. Cependant, la chaîne de formatage ne peut contenir que 82 caractères. Etant donné que la chaîne de formatage requiert deux caractères pour chaque point que vous voulez dans le point d’interruption, vous ne pouvez pas suivre plus de 41 points avec une seule instruction BPT. En outre, pour séparer les données de point dans vos suivis, vous devrez inclure des espaces et d’autres éléments de formatage, ce qui réduit à bien moins de 41 le nombre de valeurs de point qu’une instruction BPT peut réellement afficher.
L’en-tête (le texte qui précède les deux points dans la chaîne de formatage) apparaît ici.
Le numéro d’emplacement indique l’emplacement contenant le module émulateur qui possède le point de suivi ou le point d’interruption qui est suivi dans la fenêtre de suivi.
Le texte de la valeur REAL (représentée dans la chaîne de formatage par %e) apparaît ici.
Le texte de la valeur INT (représentée dans la chaîne de formatage par %d) apparaît ici.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
L’exécution saute à la ligne contenant l’instruction LBL avec le nom d’étiquette référencé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
Publication 1756-RM003K-FR-P – Juillet 2008 623
Chapitre 20 Instructions de débogage (BPT, TPT)
Cet ligne montre un point d’interruption qui arrête l’exécution du programme lorsqu’une valeur analogique est supérieure à 3,02 ou inférieure à 2,01.
Vous voulez afficher les informations du point d’interruption avec la chaîne Format (monformat). Dans ce cas, la chaîne de formatage contient le texte suivant :
Breakpoint:The input value is %f
Lorsque le point d’interruption est déclenché, la fenêtre de suivi du point d’interruption affiche les caractères précédant les deux points (« Breakpoint ») dans la barre de titre de la fenêtre de suivi. Les autres caractères constituent les suivis. Dans cet exemple, %f représente le premier (et dans ce cas le seul) point à suivre (« analogvalue »).
Le résultat du suivi apparaît comme ci-dessous.
624 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de débogage (BPT, TPT) Chapitre 20
Points de suivi (TPT) Les points de suivi enregistrent des données que vous sélectionnez lorsqu’une ligne est vraie.
Opérandes :
Logique à relais
Description :
Les points de suivi se programment avec l’instruction de sortie de point de suivi (TPT). Lorsque les entrées sur une ligne contenant une instruction TPT sont vraies, l’instruction TPT écrit une entrée de suivi dans l’affichage ou le fichier journal de suivi.
Vous pouvez suivre de nombreux points avec l’instruction TPT. Cependant, la chaîne de formatage ne peut contenir que 82 caractères. Etant donné que la chaîne de formatage requiert deux caractères pour chaque point que vous voulez suivre, vous ne pouvez pas suivre plus de 41 points avec une seule instruction TPT. En outre, pour séparer les données de point dans vos suivis, vous devrez inclure des espaces et d’autres éléments de formatage, ce qui réduit à bien moins de 41 le nombre de points qu’une instruction TPT peut réellement suivre.
Format de chaîne
Avec le format de chaîne des instructions de point de suivi et de point d’interruption, vous pouvez contrôler la façon dont les points suivis apparaissent dans les fenêtres de suivi ou de point d’interruption. Le format de la chaîne est indiqué ci-après :
en-tête;(texte)%(type)
Où en-tête est une chaîne de texte identifiant le point de suivi ou le point d’interruption, texte est une chaîne décrivant le point (ou tout autre texte de votre choix) et %(type) indique le format du point. Il vous faut un type d’indicateur pour chaque point que vous suivez avec l’instruction de point de suivi ou de point d’interruption.
Par exemple, vous pouvez formater une chaîne de point de suivi comme indiqué ci-dessous :
Opérande Type Format Description
Formater STRING point Chaîne qui configure le formatage des rapports de suivi (à la fois à l’écran et dans le journal sur le disque).
Suivre Ceci BOOL, SINT, INT, DINT,REAL
point Point que vous voulez suivre.
Publication 1756-RM003K-FR-P – Juillet 2008 625
Chapitre 20 Instructions de débogage (BPT, TPT)
Mon point de suivi:Point 1 = %e et Point 2 = %d
%e formate le premier point suivi comme une valeur en virgule flottante à double précision avec un exposant et %d formate le deuxième point suivi comme nombre entier décimal signé.
Dans ce cas, vous avez une instruction de point de suivi avec deux opérandes Suivre Ceci (un pour une valeur REAL et un pour une valeur INT, bien que la valeur de n’importe quel point peut être formatée avec n’importe quel indicateur).
La fenêtre du point de suivi résultante qui apparaît lorsque le point de suivi est déclenché ressemble à celle-ci.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Exécution :
L’en-tête (le texte qui précède les deux points dans la chaîne de formatage) apparaît ici.
Le numéro d’emplacement indique l’emplacement contenant le module émulateur qui possède le point de suivi ou le point d’interruption qui est suivi dans la fenêtre de suivi.
Le texte de la valeur REAL (représentée dans la chaîne de formatage par %e) apparaît ici.
Le texte de la valeur INT (représentée dans la chaîne de formatage par %d) apparaît ici.
Condition Action logique à relais
Pré-scrutation L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est faux L’état de sortie de la ligne est réglé sur faux.
L’état d’entrée de la ligne est vrai L’état de sortie de la ligne est réglé sur vrai.
L’exécution saute à la ligne contenant l’instruction LBL avec le nom d’étiquette référencé.
Post-scrutation L’état de sortie de la ligne est réglé sur faux.
626 Publication 1756-RM003K-FR-P – Juillet 2008
Instructions de débogage (BPT, TPT) Chapitre 20
Exemple : Cette ligne déclenche un suivi de trois valeurs analogiques lorsqu’une d’entre elles dépasse une valeur définie (30,01).
Vous voulez afficher les informations du point de suivi dans la chaîne Format (monformat). Dans ce cas, la chaîne de formatage contient le texte suivant :
Analog inputs trace:Analog inputs = %f, %f, and %f
Lorsque le point de suivi est déclenché, les caractères précédant les deux points (« Analog inputs trace ») apparaissent dans la barre de titre de la fenêtre de suivi. Les autres caractères constituent le suivi. Dans cet exemple, %f représente les points à suivre (« analogvalue1 », « analogvalue2 » et « analogvalue3 »).
Publication 1756-RM003K-FR-P – Juillet 2008 627
Chapitre 20 Instructions de débogage (BPT, TPT)
Le résultat du suivi apparaît comme ci-dessous.
Lorsque ce suivi est enregistré sur le disque, les caractères précédant les deux points apparaissent dans les suivis.
Ceci indique quel point de suivi a provoqué quelle entrée de suivi. Ceci est un exemple d’entrée de suivi. « Analog inputs trace: » est le texte d’en-tête de la chaîne de formatage de point de suivi.
Analog inputs trace:Analog inputs = 31.00201, 30.282000, and 30.110001
628 Publication 1756-RM003K-FR-P – Juillet 2008
Annexe A
Attributs communs
Introduction Cette annexe décrit les attributs qui sont communs aux instructions Logix.
Valeurs immédiates Lorsque vous entrez une valeur immédiate (constante) au format décimal (par exemple, –2, 3), l’automate stocke la valeur en utilisant 32 bits. Si vous entrez une valeur dans une base de numérotation autre que décimale, comme binaire ou hexadécimale, et que vous ne définissez pas les 32 bits, l’automate place un zéro dans les bits que vous ne définissez pas (remplissage de zéros).
Conversions de données Les conversions de données se produisent lorsque vous mélangez des types de données dans votre programmation.
Pour plus d’informations sur Voir page
Valeurs immédiates 629
Conversions de données 629
EXEMPLE Remplissage de zéros pour valeurs immédiates
Si vous entrez L’automate enregistre
–1 16#ffff ffff (–1)
16#ffff (–1) 16#0000 ffff (65535)
8#1234 (668) 16#0000 029c (668)
2#1010 (10) 16#0000 000a (10)
Lorsque vous programmez en
Les conversions peuvent se produire lorsque vous
Logique à relais mélangez des types de données pour les paramètres d’une instruction
Bloc fonctionnel reliez deux paramètres qui ont des types de données différents
Publication 1756-RM003K-FR-P – Juillet 2008 629
Annexe A Attributs communs
Les instructions sont exécutées plus vite et requièrent moins de mémoire si tous les opérandes de l’instruction utilisent :
• le même type de données ;
• un type de données optimal :
– dans la section « Opérandes » de chaque instruction de ce manuel, un type de données en gras indique le type de données optimal ;
– les types de données DINT et REAL sont généralement les types de données optimaux ;
– la plupart des instructions de bloc fonctionnel prennent en charge seulement un type de données (le type de données optimal) pour ses opérandes.
Si vous mélangez des types de données et que vous utilisez des points qui n’appartiennent pas au type de données optimal, l’automate convertit les données selon les règles ci-dessous.
• Au moins un opérande est-il une valeur REAL ?
• Après l’exécution de l’instruction, le résultat (une valeur DINT ou REAL) est converti au type de données de la destination, le cas échéant.
Vous ne pouvez pas spécifier un point BOOL dans une instruction qui fonctionne sur des types de données de nombres entiers ou REAL.
Etant donné que la conversion prend plus de temps et de mémoire, vous pouvez améliorer l’efficacité de vos programmes des façon suivantes :
• utilisez le même type de données dans toute l’instruction ;
• réduisez au minimum l’utilisation de types de données SINT ou INT.
Autrement dit, n’utilisez que des points DINT ou que des points REAL, ainsi que des valeurs immédiates, dans vos instructions.
Les sections suivantes expliquent comment les données sont converties lorsque vous utilisez des points SINT ou INT ou lorsque vous mélangez des types de données.
Si Les opérandes d’entrée (par exemple, source, point dans une expression, limite) sont convertis en
Oui REAL
Non DINT
630 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs communs Annexe A
SINT ou INT vers DINT
Les sections « Opérandes » de ce manuel identifient la méthode de conversion pour les instructions qui convertissent des valeurs SINT ou INT en valeurs DINT.
L’exemple suivant montre les résultats de la conversion d’une valeur en utilisant l’extension par signe et le remplissage de zéros.
Etant donné que les valeurs immédiates sont toujours remplies par des zéros, la conversion d’une valeur SINT ou INT peut produire des résultats imprévisibles. Dans l’exemple suivant, la comparaison est fausse parce que la Source A, une valeur INT, est convertie par extension de signe, alors que la Source B, une valeur immédiate, est remplie par des zéros.
Cette méthode de conversion
Convertit les données en plaçant
Extension par signe la valeur du bit le plus à gauche (le signe de la valeur) dans chaque position de bit à gauche des bits existants jusqu’à obtenir 32 bits.
Remplissage de zéros des zéros à gauche des bits existants jusqu’à obtenir 32 bits.
Cette valeur 2#1111_1111_1111_1111 (–1)
est convertie à cette valeur par extension de signe
2#1111_1111_1111_1111_1111_1111_1111_1111 (–1)
est convertie à cette valeur par remplissage de zéros
2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)
der Logic Listing - Total number of rungs: 3
EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111
EQU
42093
EqualSource A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111
EQU
Publication 1756-RM003K-FR-P – Juillet 2008 631
Annexe A Attributs communs
Si vous utilisez un point SINT ou INT et une valeur immédiate dans une instruction qui convertie les données par extension de signe, utilisez l’une des méthodes ci-dessous pour gérer les valeurs immédiates.
• Spécifiez toute valeur immédiate dans la base de numération décimale.
• Si vous entrez la valeur dans une base de numérotation autre que décimale, spécifiez les 32 bits de la valeur immédiate. Pour cela, entrez la valeur du bit le plus à gauche dans chaque position de bit sur la gauche jusqu’à obtenir 32 bits.
• Créez un point pour chaque opérande et utilisez le même type de données dans toute l’instruction. Pour attribuer une valeur constante, procédez de l’une des façons suivantes :
– entrez-la dans l’un des points ;
– ajoutez une instruction MOV qui déplace la valeur dans l’un des points.
• Utilisez une instruction MEQ pour vérifier uniquement les bits requis.
Les exemples suivants montrent deux façons de combiner une valeur immédiate avec un point INT. Les deux exemples vérifient les bits d’un module d’E/S 1771 afin de déterminer si tous les bits sont actifs. Etant donnée que le mot de donnée d’entrée d’un module d’E/S 1771 est un point INT, il est plus facile d’utiliser une valeur constante de 16 bits.
EXEMPLE Combinaison d’un point INT avec une valeur immédiate.
Etant donné que remote_rack_1:I.Data[0] est un point INT, la valeur avec laquelle il faut le vérifier est également saisie comme un point INT.
EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111
EQU
42093
632 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs communs Annexe A
Nombre entier vers REAL
L’automate stocke des valeurs REAL dans un format de nombres à virgule flottante simple précision IEEE. Il utilise un bit pour le signe de la valeur, 23 bits pour la valeur de base et huit bits pour l’exposant (32 bits au total). Si vous combinez un point de nombre entier (SINT, INT ou DINT) et un point REAL comme entrées dans la même instruction, l’automate convertit la valeur entière en valeur REAL avant l’exécution de l’instruction.
• Une valeur SINT ou INT est toujours convertie dans la même valeur REAL.
• Une valeur DINT peut ne pas être convertie à la même valeur REAL :
– une valeur REAL utilise jusqu’à 24 bits pour la valeur de base (23 bits stockés plus un bit « caché ») ;
– une valeur DINT utilise jusqu’à 32 bits pour la valeur (un pour le signe et 31 pour la valeur) ;
– si la valeur DINT requiert plus de 24 bits significatifs, elle peut ne pas être convertie à la même valeur REAL. Dans ce cas, l’automate arrondit à la valeur REAL la plus proche en utilisant 24 bits significatifs.
EXEMPLE Combinaison d’un point INT avec une valeur immédiate.
Etant donné que remote_rack_1:I.Data[0] est un point INT, la valeur avec laquelle il faut le vérifier est d’abord déplacée dans int_0, également un point INT. L’instruction EQU compare ensuite les deux points.
2#1111_1111_1111_1111
MoveSource 2#1111_1111_1111_1111 Dest int_0 2#1111_1111_1111_1111
MOVEqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111
EQU
42093
Publication 1756-RM003K-FR-P – Juillet 2008 633
Annexe A Attributs communs
DINT vers SINT ou INT
Pour convertir une valeur DINT en valeur SINT ou INT, l’automate tronque la partie supérieure de la valeur DINT et active l’indicateur d’état de dépassement supérieur, le cas échéant. L’exemple suivant montre le résultat d’une conversion DINT vers SINT ou INT.
REAL vers nombre entier
Pour convertir une valeur REAL en valeur entière, l’automate arrondi la partie fractionnelle et tronque la portion supérieure de la partie entière. Si des données sont perdues, l’automate active l’indicateur d’état de dépassement supérieur. Les nombres sont arrondis comme suit :
• nombres autres que x,5 sont arrondis au nombre entier le plus proche ;
• X,5 est arrondi au nombre pair le plus proche.
L’exemple suivant montre le résultat de la conversion de valeurs REAL en valeurs DINT.
EXEMPLE Conversion d’une valeur DINT en valeur INT et SINT
EXEMPLE Conversion de valeurs REAL en valeurs DINT.
Cette valeur DINT Est convertie dans cette valeur plus petite
16#0001_0081 (65,665) INT : 16#0081 (129)
SINT : 16#81 (–127)
Cette valeur REAL Est convertie dans cette valeur DINT
–2,5 –2
–1,6 –2
–1,5 –2
–1,4 –1
1,4 1
1,5 2
1,6 2
2,5 2
634 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs communs Annexe A
IMPORTANT Les indicateurs d’état arithmétique sont activés en fonction de la valeur stockée. Les instructions qui normalement n’affectent pas les mots-clés d’état arithmétique peuvent sembler les affecter si la conversion de type se produit en raison d’un mélange de types de données dans les paramètres de l’instruction. Le processus de conversion de type active les mots-clés d’état arithmétique.
Publication 1756-RM003K-FR-P – Juillet 2008 635
Annexe A Attributs communs
Notes :
636 Publication 1756-RM003K-FR-P – Juillet 2008
Annexe B
Attributs de bloc fonctionnel
Introduction Cette annexe décrit des problèmes qui sont spécifiques aux instructions de bloc fonctionnel. Lisez les informations de cette annexe pour être sûr de bien comprendre comment vos sous-programmes de blocs fonctionnels fonctionneront.
Choix des éléments de bloc fonctionnel
Pour commander un dispositif, utilisez les éléments suivants :
Utilisez le tableau suivant pour choisir vos éléments de bloc fonctionnel :z
IMPORTANT Lorsque vous programmez en blocs fonctionnels, limitez la plage des unités procédé à +/–10+/–15. Ceci parce que les calculs en virgule flottante internes sont effectués à l’aide de virgule flottante simple précision. Les unités procédé en dehors de cette plage peuvent entraîner une perte de précision si les résultats approchent les limites de la virgule flottante simple précision (+/–10+/–38).
référence d’entrée (IREF) bloc fonctionnel
connecteur de câble de sortie (OCON)
référence de sortie (OREF)
connecteur decâble d’entrée
(ICON)
Si vous voulez Utilisez
fournir une valeur provenant d’un dispositif ou un point d’entrée
une référence d’entrée (IREF)
envoyer une valeur à un dispositif ou à un point de sortie
une référence de sortie (OREF)
Publication 1756-RM003K-FR-P – Juillet 2008 637
Annexe B Attributs de bloc fonctionnel
Verrouillage de données Si vous utilisez un élément IREF pour spécifier les données d’entrée pour une instruction de bloc fonctionnel, les données dans cet IREF sont verrouillées pour la scrutation du sous-programme de bloc fonctionnel. L’élément IREF verrouille les données à partir des points de programme et d’automate. L’automate actualise toutes les données IREF au début de chaque scrutation.
Dans cet exemple, la valeur du point tagA est stockée au début de l’exécution du sous-programme. La valeur stockée est utilisée lorsque Block_01 est exécuté. La même valeur stockée est également utilisée lorsque Block_02 est exécuté. Si la valeur du point tagA change au cours de l’exécution du sous-programme, la valeur du point tagA stockée dans IREF ne change pas jusqu’à la prochaine exécution du sous-programme.
réaliser une opération sur une ou plusieurs valeurs d’entrée et produire une ou plusieurs valeurs de sortie
un bloc fonctionnel
transférer des données entre des blocs fonctionnels lorsqu’ils sont :
• éloignés sur la même feuille ;
• sur différentes feuilles dans le même sous-programme.
un connecteur de câble de sortie (OCON) et un connecteur de câble d’entrée (ICON)
répartir des données entre plusieurs points dans le sous-programme
un connecteur de câble de sortie unique (OCON) et plusieurs connecteurs de câble d’entrée (ICON)
Si vous voulez Utilisez
IREF
tagA
Block_01
Block_02
638 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Cet exemple est identique au précédent. La valeur du point tagA est stockée une seule fois au début de l’exécution du sous-programme. Le sous-programme utilise cette valeur stockée tout au long du sous-programme.
A partir de la version 11 du logiciel RSLogix 5000, vous pouvez utiliser le même point dans plusieurs éléments IREF et un élément OREF dans le même sous-programme. Etant donné que les points dans les éléments IREF sont verrouillés à chaque scrutation du sous-programme, tous les IREF utilisent la même valeur, même si un élément OREF obtient une valeur de point différente au cours de l’exécution du sous-programme. Dans cet exemple, si le point tagA a une valeur de 25,4 lorsque le sous-programme démarre l’exécution de cette scrutation et que le Block_01 change la valeur de tagA en 50,9, le deuxième IREF relié au Block_02 utilise toujours la valeur 25,4 lorsque le Block_02 exécute cette scrutation. La nouvelle valeur 50,9 du point tagA ne sera pas utilisée par l’un quelconque des IREF de ce sous-programme avant le début de la prochaine scrutation.
tagA
Block_01
Block_02
tagA
Publication 1756-RM003K-FR-P – Juillet 2008 639
Annexe B Attributs de bloc fonctionnel
Ordre d’exécution Le logiciel de programmation RSLogix 5000 détermine automatiquement l’ordre d’exécution des blocs fonctionnels dans un sous-programme lorsque vous :
• vérifiez le sous-programme de bloc fonctionnel ;
• vérifiez un projet qui contient un sous-programme de bloc fonctionnel ;
• chargez un projet qui contient un sous-programme de bloc fonctionnel.
Vous définissez l’ordre d’exécution en reliant des blocs fonctionnels entre eux et en indiquant le flux des données de tout câble de retour, le cas échéant.
Si les blocs fonctionnels ne sont pas reliés entre eux, l’ordre d’exécution du premier bloc n’a pas d’importance. Il n’existe pas de flux de données entre les blocs.
Si vous reliez les blocs séquentiellement, l’ordre d’exécution passe de l’entrée à la sortie. Les entrées d’un bloc nécessitent que les données soient disponibles avant que l’automate puisse exécuter ce bloc. Par exemple, le bloc 2 doit être exécuté avant le bloc 3 parce que les sorties du bloc 2 alimentent les entrées du bloc 3.
L’ordre d’exécution ne concerne que les blocs qui sont reliés entre eux. L’exemple suivant est correct parce que les deux groupes de blocs ne sont pas reliés. Les blocs d’un groupe spécifique sont exécutés dans l’ordre approprié pour les blocs de ce groupe.
1 2 3
1 3 5
2 4 6
640 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Résolution d’une boucle
Pour créer une boucle de retour autour d’un bloc, raccordez un connecteur de sortie du bloc à un connecteur d’entrée du même bloc. L’exemple suivant est correct. La boucle ne contient qu’un seul bloc, l’ordre d’exécution n’a donc pas d’importance.
Si un groupe de blocs est dans une boucle, l’automate ne peut pas déterminer quel bloc exécuter en premier. Autrement dit, il ne peut pas résoudre la boucle.
Pour identifier quel bloc exécuter en premier, marquez le câble d’entrée qui crée la boucle (le câble de retour) avec l’indicateur Assume Data Available (supposer que les données sont disponibles). Dans l’exemple suivant, bloc 1 utilise la sortie du bloc 3 produite lors de l’exécution précédente du sous-programme.
L’indicateur Assume Data Available définit le flux des données dans la boucle. La flèche indique que les données servent d’entrée pour le premier bloc de la boucle.
Ce connecteur d’entrée utiliseune sortie produite par le bloc
lors de la scrutation précédente.
?? ?
1 2 3
Ce connecteur d’entrée utilise lasortie produite par le bloc 3 lors
de la scrutation précédente.
Indicateur Assume Data Available (supposer que les données sont disponibles)
Publication 1756-RM003K-FR-P – Juillet 2008 641
Annexe B Attributs de bloc fonctionnel
Ne pas marquer tous les câbles d’une boucle avec l’indicateur Assume Data Available.
Résolution du flux de données entre deux blocs
Si vous utilisez plusieurs câbles pour raccorder deux blocs, utilisez les mêmes indicateurs de flux de données pour tous les câbles entre les deux blocs.
Ceci est correct Ceci N’EST PAS correct
L’indicateur Assume Data Available définit le flux des données dans la boucle.
L’automate ne peut pas résoudre la boucle parce que tous les câbles utilisent l’indicateur Assume Data Available.
Indicateur Assume Data Available (supposer que les données sont disponibles)
21 ??
Ceci est correct Ceci N’EST PAS correct
Aucun des deux câbles n’utilise l’indicateur Assume Data Available.
Les deux câbles utilisent l’indicateur Assume Data Available.
Un câble utilise l’indicateur Assume Data Available, mais pas l’autre.
Indicateur Assume Data Available (supposer que les données sont disponibles)
642 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Créer une temporisation d’une scrutation
Pour produire une temporisation d’une scrutation entre les blocs, utilisez l’indicateur Assume Data Available. Dans l’exemple suivant, le bloc 1 est exécuté en premier. Il utilise la sortie du bloc 2 produite lors de la scrutation précédente du sous-programme.
Récapitulatif
En résumé, un sous-programme de bloc fonctionnel est exécuté dans l’ordre suivant :
1. L’automate verrouille toutes les valeurs de données dans les IREF.
2. L’automate exécute les autres blocs fonctionnels dans l’ordre déterminé par leur câblage.
3. L’automate écrit les sorties dans les OREF.
2 1
Indicateur Assume Data Available (supposer que les données sont disponibles)
Publication 1756-RM003K-FR-P – Juillet 2008 643
Annexe B Attributs de bloc fonctionnel
Réponses du bloc fonctionnel aux conditions de dépassement
En général, les instructions de bloc fonctionnel qui maintiennent l’historique ne mettent pas l’historique à jour avec les valeurs ±NAN ou ±INF lorsqu’un dépassement se produit. Chaque instruction répond d’une des façons suivantes à une condition de dépassement:
Réponse 1 :
Les blocs exécutent leur algorithme et vérifient le résultat pour ±NAN ou ±INF. Si ±NAN ou ±INF, le bloc produit ±NAN ou ±INF.
Réponse 2 :
Les blocs avec limitation de sortie exécutent leur algorithme et vérifient le résultat pour ±NAN ou ±INF. Les limites de sortie sont définies par les paramètres d’entrée HighLimit et LowLimit. Si ±INF, le bloc produit un résultat limité. Si ±NAN, les limites de sortie ne sont pas utilisées et le bloc produit ±NAN.
Réponse 3 :
La condition de dépassement ne s’applique pas. Ces instructions ont généralement une sortie booléenne.
ALMNTCH
DEDTPMUL
DERVPOSP
ESELRLIM
FGENRMPS
HPFSCRV
LDL2SEL
LDLGSNEG
LPFSRTP
MAVESSUM
MAXCTOT
MINCUPDN
MSTD
MUX
HLL
INTG
PI
PIDE
SCL
SOC
BANDOSRI
BNOTRESD
BORRTOR
BXORSETD
CUTDTOFR
D2SDTONR
D3SD
DFF
JKFF
OSFI
644 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Modes de temporisation Les instructions de commande de procédé et de régulation suivantes acceptent différents modes de temporisation.
Voici trois modes de temporisation différents :
DEDT
DERV
HPF
INTG
LDL2
LDLG
LPF
NTCH
PI
PIDE
RLIM
SCRV
SOC
TOT
Mode de temporisation
Description
périodique Le mode périodique est le mode par défaut et convient à la plupart des applications de commande. Il est recommandé de placer les instructions qui utilisent ce mode dans un sous-programme exécuté dans une tâche périodique. La variable de temps (DeltaT) de l’instruction est déterminée comme suit :
Si l’instruction est exécutée dans une
DeltaT est égale
tâche périodique à la période de la tâche
tâche événementielle ou continue
au temps écoulé depuis l’exécution précédente.
L’automate tronque le temps écoulé en millisecondes (ms) entières. Par exemple, si le temps écoulé = 10,5 ms, l’automate règle DeltaT = 10 ms.
Le rafraîchissement de l’entrée de procédé doit être synchronisé avec l’exécution de la tâche ou échantillonné 5 à 10 fois plus vite que l’exécution de la tâche pour minimiser les erreurs d’échantillonnage entre l’entrée et l’instruction.
sur-échantillonnage En mode de sur-échantillonnage, la variable de temps (DeltaT) utilisée par l’instruction est la valeur écrite dans le paramètre OversampleDT de l’instruction. Si l’entrée de procédé a une valeur d’horodatage, utilisez plutôt le mode d’échantillonnage temps réel.
Ajoutez une logique à votre programme pour commander le moment où l’instruction est exécutée. Par exemple, vous pouvez utiliser un temporisateur réglé sur la valeur OversampleDeltaT pour commander l’exécution en utilisant l’entrée EnableIn de l’instruction.
L’entrée de procédé doit être échantillonnée 5 à 10 fois plus vite que l’exécution de l’instruction pour minimiser les erreurs d’échantillonnage entre l’entrée et l’instruction.
Publication 1756-RM003K-FR-P – Juillet 2008
645Annexe B Attributs de bloc fonctionnel
Les instructions de temps requièrent une valeur constante pour DeltaT pour que l’algorithme de commande calcule correctement la sortie de procédé. Si DeltaT varie, une discontinuité se produit dans la sortie de procédé. L’importance de la discontinuité dépend de l’instruction et de la plage de variation de DeltaT. Une discontinuité se produit si :
• l’instruction n’est pas exécutée pendant une scrutation ;
• l’instruction est exécutée plusieurs fois pendant une tâche ;
• la tâche est en cours et la fréquence de scrutation de la tâche ou le temps d’échantillonnage de l’entrée de procédé change ;
• l’utilisateur change le mode de temporisation pendant l’exécution de la tâche ;
• le paramètre d’ordre est modifié sur un bloc de filtrage pendant l’exécution de la tâche. La modification du paramètre d’ordre sélectionne un algorithme de commande différent dans l’instruction.
échantillonnage en temps réel
En mode d’échantillonnage en temps réel, la variable de temps (DeltaT) utilisée par l’instruction est la différence entre deux valeurs d’horodatage qui correspond aux rafraîchissements de l’entrée de procédé. Utilisez ce mode lorsque l’entrée de procédé associe un horodatage à ses rafraîchissements et qu’il vous faut une coordination précise.
La valeur d’horodatage est lue à partir du nom du point entrée pour le paramètre RTSTimeStamp de l’instruction. Normalement ce nom de point est un paramètre sur le module d’entrées associé à l’entrée de procédé.
L’instruction compare la valeur RTSTime configurée (période de rafraîchissement attendue) avec la variable de temps DeltaT calculée pour déterminer si chaque rafraîchissement de l’entrée de procédé est lue par l’instruction. Si DeltaT n’est pas à 1 milliseconde maximum du temps de configuration, l’instruction active le bit d’état RTSMissed pour indiquer qu’un problème existe pour la lecture des mises à jour de l’entrée sur le module.
Mode de temporisation
Description
646 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Paramètres d’instruction communs pour les modes de temporisation
Les instructions qui prennent en charge les modes de temporisation possèdent les paramètres d’entrée et de sortie ci-dessous :
Paramètres d’entrée
Paramètre d’entrée Type de données
Description
TimingMode DINT Sélectionne le mode d’exécution de temporisation.
Valeur : Description :
0 mode périodique
1 mode de sur-échantillonnage
2 mode d’échantillonnage en temps réel
valable = 0 à 2
valeur par défaut = 0
Lorsque TimingMode = 0 et que la tâche est périodique, la temporisation périodique est activée et DeltaT est réglé sur la fréquence de scrutation de la tâche. Lorsque TimingMode = 0 et que la tâche est une tâche événementielle ou continue, la temporisation périodique est activée et DeltaT est réglé sur une valeur égale au laps de temps écoulé depuis la dernière exécution de l’instruction.
Lorsque TimingMode = 1, la temporisation de sur-échantillonnage est activée et DeltaT est réglé sur la valeur du paramètre OversampleDT.
Lorsque TimingMode = 2, la temporisation d’échantillonnage en temps réel est activée et DeltaT est la différence entre les valeurs d’horodatage actuelle et précédente lues à partir du module associé à l’entrée.
Si TimingMode n’est pas valable, l’instruction active le bit approprié dans Status.
OversampleDT REAL Temps d’exécution pour la temporisation de sur-échantillonnage. La valeur utilisée pour DeltaT est en secondes. Si TimingMode = 1, OversampleDT = 0,0 désactive l’exécution de l’algorithme de commande. Si incorrect, l’instruction règle DeltaT = 0,0 et active le bit approprié dans Status.
valable = 0 à 4194,303 secondes
valeur par défaut = 0,0
Publication 1756-RM003K-FR-P – Juillet 2008 647
Annexe B Attributs de bloc fonctionnel
Paramètres de sortie
RTSTime DINT Intervalle de rafraîchissement du module pour l’échantillonnage en temps réel. L’intervalle de rafraîchissement attendu pour DeltaT est mesuré en millisecondes. L’intervalle de rafraîchissement est normalement la valeur qui a été utilisée pour configurer la durée de rafraîchissement du module. Si incorrecte, l’instruction active le bit approprié dans Status et désactive la vérification RTSMissed.
valable = 1 à 32 767 ms
valeur par défaut = 1
RTSTimeStamp DINT Valeur d’horodatage du module pour la durée d’échantillonnage en temps réel. Valeur d’horodatage qui correspond au dernier rafraîchissement du signal d’entrée. Cette valeur est utilisée pour calculer DeltaT. Si incorrecte, l’instruction active le bit approprié dans Status, désactive l’exécution de l’algorithme de commande et désactive la vérification RTSMissed.
valable =1 à 32 767 ms (revient à 0 à partir de 32 767)
1 incrément = 1 milliseconde
valeur par défaut = 0
Paramètre d’entrée Type de données
Description
Paramètre de sortie Type de données
Description
DeltaT REAL Temps écoulé entre les rafraîchissements. Temps écoulé en secondes utilisé par l’algorithme de commande pour calculer la sortie de procédé.
Périodique : DeltaT = fréquence de scrutation de la tâche si c’est une tâche périodique, DeltaT = temps écoulé depuis l’exécution précédente de l’instruction si la tâche est une tâche événementielle ou continue.
Sur-échantillonnage : DeltaT = OversampleDT
Echantillonnage en temps réel : DeltaT = (RTSTimeStampn – RTSTimeStampn–1)
Status DINT Etat du bloc fonctionnel.
TimingModeInv (Status.27)
BOOL Valeur TimingMode incorrecte.
RTSMissed (Status.28) BOOL Uniquement utilisé en mode d’échantillonnage en temps réel. Activé lorsque ABS | DeltaT – RTSTime | > 1 (0,001 seconde).
RTSTimeInv (Status.29)
BOOL Valeur RTSTime incorrecte.
RTSTimeStampInv (Status.30)
BOOL Valeur RTSTimeStamp incorrecte.
DeltaTInv (Status.31) BOOL Valeur DeltaT incorrecte.
648 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Présentation des modes de temporisations
Le schéma suivant montre comment une instruction détermine le mode de temporisation approprié.
TimingMode = 2TimingMode = 1TimingMode = 0
Déterminer le mode de temporisation
Temporisation en temps réelTemporisation de sur-échantillonnageTemporisation périodique
Déterminer le type de tâche
tâche périodique tâche événementielle ou continue
DeltaT = OversampleDT
Si DeltaT < 0 ou DeltaT > 4194,303 s, l’instruction règle DeltaT = 0,0 et active le bit approprié dans Status.
Si DeltaT > 0, l’instruction est exécutée.
DeltaT = RTSTimeStampn – RTSTimeStampn–1
Si DeltaT > 0, l’instruction est exécutée.
Si |RTSTIME – DeltaT| > 1, l’instruction active le bit RTSMissed dans Status.
DeltaT = temps de scrutation de la tâche
Si DeltaT > 0, l’instruction est exécutée.
DeltaT = temps écoulé depuis la dernière exécution
Si DeltaT > 0, l’instruction est exécutée.
Publication 1756-RM003K-FR-P – Juillet 2008 649
Annexe B Attributs de bloc fonctionnel
Commande Programme/Opérateur
Plusieurs instructions prennent en charge le concept de commande Programme/Opérateur. Ces instructions comprennent :
• Sélection évoluée (ESEL)
• Totalisateur (TOT)
• PID évolué (PIDE)
• Rampe/palier (RMPS)
• Dispositif TOR 2 états (D2SD)
• Dispositif TOR 3 états (D3SD)
La commande Programme/Opérateur vous permet de commande ces instructions simultanément à partir de votre programme utilisateur et d’un dispositif d’interface opérateur. En commande Programme, l’instruction est commandée par les entrées du programme dans l’instruction ; en commande Opérateur, l’instruction est commandée par les entrées de l’opérateur dans l’instruction.
La commande Programme ou Opérateur est déterminée par l’utilisation des entrées ci-dessous :
Pour déterminer si une instruction est en commande Programme ou Opérateur, examinez la sortie ProgOper. Si ProgOper est activée, l’instruction est en commande Programme ; si ProgOper est désactivée, l’instruction est en commande Opérateur.
La commande Opérateur est prioritaire sur la commande Programme si les deux bits d’entrée de requête sont activés. Par exemple, si ProgProgReq et ProgOperReq sont activés, l’instruction passe en commande Opérateur.
Entrée Description
.ProgProgReq Requête du programme pour passer en commande Programme.
.ProgOperReq Requête du programme pour passer en commande Opérateur.
.OperProgReq Requête de l’opérateur pour passer en commande Programme.
.OperOperReq Requête de l’opérateur pour passer en commande Opérateur.
650 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Les entrées de requête Programme sont prioritaires par rapport aux entrées de requête Opérateur. Ceci permet d’utiliser les entrées ProgProgReq et ProgOperReq pour « verrouiller » une instruction dans une commande voulue. Par exemple, supposons qu’une instruction Totalisateur sera toujours utilisée en commande Opérateur, et que votre programme utilisateur ne commandera jamais l’exécution ou l’arrêt du totalisateur. Dans ce cas, vous pouvez raccorder une valeur littérale de 1 dans ProgOperReq. Ceci empêche l’opérateur de mettre le totalisateur en commande Programme par l’activation de OperProgReq à partir d’une interface opérateur.
Etant donné que l’entrée ProgOperReq est toujours activée, appuyer sur le bouton « Program » sur la face avant (ce qui active l’entrée OperProgReg) n’a aucun effet. Normalement, activer OperProgReq met TOT en commande Programme.
Raccorder un « 1 » dans ProgOperReq signifie que le programme utilisateur veut toujours que TOT soit en commande Opérateur.
Publication 1756-RM003K-FR-P – Juillet 2008 651
Annexe B Attributs de bloc fonctionnel
De même, l’activation permanente de ProgProgReq peut « verrouiller » l’instruction en commande Programme. Ceci est utile pour les séquences de démarrage automatique lorsque vous voulez que le programme commande l’action de l’instruction sans vous préoccuper de la possibilité qu’un opérateur prenne la commande de l’instruction par inadvertance. Dans cet exemple, le programme active l’entrée ProgProgReq pendant le démarrage, puis désactive l’entrée ProgProgReq une fois le démarrage terminé. Une fois l’entrée ProgProgReq désactivée, l’instruction reste en commande Programme jusqu’à ce qu’elle reçoive une demande de changement. Par exemple, l’opérateur peut activer l’entrée OperOperReq à partir d’une face avant pour prendre la commande de cette instruction. L’exemple suivant montre comment verrouiller une instruction en commande Programme.
Les entrées de requête opérateur vers l’instruction sont toujours effacées par l’instruction lorsqu’elle est exécutée. Ceci permet aux interfaces opérateur de travailler avec ces instructions simplement en activant le bit de requête de mode voulu. Il n’est pas nécessaire de programmer l’interface opérateur pour réinitialiser les bits de requête. Par exemple, si une interface opérateur active l’entrée OperAutoReq vers une instruction PIDE, lorsque l’instruction PIDE est exécutée, elle détermine quelle est la réponse appropriée et efface OperAutoReq.
Les entrées de requête de programme ne sont normalement pas effacées par l’instruction parce qu’elles sont normalement raccordées comme entrées dans l’instruction. Si l’instruction efface ces entrées, l’entrée serait simplement réactivée par l’entrée câblée. Il peut exister des situations dans lesquelles vous voulez utiliser une autre logique pour activer les requêtes de programme de telle sorte que les requêtes de programme soient effacées par l’instruction. Dans ce cas, vous pouvez activer l’entrée ProgValueReset et l’instruction effacera toujours les entrées de requête du mode Programme lors de son exécution.
Lorsque StartupSequenceActive est activé, l’instruction PIDE est placée en commande Programme et en mode Manuel. La valeur StartupCV est utilisée comme sortie de boucle.
652 Publication 1756-RM003K-FR-P – Juillet 2008
Attributs de bloc fonctionnel Annexe B
Dans cet exemple, une ligne de logique à relais dans un autre sous-programme est utilisée pour verrouiller par impulsion ProgAutoReq pour une instruction PIDE lorsqu’un bouton-poussoir est actionné. Etant donné que l’instruction PIDE efface automatiquement les requêtes du mode Programme, il n’est pas nécessaire d’écrire de logique à relais pour effacer ProgAutoReq après l’exécution du sous-programme, et l’instruction PIDE ne reçoit qu’une requête pour passer en mode Auto chaque fois que le bouton-poussoir est enfoncé.
Lorsque le bouton-poussoir TIC101AutoReq est enfoncé, verrouiller par impulsion ProgAutoReq pour l’instruction PIDE TIC101. TIC101 a été configuré avec l’entrée ProgValueReset activée, donc lorsque l’instruction PIDE est exécutée, elle efface automatiquement ProgAutoReq.
Publication 1756-RM003K-FR-P – Juillet 2008 653
Annexe B Attributs de bloc fonctionnel
Notes :
654 Publication 1756-RM003K-FR-P – Juillet 2008
Annexe C
Programmation en texte structuré
Introduction Cette annexe décrit des problèmes qui sont spécifiques à la programmaton en texte structuré. Lisez les informations de cette annexe pour être sûr de bien comprendre comment votre programmation en texte structuré sera exécutée.
Syntaxe du texte structuré Le texte structuré est un langage de programmation textuel qui utilise des expressions pour définir ce qu’il faut exécuter.
• Le texte structuré n’est pas sensible à la casse.
• Utilisez des tabulations et des retours chariots (lignes séparées) pour faciliter la lecture de votre texte structuré. Ils n’ont aucun effet sur l’exécution du texte structuré.
Le texte structuré n’est pas sensible à la casse.Le texte structuré contient les composants ci-dessous.
Pour plus d’informations sur Voir page
Syntaxe du texte structuré 655
Affectations 657
Expressions 659
Instructions 666
Structures 667
Commentaires 683
Terme Définition Exemples
Affectation
(voir page 657)
Utilisez une expression 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;
Publication 1756-RM003K-FR-P – Juillet 2008 655
Annexe C Programmation en texte structuré
Expression
(voir page 659)
Une expression est une partie d’une affectation complète ou d’une structure d’expression. Une expression a pour résultat un nombre (expression numérique) ou un état vrai ou faux (expression BOOL).
Une expression contient :
des points Une zone de la mémoire dénommée et où les données sont stockées (BOOL, SINT, INT, DINT, REAL, chaîne).
valeur1
des immédiats Une valeur constante. 4
des opérateurs Un symbole ou mnémonique qui représente une opération dans une expression.
point1 + point2
point1 >= valeur1
des fonctions Lorsqu’elle est exécutée, une fonction engendre une valeur. Utilisez des parenthèses pour contenir l’opérande d’une fonction.
Bien que leurs syntaxes soient similaires, les fonctions diffèrent des instructions parce que les fonctions ne peuvent être utilisées que dans des expressions. Les instructions ne peuvent pas être utilisées dans des expressions.
fonction(point1)
Instruction
(voir page 666)
Une instruction est une expression autonome.
Une instruction utilise des parenthèses pour contenir ses opérandes.
Selon l’instruction, il peut y avoir zéro, un ou plusieurs opérandes.
Lorsqu’elle est exécutée, une instruction a pour résultat une ou plusieurs valeurs qui font parties d’une structure de données.
Terminez l’instruction par un point virgule « ; ».
Bien que leurs syntaxes soient similaires, les instructions diffèrent des fonctions parce que les instructions ne peuvent pas être utilisées dans des expressions. Les fonctions ne peuvent être utilisées que dans des expressions.
instruction();
instruction(opérande);
instruction(opérande1, opérande2,opérande3);
Terme Définition Exemples
656 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Affectations Utilisez une affectation pour changer la valeur stockée dans un point. Une affectation a la syntaxe suivante :
point := expression ;
Où :
Structure
(voir page 667)
Instruction conditionnelle utilisée pour déclencher un code en texte structuré (c.-à-d., d’autres déclarations).
Terminez la structure par un point virgule « ; ».
IF...THEN
CASE
FOR...DO
WHILE...DO
REPEAT...UNTIL
EXIT
Commentaire
(voir page 683)
Texte qui explique ou clarifie ce que fait une section du 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
Composant Description
point Représente le point qui obtient la nouvelle valeur.
Le point doit être BOOL, SINT, INT, DINT ou REAL.
:= Est le symbole de l’affectation.
expression Représente la nouvelle valeur à affecter au point.
Si point est du type de données :
Utilisez ce type d’expression :
BOOL expression BOOL
SINT
INT
DINT
REAL
expression numérique
; Termine l’affectation.
Publication 1756-RM003K-FR-P – Juillet 2008 657
Annexe C Programmation en texte structuré
Le point retient la valeur d’affectation jusqu’à ce qu’une autre affectation change la valeur.
L’expression peut être simple, comme une valeur immédiate ou un autre nom de point, ou elle peut être complexe et inclure plusieurs opérateurs et/ou fonctions. Voir la section suivante « Expressions », page 659.
Spécification d’une affectation non rémanente
L’affectation non rémanente est différente de l’affectation normale décrite ci-dessus parce que le point dans une affectation non rémanente est remis à zéro chaque fois que l’automate :
• passe en mode Exécution ;
• quitte l’étape d’un SFC si vous configurez le SFC pour Automatic reset (remise à zéro automatique). (Ceci ne s’applique que si vous intégrez l’affectation dans l’action de l’étape ou si vous utilisez l’action pour appeler un sous-programme de texte structuré via une instruction JSR.)
Une affectation non rémanente possède la syntaxe suivante :
point [:=] expression ;
Où :
Composant Description
point Représente le point qui obtient la nouvelle valeur.
Le point doit être BOOL, SINT, INT, DINT ou REAL.
[:=] Est le symbole de l’affectation non rémanente.
expression Représente la nouvelle valeur à affecter au point.
Si point est du type de données :
Utilisez ce type d’expression :
BOOL expression BOOL
SINT
INT
DINT
REAL
expression numérique
; Termine l’affectation.
658 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Affectation d’un caractère ASCII à une chaîne
Utilisez l’opérateur d’affectation pour attribuer un caractère ASCII à un élément du membre DATA d’un point de chaîne. Pour affecter un caractère, spécifiez la valeur du caractère ou spécifiez le nom du point, le membre DATA et l’élément du caractère. Par exemple :
Pour ajouter ou insérer une chaîne de caractères à un point de chaîne, utilisez l’une de ces instructions de chaîne de caractères ASCII :
Expressions Une expression est un nom de point, une équation ou une comparaison. Pour écrire une expression, utilisez l’un des éléments suivants :
• le nom du point qui stocke la valeur (variable) ;
• une nombre que vous entrez directement dans l’expression (valeur immédiate) ;
• une fonction, comme : ABS, TRUNC ;
• des opérateurs, comme : +, –, <, >, Et, Ou.
Respectez les recommandations suivantes pour écrire des expressions :
• Utilisez toute combinaison de lettres en majuscule et en minuscule. Par exemple, ces trois variantes de « ET » sont acceptables : ET, Et, et.
• Pour des impératifs plus complexes, utilisez des parenthèses pour regrouper des expressions dans d’autres expressions. Ceci facilite la lecture de l’expression et permet de s’assurer que l’expression est exécutée dans l’ordre voulu. Voir « Déterminer l’ordre d’exécution », page 665.
Ceci est correct Ceci n’est pas correct
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
Publication 1756-RM003K-FR-P – Juillet 2008 659
Annexe C Programmation en texte structuré
En texte structuré, utilisez les deux types d’expressions suivants :
Expression BOOL : une expression qui produit une valeur BOOL de 1 (vrai) ou de 0 (faux).
• Une expression booléenne utilise des points booléens, des opérateurs relationnels et des opérateurs logiques pour comparer les valeurs ou vérifier si les conditions sont vraies ou fausses. Par exemple, point1>65.
• Une expression booléenne simple peut être constituée d’un seul point BOOL.
• Généralement, vous utilisez des expressions booléennes pour conditionner l’exécution d’un autre programme.
Expression numérique : une expression qui calcule 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 bits. Par exemple, point1>+5.
• Une expression numérique est souvent imbriquée 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 Voir
Calculer une valeur arithmétique « Utilisation d’opérateurs et de fonctions arithmétiques », page 661.
Comparer deux valeurs ou chaînes « Utilisation d’opérateurs relationnels », page 662.
Vérifier si les conditions sont vraies ou fausses
« Utilisation des opérateurs logiques », page 664.
Comparer les bits dans des valeurs « Utilisation d’opérateurs sur bits », page 665.
660 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Utilisation d’opérateurs et de fonctions arithmétiques
Vous pouvez combiner plusieurs opérateurs et fonctions dans des expressions arithmétiques.
Les opérateurs arithmétiques calculent de nouvelles valeurs.
Les fonctions arithmétiques effectuent des opérations mathématiques. Spécifiez 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/négation – DINT, REAL
multiplier * DINT, REAL
exposant (x à la puissance y) ** DINT, REAL
diviser / DINT, REAL
modulo MOD DINT, REAL
Pour Utilisez cette fonction Type de données optimal
valeur absolue ABS (numeric_expression) DINT, REAL
cosinus d’arc ACOS (numeric_expression) REAL
sinus d’arc ASIN (numeric_expression) REAL
tangente d’arc ATAN (numeric_expression) REAL
cosinus COS (numeric_expression) REAL
radians en degrés DEG (numeric_expression) DINT, REAL
logarithme naturel LN (numeric_expression) REAL
logarithme décimal LOG (numeric_expression) REAL
degrés en radians RAD (numeric_expression) DINT, REAL
sinus SIN (numeric_expression) REAL
racine carrée SQRT (numeric_expression) DINT, REAL
tangente TAN (numeric_expression) REAL
troncation TRUNC (numeric_expression) DINT, REAL
Publication 1756-RM003K-FR-P – Juillet 2008 661
Annexe C Programmation en texte structuré
Par exemple :
Utilisation d’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 :
Utilisez les opérateurs relationnels suivants :
Utilisez ce format EXEMPLE
Pour cette situation Vous écrivez
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 : « Négation de alarme_haute et stocker le résultat dans alarme ».
alarme:= -alarme_haute;
fonction(numérique_expression) 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 et capteur1 et capteur2 sont des points REAL et que votre spécification indique : « Trouver la valeur absolue de la moyenne de capteur1 et de capteur2, ajouter le réglage, et stocker le résultat dans position ».
position := réglage+ ABS((capteur1+ capteur2)/2);
Si la comparaison est Le résultat est
vrai 1
faux 0
Pour cette comparaison Utilisez cet opérateur Type de données optimal
égalité = DINT, REAL, chaîne
inférieur < DINT, REAL, chaîne
inférieur ou égal <= DINT, REAL, chaîne
supérieur > DINT, REAL, chaîne
supérieur ou égal >= DINT, REAL, chaîne
différent <> DINT, REAL, chaîne
662 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Par exemple :
Evaluation des chaînes
Les valeurs hexadécimales des caractères ASCII déterminent si une chaîne est inférieure ou supérieure à une autre chaîne.
• Lorsque les deux chaînes sont triées comme dans un répertoire téléphonique, l’ordre des chaînes détermine laquelle est supérieure.
• Les chaînes sont égales si leurs caractères se correspondent.
• Les caractères sont sensibles à la casse. « A » ($41) en majuscule n’est pas égal à « a » ($61) en minuscule.
Pour trouver la valeur décimale et le code hexadécimal d’un caractère, reportez-vous à la dernière page de ce manuel.
Utilisez ce format EXEMPLE
Pour cette situation Vous écrivez
valeur1 opérateur valeur2 Si temp est un point DINT et votre spécification indique : « Si temp est inférieur à 100° alors… ».
IF temp<100 THEN...
pointchaîne1 opérateur pointchaîne2
Si code_barres et dest sont des points de chaîne et que votre spécification indique : « Si code_barres est égal à dest alors… ».
IF code_barres=dest THEN...
car1 opérateur car2
Pour entrer un caractère ASCII directement dans l’expression, entrez la valeur décimale du caractère.
Si code_barres est un point de chaîne et que votre spécification indique : « Si code_barres.DATA[0] est égale à ‘A’ alors… ».
IF code_barres.DATA[0]=65 THEN...
tag_bool := expressions_bool
Si compteur et longueur sont des points DINT, terminé est un point BOOL, et que votre spécification indique : « Si compteur et supérieur ou égal à longueur, vous avez fini de compter ».
terminé := (compteur >= longueur);
Caractères ASCII Codes Hex
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
supérieur
inférieur
AB < B
a > B
Publication 1756-RM003K-FR-P – Juillet 2008 663
Annexe C Programmation en texte structuré
Utilisation des opérateurs logiques
Les opérateurs logiques vous permettent de vérifier si plusieurs conditions sont vraies ou fausses. Le résultat d’une opération logique est une valeur BOOL :
Utilisez les opérateurs logiques suivants :
Par exemple :
Si la comparaison est Le résultat est
vrai 1
faux 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
Pour cette situation Vous écrivez
pointBOOL Si photoeye est un point BOOL et votre spécification indique : « Si photoeye est activé alors… ».
IF photoeye THEN...
NON PointBOOL Si photoeye est un point BOOL et votre spécification indique : « Si photoeye est désactivé alors… ».
IF NOT photoeye THEN...
expression1 & expression2 Si photoeye est un point BOOL, temp est un point DINT et que votre spécification indique : « Si photoeye est activé et temp est inférieur à 100° alors… ».
IF photoeye & (temp<100) THEN...
expression1 OU expression2 Si photoeye est un point BOOL, temp est un point DINT et que votre spécification indique : « Si photoeye est activé ou temp est inférieur à 100° alors… ».
IF photoeye OR (temp<100) THEN...
expression1 OU exclusif expression2
Si photoeye1 et photoeye2 sont des points BOOL et votre spécification indique : « Si :
• photoeye1 est activé pendant que photoeye2 est désactivé ou
• photoeye1 est désactivé pendant que photoeye2 est activé
alors… ».
IF photoeye1 XOR photoeye2 THEN...
pointBOOL := expression1 & expression2
Si photoeye1 et photoeye2 sont des points BOOL, ouvrir est un point BOOL, et votre spécification indique : « Si photoeye1 et photoeye2 sont activés, régler ouvrir sur vrai ».
open := photoeye1 & photoeye2;
664 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Utilisation d’opérateurs sur bits
Les opérateurs sur bits manipulent les bits dans une valeur sur la base de deux valeurs.
Par exemple :
Déterminer l’ordre d’exécution
Les opérations que vous écrivez dans une expression sont exécutées dans un ordre défini, pas nécessairement de gauche à droite.
• Les opérations d’ordre identique sont effectuées de gauche à droite.
• Si une expression contient plusieurs opérateurs ou fonctions, regroupez les conditions entre parenthèses « ( ) ». Ceci permet d’assurer 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 sur bits NOT DINT
Utilisez ce format EXEMPLE
Pour cette situation Vous écrivez
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 sur bits de entrée1 et entrée2. Stocker le résultat dans résultat1 ».
résultat1 := entrée1 AND entrée2;
Ordre Opération
1. ()
2. fonction (…)
3. **
4. − (négation)
5. NOT
6. *, /, MOD
7. +, – (soustraction)
8. <, <=, >, >=
9. =, <>
10. &, AND
11. XOR
12. OR
Publication 1756-RM003K-FR-P – Juillet 2008 665
Annexe C Programmation en texte structuré
Instructions Les déclarations de texte structuré peuvent également être des instructions. Voir le tableau de repérage des instructions au début de ce manuel pour la liste des instructions disponibles en texte structuré. Une instruction de texte structuré est exécutée chaque fois qu’elle est scrutée. Une instruction de texte structuré dans une structure est exécutée chaque fois que les conditions de la structure sont vraies. Si les conditions de la structure sont fausses, les expressions dans la structure ne sont pas scrutées. Il n’y a pas d’état de ligne ou de transition d’état qui déclenche l’exécution.
Ceci diffère des instructions de bloc fonctionnel qui utilisent EnableIn pour déclencher l’exécution. Les instructions de texte structuré sont exécutées comme si EnableIn était toujours activé.
Ceci diffère également des instructions en logique à relais qui utilisent l’état d’entrée de la ligne pour déclencher l’exécution. Certaines instructions de logique à relais sont exécutées uniquement lorsque l’état d’entrée de la ligne passe de faux à vrai. Ce sont des instructions de logique à relais de transition. En texte structuré, les instructions sont exécutées chaque fois qu’elles sont scrutées, à moins de pré-conditionner l’exécution de l’instruction en texte structuré.
Par exemple, l’instruction ABL est une instruction de transition en logique à relais. Dans cet exemple, l’instruction ABL n’est exécutée que lors d’une scrutation quand tag_xic passe de désactivé à activé. L’instruction ABL n’est pas exécutée lorsque tag_xic reste activé ou lorsque tag_xic est désactivé.
En texte structuré, si vous écrivez cet exemple ainsi :
IF tag_xic THEN ABL(0,serial_control);
END_IF;
l’instruction ABL est exécutée à chaque scrutation pour laquelle tag_xic est activé, pas uniquement lorsque tag_xic passe de désactivé à activé.
666 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Si vous voulez que l’instruction ABL soit exécutée uniquement lorsque tag_xic passe de désactivé à activé, vous devez conditionner l’instruction de texte structuré. Utilisez une impulsion pour déclencher l’exécution.
Structures Les structures peuvent être programmées individuellement ou imbriquées dans d’autres structures.
Certains mots-clés sont réservés à une utilisation ultérieure
Les structures suivantes ne sont pas disponibles :
• GOTO (aller à)
• REPEAT (répéter)
Le logiciel RSLogix 5000 ne vous autorisera pas à les utiliser comme noms de point ou structures.
osri_1.InputBit := tag_xic;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ABL(0,serial_control);
END_IF;
Si vous voulez Utilisez cette structure Disponible dans ces langages Voir page
exécuter une action si ou quand une condition spécifique se produit
IF...THEN (si...alors)
texte structuré 668
sélectionner une action à exécuter sur la base d’une valeur numérique
CASE...OF (cas...de)
texte structuré 671
exécuter une action un certain nombre de fois avant l’exécution de toute autre action
FOR...DO (pour...faire)
texte structuré 674
continuer à exécuter une action tant que certains conditions sont vraies
WHILE...DO (pendant...faire)
texte structuré 677
continuer à exécuter une action jusqu’à ce qu’une condition soit vraie
REPEAT...UNTIL (répéter...jusqu’à)
texte structuré 680
Publication 1756-RM003K-FR-P – Juillet 2008 667
Annexe C Programmation en texte structuré
IF...THEN (si...alors) Utilisez IF…THEN pour exécuter une action si ou quand des conditions spécifiques se produisent.
Opérandes :
Texte structuré
Description : La syntaxe est :
Pour utiliser ELSIF ou ELSE, observez les recommandations suivantes :
1. Pour sélectionner parmi plusieurs groupes d’expressions possibles, ajoutez une ou plusieurs expressions ELSIF.
• Chaque ELSIF représente un chemin alternatif.
• Spécifiez autant de chemins ELSIF que nécessaire.
• L’automate exécute le la première structure IF ou ELSIF vraie et saute le reste des structures ELSIF et ELSE.
2. Pour exécuter une action lorsque toutes les conditions IF ou ELSIF sont fausses, ajoutez une structure ELSE.
Opérande Type Format Entrez
expression_booléenne
BOOL point
expression
Point ou expression BOOL qui a pour résultat une valeur BOOL (expression BOOL)
IF bool_expression THEN
<statement>;
END_IF;
IF bool_expression1 THEN
<déclaration >; expression à exécuter quant bool_expression1 est vrai
.
.
.
facultatifELSIF bool_expression2 THEN
<déclaration>; expression à exécuter quant bool_expression2 est vrai
.
.
.
facultatifELSE
<déclaration>; expressions à exécuter quant les deux expressions sont fausses
.
.
.
END_IF;
668 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Le tableau suivant récapitule différentes combinaisons de IF, THEN, ELSIF et ELSE.
Indicateurs d’état arithmétique Non affectés
Conditions d’erreur : Aucune
Exemple 1 : IF…THEN (si...alors)
Exemple 2 : IF…THEN…ELSE (si...alors...autrement)
Le symbole [:=] indique à l’automate d’effacer voyant lorsque l’automate :
• passe en mode Exécution ;
• quitte l’étape d’un SFC si vous configurez le SFC pour Automatic reset (remise à zéro automatique). (Ceci ne s’applique que si vous intégrez l’affectation dans l’action de l’étape ou si vous utilisez l’action pour appeler un sous-programme de texte structuré via une instruction JSR.)
Si vous voulez Et Utilisez cette structure
exécuter une action si ou quand des conditions sont vraies
ne rien faire si les conditions sont fausses
IF…THEN (si...alors)
exécuter une autre action si les conditions sont fausses
IF…THEN…ELSE (si...alors...autrement)
choisir parmi des expressions alternatives (ou groupes d’expressions) sur la base de conditions d’entrée
ne rien faire si les conditions sont fausses
IF…THEN…ELSIF (si...alors...autrement si)
affecter des expressions par défaut si toutes les conditions sont fausses
IF…THEN…ELSIF…ELSE (si...alors...autrement si...autrement)
Si vous voulez Entrez ce texte structuré
SI rebuts > 3 alors IF rebuts > 3 THEN
convoyeur = désactivé (0) convoyeur := 0;
alarme = activée (1) alarme := 1;
END_IF;
Si vous voulez Entrez ce texte structuré
Si contact de sens de convoyeur = avance (1) alors IF sens_convoyeur THEN
voyant = désactivé voyant := 0;
Autrement voyant = activé ELSE
voyant [:=] 1;
END_IF;
Publication 1756-RM003K-FR-P – Juillet 2008 669
Annexe C Programmation en texte structuré
Exemple 3 : IF…THEN…ELSIF (si...alors...autrementsi)
Le symbole [:=] indique à l’automate de désactiver Arrivée.Sucre lorsque l’automate :
• passe en mode Exécution ;
• quitte l’étape d’un SFC si vous configurez le SFC pour Automatic reset (remise à zéro automatique). (Ceci ne s’applique que si vous intégrez l’affectation dans l’action de l’étape ou si vous utilisez l’action pour appeler un sous-programme de texte structuré via une instruction JSR.)
Exemple 4 : IF…THEN…ELSIF…ELSE (si...alors...autrementsi...autrement)
Si vous voulez Entrez ce texte structuré
Si détecteur de limite basse de sucre = bas (activé) et détecteur de limite haute de sucre = non haut (activé) alors
IF Sucre.Bas & Sucre.Haut THEN
vanne d’arrivée = ouvrir (activé) Arrivée.Sucre [:=] 1;
Jusqu’à détecteur de limite haute de sucre = haut (désactivé)
ELSIF NOT(Sucre.Haut) THEN
Arrivée.Sucre := 0;
END_IF;
Si vous voulez Entrez ce texte structuré
Si température de réservoir > 100 IF temp.réservoir > 200 THEN
alors pompe = lente pompe.rapide :=1; pompe.lente :=0; arrêt.pompe :=0;
Si température de réservoir > 200 ELSIF temp.réservoir > 100 THEN
alors pompe = rapide pompe.rapide :=0; pompe.lente :=1; arrêt.pompe :=0;
autrement pompe = désactivée ELSE
pompe.rapide :=0; pompe.lente :=0; arrêt.pompe :=1;
END_IF;
670 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
CASE...OF (cas...de) Utilisez CASE pour sélectionner une action à exécuter sur la base d’une valeur numérique.
Opérandes :
Texte structuré
Description : La syntaxe est :
Opérande Type Format Entrez
numeric_
expression
SINT
INT
DINT
REAL
point
expression
Point ou expression qui a pour résultat un nombre (expression numérique)
selector SINT
INT
DINT
REAL
immédiat Même type que numeric_expression
IMPORTANT Si vous utilisez des valeurs REAL, utilisez une plage de valeurs pour un sélecteur ; ceci parce qu’il est plus probable que la valeur REAL soit une plage de valeurs plutôt qu’une correspondance exacte à une valeur spécifique.
CASE numeric_expression OF
selector1: statement;
selectorN: statement;
ELSE
statement;
END_CASE;
CASE numeric_expression OF
spécifiez autant devaleurs de sélecteur
alternatives (chemins)que nécessaire
selector1 : <déclaration>;...
expressions à exécuter lorsque numeric_expression = selector1
selector2 : <déclaration>;...
expressions à exécuter lorsque numeric_expression = selector2
selector3 : <déclaration>;...
expressions à exécuter lorsque numeric_expression = selector3
facultatif
ELSE
<déclaration>;...
expressions à exécuter lorsque numeric_expression ≠ tout sélecteur
END_CASE;
Publication 1756-RM003K-FR-P – Juillet 2008 671
Annexe C Programmation en texte structuré
Voir le tableau de la page suivante pour les valeurs de sélecteur valables.
La syntaxe pour entrer les valeurs du sélecteur est :
La structure CASE est similaire à une expression de détecteur en langage de programmation C ou C++. Cependant, avec la structure CASE, l’automate exécute uniquement les expressions qui sont associées avec la première valeur de sélecteur correspondante. L’exécution est toujours interrompue après les expressions de ce sélecteur et passe à l’expression END_CASE.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur : Aucune
Lorsque le sélecteur est Entrez
une valeur valeur: déclaration
plusieurs valeurs distinctes valeur1, valeur2, valeurN : <déclaration>
Utilisez une virgule (,) pour séparer chaque valeur.
une plage de valeurs valeur1..valeurN : <déclaration>
Utilisez deux points (..) pour identifier la plage.
des valeurs distinctes plus une plage de valeurs
valeura, valeurb, valeur1..valeurN : <déclaration>
672 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
EXEMPLE
Le symbole [:=] indique à l’automate d’effacer également les points d’orifice lorsque l’automate :
• passe en mode Exécution ;
• quitte l’étape d’un SFC si vous configurez le SFC pour Automatic reset (remise à zéro automatique). (Ceci ne s’applique que si vous intégrez l’affectation dans l’action de l’étape ou si vous utilisez l’action pour appeler un sous-programme de texte structuré via une instruction JSR.)
Si vous voulez Entrez ce texte structuré
Si numéro de recette = 1 alors CASE numéro_recette OF
Ingrédient A orifice 1 = ouvrir (1) 1: Ingrédient_A.Orifice_1 :=1;
Ingrédient B orifice 4 = ouvrir (1) Ingrédient_B.Orifice_4 :=1;
Si numéro de recette = 2 ou 3 alors 2,3: Ingrédient_A.Orifice_4 :=1;
Ingrédient A orifice 4 = ouvrir (1) Ingrédient_B.Orifice_2 :=1;
Ingrédient B orifice 2 = ouvrir (1)
Si numéro de recette = 4, 5, 6 ou 7 alors 4..7: Ingrédient_A.Orifice_4 :=1;
Ingrédient A orifice 4 = ouvrir (1) Ingrédient_B.Orifice_2 :=1;
Ingrédient B orifice 2 = ouvrir (1)
Si numéro de recette = 8, 11, 12 ou 13 alors 8,11..13 Ingrédient_A.Orifice_1 :=1;
Ingrédient A orifice 1 = ouvrir (1) Ingrédient_B.Orifice_4 :=1;
Ingrédient B orifice 4 = ouvrir (1)
Autrement tous orifices = fermé (0) ELSE
Ingrédient_A.Orifice_1 [:=]0;
Ingrédient_A.Orifice_4 [:=]0;
Ingredient_B.Outlet_2 [:=]0;
Ingredient_B.Outlet_4 [:=]0;
END_CASE;
Publication 1756-RM003K-FR-P – Juillet 2008 673
Annexe C Programmation en texte structuré
FOR…DO (pour...faire) Utilisez la boucle FOR…DO pour exécuter une action un certain nombre de fois avant d’exécuter une autre action.
Opérandes :
Texte structuré
Opérande Type Format Description
count SINT
INT
DINT
point point dans lequel stocker la position du compteur lorsque FOR…DO est exécuté
initial_ value
SINT
INT
DINT
point
expression
immédiat
doit produire un nombre
spécifie la valeur initiale du compteur
final_ value
SINT
INT
DINT
point
expression
immédiat
spécifie la valeur finale du compteur, qui détermine quand sortir de la boucle
increment SINT
INT
DINT
point
expression
immédiat
(facultatif) nombre d’incréments à ajouter à chaque passage dans la boucle
Si vous ne spécifiez pas d’incrément, l’augmentation est de 1.
FOR count:= initial_value TO final_value BY increment DO
<statement>;
END_FOR;
IMPORTANT Assurez-vous de ne pas passer dans la boucle trop de fois pendant une scrutation.
• L’automate n’exécute aucune autre expression du sous-programme tant qu’il n’a pas terminé la boucle.
• Si le temps nécessaire pour terminer la boucle est supérieur au temporisateur du chien de garde pour la tâche, un défaut majeur se produit.
• Prenez en considération l’utilisation d’une structure différente, comme IF...THEN.
674 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Description : La syntaxe est :
Les schémas suivants montrent comment une boucle FOR...DO est exécutée et comment une déclaration EXIT quitte la boucle prématurément.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
FOR count := initial_value
TO final_value
facultatif { BY increment Si vous ne spécifiez pas d’incrément, la boucle augmente de 1.
DO
<déclaration>;
facultatif
IF bool_expression THEN
EXIT; S’il existe des conditions dans lesquelles vous voulez quitter la boucle de façon anticipée, utilisez d’autres expressions, comme une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
END_FOR;
déclaration 1déclaration 2déclaration 3déclaration 4…
Terminé x fois ?
non
oui
reste du sous-programme
déclaration 1déclaration 2déclaration 3déclaration 4…Quitter ?
Terminé x fois ?
non
oui
reste du sous-programme
oui
non
La boucle FOR…DO est exécutée un nombre spécifique de fois.
Pour arrêter la boucle avant que le compteur atteigne la dernière valeur, utilisez une déclaration EXIT.
Un défaut majeur se produit si Type de défaut Code de défaut
la structure reste en boucle trop longtemps
6 1
Publication 1756-RM003K-FR-P – Juillet 2008 675
Annexe C Programmation en texte structuré
Exemple 1 :
Exemple 2 :
Si vous voulez Entrez ce texte structuré
Effacer les bits 0 à 31 dans un tableau de BOOL :
1. Mettez le point subscript à 0.
2. Effacez array[subscript]. Par exemple, lorsque subscript = 5, effacez array[5].
3. Ajoutez 1 à subscript.
4. Si subscript est ≤ à 31, répétez 2 et 3.
Autrement, arrêtez.
For subscript:=0 to 31 by 1 do
array[subscript] := 0;
END_FOR;
Si vous voulez Entrez ce texte structuré
Un type de données utilisateur (structure) stocke les informations suivantes sur un élément dans votre inventaire :
• Identifiant de code-barres de l’élément (type de données chaîne)
• Quantité de l’élément en stock (type de données DINT)
Un tableau de la structure ci-dessus contient un élément pour chaque élément différent dans votre inventaire. Vous devez rechercher un produit spécifique dans le tableau (utilisez sont code-barres) et déterminer la quantité en stock.
1. Obtenez la taille (nombre d’éléments) du tableau Inventory et stockez le résultat dans Inventory_Items (point DINT).
2. Mettez le point position à 0.
3. Si Barcode correspond à l’identifiant d’un élément dans le tableau, alors :
a. Réglez le point Quantity = Inventory[position].Qty. Ceci produit la quantité d’élément en stock.
b. Arrêtez.
Barcode est un point de chaîne qui stocke le code-barres de l’élément que vous recherchez. Par exemple, lorsque position = 5, comparez Barcode à Inventory[5].ID.
4. Ajoutez 1 à position.
5. Si position est ≤ à (Inventory_Items –1), répétez 3 et 4. Etant donné que les numéros d’éléments commencent à 0, le dernier élément est le nombre d’éléments dans le tableau moins 1.
Autrement, arrêtez.
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;
676 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
WHILE…DO (pendant...faire)
Utilisez la boucle WHILE…DO pour continuer à exécuter une action tant que certaines conditions sont vraies.
Opérandes :
Texte structuré
Description : La syntaxe est :
Opérande Type Format Entrez
expression_booléenne
BOOL point
expression
point ou expression BOOL qui a pour résultat une valeur BOOL
WHILE bool_expression DO
<statement>;
END_WHILE;
IMPORTANT Assurez-vous de ne pas passer dans la boucle trop de fois pendant une scrutation.
• L’automate n’exécute aucune autre expression du sous-programme tant qu’il n’a pas terminé la boucle.
• Si le temps nécessaire pour terminer la boucle est supérieur au temporisateur du chien de garde pour la tâche, un défaut majeur se produit.
• Prenez en considération l’utilisation d’une structure différente, comme IF...THEN.
WHILE bool_expression1 DO
<déclaration>; expression à exécuter pendant que bool_expression1 est vrai
facultatif
IF bool_expression2 THEN
EXIT; S’il existe des conditions dans lesquelles vous voulez quitter la boucle de façon anticipée, utilisez d’autres expressions, comme une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
END_WHILE;
Publication 1756-RM003K-FR-P – Juillet 2008 677
Annexe C Programmation en texte structuré
Les schémas suivants montrent comment une boucle WHILE...DO est exécutée et comment une déclaration EXIT quitte la boucle prématurément.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exemple 1 :
Lorsque bool_expression est vrai, l’automate exécute uniquement les expressions de la boucle WHILE…DO.
Pour arrêter la boucle avant que les conditions ne soient vraies, utilisez une déclaration EXIT.
déclaration 1déclaration 2déclaration 3déclaration 4…Quitter ?
expression BOOL
vrai
faux
reste du sous-programme
oui
non
déclaration 1déclaration 2déclaration 3déclaration 4…
expression BOOL
vrai
faux
reste du sous-programme
Un défaut majeur se produit si Type de défaut Code de défaut
la structure reste en boucle trop longtemps
6 1
Si vous voulez que Entrez ce texte structuré
la boucle WHILE...DO évalue d’abord ses conditions. Si les conditions sont vraies, l’automate exécute les déclarations de la boucle.
Ceci diffère de la boucle REPEAT...UNTIL parce que la boucle REPEAT...UNTIL exécute les déclarations de la structure, puis détermine si les conditions sont vraies avant d’exécuter les déclarations à nouveau. Les déclarations d’une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les déclarations dans une boucle WHILE...DO peuvent ne jamais être exécutées.
pos := 0;
While ((pos <= 100) & structarray[pos].value <> targetvalue)) do
pos := pos + 2;
String_tag.DATA[pos] := SINT_array[pos];
END_WHILE;
678 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Exemple 2 :
Si vous voulez Entrez ce texte structuré
Déplacer des caractères ASCII d’un tableau SINT vers un point de chaîne. (Dans un tableau SINT, chaque élément contient un caractère.) Arrêtez lorsque vous atteignez le retour chariot.
1. Mettez Element_number à 0.
2. Comptez le nombre d’éléments dans SINT_array (tableau qui contient les caractères ASCII) et stockez le résultat dans SINT_array_size (point DINT).
3. Si le caractère SINT_array[element_number] = 13 (valeur décimale du retour chariot), alors arrêtez.
4. Réglez String_tag[element_number] = le caractère à SINT_array[element_number].
5. Ajoutez 1 à element_number. Ceci permet à l’automate de vérifier le caractère suivant dans SINT_array.
6. Activez le membre Longueur de String_tag = element_number. (Ceci enregistre le nombre de caractères dans String_tag jusque là.)
7. Si element_number = SINT_array_size, alors arrêtez. (Vous êtes à la fin du tableau et il ne contient pas de retour chariot.)
8. Allez à 3.
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;
Publication 1756-RM003K-FR-P – Juillet 2008 679
Annexe C Programmation en texte structuré
REPEAT…UNTIL (répéter...jusqu’à)
Utilisez la boucle REPEAT…UNTIL pour continuer l’exécution d’une action jusqu’à ce que les conditions soient vraies.
Opérandes :
Texte structuré
Description : La syntaxe est :
Opérande Type Format Entrez
expression_booléenne
BOOL point
expression
Point ou expression BOOL qui a pour résultat une valeur BOOL (expression BOOL)
REPEAT
<déclaration>;
UNTIL bool_expression
END_REPEAT;
IMPORTANT Assurez-vous de ne pas passer dans la boucle trop de fois pendant une scrutation.
• L’automate n’exécute aucune autre expression du sous-programme tant qu’il n’a pas terminé la boucle.
• Si le temps nécessaire pour terminer la boucle est supérieur au temporisateur du chien de garde pour la tâche, un défaut majeur se produit.
• Prenez en considération l’utilisation d’une structure différente, comme IF...THEN.
REPEAT
<déclaration>; expression à exécuter pendant que bool_expression1 est faux
facultatif
IF bool_expression2 THEN
EXIT; S’il existe des conditions dans lesquelles vous voulez quitter la boucle de façon anticipée, utilisez d’autres déclarations, comme une structure IF...THEN, pour conditionner une déclaration EXIT.
END_IF;
UNTIL bool_expression1
END_REPEAT;
680 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Les schémas suivants montrent comment une boucle REPEAT...UNTIL est exécutée et comment une structure EXIT quitte la boule prématurément.
Indicateurs d’état arithmétique : Non affectés
Conditions d’erreur :
Exemple 1 :
Lorsque bool_expression est faux, l’automate exécute uniquement les expressions de la boucle REPEAT…UNTIL.
Pour arrêter la boucle avant que les conditions ne soient fausses, utilisez une déclaration EXIT.
déclaration 1déclaration 2déclaration 3déclaration 4…
expression BOOL
faux
vrai
reste du sous-programmeexpression BOOL
faux
vrai
reste du sous-programme
déclaration 1déclaration 2déclaration 3déclaration 4…Quitter ?
oui
non
Un défaut majeur se produit si Type de défaut Code de défaut
la structure se reboucle trop longtemps 6 1
Si vous voulez Entrez 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 répéter l’exécution des déclarations.
Ceci diffère de la boucle WHILE...DO parce que la boucle WHILE...DO évalue d’abord ses conditions. Si les conditions sont vraies, l’automate exécute les déclarations de la boucle. Les déclarations d’une boucle REPEAT...UNTIL sont toujours exécutées au moins une fois. Les déclarations dans une boucle WHILE...DO peuvent ne jamais être exécutées.
pos := -1;
REPEAT
pos := pos + 2;
UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))
END_REPEAT;
Publication 1756-RM003K-FR-P – Juillet 2008 681
Annexe C Programmation en texte structuré
Exemple 2 :
Si vous voulez Entrez ce texte structuré
Déplacer des caractères ASCII d’un tableau SINT vers un point de chaîne. (Dans un tableau SINT, chaque élément contient un caractère.) Arrêtez lorsque vous atteignez le retour chariot.
1. Mettez Element_number à 0.
2. Comptez le nombre d’éléments dans SINT_array (tableau qui contient les caractères ASCII) et stockez le résultat dans SINT_array_size (point DINT).
3. Réglez String_tag[element_number] = le caractère à SINT_array[element_number].
4. Ajoutez 1 à element_number. Ceci permet à l’automate de vérifier le caractère suivant dans SINT_array.
5. Activez le membre Longueur de String_tag = element_number. (Ceci enregistre le nombre de caractères dans String_tag jusque là.)
6. Si element_number = SINT_array_size, alors arrêtez. (Vous êtes à la fin du tableau et il ne contient pas de retour chariot.)
7. Si le caractère SINT_array[element_number] = 13 (valeur décimale du retour chariot), alors arrêtez.
Autrement allez à 3.
element_number := 0;
SIZE(SINT_array, 0, SINT_array_size);
Repeat
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;
Until SINT_array[element_number] = 13
END_REPEAT;
682 Publication 1756-RM003K-FR-P – Juillet 2008
Programmation en texte structuré Annexe C
Commentaires Ajoutez des commentaires pour faciliter l’interprétation de votre texte structuré.
• Les commentaires vous permettent d’utiliser le langage courant pour décrire le fonctionnement du texte structuré.
• Les commentaires n’affectent pas l’exécution du texte structuré.
Pour ajouter des commentaires à votre texte structuré :
Pour ajouter un commentaire Utilisez l’un des formats suivants
sur une seul ligne //commentaire
(*commentaire*)
/*commentaire*/
à la fin d’une ligne de texte structuré
dans une ligne de texte structuré (*commentaire*)
/*commentaire*/
qui s’étend sur plus d’une ligne (*début du commentaire . . . fin du commentaire*)
/*début du commentaire . . . fin du commentaire*/
Publication 1756-RM003K-FR-P – Juillet 2008 683
Annexe C Programmation en texte structuré
Par exemple :
Format EXEMPLE
//commentaire Au début d’une ligne
//Vérifier la direction du tapis du convoyeur
IF sens_convoyeur THEN...
A la fin d’une ligne
ELSE //Si le convoyeur ne bouge pas, activer le voyant d’alarme
light := 1;
END_IF;
(*commentaire*) Orifice.Sucre[:=]1;(*ouvrir l’orifice d’arrivée*)
IF Sucre.Bas(*LS niveau bas*)& Sucre.Haut (*LS niveau haut*)THEN...
(*Commande la vitesse de la pompe de recirculation. La vitesse dépend de la température du réservoir.*)
IF temp.réservoir > 200 THEN...
/*commentaire*/ Origine.Sucre:=0;/*fermer l’orifice d’arrivée*/
IF code_barres=65 /*A*/ THEN...
/*Obtenir le nombre d’éléments dans le tableau Inventory et stocker la valeur dans le point Inventory_Items*/
SIZE(Inventory,0,Inventory_Items);
684 Publication 1756-RM003K-FR-P – Juillet 2008
Index
Aactivation d’interruption par
l’utilisateur 450activation de sortie 82actualiser la sortie 201addition 252affectation
caractère ASCII 659non rémanente 658rémanent 657
ajout d’écriture ASCII 583alarme TOR 30alarmes 499anticipation de vitesse 510arithmétique et logique
sur fichier 333ASCII
affectation de texte structuré 659attributs
conversion de types de données 629
valeurs immédiates 629attributs communs 629
conversion de types de données 629
valeurs immédiates 629
BBAND 316bas de casse 619BNOT 325BOR 319boucle de retour
schéma de bloc fonctionnel 641boucle non résolue
schéma de bloc fonctionnel 641BXOR 322
Ccache
connexion 173calculer 248caractères ASCII dans
la mémoire tampon 567CASE 671chaîne
évaluation dans le texte structuré 663
chaîne médiane 603chaîne vers DINT 608chaîne vers REAL 611chargement de séquenceur 424chargement FIFO 390chargement LIFO 402chevauchement
vér 195codes d’erreur
ASCII 562instruction MSG 152
codes produit 181
commande Programme/Opérateurprésentation 650
commentairestexte structuré 683
comparaison de bit de fichier 474comparer 206comptage dégressif 132comptage progressif 128comptage progressif/dégressif 136concaténation de chaîne 595conditions de dépassement 644configuration 159
instruction MSG 159instruction PID 496
connecteurschéma de bloc fonctionnel 637
connecteur de câble d’entrée 637connecteur de câble de sortie 637connexion
cache 173conversion de types de données 629conversion en DCB 550conversion en nombre entier 553copie 352copie synchrone 352cosinus 517cosinus d’arc 526
Ddécalage binaire à droite 386décalage binaire à gauche 382déchargement de FIFO 396déchargement LIFO 408déclenchement de tâ 460degré 544désactivation d’interruption par
l’utilisateur 450description
texte structuré 683détection de diagnostic 481déverrouillage de sortie 86différent de 242DINT vers chaîne 613division 261division modulo 266document
texte structuré 683
Eécart type 372écrire une valeur système 176écriture ASCII 588effacer 298effacer chaîne 597effacer la mémoire tampon ASCII
569égal à 211éléments
instruction SIZE 377entrée séquenceur 416ET booléen 316
685Publication 1756-RM003K-FR-P – Juillet 2008 685
Index
ET sur bits 304étiquette 430, 621, 625examiner si ouvert 80exponentiel 540expression
expression BOOLtexte structuré 659
expression numériquetexte structuré 659
ordre d’exécutiontexte structuré 665
texte structuréfonctions 661opérateurs arithmétiques 661opérateurs logiques 664opérateurs relationnels 662opérateurs sur bits 665présentation 659
expression BOOLtexte structuré 659
expression numérique 659expressions
formater 209, 250, 343, 349opérateurs valables 208, 250, 342,
349ordre des opérations 209, 251, 343,
350
Ffin temporaire 446fonctions
texte structuré 661FOR…DO 674
Hhaut de casse 617
IICON 637IF…THEN 668impulsion 88impulsion sur front descendant 94impulsion sur front descendant
avec entrée 99impulsion sur front montant 91Impulsion sur front montant avec
entrée 96indicateurs d’état arithmétique
dépassement 644inférieur 227inférieur ou égal 223insertion d’une chaîne 601instruction ABL 564instruction ABS 277instruction ACB 567instruction ACL 569instruction ACS 526instruction ADD 252
instruction AFI 452instruction AHL 571instruction ALMA 42instruction ALMD, instructions
d’alarmes et d’événementsALMD 30
instruction AND 304instruction ARD 575instruction ARL 579instruction ASCII
ABL 564ACB 567ACL 569AHL 571ARD 575ARL 579AWA 583AWT 588CONCAT 595DELETE 597DTOS 613FIND 599INSERT 601LOWER 619MID 603RTOS 615STOD 608STOR 611SWPB 300UPPER 617
instruction ASN 523instruction ATN 529instruction AVE 362instruction AWA 583instruction AWT 588instruction BRK 469instruction BSL 382instruction BSR 386instruction BTD 292instruction BTDT 295instruction CLR 298instruction CMP 206instruction CONCAT 595instruction COP 352instruction COS 517instruction CPS 352instruction CPT 248instruction CTD 132instruction CTU 128instruction CTUD 136instruction DDT
mode recherche 483opérandes 481
instruction de déclenchement de tâche événementielle 460
instruction de fin de transition 454instruction de pause SFC 456instruction de réinitialisation SFC
458instruction de sortie immédiate 201instruction DEG 544
686 Publication 1756-RM003K-FR-P – Juillet 2008
Index
instruction DELETE 597instruction DIV 261instruction DTOS 613instruction DTR 488instruction EOT 454instruction EQU 211instruction EVENT 460instruction FAL
mode de fonctionnement 328opérandes 333
instruction FBCmode recherche 476opérandes 474
instruction FFL 390instruction FFU 396instruction FIND 599instruction FLL 358instruction FOR 466instruction FRD 553instruction FSC
mode de fonctionnement 328opérandes 344
instruction GEQ 215instruction GRT 219instruction GSV
objets 179opérandes 176
instruction INSERT 601instruction IOT 201instruction JMP 430, 621, 625instruction JSR 432instruction JXR
structure CONTROL 444Instruction LBL 430instruction LBL 621, 625instruction LEQ 223instruction LES 227instruction LFL 402instruction LFU 408instruction LIM 231instruction LN 534instruction LOG 537instruction LOWER 619instruction MCR 448instruction MEQ 237instruction MID 603instruction MOD 266instruction MOV 283instruction MSG 159
codes d’erreur 152connexion cache 173méthode de communication 172opérandes 144recommandations de
programmation 175structure 144
instruction MUL 258instruction MVM 285instruction MVMT 288instruction NEG 274instruction NEQ 242instruction NON 313
instruction NOP 453instruction ONS 88instruction OR 307instruction OSF 94instruction OSFI 99instruction OSR 91instruction OSRI 96instruction OTE 82instruction OTL 84instruction OTU 86instruction PID
alarmes 499anticipation de vitesse 510configuration 496mise à l’échelle 499opérandes 491polarisation de sortie 510réglage 497zone morte 509
instruction RAD 547instruction RES 140Instruction RET 432instruction RET 470instruction RTO 112instruction RTOR 124instruction RTOS 615instruction SBR 432instruction SFP 456instruction SFR 458instruction SIN 514instruction SIZE 377instruction SQI 416instruction SQL 424instruction SQR 270instruction SRT 367instruction SSV
objets 179opérandes 176
instruction STOD 608instruction STOR 611instruction SUB 255instruction SWPB 300instruction TAN 520instruction TND 446instruction TOD 550instruction TOF 108instruction TOFR 120instruction TON 104instruction TONR 116instruction toujours faux 452instruction TRN 555instruction UID 450instruction UIE 450instruction UPPER 617instruction XIO 80instruction XOR 310instruction XPY 540instructions
alarmes et événements 29bit 77calculer 247commande de programme 429
Publication 1756-RM003K-FR-P – Juillet 2008 687
Index
comparer 205compteur 103conversion 543conversion ASCII 605conversion de chaîne 605conversion mathématique 543débogage 621décalage 381entrée/sortie 143logique 281manipulation de chaîne 593manipulation de chaîne ASCII 593mathématiques évoluées 533port série 559port série ASCII 559pour/rupture 465séquenceur 415spéciales 473tableautemporisateur 103transfert 281trigonométriques 513
instructions d’alarmes et d’événements
accès par le programme 70ALMA, alarme analogique 42configuration 62état d’alarme 69exécution d’alarme d’automate 73mise en mémoire tampon
d’alarmes 69suppression ou désactivation
d’alarmes 72texte du message 65
instructions d’entrée/de sortieGSV 176introduction 143IOT 201MSG 144SSV 176
instructions de calculABS 277ADD 252CPT 248DIV 261format d’expression 250, 343introduction 247MOD 266MUL 258NEG 274opérateurs valables 250, 342ordre des opérations 251, 343SQR 270SUB 255
instructions de commande de programme
AFI 452EOT 454EVENT 460
introduction 429JMP 430, 621, 625JSR 432LBL 430, 621, 625MCR 448NOP 453RET 432SBR 432TND 446UID 450UIE 450
instructions de comparaisonCMP 206EQU 211format d’expression 209, 349GEQ 215GRT 219introduction 205LEQ 223LES 227LIM 231MEQ 237NEQ 242opérateurs valables 208, 349ordre des opérations 209, 350
instructions de comptageCTD 132CTU 128CTUD 136introduction 103RES 140
instructions de conversionDEG 544FRD 553introduction 543RAD 547TOD 550TRN 555
instructions de conversion de chaîne
DTOS 613Introduction 605LOWER 619RTOS 615STOD 608STOR 611SWPB 300UPPER 617
instructions de conversion mathématique
DEG 544FRD 553introduction 543RAD 547TOD 550TRN 555
instructions de débogage 621instructions de décalage
BSL 382
688 Publication 1756-RM003K-FR-P – Juillet 2008
Index
BSR 386FFL 390FFU 396Introduction 381LFL 402LFU 408
instructions de fichier. Voir les instructions de tableau
instructions de manipulation de chaîne
CONCAT 595DELETE 597FIND 599INSERT 601introduction 593MID 603
instructions de tableauAVE 362BSL 382BSR 386COP 352CPS 352DDT 481décalage 381FAL 333FBC 474FFL 390FFU 396fichier/divers 327FLL 358FSC 344LFL 402LFU 408mode de fonctionnement 328RES 140séquenceur 415SIZE 377SQI 416SQL 424SQO 420SRT 367STD 372
instructions de temporisationIntroduction 103RES 140RTO 112RTOR 124TOF 108TOFR 120TON 104TONR 116
instructions de transfertBTD 292BTDT 295CLR 298introduction 281MOV 283MVM 285MVMT 288
instructions de transfert/logiquesBAND 316BNOT 325BOR 319BXOR 322
instructions du port sérieABL 564ACB 567ACL 569AHL 571ARD 575ARL 579AWA 583AWT 588Introduction 559
instructions logiquesAND 304Introduction 281NOT 313OR 307XOR 310
instructions mathématiques évoluées
introduction 533LN 534LOG 537XPY 540
instructions pour/ruptureBRK 469introduction 465pour 466RET 470
instructions séquenceursintroduction 415SQI 416SQL 424SQO 420
instructions spécialesDDT 481DTR 488FBC 474introduction 473PID 491SFP 456SFR 458
instructions STD 372instructions sur bit
introduction 77ONS 88OSF 94OSFI 99OSR 91OSRI 96OTE 82OTL 84OTU 86XIO 80
instructions trigonométriquesACS 526
Publication 1756-RM003K-FR-P – Juillet 2008 689
Index
ASN 523ATN 529COS 517introduction 513SIN 514TAN 520
IREF 637
Llecture ASCII 575ligne de lecture ASCII 579lignes d’échange ASCII 571limite 231lire une valeur système 176logarithme
décimal 537naturel 534
logarithme décimal 537logarithme naturel 534
Mmasqué égal à 237masques 489mélange de types de données 629message 144
connexion cache 173recommandations de
programmation 175mise à l’échelle 499mode de fonctionnement 328mode incrémental 331mode Numérique 329mode recherche 476, 483mode TOUT 328modes de temporisation 645moyenne 362multiplication 258
Nnégation 274NON booléen 325NON sur bits 313
Oobjet CONTROLLER 179objet CONTROLLERDEVICE 181objet CST 183objet DF1 184objet FAULTLOG 187objet MESSAGE 188objet MODULE 190objet MOTIONGROUP 191objet PROGRAM 192objet ROUTINE 193objet SERIALPORT 193objet TASK 195objet WALLCLOCKTIME 197
objetsCONTROLLER 179CONTROLLERDEVICE 181CST 183DF1 184FAULTLOG 187instruction GSV/SSV 179MESSAGE 188MODULE 190MOTIONGROUP 191PROGRAM 192ROUTINE 193SERIALPORT 193TASK 195WALLCLOCKTIME 197
OCON 637opérateurs 208, 250, 342, 349
ordre d’exécutiontexte structuré 665
opérateurs arithmétiquestexte structuré 661
opérateurs logiquestexte structuré 664
opérateurs mathématiquestexte structuré 661
opérateurs relationnelstexte structuré 662
opérateurs sur bitstexte structuré 665
ordre d’exécution 640expression en texte structuré 665
ordre des opérations 209, 251, 343, 350
OREF 637OU booléen 319OU exclusif booléen 322OU exclusif sur bits 310OU sur bits 307
Ppas d’opération 453permutation d’octet 300polarisation de sortie 510post-scrutation
texte structuré 658proportionnel, intégral et dérivé 491
Rracine carrée 270radians 547RAZ de commande principale 448REAL vers chaîne 615recherche et comparaison
de fichier 344rechercher chaîne 599rechercher une chaîne 599référence d’entrée 637référence de sortie 637
690 Publication 1756-RM003K-FR-P – Juillet 2008
Index
réglage 497réinitialisation 140remplir un fichier 358répartition champ de bits 292répartition champ de bits
avec cible 295REPEAT…UNTIL 680retour 432, 470rupture 469
Ssaut 430, 621, 625saut vers sous-programme 432schéma de bloc fonctionnel
choix des éléments 637créer une temporisation d’une
scrutation 643résolution d’une boucle 641résolution du flux de données entre
deux blocs 642sinus 514sinus d’arc 523sortie
activer ou désactiver le traitement de fin de tâche 195
actualiser immédiatement 201sortie séquenceur 420sous-programme 432soustraction 255SQO instruction 420status
TASK 195structure
texte structuré 667structure COMPARE 475, 482structure compteur 128, 132structure CONTROL 334, 344, 363,
367, 372, 382, 386, 391, 397, 402, 403, 409, 416, 420, 424, 444
structure de message 144structure FBD_BIT_FIELD_
DISTRIBUTE 295structure FBD_BOOLEAN_AND 316structure FBD_BOOLEAN_NOT 325structure FBD_BOOLEAN_OR 319structure FBD_BOOLEAN_XOR 322structure FBD_COMPARE 212, 216,
220, 224, 228, 243structure FBD_CONVERT 550, 553structure FBD_COUNTER 136structure FBD_LIMIT 232structure FBD_LOGICAL 305, 308,
311, 314structure FBD_MASKED_MOVE 288structure FBD_MASK_EQUAL 238structure FBD_MATH 253, 256, 259,
262, 267, 275, 541
structure FBD_MATH_ADVANCED 271, 278, 514, 518, 521, 523, 526, 529, 534, 538, 544, 547
structure FBD_ONESHOT 96, 99structure FBD_TIMER 116, 120, 124structure FBD_TRUNCATE 555structure PID 492structure RESULT 475, 482structure SERIAL_PORT_CONTROL
560, 562, 564, 567, 572, 576, 580, 584, 589
structure STRING 561, 594, 607structure temporisateur 104, 108,
112structures
chaîne 561, 594, 607COMPARE 475, 482compteur 128, 132CONTROL 334, 344, 363, 367, 372,
382, 386, 391, 397, 402, 403, 409, 416, 420, 424
FBD_BIT_FIELD_DISTRIBUTE 295FBD_BOOLEAN_AND 316FBD_BOOLEAN_NOT 325FBD_BOOLEAN_OR 319FBD_BOOLEAN_XOR 322FBD_COMPARE 212, 216, 220,
224, 228, 243FBD_CONVERT 550, 553FBD_COUNTER 136FBD_LIMIT 232FBD_LOGICAL 305, 308, 311, 314FBD_MASKED_MOVE 288FBD_MASK_EQUAL 238FBD_MATH 253, 256, 259, 262,
267, 275, 541FBD_MATH_ADVANCED 271, 278,
514, 518, 521, 523, 526, 529, 534, 538, 544, 547
FBD_ONESHOT 96, 99FBD_TIMER 116, 120, 124FBD_TRUNCATE 555instruction RES 140MESSAGE 144PID 492Résultat 475, 482SERIAL_PORT_CONTROL 560, 562,
564, 567, 572, 576, 580, 584, 589
STRING 561, 594, 607temporisateur 104, 108, 112
supérieur 219supérieur ou égal 215supposer que les données sont
disponible 641, 642, 643
Publication 1756-RM003K-FR-P – Juillet 2008 691
Index
Ttâche
déclenchement de tâche événementielle 460
déclencher via un point consommé 201
tâche événementielleconfigurer 195déclenchement via instruction
EVENT 460déclencher via un point consommé
201taille en éléments 377tangente 520tangente d’arc 529TASK
configurer par le programme 195surveiller 195
temporisateur à l’enclenchement 104
temporisateur à l’enclenchement avec RAZ 116
temporisateur au déclenchement 108
temporisateur au déclenchement avec RAZ 120
temporisateur rémanent 112temporisateur rémanent
avec RAZ 124temporisation de scrutation
schéma de bloc fonctionnel 643test ASCII pour ligne de mémoire
tampon 564texte structuré
affectation 657affectation non rémanente 658affecter un caractère ASCII 659CASE 671commentaires 683composants 655évaluation des chaînes 663expression 659expression numérique 659fonctions 661FOR…DO 674IF…THEN 668opérateurs arithmétiques 661opérateurs logiques 664opérateurs relationnels 662opérateurs sur bits 665REPEAT…UNTIL 680structures 667WHILE…DO 677
timeoutconfigurer pour tâche
événementielle 195transfert 283transfert avec masque 285transfert masqué avec cible 288transition de données 488trier 367troncation 555type de données de chaîne 561, 594,
607
Vvaleur absolue 277valeurs immédiates 629verrouillage de données 638verrouillage de sortie 84
WWHILE…DO 677
XX à la puissance Y 540
Zzone morte 509
692 Publication 1756-RM003K-FR-P – Juillet 2008
Codes des caractères ASCII
Caractère Déc Hex
[ctrl-@] NUL 0 $00
[ctrl-A] SOH 1 $01
[ctrl-B] STX 2 $02
[ctrl-C] ETX 3 $03
[ctrl-D] EOT 4 $04
[ctrl-E] ENQ 5 $05
[ctrl-F] ACK 6 $06
[ctrl-G] BEL 7 $07
[ctrl-H] BS 8 $08
[ctrl-I] HT 9 $09
[ctrl-J] LF 10 $l ($0A)
[ctrl-K] VT 11 $0B
[ctrl-L] FF 12 $0C
[ctrl-M] CR 13 $r ($0D)
[ctrl-N] SO 14 $0E
[ctrl-O] SI 15 $0F
[ctrl-P] DLE 16 $10
[ctrl-Q] DC1 17 $11
[ctrl-R] DC2 18 $12
[ctrl-S] DC3 19 $13
[ctrl-T] DC4 20 $14
[ctrl-U] NAK 21 $15
[ctrl-V] SYN 22 $16
[ctrl-W] ETB 23 $17
[ctrl-X] CAN 24 $18
[ctrl-Y] EM 25 $19
[ctrl-Z] SUB 26 $1A
ctrl-[ ESC 27 $1B
[ctrl-\] FS 28 $1C
ctrl-] GS 29 $1D
[ctrl-^] RS 30 $1E
[ctrl-_] US 31 $1F
ESPACE 32 $20
! 33 $21
“ 34 $22
# 35 $23
$ 36 $24
% 37 $25
& 38 $26
‘ 39 $27
( 40 $28
) 41 $29
* 42 $2A
+ 43 $2B
, 44 $2C
- 45 $2D
. 46 $2E
/ 47 $2F
0 48 $30
1 49 $31
2 50 $32
3 51 $33
4 52 $34
5 53 $35
6 54 $36
7 55 $37
8 56 $38
9 57 $39
: 58 $3A
; 59 $3B
< 60 $3C
= 61 $3D
> 62 $3E
? 63 $3F
@ 64 $40
A 65 $41
Caractère Déc Hex
B 66 $42
C 67 $43
D 68 $44
E 69 $45
F 70 $46
G 71 $47
H 72 $48
I 73 $49
J 74 $4A
K 75 $4B
L 76 $4C
M 77 $4D
N 78 $4E
O 79 $4F
P 80 $50
Q 81 $51
R 82 $52
S 83 $53
T 84 $54
U 85 $55
V 86 $56
W 87 $57
X 88 $58
Y 89 $59
Z 90 $5A
[ 91 $5B
\ 92 $5C
] 93 $5D
^ 94 $5E
_ 95 $5F
‘ 96 $60
a 97 $61
b 98 $62
Caractère Déc Hex
c 99 $63
d 100 $64
e 101 $65
f 102 $66
g 103 $67
h 104 $68
i 105 $69
j 106 $6A
k 107 $6B
l 108 $6C
m 109 $6D
n 110 $6E
o 111 $6F
p 112 $70
q 113 $71
r 114 $72
s 115 $73
t 116 $74
u 117 $75
v 118 $76
w 119 $77
x 120 $78
y 121 $79
z 122 $7A
{ 123 $7B
| 124 $7C
} 125 $7D
~ 126 $7E
EFFACE 127 $7F
Caractère Déc Hex
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 packs). 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 :
Quatrième de couverture
Pour les Etats-Unis
1.440.646.3223du 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é (voir 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.
Publication 1756-RM003K-FR-P – Juillet 2008 695Remplace la publication 1756-RM003I-FR-P – Janvier 2007 Copyright © 2008 Rockwell Automation, Inc. Tous droits réservés. Imprimé aux Etats-Unis.
Autom
ates Logix5000™ – Instructions
Manuel de référence