Schneider Electric EcoStruxure™ Control Expert - Langages de Manuel utilisateur
Ajouter à Mes manuels594 Des pages
▼
Scroll to page 2
of
594
EcoStruxure™ Control Expert Langages de programmation et structure Manuel de référence Traduction de la notice originale 35006145.25 02/2022 www.se.com Mentions légales La marque Schneider Electric et toutes les marques de commerce de Schneider Electric SE et de ses filiales mentionnées dans ce guide sont la propriété de Schneider Electric SE ou de ses filiales. Toutes les autres marques peuvent être des marques de commerce de leurs propriétaires respectifs. Ce guide et son contenu sont protégés par les lois sur la propriété intellectuelle applicables et sont fournis à titre d'information uniquement. Aucune partie de ce guide ne peut être reproduite ou transmise sous quelque forme ou par quelque moyen que ce soit (électronique, mécanique, photocopie, enregistrement ou autre), à quelque fin que ce soit, sans l'autorisation écrite préalable de Schneider Electric. Schneider Electric n'accorde aucun droit ni aucune licence d'utilisation commerciale de ce guide ou de son contenu, sauf dans le cadre d'une licence non exclusive et personnelle, pour le consulter tel quel. Les produits et équipements Schneider Electric doivent être installés, utilisés et entretenus uniquement par le personnel qualifié. Les normes, spécifications et conceptions sont susceptibles d'être modifiées à tout moment. Les informations contenues dans ce guide peuvent faire l'objet de modifications sans préavis. Dans la mesure permise par la loi applicable, Schneider Electric et ses filiales déclinent toute responsabilité en cas d'erreurs ou d'omissions dans le contenu informatif du présent document ou pour toute conséquence résultant de l'utilisation des informations qu'il contient. En tant que membre d'un groupe d'entreprises responsables et inclusives, nous actualisons nos communications qui contiennent une terminologie non inclusive. Cependant, tant que nous n'aurons pas terminé ce processus, notre contenu pourra toujours contenir des termes standardisés du secteur qui pourraient être jugés inappropriés par nos clients. Langages de programmation et structure Table des matières Consignes de sécurité ............................................................................................13 Avant de commencer ........................................................................................14 Démarrage et test.............................................................................................15 Fonctionnement et réglages ..............................................................................16 A propos de ce manuel ...........................................................................................17 Présentation générale de la solution Control Expert .........................................19 Présentation ..........................................................................................................20 Capacités de Control Expert ..............................................................................20 Interface utilisateur ...........................................................................................26 Navigateur du projet .........................................................................................28 Formats de fichier d'application utilisateur et de projet .........................................29 Configurateur ...................................................................................................36 Editeur de données...........................................................................................41 Editeur de données de l'unité de programme ......................................................50 Editeur de programmes.....................................................................................55 Langage à blocs fonction (FBD).........................................................................59 Langage LD (schéma à contacts).......................................................................61 Présentation générale du langage séquentiel SFC ..............................................64 Liste d'instructions (IL) ......................................................................................68 Littéral structuré (ST) ........................................................................................69 Simulateur d'automate ......................................................................................70 Exportation/Importation.....................................................................................72 Documentation utilisateur..................................................................................73 Services de mise au point du code .....................................................................74 Visualisation des diagnostics .............................................................................81 Ecran d'exploitation ..........................................................................................81 Structure de l'application .......................................................................................85 Description des fonctions disponibles pour chaque type d'automate...........................86 Fonctions disponibles pour les différents types d'automate ..................................86 Structure du programme d'application......................................................................92 Description des tâches et des traitements...........................................................92 Présentation de la Tâche Maître ..................................................................92 35006145.25 3 Langages de programmation et structure Présentation de la tâche rapide....................................................................93 Présentation des tâches auxiliaires ..............................................................95 Présentation du Traitement Evènementiel.....................................................96 Description des Program Units ..........................................................................98 Description des unités de programme...........................................................98 Description des sections et des sous-programmes............................................ 100 Description des sections............................................................................ 100 Description des sections SFC .................................................................... 101 Description des sous-programmes ............................................................. 103 Exécution monotâche ..................................................................................... 104 Description du cycle de tâche maître .......................................................... 104 Monotâche : exécution cyclique ................................................................. 106 Exécution périodique................................................................................. 107 Contrôle de la durée du cycle..................................................................... 109 Exécution des sections Quantum avec entrées/sorties décentralisées .......................................................................................... 110 Exécution multitâche....................................................................................... 111 Structure logicielle multitâche .................................................................... 112 Séquencement des tâches dans une structure multitâche ............................ 113 Contrôle des tâches .................................................................................. 115 Affectation de voies d'entrée ou de sortie à des tâches maître, rapides et auxiliaires................................................................................................. 118 Gestion des Traitements Evènementiels ..................................................... 120 Exécution du traitement événementiel de type TIMER ................................. 121 Echanges d'entrées/de sorties dans les traitements événementiels .............. 126 Programmation du traitement événementiel ................................................ 127 Structure Mémoire des Applications....................................................................... 130 Méthodes d'adressage de données d'entrée et de sortie.................................... 130 Méthodes d'adressage de données d'entrée et de sortie .............................. 130 Structure de mémoire pour les automates Premium, Atrium et Modicon M340 ............................................................................................................. 134 Structure de Mémoire pour les automates Modicon M340 ............................ 134 Structure de mémoire des automates Premium et Atrium ............................. 139 Description détaillée des zones mémoires .................................................. 141 Structure de la mémoire des automates Quantum............................................. 142 4 35006145.25 Langages de programmation et structure Structure de la mémoire des automates Quantum ...................................... 143 Description détaillée des zones mémoire .................................................... 146 Modes de fonctionnement..................................................................................... 148 Modes de fonctionnement des automates Modicon M340 .................................. 148 Traitement en cas de coupure de courant et restauration des automates Modicon M340.......................................................................................... 148 Traitement en cas de démarrage à froid des automates Modicon M340 ....................................................................................................... 150 Traitement sur reprise à chaud pour les automates Modicon M340 ............... 154 Démarrage automatique en mode RUN pour les automates Modicon M340 ....................................................................................................... 157 Traitement de la RAM d'état en mode STOP pour les automates Modicon M340 ....................................................................................................... 158 Mode de fonctionnement des automates Premium et Quantum.......................... 158 Traitement en cas de coupure et de reprise secteur des automates Premium/Quantum.................................................................................... 159 Traitement lors d'un démarrage à froid pour les automates Premium/ Quantum .................................................................................................. 161 Traitement des automates Premium/Quantum lors d'un redémarrage à chaud ...................................................................................................... 166 Démarrage automatique en mode RUN pour Premium/Quantum.................. 169 Mode HALT de l'automate ............................................................................... 170 Mode HALT de l'automate ......................................................................... 170 Description des données ..................................................................................... 172 Présentation générale des données....................................................................... 173 Généralités .................................................................................................... 173 Présentation des familles de types de données................................................. 174 Présentation des instances de données ........................................................... 176 Présentation des références de données.......................................................... 178 Règles syntaxiques pour les noms de type/d'instance ....................................... 179 Types de données ................................................................................................ 180 Types de données élémentaires (EDT) au format Binaire................................... 180 Présentation des types de données au format Binaire.................................. 181 Types booléens ........................................................................................ 182 Types d'entier ........................................................................................... 188 35006145.25 5 Langages de programmation et structure Type Temps.............................................................................................. 190 Types de données élémentaires (EDT) au format BCD ...................................... 191 Présentation des types de données au format BCD ..................................... 191 Type Date ................................................................................................ 193 Type Heure du jour (TOD) ......................................................................... 194 Type Date et heure (DT) ............................................................................ 195 Types de données élémentaires (EDT) au format Réel ...................................... 196 Présentation du type de données Réel ....................................................... 197 Types de données élémentaires (EDT) au format chaine de caractères .............. 202 Présentation des types de données au format chaîne de caractères ............. 202 Types de données élémentaires (EDT) au format chaîne de bits ........................ 205 Présentation des types de données au format chaîne de bits ....................... 205 Types de chaînes de bits ........................................................................... 206 Types de données dérivés (DDT/IODDT/DDDT) ............................................... 208 Tableaux .................................................................................................. 208 Structures ................................................................................................ 211 Présentation de la famille des types de données dérivés (DDT).................... 213 DDT : Règles de mappage......................................................................... 215 Présentation des types de données dérivés d'entrée/sortie (IODDT)............. 219 Aperçu des types de données dérivés d'équipement (DDT d'équipement)........................................................................................... 221 Règle de dénomination d'instance DDT ...................................................... 222 Types de données des blocs fonction (DFB/EFB).............................................. 225 Présentation des familles de types de données des blocs fonction................ 226 Caractéristiques des types de données de bloc fonction (EFB/DFB) ............. 228 Caractéristiques d'éléments appartenant aux blocs fonction......................... 230 Types de données génériques (GDT)............................................................... 233 Présentation des types de données génériques .......................................... 233 Types de données appartenant aux diagrammes fonctionnels en séquence (SFC) ............................................................................................................ 234 Présentation des types de données de la famille SFC (diagramme fonctionnel en séquence) .......................................................................... 235 Compatibilité entre types de données............................................................... 237 Compatibilité entre types de données ......................................................... 237 Déclarations du type de données Reference..................................................... 240 6 35006145.25 Langages de programmation et structure Déclarations de types de données Reference ............................................. 240 Instances de données........................................................................................... 245 Instances de types de données ....................................................................... 245 Attributs des instances de données.................................................................. 249 Instances de Données à Adressage Direct ...................................................... 252 Références de données........................................................................................ 260 Référence aux instances de données par valeur ............................................... 260 Référence aux instances de données par nom.................................................. 262 Références d'instances de données par adresses............................................. 264 Règles d'appellation des données.................................................................... 268 Langage de programmation ................................................................................ 271 Langage à blocs fonction (FBD) ............................................................................ 272 Informations générales sur le langage à blocs fonction FBD............................... 272 Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) ........................................................................................... 274 Appels de sous-programme ............................................................................ 285 Commandes .................................................................................................. 285 Liaison........................................................................................................... 287 Objet texte ..................................................................................................... 289 Ordre d'exécution des FFB.............................................................................. 289 Modification de l'ordre d'exécution ................................................................... 293 Planification des boucles................................................................................. 298 Langage à contacts (LD)....................................................................................... 300 Informations générales sur le langage à contacts LD (Ladder Diagram) .............. 300 Contacts ........................................................................................................ 303 Bobines ......................................................................................................... 304 Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) ........................................................................................... 306 Commandes .................................................................................................. 318 Blocs opération et blocs comparaison .............................................................. 319 Liaisons ......................................................................................................... 322 Objet texte ..................................................................................................... 326 Reconnaissance de front................................................................................. 326 Ordre d'exécution et flux de signaux................................................................. 335 Planification des boucles................................................................................. 338 35006145.25 7 Langages de programmation et structure Modification de l'ordre d'exécution ................................................................... 339 Langage séquentiel SFC ...................................................................................... 345 Généralités concernant le diagramme fonctionnel en séquence (SFC) ............... 345 Informations générales sur le langage séquentiel SFC................................. 345 Règles de liaison ...................................................................................... 349 Etape et macro-étape ..................................................................................... 350 Etape ....................................................................................................... 350 Macro-étapes et macro-sections ................................................................ 354 Action et section d'action................................................................................. 359 Action ...................................................................................................... 359 Section d'action ........................................................................................ 360 Qualificatif ................................................................................................ 362 Transition et section de transition..................................................................... 369 Transition ................................................................................................. 370 Section de transition.................................................................................. 371 Saut .............................................................................................................. 373 Saut......................................................................................................... 373 Liaison........................................................................................................... 374 Liaison ..................................................................................................... 375 Divergences et convergences.......................................................................... 376 Divergences en OU et convergences en OU ............................................... 376 Divergence en ET et convergence en ET .................................................... 378 Objet texte ..................................................................................................... 379 Objet texte................................................................................................ 379 Jeton unique .................................................................................................. 379 Jeton unique d'ordre d'exécution ................................................................ 379 Séquence en OU ...................................................................................... 380 Sauts de séquence et boucles de séquence ............................................... 381 Séquences en ET ..................................................................................... 384 Sélection de séquences en ET asymétriques .............................................. 387 Jetons multiples ............................................................................................. 390 Ordre d'exécution à plusieurs jetons ........................................................... 390 Séquence en OU ...................................................................................... 391 Séquences en ET ..................................................................................... 394 Saut dans une séquence en ET ................................................................. 397 8 35006145.25 Langages de programmation et structure Saut hors d’une séquence en ET ............................................................... 399 Liste d'instructions (IL) .......................................................................................... 404 Remarques générales sur le langage liste d’instructions IL ................................ 404 Informations générales sur le langage IL (Instruction List) ............................ 404 Opérandes ............................................................................................... 408 Modificateur ............................................................................................. 410 Opérateurs ............................................................................................... 412 Appel de sous-programme ........................................................................ 423 Libellés et sauts ........................................................................................ 423 Commentaire............................................................................................ 425 Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures ................................................................... 426 Appel de fonctions élémentaires ................................................................ 426 Appel de blocs fonction élémentaires et de blocs fonction dérivés................. 432 Procédures d'appel ................................................................................... 444 Texte structuré (ST).............................................................................................. 452 Remarques générales sur le littéral structuré ST ............................................... 452 Informations générales sur le langage ST (Structured Text).......................... 452 Opérandes ............................................................................................... 455 Opérateurs ............................................................................................... 457 Instructions .................................................................................................... 462 Instructions .............................................................................................. 462 Affectation ................................................................................................ 463 Instruction de sélection IF...THEN...END_IF................................................ 465 Instruction de sélection ELSE .................................................................... 466 Instruction de sélection ELSIF...THEN ........................................................ 467 Instruction de sélection CASE...OF...END_CASE ........................................ 468 Instruction récurrente FOR...TO...BY...DO...END_FOR................................ 469 Instruction de répétition WHILE...DO...END_WHILE.................................... 471 Instruction REPEAT...UNTIL...END_REPEAT ............................................. 472 Instruction EXIT dans les répétitions........................................................... 473 Appel de sous-programme ........................................................................ 474 RETURN.................................................................................................. 474 Instruction d'espacement........................................................................... 475 Etiquettes et sauts .................................................................................... 475 35006145.25 9 Langages de programmation et structure Commentaire............................................................................................ 476 Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures .................................................................... 477 Appel de fonctions élémentaires ................................................................ 477 Appel de bloc fonction élémentaire et de bloc fonction dérivé ....................... 483 Procédures............................................................................................... 492 Blocs fonction utilisateur (DFB) .......................................................................... 499 Présentation de Blocs Fonction Utilisateur (DFB).................................................... 500 Présentation des blocs fonctions utilisateur (DFB)............................................. 500 Mise en œuvre d'un bloc fonction dérivé (DFB) ................................................. 502 Description des Blocs Fonction Utilisateur (DFB) .................................................... 505 Définition des données internes de blocs fonction dérivés (DFB) ........................ 505 Paramètres des DFB ...................................................................................... 508 Variables DFB ................................................................................................ 512 Section de code DFB ...................................................................................... 513 Instances de blocs fonction utilisateur (DFB) .......................................................... 516 Création d'une instance de DFB ...................................................................... 516 Exécution d'une instance de DFB .................................................................... 517 Exemple de programmation pour un bloc fonction dérivé (DFB) ......................... 518 Utilisation des DFB à partir de différents langages de programmation ...................... 522 Règles d'utilisation des blocs fonction dérivés dans un programme .................... 522 Utilisation des IODDT dans un DFB ................................................................. 525 Utilisation d'un DFB dans un programme en langage LD ................................... 529 Utilisation d'un DFB dans un programme en langage ST ................................... 530 Utilisation d'un DFB dans un programme IL (liste d'instructions) ......................... 533 Utilisation d'un DFB dans un programme en langage FBD ................................. 538 DFB de diagnostic utilisateur................................................................................. 540 Présentation des DFB de diagnostic utilisateur ................................................. 540 Conversion de type implicite dans Control Expert ................................................... 542 Conversion de type implicite dans Control Expert.............................................. 542 Différences de Control Expert par rapport aux recommandations IEC ................. 544 Annexes ................................................................................................................. 547 Conformité CEI .................................................................................................... 548 Informations générales relatives à la norme CEI 61131-3................................... 548 Informations générales relatives à la conformité IEC 61131-3....................... 548 10 35006145.25 Langages de programmation et structure Tableaux de conformité CEI............................................................................. 550 Eléments communs .................................................................................. 550 Eléments de langage IL............................................................................. 562 Eléments de langage ST ........................................................................... 564 Eléments graphiques communs ................................................................. 565 Eléments de langage LD ........................................................................... 566 Paramètres dépendants de la mise en œuvre ............................................. 567 Conditions d'erreur.................................................................................... 570 Extensions de la norme CEI 61131-3 ............................................................... 571 Extensions de la norme IEC 61131-3, 2e édition.......................................... 572 Syntaxe des langages textuels ........................................................................ 573 Syntaxe des langages textuels................................................................... 573 Glossaire ................................................................................................................ 575 Index ....................................................................................................................... 589 35006145.25 11 Consignes de sécurité Langages de programmation et structure Consignes de sécurité Informations importantes Lisez attentivement ces instructions et examinez le matériel pour vous familiariser avec l'appareil avant de tenter de l'installer, de le faire fonctionner, de le réparer ou d'assurer sa maintenance. Les messages spéciaux suivants que vous trouverez dans cette documentation ou sur l'appareil ont pour but de vous mettre en garde contre des risques potentiels ou d'attirer votre attention sur des informations qui clarifient ou simplifient une procédure. La présence de ce symbole sur une étiquette “Danger” ou “Avertissement” signale un risque d'électrocution qui provoquera des blessures physiques en cas de non-respect des consignes de sécurité. Ce symbole est le symbole d'alerte de sécurité. Il vous avertit d'un risque de blessures corporelles. Respectez scrupuleusement les consignes de sécurité associées à ce symbole pour éviter de vous blesser ou de mettre votre vie en danger. ! DANGER DANGER signale un risque qui, en cas de non-respect des consignes de sécurité, provoque la mort ou des blessures graves. ! AVERTISSEMENT AVERTISSEMENT signale un risque qui, en cas de non-respect des consignes de sécurité, peut provoquer la mort ou des blessures graves. ! ATTENTION ATTENTION signale un risque qui, en cas de non-respect des consignes de sécurité, peut provoquer des blessures légères ou moyennement graves. AVIS AVIS indique des pratiques n'entraînant pas de risques corporels. 35006145.25 13 Langages de programmation et structure Consignes de sécurité Remarque Importante L'installation, l'utilisation, la réparation et la maintenance des équipements électriques doivent être assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité quant aux conséquences de l'utilisation de ce matériel. Une personne qualifiée est une personne disposant de compétences et de connaissances dans le domaine de la construction, du fonctionnement et de l'installation des équipements électriques, et ayant suivi une formation en sécurité leur permettant d'identifier et d'éviter les risques encourus. Avant de commencer N'utilisez pas ce produit sur les machines non pourvues de protection efficace du point de fonctionnement. L'absence de ce type de protection sur une machine présente un risque de blessures graves pour l'opérateur. AVERTISSEMENT EQUIPEMENT NON PROTEGE • N'utilisez pas ce logiciel ni les automatismes associés sur des appareils non équipés de protection du point de fonctionnement. • N'accédez pas aux machines pendant leur fonctionnement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Cet automatisme et le logiciel associé permettent de commander des processus industriels divers. Le type ou le modèle d'automatisme approprié pour chaque application dépendra de facteurs tels que la fonction de commande requise, le degré de protection exigé, les méthodes de production, des conditions inhabituelles, la législation, etc. Dans certaines applications, plusieurs processeurs seront nécessaires, notamment lorsque la redondance de sauvegarde est requise. Vous seul, en tant que constructeur de machine ou intégrateur de système, pouvez connaître toutes les conditions et facteurs présents lors de la configuration, de l'exploitation et de la maintenance de la machine, et êtes donc en mesure de déterminer les équipements automatisés, ainsi que les sécurités et verrouillages associés qui peuvent être utilisés correctement. Lors du choix de l'automatisme et du système de commande, ainsi que du logiciel associé pour une application particulière, vous devez respecter les normes et réglementations locales et nationales en vigueur. Le document National Safety Council's Accident Prevention Manual (reconnu aux Etats-Unis) fournit également de nombreuses informations utiles. 14 35006145.25 Consignes de sécurité Langages de programmation et structure Dans certaines applications, telles que les machines d'emballage, une protection supplémentaire, comme celle du point de fonctionnement, doit être fournie pour l'opérateur. Elle est nécessaire si les mains ou d'autres parties du corps de l'opérateur peuvent entrer dans la zone de point de pincement ou d'autres zones dangereuses, risquant ainsi de provoquer des blessures graves. Les produits logiciels seuls, ne peuvent en aucun cas protéger les opérateurs contre d'éventuelles blessures. C'est pourquoi le logiciel ne doit pas remplacer la protection de point de fonctionnement ou s'y substituer. Avant de mettre l'équipement en service, assurez-vous que les dispositifs de sécurité et de verrouillage mécaniques et/ou électriques appropriés liés à la protection du point de fonctionnement ont été installés et sont opérationnels. Tous les dispositifs de sécurité et de verrouillage liés à la protection du point de fonctionnement doivent être coordonnés avec la programmation des équipements et logiciels d'automatisation associés. NOTE: La coordination des dispositifs de sécurité et de verrouillage mécaniques/ électriques du point de fonctionnement n'entre pas dans le cadre de cette bibliothèque de blocs fonction, du Guide utilisateur système ou de toute autre mise en œuvre référencée dans la documentation. Démarrage et test Avant toute utilisation de l'équipement de commande électrique et des automatismes en vue d'un fonctionnement normal après installation, un technicien qualifié doit procéder à un test de démarrage afin de vérifier que l'équipement fonctionne correctement. Il est essentiel de planifier une telle vérification et d'accorder suffisamment de temps pour la réalisation de ce test dans sa totalité. AVERTISSEMENT RISQUES INHERENTS AU FONCTIONNEMENT DE L'EQUIPEMENT • Assurez-vous que toutes les procédures d'installation et de configuration ont été respectées. • Avant de réaliser les tests de fonctionnement, retirez tous les blocs ou autres cales temporaires utilisés pour le transport de tous les dispositifs composant le système. • Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Effectuez tous les tests de démarrage recommandés dans la documentation de l'équipement. Conservez toute la documentation de l'équipement pour référence ultérieure. Les tests logiciels doivent être réalisés à la fois en environnement simulé et réel 35006145.25 15 Langages de programmation et structure Consignes de sécurité Vérifiez que le système entier est exempt de tout court-circuit et mise à la terre temporaire non installée conformément aux réglementations locales (conformément au National Electrical Code des Etats-Unis, par exemple). Si des tests diélectriques sont nécessaires, suivez les recommandations figurant dans la documentation de l'équipement afin d'éviter de l'endommager accidentellement. Avant de mettre l'équipement sous tension : • Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. • Fermez le capot du boîtier de l'équipement. • Retirez toutes les mises à la terre temporaires des câbles d'alimentation entrants. • Effectuez tous les tests de démarrage recommandés par le fabricant. Fonctionnement et réglages Les précautions suivantes sont extraites du document NEMA Standards Publication ICS 7.1-1995 (la version anglaise prévaut) : 16 • Malgré le soin apporté à la conception et à la fabrication de l'équipement ou au choix et à l'évaluation des composants, des risques subsistent en cas d'utilisation inappropriée de l'équipement. • Il arrive parfois que l'équipement soit déréglé accidentellement, entraînant ainsi un fonctionnement non satisfaisant ou non sécurisé. Respectez toujours les instructions du fabricant pour effectuer les réglages fonctionnels. Les personnes ayant accès à ces réglages doivent connaître les instructions du fabricant de l'équipement et les machines utilisées avec l'équipement électrique. • Seuls ces réglages fonctionnels, requis par l'opérateur, doivent lui être accessibles. L'accès aux autres commandes doit être limité afin d'empêcher les changements non autorisés des caractéristiques de fonctionnement. 35006145.25 A propos de ce manuel Langages de programmation et structure A propos de ce manuel Objectif du document Ce manuel décrit les éléments nécessaires à la programmation des automates M340, M580, Momentum, Premium, Atrium et Quantum par le biais de l'atelier de programmation d’EcoStruxure Control Expert. Champ d'application Cette documentation est applicable à EcoStruxure™ Control Expert 15.0 ou version ultérieure. Document(s) à consulter Titre de la documentation Référence EcoStruxure™ Control Expert, Modes de fonctionnement 33003101 (Anglais), 33003102 (Français), 33003103 (Allemand), 33003104 (Espagnol), 33003696 (Italien), 33003697 (Chinois) EcoStruxure™ Control Expert - Bits et mots système, Manuel de référence EIO0000002135 (Anglais), EIO0000002136 (Français), EIO0000002137 (Allemand), EIO0000002138 (Italien), EIO0000002139 (Espagnol), EIO0000002140 (Chinois) Modicon M580 - Matériel, Manuel de référence EIO0000001578 (Anglais), EIO0000001579 (Français), EIO0000001580 (Allemand), EIO0000001582 (Italien), EIO0000001581 (Espagnol), EIO0000001583 (Chinois) Modicon M580 - Modules RIO, Guide d'installation et de configuration Modicon M340 - CANopen, Manuel utilisateur 35013944 (Anglais), 35013945 (Français), 35013946 (Allemand), 35013948 (Italien), 35013947 (Espagnol), 35013949 (Chinois) Modicon X80 - Modules d'entrée/sortie TOR, Manuel utilisateur 35012474 (Anglais), 35012475 (Allemand), 35012476 (Français), 35012477 (Espagnol), 35012478 (Italien), 35012479 (Chinois) Modicon X80 - Modules d'entrée/sortie analogiques, Manuel utilisateur 35011978 (Anglais), 35011979 (Allemand), 35011980 (Français), 35011981 (Espagnol), 35011982 (Italien), 35011983 (Chinois) Quantum sous EcoStruxure™ Control Expert - Matériel, Manuel de référence 35010529 (Anglais), 35010530 (Français), 35010531 (Allemand), 35013975 (Italien), 35010532 (Espagnol), 35012184 (Chinois) 35006145.25 17 Langages de programmation et structure A propos de ce manuel Titre de la documentation Référence EcoStruxure™ Control Expert - Système Quantum sous de redondance d'UC, Manuel utilisateur 35010533 (Anglais), 35010534 (Français), 35010535 (Allemand), 35013993 (Italien), 35010536 (Espagnol), 35012188 (Chinois) EcoStruxure™ Control Expert - Gestion des E/S, Bibliothèque de blocs 33002531 (Anglais), 33002532 (Français), 33002533 (Allemand), 33003684 (Italien), 33002534 (Espagnol), 33003685 (Chinois) EcoStruxure™ Control Expert - Système, Bibliothèque de blocs 33002539 (Anglais), 33002540 (Français), 33002541 (Allemand), 33003688 (Italien), 33002542 (Espagnol), 33003689 (Chinois) EcoStruxure™ Control Expert - Diagnostic, Bibliothèque de blocs 33002523 (Anglais), 33002524 (Français), 33002525 (Allemand), 33003680 (Italien), 33002526 (Espagnol), 33003681 (Chinois) Vous pouvez télécharger ces publications, le présent manuel et autres informations techniques depuis notre site web à l'adresse : www.se.com/en/download/. Informations relatives au produit AVERTISSEMENT FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT • L'utilisation de ce produit requiert une expertise dans la conception et la programmation des systèmes de contrôle. Seules les personnes ayant l'expertise adéquate sont autorisées à programmer, installer, modifier et utiliser ce produit. • Respectez toutes les normes et consignes de sécurité locales et nationales. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 18 35006145.25 Langages de programmation et structure Présentation générale de la solution Control Expert Contenu de cette partie Présentation ............................................................................20 Contenu de cette partie Cette section décrit la structure globale et le comportement général d'une application créée avec Control Expert. 35006145.25 19 Langages de programmation et structure Présentation Présentation Contenu de ce chapitre Capacités de Control Expert .....................................................20 Interface utilisateur...................................................................26 Navigateur du projet.................................................................28 Formats de fichier d'application utilisateur et de projet ................29 Configurateur ..........................................................................36 Editeur de données ..................................................................41 Editeur de données de l'unité de programme .............................50 Editeur de programmes ............................................................55 Langage à blocs fonction (FBD) ................................................59 Langage LD (schéma à contacts) ..............................................61 Présentation générale du langage séquentiel SFC .....................64 Liste d'instructions (IL)..............................................................68 Littéral structuré (ST) ...............................................................69 Simulateur d'automate .............................................................70 Exportation/Importation ............................................................72 Documentation utilisateur .........................................................73 Services de mise au point du code ............................................74 Visualisation des diagnostics ....................................................81 Ecran d'exploitation..................................................................81 Présentation Ce chapitre décrit la structure générale et le comportement global d'un projet créé avec Control Expert. Capacités de Control Expert Plateformes matérielles Control Expert prend en charge les plateformes matérielles suivantes : 20 • Modicon M340 • Modicon M580 • Quantum • Momentum • Premium 35006145.25 Présentation • Langages de programmation et structure Atrium Langages de programmation Control Expert propose les langages suivants pour la création du programme utilisateur : • Langage à blocs fonction (FBD) • Langage à contacts (LD) • Liste d'instructions (IL) • Littéral structuré (ST) • Diagramme fonctionnel en séquence (SFC) • Schéma à contacts 984 (LL984) Tous ces langages peuvent être utilisés ensemble dans le même projet. Tous ces langages (sauf LL984) sont conformes à la norme IEC 61131-3. Bibliothèques de blocs Les blocs des nombreuses bibliothèques de blocs comprises dans l'offre Control Expert vont des blocs pour opérations booléennes simples aux blocs de commande de boucles de régulation complexes, en passant par des blocs pour opérations sur chaînes de caractères et tableaux. Par souci de clarté, les différents blocs sont structurés en bibliothèques, elles-mêmes divisées en familles. Ces blocs peuvent être utilisés dans les langages FBD, LD, IL et ST. Eléments d'un programme Un programme peut se composer : • d'une tâche maître (MAST) ; • d'une tâche rapide (FAST) (non disponible pour Momentum) ; • d'une à quatre tâches auxiliaires (AUX) (non disponible pour Modicon M340 et Momentum) ; • des unités de programme auxquelles est affectée l'une des tâches définies (disponibles pour Modicon M580 et Modicon M340) ; 35006145.25 21 Langages de programmation et structure Présentation • de sections auxquelles est affectée l'une des tâches définies ; • de sections dédiées au traitement des événements temporisés (Timerx, non disponible pour Momentum) ; • de sections dédiées au traitement d'événements contrôlés par le matériel (EVTx, non disponible pour Momentum) ; • de sections de sous-programme (SR). Licences logicielles Il existe un seul programme d'installation Control Expert (fichier .iso). En revanche, la version que vous pouvez lancer dépend de la licence installée. Les versions logicielles disponibles sont les suivantes : • Control Expert S • Control Expert L • Control Expert XL • Control Expert XL with M580 Safety Les CPU de sécurité M580 sont incluses à un module complémentaire de sécurité disponible pour Control Expert L et XL. Deux types de licence sont disponibles pour activer Control Expert : • Licence verrouillée pour utilisation unique sur un PC local. • Licence flottante pour plusieurs utilisations sur le nombre autorisé de PC dans un réseau connecté au serveur de licences. Pour plus d'informations sur l'activation et/ou l'enregistrement de licences, consultez EcoStruxure™ Control Expert, Manuel d'installation. Evaluation des performances Le tableau suivant présente les principales caractéristiques des différentes versions logicielles : 22 35006145.25 Présentation Langages de programmation et structure Control Expert S Control Expert L Control Expert L + module complémentaire Safety Control Expert XL Control Expert XL + module complémentaire Safety Langages de programmation Langage à blocs fonction (FBD) + + + + + Langage à contacts (LD) + + + + + Liste d'instructions (IL) + + +(2) + +(2) Littéral structuré (ST) + + +(2) + +(2) Diagramme fonctionnel en séquence SFC + + +(2) + +(2) Schéma à contacts 984 (LL984) + + + + + Bibliothèque standard + + +(2) + +(2) Bibliothèque de régulation + + +(2) + +(2) Bibliothèque de communication + + +(2) + +(2) Bibliothèque de diagnostics + + +(2) + +(2) Bibliothèque de gestion des E/S + + +(2) + +(2) Bibliothèque système + + +(2) + +(2) Bibliothèque de commande de mouvement - + +(2) + +(2) Bibliothèque TCP Open - Facultatif Facultatif(2) Facultatif Facultatif(2) Bibliothèque obsolète + + +(2) + +(2) Bibliothèque MFB + + +(2) + +(2) Bibliothèque Safety - - + - + Bibliothèque de gestion des fichiers de carte mémoire + + +(2) + +(2) Bibliothèques(1) 35006145.25 23 Langages de programmation et structure Présentation Control Expert S Control Expert L Control Expert L + module complémentaire Safety Control Expert XL Control Expert XL + module complémentaire Safety Création et utilisation des structures de données (DDT) + + +(2) + +(2) Création et utilisation des blocs fonction dérivés (DFB) + + + + + Navigateur de projet avec vue structurelle et/ou fonctionnelle + + + + + Gestion des droits d'accès + + + + + Ecrans d'exploitation + + + + + Viewer de diagnostic + + + + + Diagnostics système + + + + + Diagnostics projet + + +(2) + +(2) Outil d'analyse des tendances + + + + + Convertisseur d'applications Convertisseur PL7 Convertisseur PL7 Convertisseur PL7 Convertisseur PL7 Convertisseur PL7 Convertisseur Concept Convertisseur Concept Convertisseur Concept Convertisseur Concept Convertisseur Concept - - - - Informations générales Conversion partielle Gestion de plusieurs stations - Plateformes prises en charge Modicon M340 Toutes les UC Toutes les UC Toutes les UC Toutes les UC Toutes les UC Modicon M580 - BMEP5810•• BMEP5810•• BMEP5810•• BMEP5810•• BMEP5820•• BMEP5820•• BMEP5820•• BMEP5820•• BMEP5830•• BMEP5830•• BMEP5830•• BMEP5830•• BMEH582040 BMEH582040 BMEP5840•• BMEP5840•• BMEP582040S BMEP585040 BMEP585040 BMEH582040S BMEP586040 BMEP586040 BMEH582040 BMEH582040 24 35006145.25 Présentation Langages de programmation et structure Control Expert S Control Expert L Control Expert L + module complémentaire Safety Control Expert XL Control Expert XL + module complémentaire Safety BMEH584040 BMEH584040 BMEH586040 BMEH586040 BMEP582040S BMEP584040S BMEH582040S BMEH584040S BMEH586040S Momentum Premium Quantum Atrium 35006145.25 171CBU78090 171CBU78090 171CBU78090 171CBU78090 171CBU78090 171CBU98090 171CBU98090 171CBU98090 171CBU98090 171CBU98090 171CBU98091 171CBU98091 171CBU98091 171CBU98091 171CBU98091 - Toutes les UC sauf : Toutes les UC sauf : Toutes les UC Toutes les UC P57 554M P57 554M P57 5634M P57 5634M P57 6634M P57 6634M 140CPU31110 140CPU31110 140CPU31110 140CPU31110 140CPU43412 U/A* 140CPU43412 U/A* 140CPU43412 U/A 140CPU43412 U/A 140CPU53414 U/A* 140CPU53414 U/A* 140CPU53414 U/A 140CPU53414 U/A * Mise à niveau avec l'outil OS Loader * Mise à niveau avec l'outil OS Loader 140CPU65150 140CPU65150 140CPU65160 140CPU65160 140CPU65260 140CPU65260 140CPU65860 140CPU65860 140CPU67060 140CPU67060 140CPU67160 140CPU67160 140CPU67260 140CPU67260 140CPU67261 140CPU67261 140CPU67861 140CPU67861 Toutes les UC Toutes les UC - - Toutes les UC Toutes les UC 25 Langages de programmation et structure Présentation Control Expert S Control Expert L Control Expert L + module complémentaire Safety Control Expert XL Control Expert XL + module complémentaire Safety + + + + + Liens hypertexte + + + + + Serveur Control Expert (pour OFS, UAG) + + + + + Simulateur Ouverture Composants logiciels inclus dans le progiciel Documentation sous forme d'aide contextuelle et en version PDF + + + + + Outil OS Loader + Micrologiciel matériel + + + + + + Disponible - Non disponible (1) la disponibilité des blocs dépend des plateformes matérielles. (2) disponible sur tous les automates sauf les plateformes M580 Safety. Convention de nommage Dans le reste de ce document, « Control Expert » est le terme général désignant « Control Expert S », « Control Expert L », et « Control Expert XL », avec ou sans module complémentaire Safety. Interface utilisateur Présentation L'interface utilisateur comporte plusieurs fenêtres et barres d'outils configurables. 26 35006145.25 Présentation Langages de programmation et structure Interface utilisateur : Légende : Numéro Description 1 Barre de menus (voir EcoStruxure™ Control Expert, Modes de fonctionnement) 2 Barre d'outils (voir EcoStruxure™ Control Expert, Modes de fonctionnement) 3 Navigateur de projet (voir EcoStruxure™ Control Expert, Modes de fonctionnement) 4 Fenêtre d'éditeur (éditeurs de langage de programmation, éditeur de données, etc.) 35006145.25 27 Langages de programmation et structure Présentation Numéro Description 5 Onglets de registre pour l'accès direct à la fenêtre d'éditeur 6 fenêtre d'informations (voir EcoStruxure™ Control Expert, Modes de fonctionnement) (informations relatives aux erreurs qui se sont produites, suivi des signaux, fonctions d'importation, etc.) 7 Barre d'état (voir EcoStruxure™ Control Expert, Modes de fonctionnement) Navigateur du projet Introduction Le navigateur de projet affiche tous les paramètres du projet. Il peut se présenter sous forme structurelle (topologique) et/ou fonctionnelle. Vue structurelle Dans l'affichage structurel, le navigateur de projet propose entre autres les fonctions suivantes : 28 35006145.25 Présentation Langages de programmation et structure • création et suppression d'éléments • affichage de symboles pour les sections et Program Units protégées • symbole de section indiquant le langage de programmation (symbole grisé pour une section vide) • affichage des propriétés des éléments • création de répertoires utilisateur • démarrage des différents éditeurs • démarrage de la fonction import/export Vue fonctionnelle Dans l'affichage fonctionnel, le navigateur de projet propose entre autres les fonctions suivantes : • création de modules fonctionnels • insertion de Program Units, sections, tables d'animation, etc. par glisser-lâcher à partir de l'affichage structurel • création d'éléments de programme (Program Units, sections) • affichage des propriétés des éléments • démarrage des différents éditeurs • symbole de section indiquant le langage de programmation et d'autres attributs Formats de fichier d'application utilisateur et de projet Présentation Control Expert gère quatre types de fichiers pour le stockage des applications utilisateur et des projets. Chaque type de fichier peut être utilisé en fonction de conditions précises. Les types de fichiers sont reconnaissables à leur extension : • *.STU : fichier • *.STA : fichier d'archive d'application • *.XEF : fichier d'échange d'application • *.ZEF : fichier d'échange d'application complète 35006145.25 29 Langages de programmation et structure Présentation Fichier STU Ce type de fichier est utilisé pour les tâches quotidiennes. Ce format est utilisé par défaut à l'ouverture ou à l'enregistrement d'un projet utilisateur. Le tableau suivant présente les avantages et les inconvénients du fichier STU : Avantages Inconvénients • Le projet peut être enregistré à toute étape (cohérente ou non) à l'aide de la commande par défaut. • Peu pratique lors du transfert du projet, en raison de la taille importante du fichier. • L'enregistrement et l'ouverture des projets est rapide et toute la base de données interne est présente dans le fichier. • Non compatible lors de la mise à niveau de Control Expert. • Création automatique de fichiers BAK¹ ¹ Chaque fois qu'un fichier STU est enregistré, une copie de sauvegarde est également créée ; elle porte le même nom que le fichier STU, avec l'extension de fichier BAK. Il est possible, en remplaçant l'extension de fichier BAK par STU, de restaurer l'état du projet lors de sa dernière sauvegarde. Les fichiers BAK sont enregistrés dans le même dossier que le fichier du projet STU. Fichier STA Ce type de fichier est utilisé pour archiver les projets et ne peut être créé qu'après la génération du projet. Ce type de fichier est compatible avec les versions ultérieures de Control Expert. Il existe deux manières de créer un fichier STA : • Pour créer un fichier STA manuellement, sélectionnez Fichier > Archiver dans la fenêtre principale de Control Expert. • Un fichier STA est créé automatiquement chaque fois que le projet est enregistré sous forme de fichier STU dans son état généré. NOTE: le fichier STA créé automatiquement est enregistré dans le même répertoire et avec le même nom de fichier que le fichier de projet STU, à l'exception de l'extension « .Auto » ajoutée au nom de fichier. Si un fichier STA automatique existe déjà, il est remplacé sans qu'une confirmation soit demandée. NOTE: si le projet est à l'état généré, l'enregistrement d'un fichier STU par l'intermédiaire d'un serveur Control Expert crée également un fichier STA. Le tableau suivant présente les avantages et les inconvénients du fichier STA : 30 35006145.25 Présentation Langages de programmation et structure Avantages Inconvénients • Enregistrement rapide du projet. • Ne peut être créé qu'après la génération du projet. • Les projets peuvent être partagés par courrier électronique ou à l'aide de supports mémoire de petite taille. • L'ouverture du projet est longue, car le fichier de projet est régénéré avant le fonctionnement. • Possibilité de se connecter à l'automate en mode connecté égal après l'ouverture du projet sur une nouvelle version de Control Expert. Pour plus d'informations, reportezvous à la section Connexion/Déconnexion (voir EcoStruxure™ Control Expert, Modes de fonctionnement). • Permettre les modifications en ligne avec l'automate sans téléchargement préalable sur l'automate. • Un fichier STA généré est compatible avec toutes les versions de Control Expert. NOTE: pour charger un fichier STA créé avec une autre version de Control Expert, toutes les fonctions utilisées dans l'application doivent être prises en charge par la version actuelle. Création de fichiers d'archive (*.STA) Le tableau suivant décrit la procédure permettant de générer des fichiers *.STA : Etape Action 1 Lancez la version courante du logiciel Control Expert : Démarrer 2 > Programmes > EcoStruxure Control Expert > Control Expert. Ouvrez le projet (fichier STU) : 1. Fichier > Ouvrir. 2. Sélectionnez le projet (fichier *.STU). 3. Cliquez sur Ouvrir. 3 35006145.25 Cliquez sur Fichier > Archiver (voir la remarque ci-après). 31 Langages de programmation et structure Présentation Etape Action 4 Choisissez l'emplacement du fichier à enregistrer. N'enregistrez pas les fichiers dans le répertoire Schneider Electric par défaut : C:\Program Files\Schneider Electric\Control Expert Les fichiers enregistrés dans ce répertoire peuvent être supprimés lors de l'installation de Control Expert. 5 Cliquez sur Enregistrer. 6 Notez l'emplacement du fichier *.STA sur le terminal car il sera nécessaire pour la récupération du projet. NOTE: la fonction Archiver n'est disponible qu'aux conditions suivantes : • Le projet a été généré. • dans Outils > Options du projet, section Informations d'upload, si l'option Avec est sélectionnée, au moins l'une des deux cases situées en dessous doit être cochée. Restauration de fichiers d'archive (*.STA) La restauration consiste à importer des fichiers *.STA précédemment créés et stockés. Les fichiers *.STA sont utilisés quand il est impossible d'arrêter l'automate. Pour restaurer des fichiers *.STA, suivez la procédure ci-après pour chaque projet : Etape Action 1 Lancez Control Expert : Démarrer 2 > Programmes > EcoStruxure Control Expert > Control Expert. Ouvrez le fichier *.STA en sélectionnant Fichier > Ouvrir. Le type de fichier sélectionné doit être Fichier d'archive (STA). 32 3 Cliquez sur le bouton Ouvrir. 4 Enregistrez le projet au format *.STU. 35006145.25 Présentation Langages de programmation et structure Fichier XEF Ce type de fichier est utilisé pour exporter des projets dans un format source XML et peut être créé à toutes les étapes du projet. Le tableau suivant présente les avantages et les inconvénients du fichier XEF : Avantages • Le format source XML garantit la compatibilité du projet avec toutes les versions de Control Expert. Inconvénients • Taille moyenne. • L'ouverture du projet prend du temps car le projet est importé avant de fonctionner. • La génération du projet est obligatoire pour réassembler le code binaire du projet. • Le fonctionnement avec l'automate nécessite la recompilation de tout le projet et son téléchargement sur le processeur. • Il est impossible de connecter l'automate en mode connecté égal avec un fichier XEF. Pour plus d'informations, reportez-vous à la section Connexion/Déconnexion (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Fichier ZEF Ce type de fichier permet d'exporter des projets avec une configuration DTM globale et il peut être créé à n'importe quel stade d'un projet. Pour plus d'informations sur l'exportation/ importation de projets, reportez-vous au chapitre Importation / Exportation (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Le tableau suivant présente les avantages et les inconvénients des fichiers XEF : Avantages • 35006145.25 Le format ZEF garantit la compatibilité du projet avec toutes les versions de Control Expert. Inconvénients • Taille moyenne. • L'ouverture du projet prend du temps car le projet est importé avant de fonctionner. 33 Langages de programmation et structure Avantages Présentation Inconvénients • La génération du projet est obligatoire pour réassembler le code binaire du projet. • Le fonctionnement avec l'automate nécessite la recompilation de tout le projet et son téléchargement sur le processeur. • La connexion à l'automate en mode connecté égal avec un fichier ZEF est impossible. Pour plus d'informations, reportez-vous à la section Connexion/Déconnexion (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Création de fichiers d'échange d'application (*.ZEF ou *. XEF) Le tableau suivant décrit la procédure permettant de générer des fichiers *.ZEF ou *.XEF : Etape Action 1 Lancez la version courante du logiciel Control Expert : Démarrer 2 > Programmes > EcoStruxure Control Expert > Control Expert. Ouvrez le projet (fichier STU) : 1. Fichier > Ouvrir. 2. Sélectionnez le projet (fichier *.STU). 3. Cliquez sur Ouvrir. > Exporter le projet. 3 Fichier 4 Choisissez l'emplacement du fichier à enregistrer. N'enregistrez pas les fichiers dans le répertoire Schneider Electric par défaut : C:\Program Files\Schneider Electric\Control Expert Les fichiers enregistrés dans ce répertoire peuvent être supprimés lors de l'installation de Control Expert. 34 5 Cliquez sur Exporter et sélectionnez le fichier d'exportation au format (*.ZEF ou *.XEF). 6 Notez l'emplacement où vous avez enregistré le fichier *.ZEF ou *.XEF sur le poste de travail : il sera nécessaire pour la restauration du projet. 35006145.25 Présentation Langages de programmation et structure Restauration de fichiers d'échange d'application (*.ZEF ou *.XEF) La restauration consiste à importer les fichiers *.ZEF ou *.XEF précédemment créés et stockés. L'importation d'un fichier ZEF ou XEF implique une régénération du projet. Pour restaurer des fichiers *.ZEF ou *.XEF, suivez la procédure ci-après pour chaque projet : Etape Action 1 Lancez Control Expert : Démarrer 2 > Programmes > EcoStruxure Control Expert > Control Expert. Ouvrez le fichier *.ZEF ou *.XEF en choisissant Fichier > Ouvrir. Le type de fichier sélectionné doit être *.ZEF ou *.XEF. 3 Cliquez sur le bouton Ouvrir. 4 Enregistrez le projet au format *.STU. Compatibilité Les fichiers STU ne sont pas compatibles d'une version de à l'autre de Control Expert. Afin d'utiliser un projet avec d'autres versions de Control Expert, les utilisateurs doivent stocker au choix : • Fichiers d'archive d'application (STA) : Avec le fichier STA, il est possible de réutiliser le projet généré courant avec la nouvelle version de Control Expert installée sur l'ordinateur. • Fichiers d'échange d'application (ZEF) : Les fichiers ZEF doivent être utilisés si le projet a été généré. • Fichiers d'échange d'application (XEF) : Les fichiers XEF doivent être utilisés si le projet a été généré. Comparaison des types de fichiers Le tableau suivant récapitule les 4 types de fichiers : 35006145.25 35 Langages de programmation et structure Présentation Types de fichiers STU STA XEF ZEF Applications binaires Oui Oui Non Non Applications sources Oui Oui Oui Oui Base de données interne Oui Non Non Non Taille de fichier 10, voir (1) 0,03, voir (1) 3 3 Temps d'enregistrement (comparatif) 10 1,6 6 6 Temps d'ouverture (comparatif) 1 10 10 10 Connexion à l'automate en mode connecté égal Possible Possible Impossible, voir (2) Impossible, voir (2) Sauvegarde du fichier Possible Possible, voir (3) Possible Possible (1) : Fichiers compressés. (2) : Le projet doit d'abord être chargé sur l'automate. (3) : Le projet ne peut être enregistré que s'il a été généré. NOTE: les valeurs de la table représentent le rapport entre les types de fichiers, la valeur du STU tenant lieu de référence. Configurateur Fenêtre du configurateur La fenêtre du configurateur est divisée en deux parties : • Catalogue Un module peut être sélectionné dans cette fenêtre et déplacé directement à l'aide de la souris vers la représentation graphique de la configuration de l'automate. • 36 Représentation graphique de la configuration de l'automate 35006145.25 Présentation Langages de programmation et structure Illustration de la fenêtre du configurateur : Selon la position du pointeur de la souris, l'un des menus contextuels suivants est appelé : • • • Si le pointeur de la souris est sur l'arrière-plan, vous pouvez notamment : ◦ modifier l'UC, ◦ sélectionner divers facteurs de zoom. Si le pointeur de la souris est sur un module, vous pouvez notamment : ◦ accéder aux fonctions d'édition (supprimer, copier, déplacer), ◦ ouvrir la configuration d'un module afin de définir les paramètres spécifiques à ce module, ◦ afficher les propriétés d'E/S et le bilan électrique. Si le pointeur de la souris est sur un emplacement vide, vous pouvez notamment : ◦ insérer un module du catalogue, ◦ insérer un module préalablement copié, avec ses propriétés définies. Configuration de module La fenêtre de configuration de module (accessible via le menu contextuel de module ou un double-clic sur le module) permet de configurer le module. Font notamment partie de la 35006145.25 37 Langages de programmation et structure Présentation configuration la sélection de la voie, la sélection de la fonction pour la voie choisie, l'affectation d'adresses de mémoire State RAM (Quantum seulement), etc. Fenêtre de configuration d'un module E/S Premium : Propriétés de module La fenêtre des propriétés de module (accessible via le menu contextuel des modules) affiche les propriétés des modules telles que la consommation électrique, le nombre de points d'E/S (Premium seulement), etc. 38 35006145.25 Présentation Langages de programmation et structure La fenêtre des propriétés de module dédiée à l'alimentation indique le bilan électrique du rack : Configuration réseau La fenêtre de configuration réseau est accessible via le dossier Communication. 35006145.25 39 Langages de programmation et structure Présentation Configuration réseau : Les fenêtres de configuration réseau permettent entre autres d'effectuer les tâches suivantes : 40 • Création de réseaux • Analyse de réseau • Impression de la configuration réseau 35006145.25 Présentation Langages de programmation et structure Fenêtre de configuration d'un réseau : A l'issue de la configuration, le réseau est affecté à un module de communication. Editeur de données Introduction L'éditeur de données propose les fonctions suivantes : • déclaration d'instances de variable, • définition de types de données dérivés (DDT), • définition de types de données dérivés d'équipement (DDT d'équipement), • déclaration d'instance de blocs fonction élémentaires et dérivés (EFB/DFB), • définition des paramètres de blocs fonction dérivés (DFB). Les fonctions suivantes sont disponibles dans tous les onglets de l'éditeur de données : 35006145.25 41 Langages de programmation et structure • Présentation Copier, Couper et Coller avec les restrictions suivantes : ◦ La commande de menu Edition > Couper est grisée dans tous les onglets. ◦ L'option Couper accessible par un clic droit sur une variable est grisée dans tous les onglets. ◦ Les commandes de menu Edition > Copier et Edition > Coller ne sont pas grisées, mais ne fonctionnent pas dans les onglets Types de DDT et Types de DFB. ◦ Les options Copier et Coller accessibles par un clic droit sur une variable sont grisées dans les onglets Types de DDT, Blocs fonction et Types de DFB. • étendre/réduire des données structurées, • trier en fonction du type, du symbole, de l'adresse, etc., • Filtre • insérer, supprimer et déplacer des colonnes, • glisser-lâcher entre l'éditeur de données et les éditeurs de programme, • annuler la dernière modification, • exporter/importer des données. Les variables L'onglet Variables permet de déclarer les variables. Onglet Variables : Les fonctions disponibles sont les suivantes : 42 • définition d'un symbole pour les variables, • affectation de types de données, • boîte de dialogue de sélection spécifique pour les types de données dérivés, • affectation d'une adresse, • symbolisation automatique des variables E/S, 35006145.25 Présentation Langages de programmation et structure • affectation d'une valeur initiale, • saisie d'un commentaire, • affichage de toutes les propriétés d'une variable dans une boîte de dialogue distincte dédiée aux propriétés. Types de données dépendant du matériel (IODDT) Les IODDT servent à affecter la structure E/S complète d'un module à une variable unique. Affectation des IODDT : Les fonctions disponibles sont les suivantes : • Les IODDT permettent d'affecter des structures E/S complètes à une variable unique. • Après la saisie de l'adresse des variables, le mot ou bit d'entrée/sortie est automatiquement affecté à tous les éléments de la structure. • La possibilité d'affecter ultérieurement des adresses permet de créer facilement des modules standard dont les adresses ne sont définies que plus tard. • Un nom d'alias (pseudonyme) peut être attribué à tous les éléments d'une structure IODDT. 35006145.25 43 Langages de programmation et structure Présentation Types de données dérivées d'équipement dépendant du matériel Le DDT d'équipement est un DDT prédéfini qui décrit les éléments de langage d'E/S d'un module d'E/S. Ce type de données est représenté dans une structure qui dépend des capacités du module d'E/S. Cette structure fournit les bits et les vues de registres lorsque l'IODDT comprend à la fois des bits extraits et des registres. Dans ce cas, un bit extrait n'est pas considéré comme un élément enfant de la variable de registre, mais directement comme champ de la structure de DDT d'équipement. Lors de l'ajout d'un module Modicon M340 à une station d'E/S distante M340, le logiciel Control Expert crée automatiquement l'instance de DDT d'équipement associée. Cette instance est déduite de l'IODDT (les autres objets non mappés comme %KW sont inaccessibles). Chaque module d'E/S est associé à une seule instance DDT d'équipement implicite : • Des instances de DDT d'équipement implicites sont créées par défaut lors de l'insertion des équipements, puis actualisées automatiquement par l'automate. Elles contiennent l'état des modules, les bits de fonctionnement des modules et des voies, les valeurs des entrées des modules, les valeurs des sorties des modules, etc. Le DDT d'équipement implicite peut être : • lié à un équipement (Géré) • dissocié de tout équipement (Non géré) NOTE: L'IODDT et l'adresse topologique (voir Modicon M340 - CANopen - Manuel utilisateur) ne sont plus pris en charge avec les modules d'E/S distantes Modicon M340. Toutes les informations (bits et registres) relatives à une voie sont accessibles directement en tant que champs de la structure de DDT d'équipement. NOTE: Les structures explicites facultatives sont des DDT explicites créés sur demande via l'éditeur de données et utilisés via un bloc fonction pour être actualisés. NOTE: L'éditeur de données propose des types de DDT explicites facultatifs pour prendre en charge les données d'état ou de commande utilisées par les échanges explicites sur une voie d'un module d'E/S dans une station d'E/S distante M340. Les instances de DDT explicites sont créées manuellement par l'utilisateur dans l'éditeur de données et utilisées comme paramètre d'entrée ou de sortie avec le bloc fonction qui gère l'échange explicite (QXREAD_STS_QX (voir EcoStruxure™ Control Expert Gestion des E/S - Bibliothèque de blocs), QXWRITE_CMD_QX (voir EcoStruxure™ Control Expert) - Gestion des E/S - Bibliothèque de blocs)). 44 35006145.25 Présentation Langages de programmation et structure Types de Données Dérivés (DDT) L'onglet Types DDT permet de définir les types de données dérivés (DDT). Un type de données dérivé est la définition d'une structure ou d'un tableau de tout type de données déjà défini (élémentaire ou dérivé). Onglet DDT types : Les fonctions disponibles sont les suivantes : • définition de DDT imbriqués (max. 15 niveaux), • définition de tableaux ayant jusqu'à six dimensions, • affectation d'une valeur initiale, • affectation d'une adresse, • saisie d'un commentaire. • analyse du type de données dérivé, • affectation du type de données dérivé à une bibliothèque, • affichage de toutes les propriétés d'un type de données dérivé dans une boîte de dialogue distincte dédiée aux propriétés. • Un nom d'alias (pseudonyme) peut être attribué à tous les éléments d'un tableau ou d'une structure de DDT. 35006145.25 45 Langages de programmation et structure Présentation Blocs fonction L'onglet Blocs fonction est utilisé pour la déclaration d'instance de blocs fonction élémentaires et dérivés (EFB/DFB). Onglet Blocs fonction : Les fonctions disponibles sont les suivantes : • affichage des blocs fonction utilisés dans le projet, • définition d'un symbole pour les blocs fonction utilisés dans le projet, • activation automatique des symboles définis dans le projet, • saisie d'un commentaire relatif aux blocs fonction, • affichage de tous les paramètres (entrées/sorties) des blocs fonction, • affectation d'une valeur initiale aux entrées/sorties de bloc fonction. Types DFB L'onglet Types DFB est utilisé pour définir les paramètres des blocs fonction dérivés (DFB). La logique des DFB est créée directement dans une ou plusieurs sections des langages de programmation FBD, LD, IL ou ST. 46 35006145.25 Présentation Langages de programmation et structure Onglet Types DFB : Les fonctions disponibles sont les suivantes : • définition du nom des DFB, • définition de tous les paramètres des DFB, tels que les : ◦ Entrées ◦ Sorties ◦ VAR_IN_OUT (entrées/sorties combinées) ◦ Variables privées ◦ Variables publiques • affectation du type de données aux paramètres des DFB, • boîte de dialogue de sélection spécifique pour les types de données dérivés, • affectation d'une valeur initiale, • imbrication de DFB, • utilisation de plusieurs sections dans un DFB, • saisie d'un commentaire relatif aux DFB et paramètres des DFB, • analyse des DFB définis, • gestion de versions, • affectation des DFB définis à une bibliothèque. 35006145.25 47 Langages de programmation et structure Présentation Utilisation des données Les instances et types de données créés avec l'éditeur de données peuvent être insérés dans les éditeurs de langage de programmation en fonction du contexte. Les fonctions disponibles sont les suivantes : • accès à tous les éditeurs de langage de programmation, • affichage des données compatibles uniquement, • affichage des données en fonction du champ d'application, • affichage des fonctions, blocs fonction, procédures et types de données dérivés classés en fonction de leur appartenance aux bibliothèques, • déclaration d'instance possible pendant la programmation. Boîte de dialogue de sélection des données : 48 35006145.25 Présentation Langages de programmation et structure Modifications en mode connecté Il est possible de modifier le type d'une variable ou d'une instance de bloc fonction (FB) déclarée dans l'application ou dans un bloc fonction dérivé (DFB) directement dans le mode connecté (voir EcoStruxure™ Control Expert - Modes de fonctionnement). Cela signifie qu'il n'est pas nécessaire d'arrêter l'application pour effectuer ce type de modification. Ces opérations peuvent être réalisées dans l'éditeur de données ou dans l'éditeur de propriétés comme en mode déconnecté. Lors du changement du type d'une variable, la nouvelle valeur de la variable à modifier dépend de son type : • Dans le cas d'une variable non affectée, la variable prend sa valeur initiale, si elle existe. Sinon, elle prend la valeur par défaut. • Dans le cas d'une variable affectée, la variable redémarre avec la valeur initiale, si elle existe. Sinon, elle conserve la valeur binaire courante. ATTENTION FONCTIONNEMENT IMPRÉVU DE L'APPLICATION Avant d'appliquer le changement de type de variable, vérifiez l'effet de la nouvelle valeur sur l'exécution de l'application. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. NOTE: Il n'est pas possible de modifier le type d'une variable déclarée comme type de données dérivé (DDT) dans le mode connecté (voir EcoStruxure™ Control Expert Modes de fonctionnement). Pour permettre la génération d'une telle modification, l'application doit être basculée en mode déconnecté (voir EcoStruxure™ Control Expert Modes de fonctionnement). Restrictions sur les modifications en mode connecté Dans les cas suivants, la modification en mode connecté d'une variable ou d'un bloc fonction (FB) n'est pas autorisée : • Si la variable est utilisée comme données globales de réseau, la modification du type en mode connecté n'est pas autorisée. 35006145.25 49 Langages de programmation et structure • Présentation Si le FB courant ne peut pas être retiré en mode connecté, ou si un nouveau FB ne peut pas être ajouté en mode connecté, la modification du type de ce FB en mode connecté n'est pas autorisée. En effet, certains blocs fonction élémentaires (EFB) tels que les blocs fonction standard (SFB) ne peuvent pas être ajoutés ou retirés en mode connecté. Par conséquent, la modification d'une instance d'EFB en une instance de SFB est impossible, et réciproquement. Dans ces deux cas, la boîte de dialogue suivante apparaît : NOTE: En raison de ces limites, si un bloc fonction dérivé (DFB) contient au moins une instance d'un SFB, il n'est pas possible d'ajouter ou de supprimer une instance de ce DFB en mode connecté (voir EcoStruxure™ Control Expert - Modes de fonctionnement). Editeur de données de l'unité de programme Introduction NOTE: L'éditeur de données de l'unité de programme s'applique exclusivement à l'unité de programme dont il dépend. L'éditeur de données de l'unité de programme propose les fonctions suivantes : • Déclaration des variables associées à l'unité de programme • Déclaration d'instance de blocs fonction élémentaires et dérivés (EFB/DFB) utilisés dans l'unité de programme • Gestion des paramètres de l'unité de programme Les fonctions suivantes sont disponibles dans tous les onglets de l'éditeur de données : 50 35006145.25 Présentation • Langages de programmation et structure Copier, Couper et Coller avec les restrictions suivantes : ◦ La commande de menu Edition > Couper est grisée dans tous les onglets. ◦ L'option Couper accessible par un clic droit sur une variable est grisée dans tous les onglets. ◦ Les commandes de menu Edition > Copier et Edition > Coller ne sont pas grisées, mais ne fonctionnent pas dans l'onglet Interface. ◦ Les options Copier et Coller accessibles par un clic droit sur une variable sont grisées dans les onglets Interface et Blocs fonction. • étendre/réduire des données structurées, • trier par symbole, type, etc., • filtrer, • insérer, supprimer et déplacer des colonnes, • glisser-lâcher entre l'éditeur de données de l'unité de programme et les éditeurs de programme, • annuler la dernière modification, • exporter/importer des données. Les variables associées à une unité de programme peuvent être : • privées : accessibles en lecture et écriture seulement dans cette unité de programme, • publiques : accessibles en lecture et écriture en dehors de cette unité de programme, • des paramètres (entrées, sorties, entrées/sorties) : associés à des variables publiques (depuis une autre unité de programme) ou des variables globales. Onglet Interface 35006145.25 51 Langages de programmation et structure Présentation L'onglet Interface permet de gérer : • les paramètres d'entrée, de sortie et d'entrée/sortie, • les variables publiques, • les variables externes. Les fonctions disponibles sont les suivantes : • affectation d'un paramètre effectif (variable globale ou variable publique d'une autre unité de programme) aux paramètres d'entrée, de sortie et d'entrée/sortie, • affectation d'une valeur initiale, • définition d'un symbole pour les paramètres et variables, • affectation de types de données, • affichage de toutes les propriétés d'une variable dans une boîte de dialogue distincte dédiée aux propriétés, • saisie d'un commentaire. Variables L'onglet Variables permet de déclarer les variables utilisées par l'unité de programme : Les fonctions disponibles sont les suivantes : 52 • définition d'un symbole pour les variables, • affectation de types de données, • affectation de variables aux paramètres de l'unité de programme (Paramètre effectif), • déclaration de la nature des variables, • boîte de dialogue de sélection spécifique pour les types de données, • affectation d'une valeur initiale, • saisie d'un commentaire, 35006145.25 Présentation • Langages de programmation et structure affichage de toutes les propriétés d'une variable dans une boîte de dialogue distincte dédiée aux propriétés. Blocs fonction L'onglet Blocs fonction est utilisé pour la déclaration d'instance de blocs fonction élémentaires et dérivés (EFB/DFB). Onglet Blocs fonction : Les fonctions disponibles sont les suivantes : • affichage des blocs fonction utilisés dans l'unité de programme, • définition d'un symbole pour les blocs fonction utilisés dans l'unité de programme, • activation automatique des symboles définis dans l'unité de programme, • saisie d'un commentaire concernant les blocs fonction, • affichage de tous les paramètres (entrées/sorties) des blocs fonction, • affectation de valeurs initiales aux entrées/sorties des blocs fonction. Utilisation des données de l'unité de programme Les instances et variables créées avec l'éditeur de données du programme peuvent être insérées dans les éditeurs de langage de programmation en fonction du contexte, depuis la boîte de dialogue Sélection d'instance. NOTE: les instances et variables peuvent également être créées à la volée dans les différents éditeurs de langage. 35006145.25 53 Langages de programmation et structure Présentation Modifications en mode connecté Il est possible de modifier le type d'une variable ou d'une instance de bloc fonction (FB) déclarée dans l'application ou dans un bloc fonction dérivé (DFB) directement en mode connecté (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Cela signifie qu'il n'est pas nécessaire d'arrêter l'application pour effectuer ce type de modification. Ces opérations peuvent être réalisées dans l'éditeur de données ou dans l'éditeur de propriétés comme en mode déconnecté. Lors du changement du type d'une variable, la nouvelle valeur de la variable à modifier dépend de son type : • Dans le cas d'une variable non affectée, la variable prend sa valeur initiale, si elle existe. Sinon, elle prend la valeur par défaut. • Dans le cas d'une variable affectée, la variable redémarre avec la valeur initiale, si elle existe. Sinon, elle conserve la valeur binaire courante. ATTENTION COMPORTEMENT IMPREVU DE L'APPLICATION Avant d'appliquer le changement de type de variable, vérifiez l'effet de la nouvelle valeur sur l'exécution de l'application. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. NOTE: Lors de l'utilisation d'une référence (REF_TO) comme paramètre effectif, si le paramètre effectif est supprimé, la valeur REF_TO dans l'unité de programme est mise à jour pour prendre sa valeur initiale après l'opération INIT du contrôleur. Restrictions sur les modifications en mode connecté Dans les cas suivants, la modification en mode connecté d'une variable ou d'un bloc fonction (FB) n'est pas autorisée : 54 • Si la variable est utilisée comme données globales de réseau, la modification du type en mode connecté n'est pas autorisée. • Si le FB courant ne peut pas être retiré en mode connecté, ou si un nouveau FB ne peut pas être ajouté en mode connecté, la modification du type de ce FB en mode connecté n'est pas autorisée. En effet, certains blocs fonction élémentaires (EFB) tels que les blocs fonction standard (SFB) ne peuvent pas être ajoutés ou retirés en mode connecté. Par conséquent, la modification d'une instance d'EFB en une instance de SFB est impossible, et réciproquement. 35006145.25 Présentation Langages de programmation et structure Dans ces deux cas, la boîte de dialogue suivante apparaît : NOTE: en raison de ces limites, si un bloc fonction dérivé (DFB) contient au moins une instance d'un SFB, il n'est pas possible d'ajouter ou de retirer une instance de ce DFB en mode connecté (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Editeur de programmes Introduction Un programme peut se composer de : • tâches exécutées de manière cyclique ou périodique. Les tâches sont elles-mêmes composées de : • ◦ unités de programme (uniquement pour Modicon M580 et M340), ◦ sections, ◦ sous-programmes. traitements événementiels exécutés prioritairement à toutes les autres tâches. Les traitements événementiels sont eux-mêmes composés de : ◦ sections de traitement d'événements à commande temporelle, ◦ sections de traitement d'événements à commande matérielle. 35006145.25 55 Langages de programmation et structure Présentation Exemple de programme : Tâches Control Expert gère des tâches multiples (multitâche). Les tâches sont exécutées en parallèle indépendamment les unes des autres, avec les niveaux de priorité d'exécution commandés par l'automate. Les tâches peuvent être adaptées à des exigences diverses et constituent ainsi un instrument puissant de structuration du projet. Un projet multitâche peut se composer : • d'une tâche maître (MAST) L'exécution de la tâche maître est cyclique ou périodique. Constituant la partie principale du programme, elle est exécutée de manière séquentielle. 56 35006145.25 Présentation • Langages de programmation et structure d'une tâche rapide (FAST) L'exécution de la tâche rapide est périodique. Son niveau de priorité est plus élevé que celui de la tâche maître. La tâche rapide est destinée aux traitements de courte durée et périodiques. • 1 à 4 tâches auxiliaires (AUX) L'exécution des tâches auxiliaires est périodique. Destinées aux traitements plus lents, ce sont les tâches les moins prioritaires. Le projet peut aussi se composer d'une seule tâche. Dans ce cas, seule la tâche maître est active. Traitement événementiel Le traitement événementiel s'effectue dans des sections dites d'événement. Ces sections d'événement sont exécutées en priorité par rapport aux sections de toutes les autres tâches. Elles conviennent donc aux traitements demandant des délais de réaction très courts suite au déclenchement de l'événement. Les types de section disponibles pour le traitement événementiel sont les suivants : • section de traitement d'événements à commande temporelle (section Timerx) • section de traitement d'événements à commande matérielle (section Evtx) Les langages de programmation suivants sont pris en charge : • FBD (langage à blocs fonction) • LD (langage à contacts) • IL (liste d'instructions) • ST (littéral structuré) Unités de programme Les unités de programme sont des programmes autonomes dans lesquels est créée la logique du projet. Les unités de programme sont exécutées dans leur ordre de représentation dans le navigateur de projet (vue structurelle). Une unité de programme est reliée à une tâche. Une unité de programme ne peut pas appartenir à plusieurs tâches en même temps. L'unité de programme inclut : • des variables publiques et locales, 35006145.25 57 Langages de programmation et structure • Présentation des sections, Les langages de programmation suivants sont pris en charge : • ◦ FBD (langage à blocs fonction) ◦ LD (langage à contacts) ◦ SFC (diagramme fonctionnel en séquence), seulement pour les sections de l'unité de programme appartenant à la tâche MAST ◦ IL (liste d'instructions) ◦ ST (littéral structuré) des tables d'animation. des sections, Les sections sont des programmes autonomes dans lesquels est créée la logique du projet. Les sections sont exécutées dans leur ordre de représentation dans le navigateur de projet (vue structurelle). Une section est reliée à une tâche. Une section ne peut pas appartenir à plusieurs tâches en même temps. Les langages de programmation suivants sont pris en charge : • FBD (langage à blocs fonction) • LD (langage à contacts) • SFC (diagramme fonctionnel en séquence), seulement pour les sections de la tâche MAST • IL (liste d'instructions) • ST (littéral structuré) Sous-programmes Les sous-programmes sont créés en tant qu'unités distinctes dans des sections de sousprogramme. Les appels aux sous-programmes s'effectuent à partir des sections ou d'un autre sousprogramme. Une imbrication de huit niveaux maximum est possible. Un sous-programme ne peut pas s'appeler lui-même (non récursif). 58 35006145.25 Présentation Langages de programmation et structure Les sous-programmes sont affectés à une tâche. Un sous-programme ne peut pas être appelé par différentes tâches. Les langages de programmation suivants sont pris en charge : • FBD (langage à blocs fonction) • LD (langage à contacts) • IL (liste d'instructions) • ST (littéral structuré) Langage à blocs fonction (FBD) Introduction L'éditeur FBD permet la programmation graphique de blocs fonction conformément à la norme CEI 61131-3. Représentation Représentation d'une section FBD : 35006145.25 59 Langages de programmation et structure Présentation Objets Les objets du langage de programmation FBD (langage à blocs fonction) offrent des aides permettant de structurer une section en un ensemble de : • Fonctions élémentaires (EF) • Blocs fonction élémentaires (EFB) • Blocs fonction dérivés (DFB) • Procédures • Appels de sous-programme • Sauts • Liaisons • Paramètres réels • Objets texte pour commenter la logique Propriétés Une section FBD est placée sur une grille. Une unité de grille comprend 10 points de trame. Une unité de trame est l'espace le plus petit possible entre deux objets d'une section FBD. Le langage FBD n'est pas basé sur les cellules. Les objets sont toutefois ajustés sur les points de trame. Une section FBD peut être configurée en nombre de cellules (points de trame horizontaux et points de trame verticaux). Le programme peut être saisi à l'aide de la souris ou du clavier. Aides à la saisie L'éditeur FBD propose les facilités de saisie suivantes : 60 • Barres d'outils permettant un accès rapide et facile aux objets souhaités • Vérification syntaxique et sémantique pendant l'écriture du programme ◦ Affichage en bleu des fonctions et blocs fonction incorrects ◦ Soulignement en rouge des mots inconnus (ex : variables non déclarées) ou des types de données inappropriés. ◦ Description rapide des erreurs dans une info-bulle 35006145.25 Présentation • Langages de programmation et structure Les informations sur les variables et les broches peuvent être affichées dans une infobulle ◦ Type, nom, adresse et commentaire d'une variable/expression ◦ Type, nom et commentaire d'une broche FFB • Affichage en tableau des FFB • Saisie et affichage des paramètres réels sous forme de symboles ou d'adresses topologiques • Différents facteurs de zoom • Suivi de liens • Optimisation des chemins de liaison • Affichage de fenêtres de vérification Langage LD (schéma à contacts) Présentation L'éditeur LD permet la programmation graphique de schémas à contacts conformément à la norme CEI 61131-3. 35006145.25 61 Langages de programmation et structure Présentation Représentation Représentation d'une section LD : Objets Les objets du langage de programmation LD proposent des aides permettant de structurer une section avec les éléments suivants : 62 • Contacts • Bobines • Fonctions élémentaires (EF) • Blocs fonction élémentaires (EFB) • Blocs fonction dérivés (DFB) • Procédures • Eléments de commande • Blocs opération et comparaison constituant une extension de la norme CEI 61131-3, • Appels de sous-programme • Sauts • Liaisons 35006145.25 Présentation Langages de programmation et structure • Paramètres réels • Objets texte pour commenter la logique Propriétés Les sections LD comportent une grille en arrière-plan qui divise la section en lignes et en colonnes. Le langage de programmation LD est axé sur les cellules, ce qui signifie qu'un seul objet peut être placé dans chaque cellule. Les sections LD peuvent contenir de 11 à 63 colonnes et de 17 à 3 998 lignes. Le programme peut être saisi à l'aide de la souris ou du clavier. Aides à la saisie L'éditeur LD propose les aides suivantes : • Les objets peuvent être sélectionnés dans la barre d'outils, le menu ou directement à l'aide de raccourcis clavier. • Vérification syntaxique et sémantique pendant l'écriture du programme. • ◦ Affichage en bleu des objets incorrects. ◦ Soulignement par une ligne rouge ondulée des mots inconnus (ex : variables non déclarées) ou types de données inadaptées. ◦ Description rapide des erreurs dans une info-bulle. Les informations sur les variables et les éléments d'une section LD susceptibles d'être connectés à une variable (broches, contacts, bobines, opération et blocs de comparaison) peuvent être affichées dans une info-bulle. ◦ Type, nom, adresse et commentaire d'une variable/expression. ◦ Type, nom et commentaire des broches FFB, des contacts etc. • Affichage en tableau des FFB. • Saisie et affichage des paramètres réels sous forme de symboles ou d'adresses topologiques. • Différents facteurs de zoom. • Suivi de liens FFB. • Optimisation des chemins de liaison des liens FFB. • Affichage de fenêtres de vérification. 35006145.25 63 Langages de programmation et structure Présentation Présentation générale du langage séquentiel SFC Introduction Cette section décrit le langage séquentiel SFC (Diagramme fonctionnel en séquence), conforme à la norme CEI 61131-3. Les restrictions relatives à la conformité CEI peuvent être levées grâce à des procédures d'activation explicites. Des fonctionnalités telles que Multijeton, étapes initiales multiples, saut vers et depuis des chaînes parallèles, etc. sont alors possibles. 64 35006145.25 Présentation Langages de programmation et structure Représentation Représentation d'une section SFC : Objets Une section SFC propose les objets suivants pour la création d'un programme : 35006145.25 65 Langages de programmation et structure • Etapes • macroétapes (séquences de sous-étape intégrées), • transitions (conditions de transition), • sections transition, • sections Action, • Sauts • Liaisons • séquences alternatives, • séquences en parallèle, • Objets texte pour commenter la logique Présentation Propriétés L'éditeur SFC dispose d'une grille d'arrière-plan qui divise la section en 200 lignes et 64 colonnes. Le programme peut être saisi à l'aide de la souris ou du clavier. Aides à la saisie L'éditeur SFC propose les facilités de saisie suivantes : • Barres d'outils permettant un accès rapide et facile aux objets souhaités. • Numérotation automatique des étapes. • Accès direct aux actions et aux conditions de transition. • Vérification syntaxique et sémantique pendant l'écriture du programme. • • 66 ◦ Affichage en bleu des objets incorrects. ◦ Soulignement en rouge des mots inconnus (ex : variables non déclarées) ou des types de données inappropriés. ◦ Description rapide des erreurs dans une info-bulle. Les informations sur les variables et les transitions peuvent être affichées dans une info-bulle. ◦ Type, nom, adresse et commentaire d'une variable/expression. ◦ Type, nom et commentaire des transitions. Différents facteurs de zoom. 35006145.25 Présentation • Affichage/masquage des actions affectées. • Suivi de liens. • Optimisation des chemins de liaison. Langages de programmation et structure Propriétés Etape Propriétés Etape : Les propriétés de l'étape se définissent à l'aide d'une boîte de dialogue proposant les fonctionnalités suivantes : • Définition des étapes initiales. • Définition des durées de diagnostic. • Commentaires sur l'étape. • Affectation d'actions et de leurs identificateurs. 35006145.25 67 Langages de programmation et structure Présentation Liste d'instructions (IL) Introduction L'éditeur IL permet de programmer en listes d'instructions selon la norme CEI 61131-3. Représentation Représentation d'une section IL : Objets Une liste d’instructions se compose d’une série d’instructions. Chaque instruction commence sur une nouvelle ligne et comprend : • un opérateur • un modificateur (si nécessaire) • un ou plusieurs opérandes (si nécessaire) • une étiquette de cible de saut (si nécessaire) • un commentaire sur la logique nécessaire Aides à la saisie L'éditeur IL propose des fonctions d'aide à la saisie : 68 35006145.25 Présentation • Langages de programmation et structure Vérification syntaxique et sémantique pendant l'écriture du programme. ◦ Mots clés et commentaires affichés en couleur. ◦ Soulignement en rouge des mots inconnus (ex : variables non déclarées) ou des types de données inappropriés. ◦ Description rapide des erreurs dans une info-bulle. • Affichage tabulaire des fonctions et des blocs fonction. • Aide à la saisie des fonctions et blocs fonction. • Saisie et affichage des opérandes sous forme de symboles ou d'adresses topologiques. • Affichage de fenêtres de vérification. Littéral structuré (ST) Introduction L'éditeur ST permet la programmation en texte structuré selon la norme CEI 61131-3. Représentation Représentation d'une section ST : 35006145.25 69 Langages de programmation et structure Présentation Objets Le langage ST utilise ce que l'on appelle des « expressions ». Les expressions sont des constructions composées d'opérateurs et d'opérandes qui fournissent une valeur lors de leur exécution. Les opérateurs sont des symboles représentant les opérations à exécuter. Les opérateurs sont utilisés sur les opérandes. Les opérandes sont des variables, des valeurs littérales, des entrées/sorties de fonctions et blocs fonction. Les instructions sont utilisées pour structurer et contrôler les expressions. Aides à la saisie L'éditeur IL propose des fonctions d'aide à la saisie : • Vérification syntaxique et sémantique pendant l'écriture du programme. ◦ Mots clés et commentaires affichés en couleur. ◦ Soulignement en rouge des mots inconnus (ex : variables non déclarées) ou des types de données inappropriés. ◦ Description rapide des erreurs dans une info-bulle. • Affichage tabulaire des fonctions et des blocs fonction. • Aide à la saisie des fonctions et blocs fonction. • Saisie et affichage des opérandes sous forme de symboles ou d'adresses topologiques. • Affichage de fenêtres de vérification. Simulateur d'automate Introduction Le simulateur d'automate permet la recherche d'erreurs dans le projet sans connexion à un véritable automate. Toutes les tâches du projet (Mast, Fast, AUX et Event) qui s'exécutent sur un automate réel sont également disponibles dans le simulateur. La différence par rapport à un véritable automate est l'absence de modules E/S et de réseaux de communication (ETHWAY, Fipio, Modbus Plus) fonctionnant en mode temps réel non déterministe. 70 35006145.25 Présentation Langages de programmation et structure Naturellement, toutes les fonctions de mise au point, d'animation, les points d'arrêt, les forçages de variables, etc. sont disponibles avec le simulateur d'automate. Représentation Représentation d'une boîte de dialogue : Structure du simulateur Le panneau du simulateur propose les affichages suivants : • Type d'automate simulé • Etat actuel de l'automate simulé • Nom du projet chargé • Adresse IP et nom DNS du PC hôte du simulateur et de tous les PC clients connectés • Boîte de dialogue dédiée à la simulation des événements d'E/S • Bouton RAZ permettant de réinitialiser l'automate simulé (simulation de redémarrage à froid) • Bouton Mise sous/hors tension (pour simuler une reprise à chaud) • Menu contextuel (bouton droit de la souris) permettant de commander le simulateur 35006145.25 71 Langages de programmation et structure Présentation Documentation Pour plus d'informations, reportez-vous au document EcoStruxure™ Control Expert Simulateur d'automate. Exportation/Importation Introduction Les fonctions d'exportation et d'importation permettent d'utiliser des données existantes dans un nouveau projet. Le format d'exportation/importation XML permet en outre de préparer facilement des données d'un logiciel externe ou de les appliquer (copier). Exportation Les objets suivants peuvent être exportés : • Projets complets, configuration comprise • Program Units • Sections de tous les langages de programmation • Sections de sous-programme de tous les langages de programmation • Blocs fonctions dérivés (DFB) • Types de données dérivés (DDT) • DDT d'équipement • Déclarations de variables • Ecran d'exploitation Importation Il va de soi que tous les objets exportables peuvent également être réimportés. Il existe deux types d'importation : • Importation directe L'objet est importé exactement comme il a été exporté. 72 35006145.25 Présentation • Langages de programmation et structure Importation avec l'assistant L'assistant permet de modifier les noms des variables, sections ou modules fonctionnels. Le mappage des adresses peut également être modifié. Documentation utilisateur Documentation utilisateur Fonctions assurées par la documentation utilisateur : Les fonctions suivantes sont entre autres disponibles pour la documentation du projet : • impression de tout (2) ou partie (3) du projet • sélection entre affichage structurel et fonctionnel (1) • ajustement du résultat (bas de page, informations générales, etc.) • impression locale pour les éditeurs de langage de programmation, le configurateur, etc. 35006145.25 73 Langages de programmation et structure • mise en évidence spéciale (écriture en gras) des mots clés • choix du format de papier • aperçu avant impression (4) • enregistrement de la documentation Présentation Services de mise au point du code Recherche d'erreurs dans l'application utilisateur Les fonctions suivantes sont disponibles (entre autres) afin d'optimiser la recherche d'erreurs dans le projet : • pose de points d'arrêt (Break points) dans les éditeurs de langage de programmation ; • exécution pas à pas du programme (Step-by-step), avec pas à pas entrant (Step into), pas à pas sortant (Step out) et pas à pas principal (Step over) ; • mémoire d'appel pour obtenir le chemin de programme complet ; • commande d'entrées et sorties. Mode connecté Lorsque le PC est connecté à l'automate et que la liaison est établie, on parle de mode en ligne. Le mode en ligne est utilisé sur l'automate pour la recherche d'erreurs (mise au point), l'animation et la modification du programme. Une fois la liaison établie, une comparaison s'effectue automatiquement entre les projets du PC et de l'automate. Cette comparaison peut donner les résultats suivants : • Projets différents sur le PC et sur l'automate En pareil cas, le mode en ligne est limité. Sont seuls autorisés les instructions de commande de l'automate (démarrage, arrêt), les services de diagnostic et la surveillance des variables. Il n'est pas possible de modifier la logique de programme ou la configuration de l'automate. Cependant, les fonctions de chargement et de téléchargement sont disponibles et s'exécutent en mode non restreint (projet identique sur le PC et sur l'automate). 74 35006145.25 Présentation • Langages de programmation et structure Projets identiques sur le PC et sur l'automate Les possibilités sont au nombre de deux : ◦ EN LIGNE EQUAL, GENERE La dernière génération du projet sur le PC a été téléchargée sur l'automate et aucune modification n'a ensuite été effectuée ; en d'autres termes, le projet sur le PC et le projet sur l'automate sont absolument identiques. Dans ce cas, toutes les fonctions d'animation sont disponibles sans restriction. ◦ EN LIGNE EQUAL, NON GENERE La dernière génération du projet sur le PC a été téléchargée sur l'automate, mais des modifications ont ensuite été effectuées. Dans ce cas, les fonctions d'animation ne sont disponibles que dans les parties du projet non modifiées. Animation Plusieurs possibilités sont disponibles pour l'animation de variables : 35006145.25 75 Langages de programmation et structure • Présentation Animation de section Tous les langages de programmation (FBD, LD, SFC, IL et ST) peuvent être animés. L'animation des variables et des liaisons s'effectue directement dans la section. 76 35006145.25 Présentation • Langages de programmation et structure Info-bulles Si le pointeur de la souris survole une variable analogique, une info-bulle indique la valeur de celle-ci. • Fenêtre d'inspection Pour chaque variable, il est possible de créer une fenêtre d'inspection. Cette fenêtre affiche la valeur de la variable, son adresse et son commentaire (le cas échéant). Cette fonction est disponible dans tous les langages de programmation. 35006145.25 77 Langages de programmation et structure • Présentation Fenêtre de variables Cette fenêtre affiche toutes les variables utilisées dans la section courante. • Table d'animation Dans les tables d'animation, il est possible d'afficher, de modifier ou de forcer les valeurs de toutes les variables du projet. Une ou plusieurs valeurs peuvent être modifiées simultanément. Point de surveillance Les points de surveillance vous permettent de voir les données de l'automate au moment de leur création (1) et pas seulement à la fin du cycle. Les tables d'animation peuvent être synchronisées avec le point de surveillance (2). Un compteur (3) indique la fréquence à laquelle le point de surveillance est actualisé. 78 35006145.25 Présentation Langages de programmation et structure Section ST avec point de surveillance : Point d'arrêt Les points d'arrêt vous permettent d'arrêter l'exécution du projet à un endroit voulu. Section ST avec point d'arrêt : 35006145.25 79 Langages de programmation et structure Présentation Mode pas à pas Le mode pas à pas vous permet d'exécuter le programme progressivement. Les fonctions pas à pas sont disponibles si le projet a été stoppé du fait de l'arrivée à un point d'arrêt ou s'il se trouve déjà en mode pas à pas. Section ST en mode pas à pas : Les fonctions suivantes sont disponibles en mode pas à pas : • Exécution progressive du programme • Pas à pas entrant (StepIn) (1) • Pas à pas sortant (StepOut) • Pas à pas principal (StepOver) • Affichage de l'étape en cours d'exécution (2) • Mémoire d'appel (3) En cas d'exécution répétée de la fonction « pas à pas entrant » (StepInto), la mémoire d'appel permet d'afficher le chemin complet à partir du premier point d'arrêt. NOTE: Exécuter le programme automate en mode pas à pas ou l'entrée (StepIn) dans une section protégée en lecture/écriture peut rendre le programme illisible et empêcher toute sortie de la section. L'utilisateur doit basculer l'automate en mode « Stop » pour revenir à l'état initial. Signets Les signets vous permettent de marquer des sections de code afin de les retrouver facilement. 80 35006145.25 Présentation Langages de programmation et structure Visualisation des diagnostics Description Control Expert fournit des diagnostics concernant le système et le projet. Les erreurs qui se produisent s'affichent dans une fenêtre de diagnostic. Pour corriger l'erreur, il est possible d'ouvrir la section à l'origine de l'erreur directement depuis la fenêtre de visualisation du diagnostic. Ecran d'exploitation Introduction Les fenêtres d'exploitation permettent de visualiser le processus d'automatisation. L'éditeur écran d'exploitation permet de créer, modifier et gérer facilement les écrans d'exploitation. 35006145.25 81 Langages de programmation et structure Présentation La création et l'accès aux écrans d'exploitation s'effectuent via le navigateur de projet. Editeur écran d'exploitation Une fenêtre d'exploitation contient une foule d'informations (variables dynamiques, aperçus, textes descriptifs, etc.) et permet de surveiller et modifier facilement et rapidement les variables d'automatisation. 82 35006145.25 Présentation Langages de programmation et structure Ecran d'exploitation L'éditeur écran d'exploitation propose les fonctions suivantes : • Fonctions de visualisation étendues ◦ Eléments géométriques Ligne, rectangle, ellipse, courbe, polygone, bitmap, texte ◦ Eléments de commande Bouton, case à cocher, curseur, navigation à l'écran, liens hypertexte, champ de saisie, champ de sélection numérique ◦ Eléments d'animation Bargraphe, chronogramme, boîte de dialogue, apparition, disparition, couleurs clignotantes, animation de variables • Création d'une bibliothèque dédiée à la gestion des objets graphiques • Copie d'objets • Création d'une liste de toutes les variables utilisées dans l'écran d'exploitation • Création de messages à utiliser dans l'écran d'exploitation • Accès direct depuis l'écran d'exploitation à la table d'animation ou à la table de renvois d'une ou de plusieurs variables • Info-bulles fournissant des informations complémentaires sur les variables 35006145.25 83 Langages de programmation et structure 84 Présentation • Gestion des écrans d'exploitation par famille • Importation/exportation de certains écrans d'exploitation ou de familles complètes 35006145.25 Langages de programmation et structure Structure de l'application Contenu de cette partie Description des fonctions disponibles pour chaque type d'automate ..............................................................................86 Structure du programme d'application .......................................92 Structure Mémoire des Applications ........................................ 130 Modes de fonctionnement ...................................................... 148 Dans cette partie Cette partie décrit les structures programme application et mémoire associées à chaque type d'automate. 35006145.25 85 Langages de programmation et structure Description des fonctions disponibles pour chaque type d'automate Description des fonctions disponibles pour chaque type d'automate Contenu de ce chapitre Fonctions disponibles pour les différents types d'automate ..............................................................................86 Objet de ce chapitre Ce chapitre décrit les fonctions disponibles par type de processeur et plate-forme d'automates. Elles concernent essentiellement les fonctionnalités de programmation utiles. D'autres fonctions sont décrites dans les manuels d'installation pour chaque type d'automate individuel. Fonctions disponibles pour les différents types d'automate Langages de programmation Les langages suivants sont disponibles pour les plates-formes Modicon M580, Modicon M340, Momentum, Premium, Atrium et Quantum : • LD • FBD • ST • IL • SFC NOTE: Seuls les langages LD et FBD sont disponibles sur les modules CPU Modicon M580 Safety et Modicon Quantum Safety. 86 35006145.25 Description des fonctions disponibles pour chaque type d'automate Langages de programmation et structure Tâches et processus Les tableaux suivants décrivent les tâches et processus disponibles pour Premium et Atrium : Tâches Premium : Processeurs TSX Atrium : Processeurs TSX Processus P57 0244 P57 2•• P57 5•• PCI 57 204 P57 1•• P57 3•• P57 6634 PCI 57 354 P57 4•• H57 24M H57 44M X X X X X X X X - - 4 - Unité de programme - - - - Taille maximale d'une section 64 Ko Traitement des événements de type E/S 32 64 128 64 Traitement des événements de type temporisateur - - 32 - Total des traitements des événements de type E/S et Temporisateur 32 64 128 64 Tâche maître cyclique ou périodique Tâche rapide périodique Tâches auxiliaires périodiques 64 Ko X ou valeur : Tâches ou processus disponibles (la valeur correspond au nombre maximum). - : Tâches ou processus non disponibles. (1) Dépend de la mémoire processeur disponible. Les tableaux suivants décrivent les tâches et processus disponibles pour Quantum : 35006145.25 87 Description des fonctions disponibles pour chaque type d'automate Langages de programmation et structure Tâches Quantum : Processeurs 140 CPU Processus 31• ••• 651•• 651 60S 43• ••• 652 60 671 60S 53• ••• 670 60 671 60 672 60 672 61 X X X X X - - 4 - Unité de programme - - - Taille maximale d'une section 64 Ko (1) - Traitement des événements de type E/S 64 128 - Traitement des événements de type temporisateur (TIMER) 16 32 - Total des traitements des événements de type E/S et Temporisateur 64 128 - Tâche maître cyclique ou périodique Tâche rapide périodique Tâches auxiliaires périodiques X ou valeur : Tâches ou processus disponibles (la valeur correspond au nombre maximum). - : Tâches ou processus non disponibles. (1) Dépend de la mémoire processeur disponible. Les tableaux suivants décrivent les tâches et processus disponibles pour M340 : Tâches Processeurs Modicon M340 Processus P34 1000 P34 20•• Tâche maître X X X X cyclique ou périodique Tâche rapide périodique 88 35006145.25 Description des fonctions disponibles pour chaque type d'automate Langages de programmation et structure Tâches Processeurs Modicon M340 Processus P34 1000 P34 20•• Tâches auxiliaires - - Unité de programme X X Taille maximale d'une section (1) Traitement des événements de type E/S 32 64 Traitement des événements de type temporisateur 16 32 Total des traitements des événements de type E/S et Temporisateur 32 64 périodiques X ou valeur : Tâches ou processus disponibles (la valeur correspond au nombre maximum). - : Tâches ou processus non disponibles. (1) Dépend de la mémoire processeur disponible. Les tableaux suivants décrivent les tâches et processus disponibles pour M580 : Tâches Processeurs Modicon M580 BME Processus P58 1020 P58 30•0 H58 2040 P58 2040S H58 2040S P58 20•0 P58 40•0 H58 4040 P58 4040S H58 4040S P58 5040 H58 6040 H58 6040S P58 6040 X X X X (2) X (2) X X X X X 2 2 - 2 - Unité de programme X X X X X Taille maximale d'une section (1) (1) (1) (1) (1) Traitement des événements de type E/S 64 128 - 128 - Traitement des événements de type temporisateur (TIMER) 32 32 - 32 - Tâche maître cyclique ou périodique Tâche rapide périodique Tâches auxiliaires périodiques 35006145.25 89 Description des fonctions disponibles pour chaque type d'automate Langages de programmation et structure Tâches Processeurs Modicon M580 BME Processus P58 1020 P58 30•0 H58 2040 P58 2040S H58 2040S P58 20•0 P58 40•0 H58 4040 P58 4040S H58 4040S P58 5040 H58 6040 H58 6040S P58 6040 Total des traitements des événements de type E/S et Temporisateur 64 128 - 128 - X ou valeur : Tâches ou processus disponibles (la valeur correspond au nombre maximum). - : Tâches ou processus non disponibles. (1) Dépend de la mémoire processeur disponible. (2) + une tâche SAFE dédiée. Les tableaux suivants décrivent les tâches et processus disponibles pour Momentum : Tâches Processeurs Momentum Processus 171 CBU 78090 171 CBU 9809• Tâche maître X cyclique ou périodique Tâche rapide - périodique Tâches auxiliaires - périodiques 90 Unité de programme - Taille maximale d'une section (1) Traitement des événements de type E/S - Traitement des événements de type temporisateur (TIMER) - 35006145.25 Description des fonctions disponibles pour chaque type d'automate Langages de programmation et structure Tâches Processeurs Momentum Processus 171 CBU 78090 171 CBU 9809• Total des traitements des événements de type E/S et Temporisateur - X ou valeur : Tâches ou processus disponibles (la valeur correspond au nombre maximum). - : Tâches ou processus non disponibles. (1) Dépend de la mémoire processeur disponible. (2) + une tâche SAFE dédiée. 35006145.25 91 Langages de programmation et structure Structure du programme d'application Structure du programme d'application Contenu de ce chapitre Description des tâches et des traitements ..................................92 Description des Program Units..................................................98 Description des sections et des sous-programmes ................... 100 Exécution monotâche............................................................. 104 Exécution multitâche .............................................................. 111 Objet du chapitre Ce chapitre décrit la structure et l’exécution des programmes créés l’aide du logiciel Control Expert. Description des tâches et des traitements Objet de cette section Ce sous-chapitre décrit les tâches et les traitements composant le programme application. Présentation de la Tâche Maître Généralités La tâche maître représente la principale tâche du programme de l'application. Elle est obligatoire et créée par défaut Structure La tâche maître (MAST) est constituée d'unités de programme et/ou de sections et de sousprogrammes. NOTE: Les unités de programme sont uniquement disponibles pour Modicon M580 et M340. Chaque section de la tâche maître est programmée dans les langages suivants : LD, FBD, IL, ST ou SFC. 92 35006145.25 Structure du programme d'application Langages de programmation et structure Les sous-programmes sont programmés en LD, FBD, IL ou ST et sont appelés dans les sections de tâche. NOTE: Le SFC ne peut être utilisé que dans les sections de tâche maître. Le nombre de sections programmées en SFC est illimité. Exécution Vous pouvez choisir d'exécuter la tâche maître de manière : • cyclique (par défaut) • ou périodique (1 à 255 ms) Contrôle La tâche maître peut être controlée par programme, par des bits et des mots système. Objets système Signification %SW0 Période de tâche %S30 Activation de la tâche maître %S11 Erreur du chien de garde. %S19 Dépassement de période %SW27 Nombre de ms passées dans le système pendant le dernier cycle Mast. %SW28 Temps système le plus long (en ms). %SW29 Temps système le plus court (en ms). %SW30 Temps d'exécution (en ms) du dernier cycle. %SW31 Temps d'exécution (en ms) du cycle le plus long. %SW32 Temps d'exécution (en ms) du cycle le plus court. Présentation de la tâche rapide Généralités La tâche rapide est destinée aux traitements de courte durée et périodiques. 35006145.25 93 Langages de programmation et structure Structure du programme d'application Structure La tâche rapide (FAST) est constituée d'unités de programme et/ou de sections et de sousprogrammes. NOTE: Les unités de programme sont uniquement disponibles pour Modicon M580 et M340. Chaque section de la tâche rapide est programmée dans l'un des langages suivants : LD, FBD, IL ou ST. Le langage SFC n'est pas utilisable dans les sections d'une tâche rapide. Les sous-programmes se programment en langage LD, FBD, IL ou ST. Ils sont appelés dans les sections de la tâche. Exécution L'exécution de la tâche rapide est périodique. Elle est plus prioritaire que la tâche maître. La période de la tâche rapide (FAST) est fixée par configuration, de 1 à 255 ms. Le programme exécuté doit cependant rester court pour éviter le débordement des tâches moins prioritaires. Contrôle La tâche rapide peut être contrôlée par programme par bits et mots système. 94 Objets système Signification %SW1 Période de tâche %S31 Activation de la tâche rapide %S11 Erreur du chien de garde %S19 Dépassement de période %SW33 Temps d'exécution (en ms) du dernier cycle %SW34 Temps d'exécution (en ms) du cycle le plus long %SW35 Temps d'exécution (en ms) du cycle le plus court 35006145.25 Structure du programme d'application Langages de programmation et structure Présentation des tâches auxiliaires Généralités Les tâches auxiliaires sont conçues pour les tâches de traitement lentes. Il s'agit des tâches de plus faible priorité. Il est possible de programmer jusqu'à quatre tâches auxiliaires(AUX0, AUX1, AUX2 ou AUX3) sur les automates Premium TSX P57 5•• etQuantum 140 CPU 6••••. Il est possible de programmer jusqu'à deux tâches auxiliaires (AUX0, AUX1) sur les automates Modicon M580 BME P58 ••••. Les tâches auxiliaires ne sont pas disponibles pour les automates Modicon M340. Structure Les tâches auxiliaires (AUX) sont constituées d'unités de programme et/ou de sections et de sous-programmes. NOTE: Les unités de programme sont uniquement disponibles pour Modicon M580 et M340. Chaque section de la tâche auxiliaire est programmée dans l'un des langages suivants : LD, FBD, IL ou ST. Le langage SFC n'est pas utilisable dans les sections d'une tâche auxiliaire. Un maximum de 64 sous-programmes peuvent être programmés en langage LD, FBD, IL ou ST. Ils sont appelés dans les sections des tâches. Exécution L'exécution des tâches auxiliaires est périodique. Elles ont la priorité la plus faible. La période d'une tâche auxiliaire peut être fixée entre 10 ms et 2 550 ms. Contrôle Les tâches auxiliaires peuvent être contrôlées par programme, par des bits et mots système. 35006145.25 95 Langages de programmation et structure Structure du programme d'application Objets système Signification %SW2 Période de la tâche auxiliaire 0 %SW3 Période de la tâche auxiliaire 1 %SW4 Période de la tâche auxiliaire 2 %SW5 Période de la tâche auxiliaire 3 %S32 Activation de la tâche auxiliaire 0 %S33 Activation de la tâche auxiliaire 1 %S34 Activation de la tâche auxiliaire 2 %S35 Activation de la tâche auxiliaire 3 %S11 Erreur du chien de garde %S19 Dépassement de période %SW36 Temps d'exécution (en ms) du dernier cycle de la tâche auxiliaire 0 %SW39 Temps d'exécution (en ms) du dernier cycle de la tâche auxiliaire 1 %SW42 Temps d'exécution (en ms) du dernier cycle de la tâche auxiliaire 2 %SW45 Temps d'exécution (en ms) du dernier cycle de la tâche auxiliaire 3 %SW37 Temps d'exécution (en ms) du plus long cycle de la tâche auxiliaire 0 %SW40 Temps d'exécution (en ms) du plus long cycle de la tâche auxiliaire 1 %SW43 Temps d'exécution (en ms) du plus long cycle de la tâche auxiliaire 2 %SW46 Temps d'exécution (en ms) du plus long cycle de la tâche auxiliaire 3 %SW38 Temps d'exécution (en ms) du cycle le plus court de la tâche auxiliaire 0 %SW41 Temps d'exécution (en ms) du cycle le plus court de la tâche auxiliaire 1 %SW44 Temps d'exécution (en ms) du cycle le plus court de la tâche auxiliaire 2 %SW47 Temps d'exécution (en ms) du cycle le plus court de la tâche auxiliaire 3 Présentation du Traitement Evènementiel Général Le traitement évènementiel est utilisé pour réduire le temps de réponse des programmes d'application aux évènements : • 96 provenant de modules d'entrée/sortie, 35006145.25 Structure du programme d'application • Langages de programmation et structure de temporisateurs d'évènements. Ces tâches de traitement ont la priorité sur toute autre tâche pour leur exécution. Elles sont donc adaptées aux tâches de traitement nécessitant un temps de réponse très court en rapport avec l'évènement. Le nombre de tâches évènementielles, page 87 pouvant être programmées dépend du type de processeur. Structure Une tâche évènementielle est monosection, et n'est constituée que d'une seule section (non conditionnée). Elle est programmée au choix en langage LD, FBD, IL ou ST. Deux types d'évènements sont disponibles : • Evènement E/S : pour les évènements issus de modules d'entrée/sortie • Evènements TIMER : pour les évènements issus de temporisateurs d'évènements. Exécution L'exécution d'une tâche évènementielle est asynchrone. La survenue d'un évènement redirige le programme d'application vers le tâche de traitement associée à la voie d'entrée/sortie ou au temporisateur d'évènement qui a produit l'évènement. Contrôle Les bits et mots système suivants peuvent être utilisés pour contrôler les tâches évènementielles au cours de l'exécution d'un programme. Objets système Signification %S38 Activation du traitement évènementiel. %S39 Saturation de la pile de gestion d'appel d'évènements. %SW48 Nombre de tâches de traitement d'évènements E/S et de télégrammes exécutées. NOTE: Les TELEGRAMMES ne sont disponibles que pour PREMIUM. %SW75 35006145.25 Nombre d'évènements de type timer dans la file d'attente. 97 Langages de programmation et structure Structure du programme d'application Description des Program Units Objet de cette section Cette section décrit les Program Units qui composent une tâche. Description des unités de programme Présentation de l'unité de programme Les unités de programme sont des entités de programmation autonomes uniquement disponibles pour Modicon M580 et M340. L'unité de programme inclut : • des variables publiques et locales, • des sections, Les langages de programmation suivants sont pris en charge : • ◦ FBD (langage à blocs fonction) ◦ LD (langage à contacts) ◦ SFC (diagramme fonctionnel en séquence), seulement pour les sections de l'unité de programme appartenant à la tâche MAST ◦ IL (liste d'instructions) ◦ ST (littéral structuré) des tables d'animation. Les unités de programme sont liées à une tâche. Une même unité de programme ne peut pas appartenir à plusieurs tâches en même temps. Les sections et les unités de programme d'une tâche sont exécutées dans leur ordre de programmation dans la fenêtre du navigateur (vue structurelle). Les sections au sein d'une unité de programme sont exécutées dans leur ordre de programmation dans la fenêtre du navigateur (vue structurelle). Les étiquettes de repérage des lignes d'instructions, des réseaux de contacts, etc. sont propres à chaque section de l'unité de programme (pas de saut de programme possible vers une autre section de la même unité de programme). Une condition d'exécution peut être associée à une ou plusieurs unités de programme et/ou sections d'unités de programme. 98 35006145.25 Structure du programme d'application Langages de programmation et structure Exemple Le diagramme suivant montre une tâche structurée en unités de programme et sections : Dans cette tâche MAST, ProgramUnit1 est exécuté en premier, suivi de Section1, puis de ProgramUnit2. Au sein de ProgramUnit2, Section1_P2 est d'abord exécuté, puis Section2_P1. Caractéristiques d'une unité de programme Le tableau suivant décrit les caractéristiques d'une unité de programme : Caractéristique Description Nom 32 caractères maximum (les accents sont autorisés, mais les espaces sont interdits). Langage des sections LD, FBD, IL, ST ou SFC. Tâche ou traitement Maître (MAST), rapide (FAST) ou auxiliaire (AUX). Condition Une variable bit de type BOOL ou EBOOL peut être utilisée pour conditionner l'exécution de l'unité de programme. (Facultatif) Commentaire 256 caractères maximum Protection Protection en écriture, protection en lecture/écriture. 35006145.25 99 Langages de programmation et structure Structure du programme d'application Description des sections et des sous-programmes Objet de cette section La section suivante décrit les sections et sous-programmes qui constituent une tâche et une unité de programme. Description des sections Présentation des sections Les sections sont des entités autonomes de programmation. Les étiquettes de repérage des lignes d'instructions, des réseaux de contacts etc. sont propres à chaque section (pas de saut de programme possible vers une autre section). La programmation peut utiliser les langages suivants : • Schéma à contacts (LD) • Langage en blocs fonctionnels (FBD) • Liste d'instructions (IL) • Texte structuré (ST) • Diagramme fonctionnel en séquence (SFC) sous réserve que le langage soit accepté dans la tâche. Les sections sont exécutées dans leur ordre de programmation dans la fenêtre du navigateur (vue structurelle). Une condition d'exécution peut être associée à une ou plusieurs sections dans les tâches maître (MAST), rapide (FAST) et auxiliaire (AUX), mais pas dans les traitements événementiels. Les sections sont liées à une tâche. Une même section ne peut pas appartenir à plusieurs tâches en même temps. 100 35006145.25 Structure du programme d'application Langages de programmation et structure Exemple Le schéma suivant illustre une tâche structurée en sections. Caractéristiques d'une section Le tableau suivant décrit les caractéristiques d’une section. Caractéristique Description Nom 32 caractères maximum (les accents sont autorisés, mais les espaces sont interdits). Langage LD, FBD, IL, ST ou SFC. Tâche ou traitement Maître (MAST), rapide (FAST), auxiliaire (AUX), événementielle (EVENT) Condition Une variable bit de type BOOL ou EBOOL peut être utilisée pour conditionner l’exécution de la section. (Facultatif) Commentaire 256 caractères maximum Protection Protection en écriture, protection en lecture/écriture. Description des sections SFC Généralités Les sections en langage SFC (diagramme fonctionnel en séquence) se composent : • d'un graphe principal programmé en SFC • de macro-étapes (MS) programmées en SFC 35006145.25 101 Langages de programmation et structure • Structure du programme d'application d’actions et de transitions programmées en LD, FBD, ST ou IL Les sections SFC sont programmables uniquement dans la tâche maître (voir description détaillée des sections SFC). Exemple Le diagramme suivant donne un exemple de constitution d'une section SFC et montre les appels des macro-étapes utilisées à partir du diagramme. 102 35006145.25 Structure du programme d'application Langages de programmation et structure Description des sous-programmes Présentation des sous-programmes Les sous-programmes sont programmés sous forme d'entités distinctes, dans l'un des langages suivants : • Schéma à contacts (LD), • Langage en blocs fonction (FBD) • Liste d'instructions (IL) • Langage littéral structuré (ST) Un sous-programme est appelé depuis les sections ou un autre sous-programme. Un sous-programme ne peut pas s'appeler lui-même (non récursif). Les sous-programmes sont également liés à une tâche. Le même sous-programme ne peut pas être appelé à partir de différentes tâches. Exemple Le diagramme suivant montre une tâche structurée en sections et sous-programmes. Caractéristiques d'un sous-programme Le tableau suivant décrit les caractéristiques d'un sous-programme. 35006145.25 103 Langages de programmation et structure Structure du programme d'application Caractéristique Description Nom 32 caractères maximum (les accents sont autorisés, mais les espaces sont interdits). Langage LD, FBD, IL ou ST. Tâche maître (MAST)rapide (FAST) ou auxiliaire (AUX) Commentaire 1024 caractères maximum Exécution monotâche Objet de cette section Cette section décrit le fonctionnement d’une application monotâche. Description du cycle de tâche maître Généralités Le programme d'une application monotâche est associé à une seule tâche utilisateur, la tâche maître, page 92. L'exécution de la tâche maître peut être choisie : 104 • cyclique • périodique 35006145.25 Structure du programme d'application Langages de programmation et structure Illustration L'illustration suivante montre le cycle de fonctionnement. Description des différentes phases Le tableau ci-après décrit les phases de fonctionnement. Phase Description Acquisition des entrées Ecriture en mémoire de l'état des informations présentes sur les entrées des modules TOR et métier associés à la tâche Ces valeurs peuvent être modifiées par les valeurs de forçage. Traitement du programme Exécution du programme d'application, écrit par l'utilisateur Mise à jour des sorties Ecriture des bits ou des mots de sortie sur les modules TOR et métier associés à la tâche, selon l'état défini par l'application Comme pour les entrées, l’écriture des sorties peut être modifiée par des valeurs de forçage. NOTE: Durant les phases d'acquisition des entrées et de mise à jour des sorties, le système réalise aussi implicitement la surveillance de l'automate (gestion des bits et mots système, mise à jour des valeurs courantes de l'horodateur, mise à jour des voyants d'état (DEL) et écrans LCD (par pour Modicon M340), détection des passages RUN/STOP, ...) et le traitement des requêtes en provenance du terminal (modifications et animation). 35006145.25 105 Langages de programmation et structure Structure du programme d'application Mode de marche Automate en mode RUN : le processeur effectue dans l'ordre le traitement interne, l'acquisition des entrées, le traitement du programme application et la mise à jour des sorties. Automate en mode STOP : le processeur effectue : • le traitement interne, • l'acquisition des entrées (1), • et suivant la configuration choisie : ◦ mode repli : les sorties sont mises en position de "repli", ◦ mode maintien : les sorties sont maintenues à leur dernière valeur. (1) Pour les automates Quantum, l'acquisition des entrées est inhibée lorsque l'automate est en mode STOP. NOTE: Pour plus d'informations sur l'inhibition et l'activation de tâches à l'aide de bits système, reportez-vous à la rubrique Contrôle des tâches, page 117. Monotâche : exécution cyclique Généralités La tâche maître fonctionne comme suit. Une description de l'exécution cyclique de la tâche maître est fournie pour le fonctionnement monotâche. 106 35006145.25 Structure du programme d'application Langages de programmation et structure Fonctionnement L'illustration suivante montre les phases d'exécution du cycle automate. %I Lecture des entrées %Q Ecriture des sorties Description Ce type de fonctionnement consiste à enchaîner les cycles de tâche les uns après les autres. Après la mise à jour des sorties, le système effectue sont propre traitement et commence un autre cycle de tâche, sans faire de pause. Contrôle du cycle Le cycle est contrôlé par le chien de garde, page 109. Exécution périodique Description Dans ce mode de marche, l'acquisition des entrées, le traitement du programme d'application et la mise à jour des sorties s'effectuent de façon périodique, selon une fréquence définie comprise entre 1 et 255 ms. En début de cycle automate, une temporisation dont la valeur courante est initialisée sur la fréquence définie, démarre (compte à rebours). 35006145.25 107 Langages de programmation et structure Structure du programme d'application Le cycle automate doit se terminer avant l'expiration de cette temporisation qui relance un nouveau cycle. Fonctionnement Le dessin suivant montre les phases d'exécution du cycle automate. %I Lecture des entrées %Q Ecriture des sorties Mode de marche Le processeur effectue dans l'ordre le traitement interne, l'acquisition des entrées, le traitement du programme d'application et la mise à jour des sorties. • Si la période n'est pas encore terminée, le processeur complète son cycle de fonctionnement jusqu'à la fin de la période par du traitement interne. • Si le temps de fonctionnement devient supérieur à celui affecté à la période, l'automate signale un dépassement de période par la mise à 1 du bit système %S19 de la tâche. Le traitement se poursuit et est exécuté dans sa totalité (il ne doit pas dépasser néanmoins le temps limite du chien de garde). Le cycle suivant est enchaîné après l'écriture implicite des sorties du cycle en cours. Contrôle du cycle Deux contrôles sont effectués : 108 • Dépassement de période, page 109 • Chien de garde, page 109 35006145.25 Structure du programme d'application Langages de programmation et structure Contrôle de la durée du cycle Généralités La période de l'exécution de la tâche maître, en fonctionnement cyclique ou périodique, est contrôlée par l'automate (chien de garde) et ne doit pas excéder la valeur définie dans la configuration Tmax (1500 ms par défaut, 1,5 s maximum). Chien de garde logiciel (fonctionnement périodique ou cyclique) Si le dépassement du chien de garde se produit, l'application est déclarée en erreur, ce qui entraîne l'arrêt immédiat de l'automate (état HALT). Le bit %S11 indique que le chien de garde est dépassé. Il est défini sur 1 par le système lorsque la durée de cycle est supérieure au chien de garde. Le mot %SW11 contient la valeur du chien de garde en ms. Cette valeur n'est pas modifiable par le programme. NOTE: • La réactivation de la tâche requiert la connexion du terminal afin d'analyser la cause de l'erreur, la corriger, réinitialiser l'automate et le faire passer sur RUN. • Il n'est pas possible de quitter HALT en basculant vers STOP. Pour ce faire, vous devez réinitialiser l'application pour vérifier la cohérence des données. Contrôle en fonctionnement périodique En fonctionnement périodique, un contrôle supplémentaire permet la détection d'un dépassement période. Un dépassement période n'entraîne pas l'arrêt de l'automate tant qu'il reste inférieur à la valeur du chien de garde. Le bit %S19 indique que la période est dépassée. Il est défini sur 1 par le système lorsque la durée de cycle est supérieure à la période de la tâche. Le mot %SW0 contient la valeur de la période (en ms). Il est initialisé lors d'un redémarrage à froid par la valeur définie. Il peut être modifié par l'utilisateur. Exploitation des temps d'exécution de tâche maître Les mots système suivants peuvent être utilisés pour obtenir des informations sur la durée de cycle : • %SW30 contient le temps d'exécution du dernier cycle 35006145.25 109 Langages de programmation et structure Structure du programme d'application • %SW31 contient le temps d'exécution du cycle le plus long • %SW32 contient le temps d'exécution du cycle le plus court NOTE: Vous pouvez explicitement accéder à ces différentes informations à partir de l'éditeur de configuration. Exécution des sections Quantum avec entrées/sorties décentralisées Généralités Les automates Quantum possèdent un système de gestion des sections spécifique. Il s’applique aux stations d’entrées/sorties décentralisées. Ces stations sont utilisées avec les modules d'E/S distantes suivants : • 140 CRA 931 00 • 140 CRA 932 00 Ce système permet une mise à jour des entrées/sorties décentralisées au niveau des sections assurant des temps de réaction optimums (sans attente du temps de cycle complet de la tâche pour la mise à jour des entrées/sorties). Fonctionnement Le schéma suivant présente les phases d'E/S lorsque 5 stations d'E/S sont associées à des sections de tâche client. %Ii entrées de la station d'E/S n° i %Qi sorties de la station d'E/S n° i i numéro de station d'E/S Description 110 35006145.25 Structure du programme d'application Phase 1 2 3 4 5 6 7 Langages de programmation et structure Description Requête de mise à jour : • des entrées de la première station d'E/S (i=1) • des sorties de la dernière station d'E/S (i=5) Traitement du programme • Mise à jour des entrées de la première station d'E/S (i=1) • Requête de mise à jour des entrées de la deuxième station d'E/S (i=2) Requête de mise à jour : • des entrées de la troisième station d'E/S (i=3) • des sorties de la première station d'E/S (i=1) Requête de mise à jour : • des entrées de la quatrième station d'E/S (i=4) • des sorties de la deuxième station d'E/S (i=2) Requête de mise à jour : • des entrées de la dernière station d'E/S (i=5) • des sorties de la troisième station d'E/S (i=3) Requête de mise à jour des sorties de la quatrième station d'E/S (i=4) Réglage du temps de maintien de la station Afin que les sorties distantes soient correctement mises à jour et afin d'éviter que les valeurs de repli ne soient appliquées, le temps de maintien défini doit être au moins le double du temps de cycle de la tâche MAST. La valeur par défaut, 300 ms, doit donc être modifiée si la période MAST est réglée sur la valeur maximum de 255 ms. L'ajustement du temps de maintien de la station (voir Quantum sous EcoStruxure™ Control Expert, Système de redondance d'UC, Manuel utilisateur) doit être effectué sur toutes les stations configurées. Exécution multitâche Objet de cette section Cette section décrit le fonctionnement d’une application multitâche. 35006145.25 111 Langages de programmation et structure Structure du programme d'application Structure logicielle multitâche Tâches et traitements La structure de tâche de ce type d'application est la suivante : Tâche/traitement Désignation Description Maître MAST Toujours présent, peut être défini comme cyclique ou périodique. Rapide FAST Facultatif, toujours périodique. Auxiliaire AUX 0 à 3 Facultatif et toujours périodique. Événement EVTi et TIMERi, page 120 Appelé par le système lorsqu'un événement se produit sur un module d'entrées/sorties ou est déclenché par le temporisateur d'événements. Ces types de traitements sont facultatifs et peuvent être utilisés par des applications devant agir sur les entrées et sorties dans un délai très court. Illustration La figure suivante indique les tâches d'une structure multitâche ainsi que leur niveau de priorité. Description La tâche maître (MAST) est toujours l'application de base. Les autres tâches varient en fonction du type d'automate, page 87. 112 35006145.25 Structure du programme d'application Langages de programmation et structure Des niveaux de priorité sont déterminés pour chaque tâche de façon à établir un ordre d'importance pour les types de traitements. Le traitement événementiel peut être activé de façon asynchrone par rapport aux tâches périodiques, dans un ordre généré par des événements externes. Celui-ci est traité en priorité et nécessite l'interruption de tout autre traitement en cours. Limitations des sous-programmes Les sous-programmes ne peuvent être utilisés qu'au sein d'une même tâche. Par exemple, les sous-programmes MAST ne peuvent pas être appelés à partir des tâches TIMER et EVENT. Précautions ATTENTION FONCTIONNEMENT IMPREVU DE L'APPLICATION MULTITACHE • Le partage d'entrées et de sorties entre différentes tâches peut générer un fonctionnement inattendu de l'application. • Il est vivement recommandé d'associer chaque entrée ou sortie à une seule tâche. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. NOTE: Lors d'une mise à jour de la mémoire %M liée aux E/S de la tâche FAST, vous devez : • les exécuter simultanément dans la tâche FAST ou • masquer la tâche FAST (%S31) pendant la mise à jour. Séquencement des tâches dans une structure multitâche Généralités La tâche maître est active par défaut. Les tâches rapide et auxiliaires sont actives par défaut si elles sont programmées. Le traitement événementiel est activé lorsque l'événement correspondant se produit. 35006145.25 113 Langages de programmation et structure Structure du programme d'application Fonctionnement Le tableau suivant décrit l’exécution des tâches prioritaires (ce fonctionnement est aussi illustré par le diagramme ci-dessous). Etape Description 1 Arrivée d'un événement ou début de cycle de la tâche rapide. 2 Arrêt de l'exécution des tâches en cours moins prioritaires, 3 Exécution de la tâche prioritaire. 4 La tâche interrompue reprend la main lorsque les traitements de la tâche prioritaire se termine. Description du séquencement des tâches Le diagramme suivant illustre le séquencement des tâches d'un traitement multitâche comportant une tâche maître cyclique, une tâche rapide de période 20 ms et un traitement événementiel. Légende : I : acquisition d'entrées P : traitement du programme O : mise à jour des sorties Contrôle des tâches L'exécution des tâches rapide et événementielles peut être contrôlée par le programme via l'utilisation des bits système suivants : 114 • %S30 permet d'activer ou non la tâche maître MAST. • %S31 permet d'activer ou non la tâche rapide FAST. 35006145.25 Structure du programme d'application Langages de programmation et structure • %S32 à %S35 permettent d'activer ou non les tâches auxiliaires AUX0 à AUX3. • %S38 permet d'activer ou non les traitements événementiels EVTi. NOTE: Les fonctions élémentaires MASKEVT et UNMASKEVT permettent aussi le masquage et le démasquage global des événements par le programme. Contrôle des tâches Fonctionnement cyclique ou périodique En fonctionnement multitâche, la tâche avec la priorité la plus élevée devra être utilisée en mode périodique pour permettre aux tâches avec la priorité la plus basse de s'exécuter. Pour cette raison, seule la tâche avec la priorité la plus faible devrait être utilisée en mode cyclique. Par conséquent, choisir le mode de fonctionnement cyclique pour la tâche maître exclut l'utilisation de tâches auxiliaires. Mesure des durées des tâches La durée des tâches est mesurée en continu. Cette mesure représente la durée entre le démarrage et la fin de l'exécution de la tâche. Elle inclut le temps mis par les tâches de priorité de niveau le plus élevé qui peuvent interrompre l'exécution de la tâche mesurée. Les mots système suivants (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence) donnent les durées des cycles actuels, maximum et minimum pour chaque tâche (valeur en ms) Mesure des durées Cycle FAST AUX0 AUX1 AUX2 AUX3 Courant %SW30 %SW33 %SW36 %SW39 %SW42 %SW45 Maximum %SW31 %SW34 %SW37 %SW40 %SW43 %SW46 Durée %SW32 %SW35 %SW38 %SW41 %SW44 %SW47 NOTE: les durées maximum et minimum sont prises à partir des durées mesurées depuis le dernier redémarrage à froid. Périodes de tâche Les périodes sont définies dans les propriétés de la tâche. Elles peuvent être modifiées par les mots système suivants. 35006145.25 115 Langages de programmation et structure Structure du programme d'application Mots système Tâche Valeurs Valeurs par défaut Remarques %SW0 Cycle 0-255 ms Cyclique 0 = en fonctionnement cyclique %SW1 FAST 1-255 ms 5 ms - %SW2 AUX0 10 ms-2,55 s 100 ms Les valeurs de la période sont exprimées en 10 ms. %SW3 AUX1 10 ms-2,55 s 200 ms %SW4 AUX2 10 ms-2,55 s 300ms %SW5 AUX3 10 ms-2,55 s 400ms Lorsque la durée de cycle de la tâche dépasse la période, le système règle le bit système % S19 de la tâche sur 1 et continue avec le cycle suivant. NOTE: les valeurs des périodes ne dépendent pas de la priorité des tâches. Il est possible de définir la période d'une tâche rapide qui est plus importante que la tâche maître. Chien de garde L'exécution de chaque tâche est contrôlée par un chien de garde configurable, à l'aide des propriétés de la tâche. Le tableau suivant offre la place des valeurs du chien de garde pour chacune des tâches. Tâches Valeurs du chien de garde (min...max) (ms) Valeur du chien de garde par défaut (ms) Mot système associé Cycle 10..1500 250 %SW11 FAST 10..500 100 - AUX0 100..5000 2000 - AUX1 100..5000 2000 - AUX2 100..5000 2000 - AUX3 100..5000 2000 - Si le dépassement du chien de garde se produit, l'application est déclarée en erreur, ce qui entraîne l'arrêt immédiat de l'automate (état HALT). Le mot %SW11 contient la valeur du chien de garde de la tâche maître en ms. Cette valeur n'est pas modifiable par le programme. Le bit %S11 indique que le chien de garde est dépassé. Il est réglé sur 1 par le système lorsque la durée de cycle est supérieure au chien de garde. 116 35006145.25 Structure du programme d'application Langages de programmation et structure NOTE: • la réactivation de la tâche requiert la connexion du terminal afin d'analyser la cause de l'erreur, la corriger, réinitialiser l'automate et le faire passer sur RUN. • Il n'est pas possible de quitter HALT en basculant vers STOP. Pour ce faire, vous devez réinitialiser l'application pour vérifier la cohérence des données. Contrôle des tâches Lorsque le programme d'application s'exécute, il est possible d'activer ou d'inhiber une tâche à l'aide des bits système suivants : Bits système Tâche %S30 Cycle %S31 FAST %S32 AUX0 %S33 AUX1 %S34 AUX2 %S35 AUX3 La tâche est active lorsque le bit système associé est réglé sur 1. Ces bits sont testés par le système à la fin de la tâche maître. Lorsqu'une tâche est inhibée, les entrées continuent à être lues et les sorties à être écrites. Au démarrage du programme d'application, uniquement au premier cycle d'exécution, la tâche maître est active. A la fin du premier cycle, les autres tâches sont automatiquement activées sauf si l'une des tâches est inhibée (associée au bit système réglé sur 0) par le programme. Contrôles des phases de lecture d'entrée et d'écriture de sortie Les bits des mots système suivants peuvent être utilisés (uniquement lorsque l'automate est en mode RUN) pour inhiber les phases de lecture d'entrée et d'écriture de sortie. Inhibition de phases... Cycle FAST AUX0 AUX1 AUX2 AUX3 lecture d'entrées %SW8.0 %SW8.1 %SW8.2 %SW8.3 %SW8.4 %SW8.5 écriture des sorties %SW9.0 %SW9.1 %SW9.2 %SW9.3 %SW9.4 %SW9.5 35006145.25 117 Langages de programmation et structure Structure du programme d'application NOTE: par défaut, les phases de lecture d'entrée et d'écriture de sortie sont actives (bits des mots système %SW8 et %SW9 réglés sur 0). Sur Quantum, les entrées/sorties qui sont distribuées via le bus DIO ne sont pas affectées par les mots %SW8 et %SW9. Affectation de voies d'entrée ou de sortie à des tâches maître, rapides et auxiliaires Généralités Chaque tâche écrit et lit les entrées et les sorties qui lui sont affectées. L'association d'une voie, d'un groupe de voies ou d'un module d'entrée/sortie à une tâche se définit dans l'écran de configuration du module correspondant. Par défaut, la tâche MAST est associée. Lecture des entrées et écriture des sorties sur Premium Toutes les voies d'entrée/sortie des modules en rack peuvent être associées à une tâche (MAST, FAST ou AUX 0..3). Entrées/sorties locales et distantes (bus X) : Pour chaque cycle de tâche, les entrées sont lues au début de la tâche et les sorties sont écrites à la fin. Entrées/sorties distantes sur le bus Fipio : En mode asservi, l'actualisation des entrées/sorties est corrélée à la période de la tâche. Le système garantit que les entrées/sorties sont mises à jour dans une même période. Seules les entrées/sorties associées à cette tâche sont actualisées. Avec ce mode, la durée de la tâche de l'automate (MAST, FAST ou AUX) doit être supérieure ou égale à celle du cycle réseau. En mode libre, aucune restriction n'affecte la durée de la tâche. La durée de la tâche de l'automate (MAST, FAST ou AUX) peut être inférieure au cycle réseau. Dans ce cas, il est possible d'exécuter la tâche sans actualiser les entrées/sorties. La sélection de ce mode permet de raccourcir au maximum la durée des tâches pour les applications pour lesquelles la vitesse est essentielle. 118 35006145.25 Structure du programme d'application Langages de programmation et structure Exemple sur Premium Avec une modularité de 8 voies successives (voies 0 à 7, voies 8 à 15, etc.), les entrées/ sorties des modules TOR Premium peuvent être affectées par groupes de 8 voies, indépendamment de la tâche MAST, AUXi ou FAST. Exemple : il est possible d'affecter des voies d'un module de 28 entrées/sorties comme suit : • entrées 0 à 7 affectées à la tâche MAST ; • entrées 8 à 15 affectées à la tâche FAST ; • sorties 0 à 7 affectées à la tâche MAST ; • sorties 8 à 15 affectées à la tâche AUX0. Lecture des entrées et écriture des sorties sur Quantum Entrées/sorties locales : Chaque module ou groupe de modules d'entrée/sortie peut être associé à une tâche unique (MAST, FAST ou AUX 0..3). Entrées/sorties distantes : Les stations d'entrée/sortie distantes peuvent être associées à la tâche maître (MAST) uniquement. L'affectation des sections, page 110 est effectuée avec une station d'entrée distante et une station de sortie distante par section. Entrées/sorties distribuées : Les stations d'entrée/sortie distribuées peuvent être associées à la tâche maître (MAST) uniquement. Les entrées sont lues au début de la tâche maître et les sorties sont écrites à la fin. Lecture des entrées et écriture des sorties sur M580 Entrées/sorties locales : Chaque module ou groupe de modules d'entrée/sortie peut être associé à une tâche unique (MAST, FAST, AUX0 ou AUX1). Entrées/sorties distantes : Les tâches disponibles pouvant être associées à des entrées et des sorties distantes varient suivant le module adaptateur installé sur le rack distant (voir Modicon M580, Modules RIO, Guide d'installation et de configuration). 35006145.25 119 Langages de programmation et structure Structure du programme d'application Entrées/sorties distribuées : les entrées et les sorties distribuées peuvent être associées à la tâche maître (MAST) uniquement. Gestion des Traitements Evènementiels Général Le traitement évènementiel a la priorité sur les tâches. L'illustration qui suit présente les 3 niveaux de priorité définis : Gestion des Priorités • Le traitement évènementiel EVT0 est le traitement le plus prioritaire. Il peut interrompre lui-même d'autres types de traitement évènementiel. • Le traitement évènementiel EVTi déclenché par des modules d'entrée/sortie (priorité 1) a la priorité sur le traitement évènementiel TIMERi déclenché par des temporisateurs (priorité 2). • Sur automates Modicon M580, M340, Premium et Atrium : les types de traitement évènementiel de priorité 1 sont enregistrés et traités dans l'ordre. • Sur les automates Quantum : la priorité des types de traitement de priorité 1 est déterminée : ◦ par la position du module d'entrée/sortie dans le rack, ◦ par la position de la voie dans le module. Le module ayant le numéro de position le plus bas a le niveau de priorité le plus haut. 120 35006145.25 Structure du programme d'application • Langages de programmation et structure Le traitement évènementiel déclenché par un temporisateur reçoit un niveau de priorité 2. La priorité de traitement est déterminée par le numéro de temporisateur le plus bas. Contrôle Le programme d'application peut globalement valider ou bloquer les divers types de traitement évènementiel en utilisant le bit système %S38. Si un ou plusieurs évènements surviennent alors qu'ils sont bloqués, le traitement associé est perdu. Deux fonctions élémentaires du langage, MASKEVT() et UNMASKEVT(), utilisés dans le programme d'application, peuvent être employés pour masquer ou démasquer le traitement évènementiel. Si un ou plusieurs évènements surviennent alors qu'ils sont masqués, le système les enregistre et le traitement associé est exécuté après démasquage. Exécution du traitement événementiel de type TIMER Description Le traitement événementiel de type TIMER est un processus déclenché par la fonction ITCNTRL (voir EcoStruxure™ Control Expert, Système, Bibliothèque de blocs). Cette fonction de temporisation active le traitement événementiel, dès que la valeur de présélection est atteinte. Référence Les paramètres suivants sont sélectionnés dans les propriétés du traitement événementiel. 35006145.25 121 Langages de programmation et structure Structure du programme d'application Paramètre Valeur Valeur par défaut Rôle Base de temps 1 ms, 10 ms, 100 ms, 1 s 10 ms Base de temps du temporisateur : Remarque : la base de 1 ms doit être utilisée avec précaution, en raison d'un risque de dépassement si la fréquence de déclenchement du traitement est trop élevée. Présélection 1 à 1023 10 Valeur de présélection du temporisateur. La durée obtenue est égale à : Présélection x Base de temps. Etape 0 à 1023 0 La valeur de l'offset temporel entre la transition STOP/RUN de l'automate et le premier redémarrage à partir de 0 du temporisateur. La valeur temporelle est égale à : Phase x Base de temps. NOTE: la phase doit être inférieure à la valeur de présélection dans l'événement de type TIMER. Fonction ITCNTRL Représentation en FBD : Le tableau suivant décrit les paramètres d’entrée : Paramètre Type Commentaire Enable BOOL Entrée de validation Reset_Timer BOOL A l'état 1, ce paramètre réinitialise le temporisateur. Hold_Timer BOOL A l'état 1, ce paramètre fige l'incrémentation du temporisateur. Nb_Task_Event BYTE Octet d'entrée déterminant le numéro du traitement événementiel à déclencher. Le tableau suivant décrit les paramètres de sortie : 122 35006145.25 Structure du programme d'application Langages de programmation et structure Paramètre Type Commentaire Status_Timer WORD Mot d'état. Current_Value TIME Valeur actuelle du temporisateur. Chonogramme du fonctionnement normal Chonogramme. Fonctionnement normal Le tableau ci-dessous décrit le déclenchement des opérations de traitement événementiel de type TIMER (voir le chronogramme ci-dessus). Etape 35006145.25 Description 1 Lorsque l'entrée RESET reçoit un front montant, le temporisateur est remis à 0. 2 La valeur actuelle (VALEUR) du temporisateur augmente de 0 à la valeur de présélection au rythme d'une unité par impulsion de la base de temps. 3 Un événement est généré lorsque la valeur actuelle atteint la valeur de présélection. Le temporisateur est alors remis à 0, puis réactivé. Le traitement événementiel associé est également déclenché, si l'événement n'est pas masqué. Il peut être différé si une tâche de traitement événementiel de priorité supérieure ou égale est en cours. 123 Langages de programmation et structure Etape Structure du programme d'application Description 4 Lorsque l'entrée ENABLE est à 0, les événements ne sont plus envoyés. Le traitement événementiel de type TIMER n'est plus déclenché. 5 Lorsque l'entrée HOLD est à 1, le temporisateur est figé et la valeur actuelle ne s'incrémente plus jusqu'à ce que cette entrée revienne à 0. Synchronisation du traitement événementiel Le paramètre Phase permet de déclencher plusieurs tâches de traitement événementiel de type TIMER à intervalles constants. Ce paramètre définit une valeur d'offset temporel avec une origine de temps absolue, qui correspond à la dernière transition de l'automate de l'état STOP à l'état RUN. Condition de fonctionnement : • Les tâches de traitement événementiel doivent avoir les mêmes valeurs de présélection et de base de temps. • Les entrées RESET et HOLD ne doivent pas être à 1. Exemple : deux tâches de traitement événementiel Timer1 et Timer2 à exécuter à 70 ms d'intervalle. Timer1 peut être définie avec une phase égale à 0 et Timer2 avec une phase de 70 ms (phase de 7 et base de temps de 10 ms). Tout événement déclenché par le temporisateur associé à la tâche de traitement Timer1 doit être suivi, après un intervalle de 70 ms, d'un événement du temporisateur associé à la tâche de traitement Timer2. 124 35006145.25 Structure du programme d'application Langages de programmation et structure Chronogramme : transition STOP/RUN Chronogramme de l'exemple ci-dessus avec la même valeur de présélection de 16 (160 ms) pour Timer1 et Timer2. Fonctionnement après la transition STOP/RUN de l'automate Le tableau suivant décrit le fonctionnement après une transition de l'automate de l'état STOP à l'état RUN (voir le chronogramme ci-dessus) : Etape 35006145.25 Description 1 En cas de transition STOP/RUN de l'automate, la synchronisation est déclenchée de sorte à atteindre la valeur de présélection à la fin d'une période égale à Phase x Base de temps, lorsque le premier événement est envoyé. 2 La valeur actuelle (VALEUR) du temporisateur augmente de 0 à la valeur de présélection au rythme d'une unité par impulsion de la base de temps. 3 Un événement est généré lorsque la valeur actuelle atteint la valeur de présélection. Le temporisateur est alors remis à 0, puis réactivé. Le traitement événementiel associé est également déclenché, si l'événement n'est pas masqué. Il peut être différé, si une tâche de traitement événementiel d'une priorité supérieure ou égale est en cours. 125 Langages de programmation et structure Structure du programme d'application Echanges d'entrées/de sorties dans les traitements événementiels Généralités Il est possible d'utiliser à chaque traitement événementiel des voies d'entrées/sorties autres que celle relative à l'événement. Comme pour les tâches, les échanges sont alors réalisés implicitement par le système avant (%I) et après (%Q) le traitement applicatif. Fonctionnement Le tableau suivant décrit les échanges et les traitements réalisés. Phase Description 1 L'apparition d'un événement déroute le programme application vers le traitement qui est associé à la voie d'entrée/sortie qui a provoqué l'événement. 2 Toutes les entrées associées au traitement événementiel sont acquises automatiquement. 3 Le traitement événementiel est exécuté. Il doit être le plus court possible. 4 Toutes les sorties associées au traitement événementiel sont mises à jour. Cas des Premium/Atrium Les entrées acquises et les sorties mises à jour sont : • les entrées associées à la voie qui a provoqué l'événement, • les entrées et les sorties utilisées dans le traitement événementiel. NOTE: Ces échanges peuvent être relatifs : 126 • à une voie (exemple module de comptage) ou • à un groupe de voies (module TOR). Dans cas , si le traitement modifie par exemple les sorties 2 et 3 d'un module TOR, c'est l'image des sorties 0 à 7 qui sera transférée vers le module. 35006145.25 Structure du programme d'application Langages de programmation et structure Cas du Quantum Les entrées acquises et les sorties mises à jour sont sélectionnées en configuration. Seules des entrées/sorties locales peuvent être choisies. Règle de programmation Les entrées échangées (et le groupe de voies associées) lors de l'exécution du traitement événementiel sont remis à jour (perte des valeurs historiques, donc des fronts). Il faut donc éviter de tester des fronts sur ces entrées dans les tâches maître (MAST), rapide (FAST) ou auxiliaires (AUXi). Programmation du traitement événementiel Procédure Le tableau ci-après présente les étapes principales pour la programmation du traitement événementiel. 35006145.25 127 Langages de programmation et structure Etape 1 Structure du programme d'application Action Phase de configuration (pour les événements déclenchés par des modules d'entrées/sorties) En mode local, à partir de l'éditeur de configuration, sélectionnez Traitement événementiel (EVT) et le numéro du traitement événementiel de la voie du module d'entrées/sorties concerné. 2 Phase de démasquage La tâche qui peut être interrompue doit en particulier : 3 • permettre le traitement des événements au niveau système : bit %S38 défini sur 1 (valeur par défaut) ; • démasquer les événements à l'aide de l'instruction UNMASKEVT (active par défaut) ; • démasquer les événements concernés au niveau de la voie (pour les événements déclenchés par des modules d'entrées/sorties) en définissant sur 1 les objets à langage implicite du module d'entrées/sorties pour le démasquage des événements (les événements sont masqués par défaut) ; • vérifier que la pile d'événements au niveau du système n'est pas saturée (le bit %S39 doit être défini sur 0). Phase de création du programme d'événement Le programme doit : • déterminer l'origine du ou des événements à partir du mot d'état de l'événement associé au module d'entrées/sorties si le module peut générer plusieurs événements ; • effectuer le traitement réflexe associé à l'événement (ce procédé doit être le plus court possible) ; • écrire les sorties réflexes concernées. Remarque : le mot d'état de l'événement est automatiquement remis à zéro. 128 35006145.25 Structure du programme d'application Langages de programmation et structure Illustration du démasquage d'événements Le schéma ci-après présente le démasquage d'événements dans la tâche MAST. Illustration du contenu du traitement événementiel Le schéma ci-après présente le contenu potentiel du traitement événementiel (test et action du bit). 35006145.25 129 Langages de programmation et structure Structure Mémoire des Applications Structure Mémoire des Applications Contenu de ce chapitre Méthodes d'adressage de données d'entrée et de sortie .................................................................................... 130 Structure de mémoire pour les automates Premium, Atrium et Modicon M340....................................................................... 134 Structure de la mémoire des automates Quantum .................... 142 Objet du chapitre Ce chapitre décrit la structure de la mémoire de l'application de l'UC. Méthodes d'adressage de données d'entrée et de sortie Objet de cette section Cette section présente les méthodes d'adressage de données d'entrée/sortie autorisées par la plateforme. Méthodes d'adressage de données d'entrée et de sortie Introduction La méthode d'adressage des données associées à une entrée/sortie de contrôleur dépend de la plateforme, de l'emplacement de l'E/S et de la topologie. Un récapitulatif des méthodes d'adressage est fourni pour les plateformes suivantes : 130 • Modicon M580, page 131 • Modicon M340, page 131 • Modicon Quantum, page 132 • Modicon Premium, page 133 • Modicon Momentum, page 133 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Modicon M580 Pour obtenir des informations concernant la structure de la mémoire de l'application Modicon M580, consultez la section Structure de la mémoire d'UC BME P58 xxxx (voir Modicon M580, Matériel, Manuel de référence). La méthode d'adressage autorisée dépend de l'emplacement du module dans l'architecture : Adressage (exemple d'adressage) Rack local Station RIO DIO CANopen ASI Profibus EIO x80 EIO Quantum S908 X – – X – – X – X – – X – – X – – – X X – – – – – – X X – – – – X X X – X X X X E/S localisées Adressage topologique Topologique (%lr.m.c) IODDT (%CHr.m.c) Adressage plat ou Modbus RAM d'état (%lx) Mémoire localisée (%MWx) E/S non localisées DDT d'équipement PLC0_dx_ry_sz_Module, page 222 X Méthode d'adressage autorisée. – Méthode d'adressage non autorisée. Modicon M340 La méthode d'adressage autorisée dépend de l'emplacement du module dans l'architecture : Adressage (exemple d'adressage) Rack local DIO (scrutation NOE) DIO (scrutation NOC) CANopen ASI Profibus E/S localisées 35006145.25 131 Langages de programmation et structure Adressage topologique Topologique Structure Mémoire des Applications X – – X X – X – – X X – X – – – – – X X X X – X – – – – – – (%lr.m.c) IODDT (%CHr.m.c) Adressage plat ou Modbus RAM d'état (%lx) Mémoire localisée (%MWx) E/S non localisées DDT d'équipement PLC0_dx_ry_sz_Module, page 222 X Méthode d'adressage autorisée. – Méthode d'adressage non autorisée. Modicon Quantum La méthode d'adressage autorisée dépend de l'emplacement du module dans l'architecture : Adressage (exemple d'adressage) S908 DIO (scrutation NOE) DIO (scrutation NOC) – X – – – – X – – X – X X X – X – X X X X Rack local Station RIO EIO x80 EIO Quantum X – X E/S localisées Adressage topologique Topologique (%lr.m.c) IODDT (%CHr.m.c) Adressage plat ou Modbus RAM d'état (%lx) Mémoire localisée (%MWx) E/S non localisées 132 35006145.25 Structure Mémoire des Applications Langages de programmation et structure – DDT d'équipement – X – – – PLC0_dx_ry_sz_Module, page 222 X Méthode d'adressage autorisée. – Méthode d'adressage non autorisée. Modicon Premium La méthode d'adressage autorisée dépend de l'emplacement du module dans l'architecture : Adressage (exemple d'adressage) CANopen DIO DIO (scrutation ETY) (scrutation ETC) X – – – X – – – – – – – – X X X – – – – Rack local E/S localisées Adressage topologique Topologique (%lr.m.c) IODDT (%CHr.m.c) Adressage plat ou Modbus RAM d'état (%lx) Mémoire localisée (%MWx) E/S non localisées DDT d'équipement PLC0_dx_ry_sz_Module, page 222 X Méthode d'adressage autorisée. – Méthode d'adressage non autorisée. Modicon Momentum La méthode d'adressage autorisée dépend de l'emplacement du module dans l'architecture : 35006145.25 133 Langages de programmation et structure Structure Mémoire des Applications Adressage (exemple d'adressage) Momentum Bus + I/O-Bus E/S localisées Adressage topologique Topologique – (%lr.m.c) IODDT – (%CHr.m.c) Adressage plat ou Modbus RAM d'état X (%lx) Mémoire localisée X (%MWx) E/S non localisées DDT d'équipement – PLC0_dx_ry_sz_Module, page 222 X Méthode d'adressage autorisée. – Méthode d'adressage non autorisée. Structure de mémoire pour les automates Premium, Atrium et Modicon M340 Objet de cette section Cette section décrit la structure de la mémoire et les zones de mémoire des automates Modicon Premium, Atrium et M340. Structure de Mémoire pour les automates Modicon M340 Présentation La mémoire des automates prend en charge les éléments suivants : • 134 les données d'application localisées ; 35006145.25 Structure Mémoire des Applications Langages de programmation et structure • les données d'application non localisées ; • le programme : descripteurs de tâche et code exécutable, mots constants, valeurs initiales et configuration des entrées/sorties. Structure Les données et le programme sont pris en charge par la RAM interne du module processeur. La figure ci-après décrit la structure de mémoire. RAM d'état En ce qui concerne les données (voir la figure ci-dessus), la RAM d'état est également disponible lorsque vous sélectionnez Topologie mixte et RAM d'état dans l'onglet Configuration d'un processeur Modicon M340 (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Pour utiliser cette option, il vous faut le micrologiciel Modicon M340 2.4 ou une version ultérieure. 35006145.25 135 Langages de programmation et structure Structure Mémoire des Applications NOTE: Si vous souhaitez importer une application Compact LL984 propriétaire qui utilise une demande Modbus pour communiquer avec une IHM, vous devez utiliser l'adressage de RAM d'état pour préserver l'échange Modbus ente le contrôleur et l'IHM. La RAM d'état contient les données localisées suivantes : Adresse Adresse d'objet Utilisation des données 0xxxxx %Qr.m.c.d,%Mi bits du module de sortie et bits internes 1xxxxx %Ir.m.c.d, %Ii bits du module d'entrée 3xxxxx %IWr.m.c.d, %IWi mots d'entrée des modules d'entrée/sortie 4xxxxx %QWr.m.c.d, %MWi mots de sortie des modules d'entrée/sortie et mots internes NOTE: Toutes les données représentées dans l'adressage topologique ne sont pas disponibles dans la RAM d'état. Reportez-vous à Adressage topologique/de RAM d'état des modules TOR Modicon M340 (voir Modicon X80, Modules d'entrée/sortie TOR, Manuel utilisateur) et à Adressage topologique/de RAM d'état des modules analogiques M340 (voir Modicon X80, Modules d'entrée/sortie analogique, Manuel utilisateur). Sauvegarde du programme Si la carte mémoire est présente, fonctionne normalement et n'est pas protégée en écriture, le programme est enregistré dessus : • 136 Automatiquement, après : ◦ un chargement ; ◦ une modification en ligne ; ◦ un front montant du bit système %S66 dans le programme du projet. 35006145.25 Structure Mémoire des Applications • Langages de programmation et structure Manuellement : ◦ à l'aide de la commande Automate > Sauvegarde du projet > Enregistrer la sauvegarde ; ◦ dans une table d'animation en configurant le bit système %S66. AVERTISSEMENT PERTE DE DONNÉES - APPLICATION NON ENREGISTRÉE L'interruption de la procédure d'enregistrement d'une application par une extraction intempestive ou non conforme de la carte mémoire peut entraîner la perte d'une application enregistrée. Le bit %S65 permet d'effectuer correctement l'extraction. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. NOTE: Pour plus d'informations sur le bit %S65, reportez-vous au chapitre Bits système (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence). Il est inutile de disposer d'une pile, car la carte mémoire utilise la technologie Flash. Restauration du programme Si la carte mémoire est présente et fonctionne normalement, le programme est copié de la carte mémoire de l'automate sur la mémoire interne : • Automatiquement après : ◦ • un cycle d'alimentation. Manuellement à l'aide de la commande Control Expert Automate > Sauvegarde du projet > Restauration de la sauvegarde. NOTE: lorsque vous insérez la carte mémoire en mode Run ou Stop, vous devez procéder à un redémarrage pour restaurer le projet sur l'automate. Données enregistrées Les données localisées, non localisées, le tampon de diagnostic sont enregistrés automatiquement dans la mémoire Flash interne lors de la mise hors tension. Ils sont restaurés lors du redémarrage à chaud. 35006145.25 137 Langages de programmation et structure Structure Mémoire des Applications Save_Param La fonction SAVE_PARAM permet d'ajuster le paramètre en cours et le paramètre initial dans la RAM interne (comme sur les autres automates). Dans ce cas, le contenu de la RAM interne et celui de la carte mémoire sont différents (%S96 = 0 et le voyant CARDERR est allumé). Lors d'un démarrage à froid (après restauration de l'application), le paramètre en cours est remplacé par les dernières valeurs initiales définies, à condition qu'un enregistrement sur carte mémoire ait été exécuté auparavant (fonction Enregistrer la sauvegarde ou front montant %S66). Enregistrer la valeur courante Sur un front montant %S94, les valeurs courantes remplacent les valeurs initiales dans la mémoire interne. Le contenu de la RAM interne et celui de la carte mémoire sont différents (%S96 = 0 et le voyant CARDERR est allumé). Lors d'un démarrage à froid, les valeurs courantes sont remplacées par les valeurs initiales les plus récentes, à condition qu'un enregistrement sur carte mémoire ait été exécuté auparavant (enregistrement de la sauvegarde ou front montant %S66). Supprimer des fichiers Pour supprimer tous les fichiers de la carte mémoire, vous pouvez procéder de deux manières : • L'effacement de la carte mémoire (suppression de tous les fichiers de la partition du système de fichiers) • Supprimer le contenu du répertoire \DataStorage\ (supprimer uniquement les fichiers ajoutés par l'utilisateur) Ces deux actions s'effectuent avec %SW93 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence). Le mot système %SW93 peut être utilisé uniquement après le chargement d'une application par défaut sur l'automate. ATTENTION CARTE MEMOIRE NON OPERATIONNELLE Ne formatez pas la carte mémoire à l'aide d'un outil autre qu'un outil Schneider. La carte mémoire a besoin d'une structure pour contenir le programme et les données. Effectuer un formatage avec un autre outil détruit cette structure. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 138 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Sauvegarde de %MW Il est possible d'enregistrer les valeurs de %MWi sur la mémoire Flash interne à l'aide de % SW96 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence). Ces valeurs seront restaurées lors du démarrage à froid, chargement d'application compris, si l'option Initialiser %MWi au démarrage à froid est cochée dans l'écran de configuration (voir EcoStruxure™ Control Expert, Modes de fonctionnement) du processeur. Dans le cas des mots %MW, il est possible d'enregistrer et de restaurer les valeurs lors du redémarrage à froid ou du chargement si l'option Initialiser %MW au démarrage à froid n'est pas cochée dans l'écran de configuration du processeur. Le mot %SW96 permet de gérer les mots internes %MW des actions de la mémoire (enregistrer, supprimer) et les informations sur l'état des mots internes %MW des actions. Caractéristiques de la carte mémoire Deux types de cartes mémoire sont disponibles : • application : ces cartes contiennent le programme d'application et des pages Web. • application + stockage de fichiers : ces cartes contiennent le programme d'application, des fichiers de données des EFB de gestion des fichiers de la carte mémoire et des pages Web. Structure de mémoire des automates Premium et Atrium Généralités La mémoire des automates prend en charge les éléments suivants : • les données d'application localisées, • les données d'application non localisées, • le programme : descripteurs de tâche et code exécutable, mots constants, valeurs initiales et configuration des entrées/sorties. Structure sans carte d'extension mémoire Les données et programme sont supportés par la mémoire RAM interne du module processeur. 35006145.25 139 Langages de programmation et structure Structure Mémoire des Applications La figure ci-après décrit la structure de mémoire. Structure avec carte d'extension mémoire Les données sont supportées par la mémoire RAM interne au module processeur. Le programme est supporté par la carte d'extension mémoire. La figure ci-après décrit la structure de mémoire. Sauvegarde de la mémoire La mémoire RAM interne est secourue par la pile cadmium-nickel supportée par le module processeur. Les cartes mémoire RAM sont secourues par pile cadmium-nickel. 140 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Spécificités des cartes mémoire Trois types de cartes mémoire sont proposés : • application : ces cartes contiennent le programme de l’application. Elles utilisent la technologie RAM ou Flash EPROM • application + stockage de fichiers : ces cartes contiennent, en plus du programme, une zone permettant d’archiver/restituer des données par programme. Elles sont proposés en technologie RAM ou Flash Eprom • stockage de fichiers : ces cartes permettent d’archiver/restituer des données par programme. Elles utilisent la technologie SRAM. Le schéma suivant décrit la structure mémoire avec une carte de type application et stockage de fichiers. NOTE: Dans le cas des processeurs possédant 2 emplacements pour carte mémoire, l'emplacement inférieur est réservé à la fonction de stockage de fichiers. Description détaillée des zones mémoires Données utilisateur Cette zone contient les données localisées et les données non localisées de l’application. • données localisées : ◦ données booléennes %M, %S et numériques %MW,%SW, ◦ données associées aux modules %I, %Q, %IW, %QW,%KW.... 35006145.25 141 Langages de programmation et structure • Structure Mémoire des Applications données non localisées : ◦ données booléennes et numériques (instances) ◦ Instances de EFB et DFB Programme utilisateur et constantes Cette zone contient les codes exécutables et les constantes de l’application. • • codes exécutables : ◦ code du programme ◦ code associé aux EF, EFB et à la gestion des modules d'E/S ◦ code associé aux DFB constantes : ◦ mots constants KW ◦ constantes associées aux entrées/sorties ◦ valeurs initiales des données Cette zone contient aussi les informations nécessaire au déchargement d’application : codes graphiques, symboles... Autres informations D’autres informations liées à la configuration et à la structure de l’application sont aussi stockées en mémoire (en zone données ou programme suivant le type d’information). • Configuration: autres données liées à la configuration (configuration matérielle, configuration logicielle). • Système: données utilisées par le système d’exploitation (pile des tâches,...). • Diagnostic: informations liées au diagnostic du procédé ou du système, buffer de diagnostic. Structure de la mémoire des automates Quantum Objet de cette section Ce chapitre décrit la structure de la mémoire des automates Quantum et en présente les différentes zones. 142 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Structure de la mémoire des automates Quantum Généralités La mémoire des automates prend en charge les éléments suivants : • les données d'application localisées (RAM d'état), • les données d'application non localisées, • le programme : descripteurs de tâche et code exécutable, valeurs initiales et configuration des entrées/sorties. Structure sans carte d'extension mémoire Les données et programme sont supportés par la mémoire RAM interne du module processeur. La figure ci-après décrit la structure de mémoire. Structure avec carte d'extension mémoire Les processeurs de l'automate Quantum 140 CPU 6••• peuvent être équipés d'une carte d'extension mémoire. Les données sont supportées par la mémoire RAM interne du module processeur. Le programme est supporté par la carte d’extension mémoire. 35006145.25 143 Langages de programmation et structure Structure Mémoire des Applications La figure ci-après décrit la structure de mémoire. Sauvegarde de la mémoire La mémoire RAM interne est secourue par la pile cadmium-nickel supportée par le module processeur. Les cartes mémoire RAM sont secourues par pile cadmium-nickel. Démarrage avec l'application enregistrée en mémoire de sauvegarde Le tableau ci-après décrit les différents résultats obtenus en fonction de l'état de l'automate et du commutateur PLC MEM (voir Quantum sous EcoStruxure™ Control Expert, Matériel, Manuel de référence), et indique si la case à cocher "Auto RUN" est sélectionnée. Etat de l'automate Commutateur PLC MEM1 Auto RUN dans l'application2 Résultats NONCONF Start ou Off Désactivé Démarrage à froid, l'application est chargée depuis la mémoire de sauvegarde vers la mémoire RAM de l'automate. L'automate reste sur STOP. NONCONF Start ou Off Activé Démarrage à froid, l'application est chargée depuis la mémoire de sauvegarde vers la mémoire RAM de l'automate. L'automate reste sur RUN. NONCONF Mem Prt ou Stop Non applicable Aucune application chargée. L'automate démarre en mode NONCONF. Configuré Start ou Off Désactivé Démarrage à froid, l'application est chargée depuis la mémoire de sauvegarde vers la mémoire RAM de l'automate. L'automate reste sur STOP. 144 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Etat de l'automate Commutateur PLC MEM1 Auto RUN dans l'application2 Résultats Configuré Start ou Off Activé Démarrage à froid, l'application est chargée depuis la mémoire de sauvegarde vers la mémoire RAM de l'automate. L'automate reste sur RUN. Configuré Mem Prt ou Stop Sans importance Démarrage à chaud, aucune application chargée. Mode précédent conservé à la mise sous tension. 1 Start et Stop sont valides pour les modèles 434 et 534 uniquement et Off est valide pour le modèle 311 uniquement. Mem Prt est valide pour tous les modèles. 2 Le RUN automatique de l'application correspond à l'application chargée. Spécificités des cartes mémoire Trois types de cartes mémoire sont proposés : • application : ces cartes contiennent le programme de l’application. Elles sont proposés en technologie RAM ou Flash Eprom • application + stockage de fichiers : ces cartes contiennent, en plus du programme, une zone permettant d’archiver/restituer des données par programme. Elles sont proposés en technologie RAM ou Flash Eprom • stockage de fichiers : ces cartes permettent d’archiver/restituer des données par programme. Elles utilisent la technologie SRAM. Le schéma suivant décrit la structure mémoire avec une carte de type application et stockage de fichiers. NOTE: Dans le cas des processeurs possédant 2 emplacements pour carte mémoire, l'emplacement inférieur est réservé à la fonction de stockage de fichiers. 35006145.25 145 Langages de programmation et structure Structure Mémoire des Applications Description détaillée des zones mémoire Données non localisées Cette zone contient les données non localisées : • données booléennes et numériques • EFB et DFB Données localisées Cette zone contient les données localisées (RAM d'état) : Adresse Adresse d'objet Utilisation des données 0xxxxx %Qr.m.c.d,%Mi bits du module de sortie et bits internes. 1xxxxx %Ir.m.c.d, %Ii bits du module d'entrée. 3xxxxx %IWr.m.c.d, %IWi mots de registre d’entrée des modules d’entrées/sorties. 4xxxxx %QWr.m.c.d, %MWi mots de sortie des modules d'entrée/sortie et mots internes. Programme utilisateur Cette zone contient les codes exécutables de l’application. • code du programme • code associé aux EF, aux EFB et à la gestion des modules d'E/S • code associé aux DFB • valeurs initiales des variables Cette zone contient également les informations nécessaires au téléchargement de l'application : codes graphiques, symboles, etc. Système d'exploitation Dans le cas des processeurs 140 CPU 31••/41••/51••, cette zone contient le système d'exploitation pour le traitement de l'application. Ce système d’exploitation est transféré d’une mémoire interne EPROM vers la mémoire interne RAM lors de la mise sous tension. 146 35006145.25 Structure Mémoire des Applications Langages de programmation et structure Sauvegarde de l'application Une zone mémoire Flash EPROM de 1435K8, disponible sur les processeurs 140 CPU 31••/41••/51••, permet la sauvegarde du programme et des valeurs initiales des variables. L'application stockée dans cette zone est transférée automatiquement dans la RAM interne à la mise sous tension du processeur de l'automate (si le commutateur PLC MEM est en position Off en face avant du processeur). Autres informations D’autres informations liées à la configuration et à la structure de l’application sont aussi stockées en mémoire (en zone données ou programme suivant le type d’information). • Configuration : autres données concernant la configuration (configurations matérielle et logicielle). • Système : données utilisées par le système d'exploitation (pile des tâches, etc.). • Diagnostics : informations relatives aux diagnostics de processus ou système, tampon de diagnostic. 35006145.25 147 Langages de programmation et structure Modes de fonctionnement Modes de fonctionnement Contenu de ce chapitre Modes de fonctionnement des automates Modicon M340 .................................................................................... 148 Mode de fonctionnement des automates Premium et Quantum ............................................................................... 158 Mode HALT de l'automate ...................................................... 170 Objet de ce chapitre Ce chapitre décrit les modes de fonctionnement de l'automate en cas de coupure et de rétablissement de l'alimentation, les incidences sur le programme de l'application et la mise à jour des entrées/sorties. Pour plus d'informations sur le Modicon M580, reportez-vous à la rubrique Modes de fonctionnement des UC BME P58 (voir Modicon M580, Matériel, Manuel de référence). Modes de fonctionnement des automates Modicon M340 Objet de cette section Cette section décrit les modes de fonctionnement des automates Modicon M340. Pour plus d'informations sur le Modicon M580, reportez-vous à la rubrique Modes de fonctionnement des M580 (voir Modicon M580, Matériel, Manuel de référence). Traitement en cas de coupure de courant et restauration des automates Modicon M340 Généralités Si la durée de la coupure est inférieure au temps de filtrage de l'alimentation, il n'y a aucune incidence sur le programme qui s'exécute normalement. Dans le cas inverse, il y a interruption du programme et activation de la restauration de l'alimentation. 148 35006145.25 Modes de fonctionnement Langages de programmation et structure Temps de filtrage : Automate Courant alternatif Courant continu BMX CPS 2000 10 ms - - 1 ms BMX CPS 3500 BMX CPS 3540T BMX CPS 4002 BMX CPS 2010 BMX CPS 3020 Illustration L’illustration suivante montre les phases du cycle d'alimentation. 35006145.25 149 Langages de programmation et structure Modes de fonctionnement Exploitation Le tableau suivant décrit les phases du traitement des coupures de courant. Etape Description 1 En cas de coupure de courant, le système enregistre le contexte applicatif, les valeurs des variables d'application et l'état du système dans la mémoire Flash interne. 2 Le système configure toutes les sorties à l'état de repli (état défini par configuration). 3 Dès l'alimentation restaurée, certaines actions et vérifications sont effectuées pour vérifier si le redémarrage à chaud est disponible : • Restauration du contexte applicatif à partir de la mémoire Flash interne • Vérification avec la carte mémoire (présence, disponibilité de l'application) • Vérification du contexte applicatif pour voir s'il est identique à celui de la carte mémoire Si toutes les vérifications sont correctes, un redémarrage à chaud, page 154 est effectué, sinon un redémarrage à froid, page 150 a lieu. Traitement en cas de démarrage à froid des automates Modicon M340 Cause d'un démarrage à froid Le tableau suivant décrit les différentes causes possibles d'un démarrage à froid. 150 Causes Caractéristiques du démarrage Chargement d'une application Démarrage à froid forcé en mode STOP Rétablissement de l'application située dans la carte mémoire lorsqu'elle est différente de celle dans la RAM interne Démarrage à froid forcé en mode STOP ou RUN selon la configuration Restauration de l'application à partir de la carte mémoire, à l'aide des commandes Control Expert Automate > Sauvegarde du projet > .... Démarrage à froid forcé en mode STOP. Le démarrage en mode RUN défini dans la configuration n'est pas pris en compte Actionnement du bouton RESET de l'alimentation Démarrage à froid forcé en mode STOP ou RUN selon la configuration Actionnement du bouton RESET de l'alimentation moins de 500 ms après une mise hors tension Démarrage à froid forcé en mode STOP ou RUN selon la configuration Actionnement du bouton RESET de l'alimentation après une erreur de processeur, sauf dans le cas d'une erreur de chien de garde Démarrage à froid forcé en mode STOP. Le démarrage en mode RUN défini dans la configuration n'est pas pris en compte 35006145.25 Modes de fonctionnement Langages de programmation et structure Causes Caractéristiques du démarrage Initialisation depuis Control Expert Forçage du bit système %S0 Démarrage en mode STOP ou RUN (conservation du mode de fonctionnement en cours lors de l'arrêt), initialisation de l'application uniquement Reprise après une coupure de courant avec perte du contexte Démarrage à froid forcé en mode STOP ou RUN selon la configuration ATTENTION PERTE DE DONNEES LORS DU TRANSFERT DE L'APPLICATION le chargement ou le transfert d'une application sur l'automate implique normalement l'initialisation des variables non affectées. Pour sauvegarder les variables localisées, procédez comme suit : • Evitez d'initialiser %MW en décochant Initialiser %MWi au démarrage à froid dans l'écran de configuration de l'UC. Il est nécessaire d'attribuer une adresse topologique aux données si le processus impose de conserver les valeurs courantes de ces données lors du transfert de l'application. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. ATTENTION PERTE DE DONNEES LORS DU TRANSFERT DE L'APPLICATION N'appuyez pas sur le bouton RESET de l'alimentation. Sinon, %MWi est réinitialisé et les valeurs initiales sont chargées. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. ATTENTION RISQUE DE PERTE D'APPLICATION S'il n'y a pas de carte mémoire dans l'automate lors d'un redémarrage à froid, l'application est perdue. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 35006145.25 151 Langages de programmation et structure Modes de fonctionnement Illustration Le schéma ci-après décrit le déroulement d’un redémarrage à froid. Fonctionnement Le tableau ci-après décrit les phases de reprise de l'exécution du programme lors d'un redémarrage à froid. 152 35006145.25 Modes de fonctionnement Étape 1 Langages de programmation et structure Description Le démarrage est effectué en mode RUN ou STOP, selon l'état du paramètre Démarrage automatique en RUN défini dans la configuration ou, le cas échéant, selon l'état de l'entrée RUN/ STOP. L'exécution du programme reprend en début de cycle. 2 Le système effectue les actions suivantes : • la désactivation des tâches, autres que la tâche maître, jusqu'à la fin du premier cycle de la tâche maître ; • l'initialisation de données (bits, image des E/S, mots...) par les valeurs initiales définies dans l'éditeur de données (valeur réglée sur 0 si aucune valeur initiale n'est définie). Les valeurs des mots %MW peuvent être récupérées en cas de redémarrage à froid si les deux conditions suivantes sont remplies : ◦ l'option Initialiser %MW au redémarrage à froid (voir EcoStruxure™ Control Expert Modes de fonctionnement) n'est pas cochée dans l'écran de configuration du processeur, ◦ la mémoire flash interne a une sauvegarde valide (voir %SW96 (voir EcoStruxure™ Control Expert - Bits et mots système - Manuel de référence)). Remarque : Si le nombre de mots %MW dépasse la taille de sauvegarde (voir structure de mémoire des automates M340, page 134) pendant l'opération d'enregistrement, les mots restants sont mis à 0. 3 • l'initialisation des blocs fonction élémentaires à partir des données initiales, • l'initialisation des données déclarées dans les blocs fonction dérivés (DFB) : 0 ou valeur initiale déclarée dans le type de DFB, • l'initialisation des bits et mots système, • le positionnement des graphes sur les étapes initiales, • l'annulation de tout forçage, • l'initialisation des files de messages et d'événements, • l'envoi des paramètres de configuration à tous les modules d'E/S TOR et spécialisés. Pour ce premier cycle de reprise, le système effectue les opérations suivantes : • Il relance la tâche maître avec les bits %S0 (redémarrage à froid) et %S13 (premier cycle en mode RUN) réglés sur 1, et le mot %SW10 (détection d'un redémarrage à froid lors du premier cycle d'une tâche) réglé sur 0. • Il remet à 0 les bits %S0 et %S13 et règle sur 1 chaque bit du mot %SW10 à la fin de ce premier cycle de la tâche maître. • Il active la tâche rapide et le traitement des événements à la fin du premier cycle de la tâche maître. Traitement par programme d'un démarrage à froid Il est conseillé de tester le bit %SW10.0 pour détecter un démarrage à froid et lancer un traitement spécifique à ce démarrage à froid. 35006145.25 153 Langages de programmation et structure Modes de fonctionnement NOTE: il est possible de tester le bit %S0 si le paramètre Démarrage automatique en RUN a été sélectionné. Si tel n'est pas le cas, l'automate démarre en mode STOP, le bit %S0 passe à 1 au premier cycle après le redémarrage, mais reste invisible au programme parce qu'il n'est pas exécuté. Modification des sorties Dès la détection de la coupure de courant, les sorties sont mises en position de repli : • soit elles prennent la valeur de repli • soit elles conservent leur valeur courante, selon la configuration choisie Au rétablissement de l'alimentation, les sorties restent à 0 jusqu'à ce qu'elles soient mises à jour par la tâche. Traitement sur reprise à chaud pour les automates Modicon M340 Cause d’une reprise à chaud Une reprise à chaud peut être provoquée par un rétablissement du courant sans perte du contexte. ATTENTION RISQUE DE PERTE D'APPLICATION S'il n'y a pas de carte mémoire dans l'automate lors d'une reprise à chaud, l'application est perdue. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 154 35006145.25 Modes de fonctionnement Langages de programmation et structure Illustration Le schéma ci-après décrit le déroulement d’une reprise à chaud. Déroulement Le tableau ci-après décrit les phases de reprise de l’exécution du programme sur reprise à chaud. 35006145.25 155 Langages de programmation et structure Etape Modes de fonctionnement Description 1 L'exécution du programme ne reprend pas à partir de l’élément où a eu lieu la coupure de courant. Le programme restant est ignoré pendant le démarrage à chaud. Chaque tâche redémarre depuis le début. 2 A la fin du cycle de reprise, le système effectue : 3 • la restitution de la valeur variable de l'application, • la définition du bit %S1 sur 1, • l'initialisation des files de messages et d'événements, • l'envoi des paramètres de configuration à tous les modules d'entrées/sorties TOR et métiers, • la désactivation de la tâche rapide et des traitements événementiels (jusqu'à la fin du premier cycle de la tâche maître). Le système effectue un cycle de reprise dans lequel il : • relance la tâche maître depuis le début du cycle, • remet à l'état 0 le bit %S1 à la fin de ce premier cycle de la tâche maître, • réactive la tâche rapide et les traitements événementiels à la fin de ce premier cycle de la tâche maître. Traitement par programme de la reprise à chaud En cas d'une reprise à chaud, si vous souhaitez un traitement particulier de l'application, vous devez écrire le programme correspondant pour vérifier que %S1 est défini sur 1 en début de programme de la tâche maître. Fonctions spécifiques du démarrage à chaud SFC Le démarrage à chaud sur les automates M340 n'est pas réellement considéré comme un démarrage à chaud par l'UC. L'interpréteur SFC ne dépend pas des tâches. SFC publie une zone de mémoire « ws_data » sur le système d'exploitation qui contient les données spécifiques à la section SFC qui doivent être enregistrées en cas de panne. Au début du traitement du diagramme, les étapes actives sont enregistrées dans « ws_data » et le traitement est marqué comme étant dans une « section critique ». Une fois le traitement terminé, la section n'est plus marquée comme critique. Si une coupure de courant se produit dans cette section critique, elle peut être décelée si cet état est actif au début (puisque le cycle est abandonné et que la tâche MAST est recommencée au début). Dans ce cas, l'espace de travail peut être incohérent et est restauré à partir des données sauvegardées. D'autres informations provenant de SFCSTEP_STATE dans la zone des données localisées sont utilisées pour régénérer l'état de la machine. 156 35006145.25 Modes de fonctionnement Langages de programmation et structure Lorsqu'une panne de courant se produit : • au cours du premier cycle %S1 =1, la tâche Mast est exécutée mais pas les tâches Fast et Event. Lors du rétablissement du courant : • le diagramme est effacé, l'enregistrement du diagnostic est annulé, les actions définies sont conservées, • les étapes sont définies à partir de la zone sauvegardée, • les temps d'étapes sont définis à partir de SFCSTEP_STATE, • le temps écoulé est restauré pour les actions minutées. NOTE: L'interpréteur SFC est indépendant, si la transition est valide, le diagramme SFC évolue tant que %S1 est vrai. Changements de sortie Dès la détection de la coupure de courant, les sorties sont mises en position de repli : • soit elles prennent la valeur de repli, • soit elles conservent leur valeur courante, suivant le choix de la configuration. Au rétablissement du courant, les sorties restent en mode sécurité (état égal à 0) jusqu'à leur mise à jour par une tâche d'exécution. Démarrage automatique en mode RUN pour les automates Modicon M340 Description Le démarrage automatique en mode RUN est une option de configuration du processeur. Cette option force l'automate à démarrer en mode RUN après un redémarrage à froid, page 150, sauf après le chargement d'une application sur ce dernier. Pour les Modicon M340, cette option n'est pas prise en compte lorsque le bouton de réinitialisation de l'alimentation est activé après une erreur liée au processeur, sauf si celleci concerne le chien de garde. 35006145.25 157 Langages de programmation et structure Modes de fonctionnement AVERTISSEMENT COMPORTEMENT INATTENDU DU SYSTEME - DEBUT INATTENDU DU PROCESSUS Les actions ci-après déclenchent le démarrage automatique en mode RUN : • restauration de l'application depuis la carte mémoire, • utilisation imprudente ou par inadvertance du bouton de réinitialisation. Pour éviter un redémarrage non souhaité en mode RUN, utilisez : • l'entrée RUN/STOP sur les automates Modicon M340 Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Traitement de la RAM d'état en mode STOP pour les automates Modicon M340 Généralités Avec le micrologiciel Modicon M340 2.4 ou version ultérieure, vous pouvez accéder aux modules par le biais des adresses topologiques ou de RAM d'état. Voir aussi la section présentant l'onglet Mémoire (voir EcoStruxure™ Control Expert, Modes de fonctionnement). NOTE: La RAM d'état est actualisée en mode RUN de l'automate uniquement. La RAM d'état n'est pas actualisée dans le mode STOP de l'automate. Mode de fonctionnement des automates Premium et Quantum Objet de cette section Cette section décrit les modes de fonctionnement des automates Premium et Quantum. 158 35006145.25 Modes de fonctionnement Langages de programmation et structure Traitement en cas de coupure et de reprise secteur des automates Premium/Quantum Généralités Si la durée de la coupure est inférieure au temps de filtrage de l'alimentation, celle-ci n'est pas vue par le programme qui s'exécute normalement. Dans le cas inverse, il y a interruption du programme et traitement de la reprise secteur. Temps de filtrage : Automate Courant alternatif Courant continu Premium 10 ms 1 ms Atrium 30 ms - Quantum 10 ms 1 ms 35006145.25 159 Langages de programmation et structure Modes de fonctionnement Illustration L’illustration présente les différentes reprises secteur détectées par le système. Fonctionnement Le tableau ci-après décrit les phases du traitement des coupures secteur. 160 35006145.25 Modes de fonctionnement Etape Langages de programmation et structure Description 1 Lors d'une coupure secteur, le système mémorise le contexte de l'application et l'heure de la coupure. 2 Il positionne toutes les sorties à l'état repli (état défini dans la configuration). 3 Lorsque l'alimentation est rétablie, le contexte sauvegardé est comparé à celui en cours, ce qui définit le type de démarrage à exécuter : • Si le contexte de l'application a changé (perte du contexte système ou nouvelle application), l'automate initialise l'application : démarrage à froid. • Si le contexte de l'application est inchangé, l'automate effectue une reprise sans initialisation des données : redémarrage à chaud. Coupure de l'alimentation sur un rack autre que le rack 0 Toutes les voies de ce rack sont vues en erreur par le processeur, mais les autres racks ne sont pas perturbés. Les valeurs des entrées en erreur ne sont plus actualisées dans la mémoire de l'application et sont remises à 0 dans le cas d'un module d'entrée TOR, à moins quelles aient été forcées, auquel cas elles sont maintenues à la valeur de forçage. Si la durée de la coupure est inférieure au temps de filtrage, il n'y a aucun effet sur le programme qui continue de s'exécuter normalement. Traitement lors d'un démarrage à froid pour les automates Premium/Quantum Cause d'un démarrage à froid Le tableau suivant décrit les différentes causes possibles d'un démarrage à froid. Causes Caractéristiques du démarrage Chargement d'une application Démarrage à froid forcé en mode STOP Activation du bouton RESET du processeur (Premium) Démarrage à froid forcé en mode STOP ou RUN selon la configuration Activation du bouton RESET du processeur après une erreur processeur ou système (Premium). Démarrage à froid forcé en mode STOP Manipulation du préhenseur ou insertion/extraction d'une carte mémoire PCMCIA Démarrage à froid forcé en mode STOP ou RUN selon la configuration 35006145.25 161 Langages de programmation et structure Modes de fonctionnement Causes Caractéristiques du démarrage Initialisation depuis Control Expert Forçage du bit système %S0 Démarrage en STOP ou en RUN (conserve le mode de fonctionnement en cours), sans initialisation des modules d'entrées/sorties TOR et métier Rétablissement de l'alimentation après une coupure avec perte de contexte Démarrage à froid forcé en mode STOP ou RUN selon la configuration ATTENTION PERTE DE DONNEES LORS DU TRANSFERT DE L'APPLICATION le chargement ou le transfert d'une application sur l'automate implique normalement l'initialisation des variables non affectées. Pour enregistrer les variables affectées sur les automates Premium et Quantum : • Enregistrez et restaurez %M et %MW en cliquant sur Automate > Transfert de données. Pour les automates Premium : • Evitez l'initialisation de %MW en désélectionnant Initialiser %MWi au démarrage à froid dans l'écran de configuration de l'UC. Pour les automates Quantum : • Evitez l'initialisation de %MW en désélectionnant Initialiser %MWi dans l'écran de configuration de l'UC. Il est nécessaire d'attribuer une adresse topologique aux données si le processus impose de conserver les valeurs courantes de ces données lors du transfert de l'application. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 162 35006145.25 Modes de fonctionnement Langages de programmation et structure Illustration Le schéma ci-après décrit le déroulement d’un redémarrage à froid. Fonctionnement Le tableau ci-après décrit les phases de reprise de l'exécution du programme lors d'un redémarrage à froid. 35006145.25 163 Langages de programmation et structure Étape 1 Modes de fonctionnement Description Le démarrage est effectué en mode RUN ou STOP, selon l'état du paramètre Démarrage automatique en RUN défini dans la configuration ou, le cas échéant, selon l'état de l'entrée RUN/STOP. L'exécution du programme reprend en début de cycle. 2 Le système effectue les actions suivantes : • Initialisation de données (bits, image des E/S, mots...) par les valeurs initiales définies dans l'éditeur de données (valeur à 0 si aucune valeur initiale n'a été définie). Dans le cas des %MW, les valeurs de ces mots peuvent être conservées au redémarrage à froid si l'option de remise à zéro au redémarrage à froid n'est pas activée dans l'écran de configuration du processeur. NOTE: La valeur des %MWi n'est pas conservée si un nouveau programme est chargé. 3 • Initialisation des blocs fonction élémentaires à partir des données initiales. • Initialisation des données déclarées dans les blocs fonction dérivés (DFB) : 0 ou la valeur initiale déclarée dans le type de DFB. • Initialisation des bits et mots système/ • Désactivation des tâches, hormis la tâche maître, jusqu'à la fin du premier cycle de la tâche maître. • Positionnement des graphes sur les étapes initiales. • Annulation des forçages. • Initialisation des files de messages et d'événements. • Envoi des paramètres de configuration à tous les modules d'entrées/de sorties TOR et métiers. Pour ce premier cycle de reprise, le système effectue les opérations suivantes : • Relance de la tâche maître avec les bits %S0 (redémarrage à froid) et %S13 (premier cycle en RUN) réglés sur 1, le mot %SW10 (détection d'un redémarrage à froid lors du premier cycle d'une tâche) est réglé sur 0. • Remise à 0 des bits %S0 et %S13 et le réglage sur 1 de chaque bit du mot %SW10 à la fin de ce premier cycle de la tâche maître. • Activation de la tâche rapide et des traitements événementiels à la fin du premier cycle de la tâche maître. Traitement par programme d'un démarrage à froid Il est conseillé de tester le bit %SW10.0 pour détecter un démarrage à froid et lancer un traitement spécifique à ce démarrage à froid. NOTE: il est possible de tester le bit %S0 si le paramètre Démarrage automatique en RUN a été sélectionné. Si tel n'est pas le cas, l'automate démarre en mode STOP, le bit %S0 passe à 1 au premier cycle après le redémarrage, mais reste invisible au programme parce qu'il n'est pas exécuté. 164 35006145.25 Modes de fonctionnement Langages de programmation et structure Modification des sorties, pour les modules Premium et Atrium Dès la détection de la coupure de courant, les sorties sont mises en position de repli : • soit ils reçoivent la valeur de repli, • soit il y a maintien de la valeur en cours selon la configuration choisie Au rétablissement de l'alimentation, les sorties restent à zéro jusqu'à leur mise à jour par la tâche. Modification des sorties, pour Quantum Dès la détection d'une panne d'alimentation • les sorties locales sont mises à zéro • les sorties des racks d'extension décentralisés ou distribués sont mises en position de repli Au rétablissement de l'alimentation, les sorties restent à zéro jusqu'à leur mise à jour par la tâche. NOTE: le comportement des sorties forcées a été modifié entre Modsoft/NxT/Concept et Control Expert. Avec Modsoft/NxT/Concept, vous ne pouvez pas forcer les sorties si l'interrupteur de protection de la mémoire du processeur Quantum est en position « On ». Avec Control Expert, vous pouvez forcer les sorties si l'interrupteur de protection de la mémoire du processeur Quantum est en position « On ». Avec Modsoft/NxT/Concept, les sorties forcées conservent leur état après un démarrage à froid. Avec Control Expert, les sorties forcées perdent leur état après un démarrage à froid. ATTENTION COMPORTEMENT INATTENDU DE L'APPLICATION - VARIABLES FORCEES Vérifiez vos variables forcées et le commutateur de protection de la mémoire lors d'une transition entre Modsoft/NxT/Concept et Control Expert. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 35006145.25 165 Langages de programmation et structure Modes de fonctionnement Pour les processeurs Quantum 140 CPU 31••/41••/51•• Ces processeurs sont dotés d'une mémoire Flash EPROM de 1 435 Ko, qui peut être utilisée pour enregistrer le programme et les valeurs initiales des variables. Lors du rétablissement de l'alimentation, vous pouvez choisir le mode de fonctionnement souhaité à l'aide du commutateur PLC MEM en face avant du processeur. Pour plus d'informations sur le fonctionnement de ce commutateur, vous pouvez vous reporter au manuel Quantum (voir la rubrique Quantum sous EcoStruxure™ Control Expert - Guide de référence du matériel). • position OFF : L'application contenue dans cette zone est transférée automatiquement dans la RAM interne lors de la mise sous tension du processeur automate : redémarrage à froid de l'application. position ON : L'application contenue dans cette zone n'est pas transférée en RAM interne : reprise à chaud de l'application. Traitement des automates Premium/Quantum lors d'un redémarrage à chaud Cause d'un redémarrage à chaud Un redémarrage à chaud peut être provoqué : 166 • par le rétablissement de l'alimentation secteur sans perte du contexte • par la définition sur 1 du bit système %S1, par le programme • par Control Expert via le terminal • par activation du bouton RESET du module d'alimentation du rack 0 (sur l'automate Premium). 35006145.25 Modes de fonctionnement Langages de programmation et structure Illustration Le schéma ci-après décrit le déroulement d’une reprise à chaud. Déroulement Le tableau ci-après décrit les phases de reprise de l’exécution du programme sur reprise à chaud. 35006145.25 167 Langages de programmation et structure Etape Modes de fonctionnement Description 1 L’exécution du programme reprend à partir de l’élément où a eu lieu la coupure secteur, sans mise à jour des sorties. 2 A la fin du cycle de reprise, le système effectue les actions suivantes : 3 • Initialisation des files de messages et d'événements. • Envoi des paramètres de configuration à tous les modules d'entrées/sorties TOR et métiers • Désactivation de la tâche FAST et des traitements des événements (jusqu'à la fin du premier cycle de la tâche maître) Le système effectue un cycle de reprise dans lequel il : • reprend en compte l'ensemble des modules d'entrées, • relance la tâche maître avec le bit %S1 (reprise à chaud) défini sur 1, • remet à l'état 0 le bit %S1 à la fin de ce premier cycle de la tâche maître • réactive la tâche rapide, les tâches auxiliaires et les traitements événementiels à la fin de ce premier cycle de la tâche maître. Traitement par programme de la reprise à chaud En cas de reprise à chaud, si vous désirez un traitement particulier vis-à-vis de l'application, vous devez écrire le programme correspondant sur test de %S1 à 1 en début de programme de la tâche maître. Sur automates Quantum, le commutateur situé en face avant du processeur permet de configurer les modes de marche. Pour plus d'informations, voir la documentation Quantum (voir Quantum sous EcoStruxure™ Control Expert, Matériel, Manuel de référence). Modification des sorties, pour les modules Premium et Atrium Dès la détection de la coupure de courant, les sorties sont mises en position de repli : • soit elles prennent la valeur de repli ou • la valeur en cours est maintenue. selon la configuration choisie Au rétablissement de l'alimentation, les sorties sont en position de repli jusqu'à leur mise à jour par la tâche. NOTE: en cas de mise sous tension lorsque la CPU n'est pas démarrée, les sorties sont en mode sécurité (état égal à 0). Une fois la CPU démarrée, si le module n'est pas maintenu sous tension, l'état de maintien est perdu et la sortie reste à l'état 0. 168 35006145.25 Modes de fonctionnement Langages de programmation et structure Modification des sorties, pour Quantum Dès la détection d'une panne d'alimentation: • les sorties locales sont mises à zéro • les sorties des racks d'extension décentralisés ou distribués sont mises en position de repli Au rétablissement de l'alimentation, les sorties sont en position de repli jusqu'à leur mise à jour par la tâche. Modification des sorties, pour le rack d'extension En cas de coupure de courant sur le rack où se trouve la CPU : • état de repli dès la détection d'une perte de CPU, • état de sécurité pendant la configuration des E/S, • état calculé par la CPU après la première exécution de la tâche gérant cette sortie. Au rétablissement de l'alimentation, les sorties sont en position de repli jusqu'à leur mise à jour par la tâche. Démarrage automatique en mode RUN pour Premium/ Quantum Description Le démarrage automatique en mode RUN est une option de configuration du processeur. Cette option force l'automate à démarrer en mode RUN après un redémarrage à froid, page 161, sauf après le chargement d'une application sur ce dernier. Pour les automates Quantum, le démarrage automatique en mode RUN dépend de la position du commutateur situé sur le panneau avant du processeur. Pour plus d'informations, reportez-vous à la documentation Quantum (voir Quantum avec EcoStruxure™ Control Expert - Manuel de référence du matériel. 35006145.25 169 Langages de programmation et structure Modes de fonctionnement AVERTISSEMENT COMPORTEMENT INATTENDU DU SYSTEME - DEMARRAGE INATTENDU DU PROCESSUS Les actions ci-après déclenchent le démarrage automatique en mode RUN : • l'insertion d'une carte PCMCIA à la mise sous tension de l'automate (Premium, Quantum), • le remplacement du processeur sous tension (Premium, Quantum), • l'utilisation imprudente ou par inadvertance du bouton de réinitialisation, • une pile qui s'avère défectueuse en cas de coupure de courant (Premium, Quantum). Pour éviter un redémarrage non souhaité en mode RUN : • Il est vivement recommandé d'employer l'entrée RUN/STOP sur les automates Premium ou le commutateur situé à l'avant du panneau du processeur sur les automates Quantum. • Il est déconseillé d'utiliser les entrées mémorisées en tant qu'entrée RUN/STOP pour l'automate. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Mode HALT de l'automate Objet de cette section Cette section présente le mode HALT. Mode HALT de l'automate Vue d'ensemble Les actions suivantes font basculer l'automate en mode HALT : 170 • utilisation de l’instruction HALT • débordement du chien de garde 35006145.25 Modes de fonctionnement • Langages de programmation et structure erreur d'exécution du programme (division par zéro, débordement, etc.) si le bit %S78 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence) est réglé sur 1. Précaution AVERTISSEMENT COMPORTEMENT IMPREVU DE L'APPLICATION Lorsque l'automate est en mode Halt, toutes les tâches sont arrêtées. Vérifiez le comportement des E/S associées pour vous assurer que les conséquences de l'arrêt de l'automate sur l'application sont acceptables. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 35006145.25 171 Langages de programmation et structure Description des données Contenu de cette partie Présentation générale des données ........................................ 173 Types de données.................................................................. 180 Instances de données ............................................................ 245 Références de données ......................................................... 260 Dans cette partie Cette partie décrit les différents types de données qu'il est possible d'utiliser dans un projet, et décrit comment les mettre en oeuvre. 172 35006145.25 Présentation générale des données Langages de programmation et structure Présentation générale des données Contenu de ce chapitre Généralités............................................................................ 173 Présentation des familles de types de données ........................ 174 Présentation des instances de données................................... 176 Présentation des références de données ................................. 178 Règles syntaxiques pour les noms de type/d'instance............... 179 Objet de ce chapitre Ce chapitre présente de façon très générale: • les différents types de données, • les instances de données, • les références de données. Généralités Introduction Une donnée désigne un objet qui peut être instancié, par exemple : • une variable, • un bloc fonction. Une donnée est définie en trois phases, à savoir : • • la phase types de données qui consiste à préciser : ◦ sa catégorie, ◦ son format. la phase instances de données qui définit son emplacement mémoire et sa propriété, à savoir : ◦ localisée ou ◦ non localisée. 35006145.25 173 Langages de programmation et structure • Présentation générale des données la phase références de données qui définit le moyen d'accès : ◦ par valeur immédiate, ◦ par nom, ◦ par adresse. Illustration Voici les trois phases caractérisant les données : Instancier une donnée consiste à lui allouer un emplacement mémoire en fonction de son type. Référencer une donnée consiste à définir une référence (nom, adresse, etc.) permettant d'accéder à cette donnée en mémoire. Présentation des familles de types de données Introduction Un type de donnée est une information logicielle qui spécifie pour une donnée : • sa structure, • son format, • la liste de ses attributs, • son comportement. Ces propriétés sont partagées par toutes les instances du type de donnée. 174 35006145.25 Présentation générale des données Langages de programmation et structure Illustration Les familles de types de données sont classées dans différentes catégories (gris foncé). Définitions Familles de types de données et leurs définitions. Famille Définition EDT Types de données élémentaires (Elementary data types) tels que : DDT • Bool • Int • Byte • Word • Dword • etc. Types de données dérivés (Derived data types) tels que : • • DDT d'équipement 35006145.25 Tableaux, qui contiennent des éléments de même type : ◦ Tables de Bool (tables EDT) ◦ Tables EBool (tableaux DDT d'équipement) ◦ Tables de tables (tables DDT) ◦ Tables de structures (tables DDT) Structures, qui contiennent des éléments de différents types : ◦ Structures de Bool, Word, etc. (structures EDT) ◦ Tables EBool (structure DDT d'équipement) ◦ Structures de tables, structures de structures, structures de tables/structures (structures DDT) ◦ Structures de Bool, structures de tables, etc. (structures EDT et DDT) ◦ Structures concernant les données d'E/S (structures IODDT) Types de données dérivés d'équipement, tels que : 175 Langages de programmation et structure Famille Définition • • EFB DFB Présentation générale des données Tables, qui contiennent des éléments de même type : ◦ Tables de Bool (tables EDT) ◦ Tables de tables (tables DDT) ◦ Tables de structures (tables DDT) Structures, qui contiennent des éléments de différents types : ◦ Structures de Bool, Word, etc. (structures EDT) ◦ Structures de tables, structures de structures, structures de tables/structures (structures DDT) ◦ Structures de Bool, structures de tables, etc. (structures EDT et DDT) ◦ Structures concernant les données d'entrée/sortie ◦ Structures contenant des variables restituant les propriétés et l'état d'une action ou transition d'un diagramme fonctionnel en séquence (Sequential Function Chart) Blocs fonction élémentaires (elementary function blocks) écrits en langage C. Ils comprennent : • des variables d'entrée, • des variables internes, • des variables de sortie, • un algorithme de traitement. Blocs fonction dérivés (derived function blocs) écrits en langage d'automatisme (Litteral Structuré, Liste d'instructions, etc...). Ils comprennent : • des variables d'entrée, • des variables internes, • des variables de sortie, • un algorithme de traitement. Présentation des instances de données Introduction Une instance de données est une entité fonctionnelle individuelle, qui possède toutes les caractéristiques du type de données duquel elle dépend. Une ou plusieurs instances peuvent être rattachées à un type de données. L'instance de données peut avoir une allocation mémoire : 176 • non localisée ou • localisée 35006145.25 Présentation générale des données Langages de programmation et structure Illustration Allocation mémoire des instances (gris foncé) appartenant aux différents types. Définitions Définition des allocations mémoire des instances de données. Instance de données Définition Non localisées L'emplacement mémoire de l'instance est alloué automatiquement par le système, il peut changer à chaque génération de l'application. L'instance est repérée par un nom (symbole) choisi par l’utilisateur. Localisées L'emplacement mémoire de l’instance est fixe, il est prédéfini et ne change jamais. L'instance est repérée par un nom (symbole) choisi par l’utilisateur et une adresse topologique définie par le constructeur, ou uniquement par l’adresse topologique constructeur. 35006145.25 177 Langages de programmation et structure Présentation générale des données Présentation des références de données Introduction Une référence de donnée permet à l'utilisateur d'accéder à l'instance de cette donnée : • par valeur immédiate, uniquement pour les données de type EDT • par adressage, uniquement pour les données de type EDT • par nom (symbole), pour tous les types de données EDT, DDT, EFB, DFB ainsi que les objets SFC Illustration Références de données possibles (gris foncé) selon le type de données. 178 35006145.25 Présentation générale des données Langages de programmation et structure Règles syntaxiques pour les noms de type/ d'instance Introduction La syntaxe des noms de types et de variables peut utiliser un jeu de caractères Standard, Etendu ou Unicode. L'option Jeu de caractères est configurée dans Outils > Options du projet > Variables. Le paramètre Jeu de caractères utilisé pour les noms saisis dans l'application concerne : • les blocs fonctions utilisateur dérivés DFB ou les types de données dérivés DDT • les éléments internes composant un DFB ou DDT • les instances de données Options de Jeu de caractères Si vous sélectionnez l'option Standard : • L'application est conforme à la norme CEI. • Les noms saisis sont des chaînes composées de caractères alphanumériques et du trait de soulignement. ◦ le premier caractère du nom est un caractère alphabétique ou le caractère de soulignement, ◦ deux caractères de soulignement ne peuvent être consécutifs. Si vous sélectionnez l'option Etendu : • L'utilisateur bénéficie d'une certaine souplesse, mais l'application n'est pas conforme à la norme CEI. • Des caractères supplémentaires sont disponibles : ◦ les caractères correspondant aux codes ASCII 192 à 223 (à l'exception du code 215), ◦ les caractères correspondant aux codes ASCII 224 à 255 (à l'exception du code 247). • le premier caractère du nom est un caractère alphanumérique ou le caractère de soulignement, • les caractères de soulignement peuvent être consécutifs. Sélectionnez l'option Unicode pour créer des éléments en alphabet non romain (chinois par exemple). 35006145.25 179 Langages de programmation et structure Types de données Types de données Contenu de ce chapitre Types de données élémentaires (EDT) au format Binaire .................................................................................. 180 Types de données élémentaires (EDT) au format BCD ............. 191 Types de données élémentaires (EDT) au format Réel ............. 196 Types de données élémentaires (EDT) au format chaine de caractères ............................................................................. 202 Types de données élémentaires (EDT) au format chaîne de bits ....................................................................................... 205 Types de données dérivés (DDT/IODDT/DDDT)....................... 208 Types de données des blocs fonction (DFB/EFB) ..................... 225 Types de données génériques (GDT) ...................................... 233 Types de données appartenant aux diagrammes fonctionnels en séquence (SFC) ................................................................ 234 Compatibilité entre types de données ...................................... 237 Déclarations du type de données Reference ............................ 240 Objet du chapitre Ce chapitre décrit tous les types de données qu’il est possible d’utiliser dans une application. Types de données élémentaires (EDT) au format Binaire Objet de cette section Cette section décrit le type de données au format binaire. qui sont : 180 • les types Booléens, • les types Entiers, • le type Heure. 35006145.25 Types de données Langages de programmation et structure Présentation des types de données au format Binaire Introduction Les types de données au format Binaire appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction). Rappel concernant le format Binaire Au format Binaire, un élément de données comporte un ou plusieurs bits dont chacun est représenté par l'un des chiffres de la base 2 (0 ou 1). L'échelle de l'élément de données dépend du nombre de bits qui le constituent. Exemple : Un élément de données peut avoir deux états : • Il peut être signé. Dans ce cas, le bit de plus haut rang est le bit de signe : ◦ 0 indique une valeur positive ◦ 1 indique une valeur négative Voici la plage des valeurs : • Il peut être non signé. Dans ce cas, tous les bits représentent la valeur. Voici la plage des valeurs : Bits = nombre de bits (format). 35006145.25 181 Langages de programmation et structure Types de données Types de données au format Binaire Liste des types de données : Type Désignation Format (bits) Valeur par défaut BOOL Booléen 8 0 - (False) EBOOL Booléen avec forçage et détection de fronts 8 0 - (False) INT Entier 16 0 DINT Entier double 32 0 UINT Entier non signé 16 0 UDINT Entier double non signé 32 0 TIME Entier double non signé 32 T=0s Types booléens Présentation Il existe trois types de valeurs booléennes : • Le type BOOL, page 182, qui contient uniquement la valeur FALSE (= 0) ou TRUE (= 1). • Le type EBOOL, page 183, qui contient la valeur FALSE (= 0) ou TRUE (= 1), mais aussi des informations relatives à la gestion des fronts descendants ou montants et au forçage. • Le type ANY_BOOL, page 185, déclaré uniquement comme type de données référencées qui combine les types BOOL et EBOOL. Principe du type BOOL Ce type occupe un octet de mémoire, mais la valeur est stockée sur un seul bit. Par défaut, de ce type a la valeur FALSE (= 0). Il est accessible à l'aide d'une adresse contenant le décalage de l'octet correspondant : 182 35006145.25 Types de données Langages de programmation et structure Paramètres d'adresse : Le bit extrait de mot, quant à lui, est accessible à l'aide d'une adresse contenant les informations suivantes : • le décalage de l'octet correspondant ; • le rang définissant sa position dans le mot. Paramètres d'adresse : Principe du type EBOOL Ce type occupe un octet de mémoire qui contient : • le bit de la valeur (V) ; • le bit d'historique (H) pour la gestion des fronts montants ou descendants. À chaque changement d'état de l'objet, la valeur est copiée dans ce bit ; • le bit contenant l'état de forçage (F). Il est égal à 0 si l'objet n'est pas forcé et à 1 s'il l'est. 35006145.25 183 Langages de programmation et structure Types de données Par défaut, la valeur des bits associés au type EBOOL est FALSE (= 0). Il est accessible à l'aide d'une adresse indiquant le décalage de l'octet correspondant : Paramètres d'adresse : Chronogramme historique du type EBOOL Le chronogramme ci-après illustre les principaux états des bits de valeur et d'historique associés au type EBOOL. Les fronts montants du bit de valeur (1, 4) sont copiés dans le bit d'historique lors du cycle suivant de l'automate (2, 5). Les fronts descendants du bit de valeur (2, 7) sont copiés dans le bit d'historique lors du cycle suivant de l'automate (3, 8). Chronogramme et forçage du type EBOOL Le chronogramme ci-après illustre les principaux états des bits de valeur, d'historique et de forçage associés au type EBOOL. 184 35006145.25 Types de données Langages de programmation et structure Les fronts montants du bit de valeur (1, 4) sont copiés dans le bit d'historique lors du cycle suivant de l'automate (2, 5). Les fronts descendants du bit de valeur (2, 7) sont copiés dans le bit d'historique lors du cycle suivant de l'automate (3, 8). Entre (4 et 5), le bit de forçage est égal à 1 et les bits de valeur et d'historique conservent la valeur 1. Principe du type ANY_BOOL Les outils de supervision peuvent utiliser le type ANY_BOOL (SCADA, par exemple) pour réserver des variables déclarées comme type de données générique. Le type de données générique est l'élément partagé avec Control Expert. Une variable de type ANY_BOOL est déclarée comme référence à l'aide du mot clé REF_TO. La rubrique Déclaration du type de données Reference, page 240 fournit des informations complémentaires sur le référencement et le déréférencement. NOTE: La conversion implicite est autorisée sur les variables de type ANY_BOOL déréférencées (BOOL_TO_*). Limitations liées à l'utilisation du type ANY_BOOL : • Le type ANY_BOOL ne peut pas être utilisé pour déclarer une variable dans l'application Control Expert. Il est nécessaire de faire référence au type ANY_BOOL avec le mot-clé REF_TO pour déclarer une variable. • Le référencement de REF_TO_ANY_BOOL n'est pas autorisé dans un programme. MyRefToAnyBoolVar := REF(MyVar); n'est pas autorisé (si MyVar est : BOOL ou EBOOL). • Dans un EF ou un EFB, il est impossible d'utiliser le type ANY_BOOL pour déclarer un paramètre ou une variable, même sous forme de référence avec le mot-clé REF_TO. 35006145.25 185 Langages de programmation et structure Types de données • Seul l'historique de front est géré pour le référencement d'un type EBOOL. La fonction de forçage n'est pas prise en charge par le type ANY_BOOL lors du référencement d'un type EBOOL. • Dans un système SCADA, la variable de type ANY_BOOL constitue l'élément partagé et le dictionnaire de données fournit le type final de la référence ANY_BOOL (BOOL ou EBOOL). • La référence à une référence n'est pas prise en charge. Le déréférencement en cascade n'est pas géré (par exemple, MyAnyBool1^MyAnyBool2^.xy n'est pas pris en charge). Plate-forme : le type ANY_BOOL est utilisé sur les plates-formes suivantes : • Modicon M580 (version de SE ≥ V2.00) • Modicon Quantum 140CPU6•••• (version de SE ≥ V3.30) • Modicon M340 (version de SE ≥ V2.70) Horodatage : une variable de référence ANY_BOOL peut être horodatée en mode horodatage système (voir Horodatage système, Guide de l'utilisateur) uniquement si la variable référencée est une constante (attribut IsConstant activé). La variable référencée peut être associée aux éléments suivants : • Une source BMX ERT 1604 T. • Une source BMX CRA 312 10. • Une source BME CRA 312 10. • Une source d'UC Modicon M580 (version de SE ≥ V2.00). • Une variable topologique (par exemple %M100). Variables d'automate appartenant aux types booléens Liste des variables Variable Type Bit interne EBOOL Bit système BOOL Bit extrait de mot BOOL Entrées %I 186 Bit d'erreur de module BOOL Bit d'erreur de voie BOOL Bit d'entrée EBOOL 35006145.25 Types de données Langages de programmation et structure Variable Type Sorties %Q Bit de sortie EBOOL Compatibilité entre BOOL et EBOOL Les opérations suivantes sont autorisées entre ces deux types de variables : • copie de valeurs ; • copie d'adresses. Copies entre types Destination BOOL Destination EBOOL Source BOOL Oui Oui Source EBOOL Oui Oui Compatibilité entre les paramètres des fonctions élémentaires (EF) Paramètre effectif (externe à l'EF) Paramètre BOOL formel (interne à l'EF) Paramètre EBOOL formel (interne à l'EF) BOOL Oui Non EBOOL Entrée -> Oui Oui E-S -> Non Sortie -> Oui Compatibilité entre les paramètres des blocs fonction (EFB\DFB) Paramètre effectif (externe au FB) Paramètre BOOL formel (interne au FB) Paramètre EBOOL formel (interne au FB) BOOL Oui Entrée -> Oui E-S -> Non Sortie -> Non EBOOL Entrée -> Oui Oui E-S -> Non Sortie -> Non Compatibilité entre les variables de tableau 35006145.25 187 Langages de programmation et structure Types de données ARRAY[i...j) OF BOOL destination ARRAY[i...j) OF EBOOL destination ARRAY[i..j) OF BOOL source Oui Non ARRAY[i..j) OF EBOOL source Non Oui Compatibilité entre les variables statiques Adressage direct BOOL (%MW:xi) Adressage direct EBOOL (%Mi) Variable déclarée BOOL (Var:BOOL) Oui Non Variable déclarée EBOOL (Var:EBOOL) Non Oui Compatibilité Les types de données EBOOL sont soumis aux règles suivantes : • Une variable de type EBOOL ne peut pas être transmise en tant que paramètre d'entrée/de sortie de type BOOL. • Les tableaux EBOOL ne peuvent pas être transmis en tant que paramètres de type ANY d'un FFB. • Les tableaux BOOL et EBOOL ne sont pas compatibles avec la demande d'affectation (même règle que pour les paramètres FFB). • Sur Quantum : ◦ Une variable localisée de type EBOOL ne peut pas être transmise en tant que paramètre d'entrée/de sortie de type EBOOL. ◦ Les tableaux EBOOL ne peuvent pas être transmis en tant que paramètres d'un DFB. Types d'entier Présentation Les types d'entier (INT) permettent de représenter une valeur dans différentes bases, à savoir : • 188 la base 10 (décimal) par défaut. Dans ce cas, la valeur est signée ou non signée, en fonction du type de l'entier. 35006145.25 Types de données Langages de programmation et structure • la base 2 (binaire). Dans ce cas, la valeur est non signée et le préfixe est 2# • la base 8 (octal). Dans ce cas, la valeur est non signée et le préfixe est 8# • la base 16 (hexadécimal). Dans ce cas, la valeur est non signée et le préfixe est 16# NOTE: En représentation décimale, si le type choisi est signé, la valeur peut être précédée du signe + ou du signe - (le signe + est facultatif). Type Entier (INT) Type signé ayant un format sur 16 bits. Ce tableau donne la plage dans chaque base. Base de... à... Décimale -32768 32767 Binaire 2#1000000000000000 2#0111111111111111 Octale 8#100000 8#077777 Hexadécimale 16#8000 16#7FFF Type Entier double (DINT) Type signé ayant un format sur 32 bits. Ce tableau donne la plage dans chaque base. Base de... à... Décimale -2147483648 2147483647 Binaire 2#10000000000000000000000000000000 2#01111111111111111111111111111111 Octale 8#20000000000 8#17777777777 Hexadécimale 16#80000000 16#7FFFFFFF Type Entier non signé (UINT) Type non signé ayant un format sur 16 bits. Ce tableau donne la plage dans chaque base. 35006145.25 189 Langages de programmation et structure Types de données Base de... à... Décimale 0 65535 Binaire 2#0 2#1111111111111111 Octale 8#0 8#177777 Hexadécimale 16#0 16#FFFF Type Entier double non signé (UDINT) Type non signé ayant un format sur 32 bits. Ce tableau donne la plage dans chaque base. Base de... à... Décimale 0 4294967295 Binaire 2#0 2#11111111111111111111111111111111 Octale 8#0 8#37777777777 Hexadécimale 16#0 16#FFFFFFFF Type Temps Présentation Le type Temps T# ou TIME# est représenté par un type Entier double non signé (UDINT), page 188. Il exprime une durée en millisecondes, qui représente environ une durée maximale de 49 jours. Les unités de temps autorisées pour la représentation de la valeur sont les suivantes : 190 • jours (D) • heures (H) • minutes (M) • secondes (S) • millisecondes (MS) 35006145.25 Types de données Langages de programmation et structure Saisie d'une valeur Ce tableau montre les possibilités de saisie de la valeur maximale du type Time en fonction des unités de temps autorisées. Schéma Commentaire T#4294967295MS valeur en millisecondes T#4294967S_295MS valeur en secondes\millisecondes T#71582M_47S_295MS valeur en minutes\secondes\millisecondes T#1193H_2M_47S_295MS valeur en heures\minutes\secondes\millisecondes T#49D_17H_2M_47S_295MS valeur en jours\heures\minutes\secondes\millisecondes Types de données élémentaires (EDT) au format BCD Objectif de la section Cette section décrit les types de données au format BCD (Binary Coded Decimal) qui sont : • le type Date, • le type Time of Day (TOD), • le type Date and Time (DT). Présentation des types de données au format BCD Introduction Les types de données au format BCD appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction). 35006145.25 191 Langages de programmation et structure Types de données Rappel concernant le format BCD BCD est l'abréviation de « Binary Coded Decimal » (décimal codé en binaire). Ce format est utilisé pour représenter des nombres décimaux compris entre 0 et 9 à l'aide d'un groupe de quatre bits (demi-octet). Dans ce format, les quatre bits utilisés pour coder les nombres décimaux ont une plage de combinaisons inutilisées. Tableau correspondant : Decimal Binaire 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 1010 (inutilisé) 1011 (inutilisé) 1100 (inutilisé) 1101 (inutilisé) 1110 (inutilisé) 1111 (inutilisé) Exemple de codage utilisant un format 16 bits : Valeur décimale 2 4 5 0 0010 0100 0101 0000 2450 Valeur binaire Exemple de codage utilisant un format 32 bits : 192 35006145.25 Types de données Langages de programmation et structure Valeur décimale 7 8 9 9 3 0 1 6 0111 1000 1001 1001 0011 0000 0001 0110 78993016 Valeur binaire Types de données au format BCD Trois types de données : Type Désignation Echelle (bits) Valeur par défaut DATE Date 32 D#1990-01-01 TIME_OF_DAY Heure du jour 32 TOD#00:00:00 DATE_AND_TIME Date et heure 64 DT#1990-01-01-00:00:00 Type Date Présentation Le type Date codé sur un format de 32 bits contient les informations suivantes : • l'année codée dans un champ de 16 bits (4 demi-octets de poids forts) • le mois codé dans un champ de 8 bits (2 demi-octets) • le jour codé dans un champ de 8 bits (2 demi-octets de poids faible) Représentation au format BCD de la date du 20 septembre 2001 : Année (2001) Mois (09) Jour (20) 0010 0000 0000 0001 0000 1001 0010 0000 Règles syntaxiques Le type Date est entré comme suit : D#<Année>-<Mois>-<Jour> Le tableau suivant donne les limites inférieure et supérieure de chaque champ. 35006145.25 193 Langages de programmation et structure Types de données Champ Limites Commentaire Année [1990,2099] Mois [01,12] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Jour [01,31] Pour les mois 01/03/05/07/08/10/12 [01,30] Pour les mois 04/06/09/11 [01,29] Pour le mois 02 (années bissextiles) [01,28] Pour le mois 02 (années non bissextiles) Exemple : Saisie Commentaires D#2001-1-1 Le 0 de gauche du mois et du jour peut être omis d#1990-02-02 Le préfixe peut être en minuscules Type Heure du jour (TOD) Présentation Le type Time of Day codé sur un format de 32 bits contient les informations suivantes : • l'heure codée dans un champ de 8 bits (2 demi-octets de poids fort) • les minutes codées dans un champ de 8 bits (2 demi-octets) • les secondes codées dans un champs de 8 bits (2 demi-octets) NOTE: Les 8 bits les moins significatifs sont inutilisés. Représentation au format BCD de l’heure du jour 13:25:47 : Heure (13) Minutes (25) Secondes (47) Octet de poids faible 0001 0011 0010 0101 0100 0111 Inutilisé Règles syntaxiques Le type Heure du jour est entré comme suit : TOD#<Heure>:<Minutes>:<Secondes> Le tableau suivant donne les limites inférieure et supérieure de chaque champ. 194 35006145.25 Types de données Langages de programmation et structure Champ Limites Commentaire Heure [00,23] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Minute [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Seconde [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Exemple : Saisie Commentaire TOD#1:59:0 Le 0 de gauche des heures et des secondes peut être omis tod#23:10:59 Le préfixe peut être en minuscules Tod#0:0:0 Le préfixe peut être mixte (minuscule\majuscule) Type Date et heure (DT) Présentation Le type Date and Time codé sur un format de 64 bits contient les informations suivantes: • l'année codée dans un champ de 16 bits (4 demi-octets de poids fort) • le mois codé dans un champ de 8 bits (2 demi-octets) • le jour codé dans un champ de 8 bits (2 demi-octets) • l'heure codée dans un champ de 8 bits (2 demi-octets) • les minutes codées dans un champ de 8 bits (2 demi-octets) • les secondes codées dans un champs de 8 bits (2 demi-octets) NOTE: Les 8 bits les moins significatifs sont inutilisés. Exemple de représentation au format BCD de la date et heure 2000-09-20:13:25:47. Année (2000) Mois (09) Jour (20) Heure (13) Minute (25) Secondes (47) Octet de poids faible 0010 0000 0000 0000 0000 1001 0010 0000 0001 0011 0010 0101 0100 0111 Inutilisé Règles syntaxiques Le type Date and Time est saisi comme suit : 35006145.25 195 Langages de programmation et structure Types de données DT#<Année>-<Mois>-<Jour>-<Heure>:<Minutes>:<Secondes> Le tableau suivant donne les limites inférieure et supérieure de chaque champ. Champ Limites Commentaire Année [1990,2099] Mois [01,12] Le 0 à gauche est toujours affiché, mais il peut être omis lors de la saisie Jour [01,31] Pour les mois 01/03/05/07/08/10/12 [01,30] Pour les mois 04/06/09/11 [01,29] Pour le mois 02 (années bissextiles) [01,28] Pour le mois 02 (années non bissextiles) Heure [00,23] Le 0 à gauche est toujours affiché, mais il peut être omis lors de la saisie Minute [00,59] Le 0 à gauche est toujours affiché, mais il peut être omis lors de la saisie Seconde [00,59] Le 0 à gauche est toujours affiché, mais il peut être omis lors de la saisie Exemple : Saisie Commentaire DT#2000-1-10-0:40:0 Les 0 de gauche des mois\heures\secondes peuvent être omis dt#1999-12-31-23:59:59 Le préfixe peut être en minuscules Dt#1990-10-2-12:02:30 Le préfixe peut être mixte (minuscule\majuscule) Types de données élémentaires (EDT) au format Réel Objet de cette section Cette section décrit le type de données au format Réel. 196 35006145.25 Types de données Langages de programmation et structure Présentation du type de données Réel Introduction Les types de données au format Réel appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction). Rappel concernant le format Réel Le format Réel (virgule flottante selon la norme ANSI/IEEE 754) utilise un codage de format 32 bits qui correspond aux nombres réels à virgule flottante à une décimale. Les 32 bits qui représentent la valeur à virgule flottante sont organisés dans les trois champs distincts qui sont : • S, le bit de signe qui peut avoir l'une des valeurs suivantes : ◦ 0, pour un nombre à virgule flottante positif ◦ 1, pour un nombre à virgule flottante négatif • e, l'exposant codé dans un champ de 8 bits (entier au format binaire) • f, la partie correspondant à la virgule décimale dans un champ de 23 bits (entier au format binaire) Représentation : La valeur de la partie correspondant à la virgule décimale (Mantissa) est comprise entre [0, 1[, et calculée avec la formule ci-après. Types de nombres pouvant être représentés Il s'agit des nombres suivants : • normalisés • non normalisés • de valeur infinie 35006145.25 197 Langages de programmation et structure • Types de données avec les valeurs + 0 et - 0 Le tableau suivant indique les valeurs dans les différents champs suivant le type de nombre. e f S Type de nombre ]0, 255[ [0, 1[ 0 ou 1 normalisé 0 [0, 1[ environ (1.4E-45) non normalisé DEN 255 0 0 + infini (INF) 255 0 1 - infini (-INF) 255 ]0,1[ et bit 22 = 0 0 ou 1 SNAN 255 ]0,1[ et bit 22 = 1 0 ou 1 QNAN 0 0 0 +0 0 0 1 -0 NOTE: La norme IEC 559 définit deux classes de NAN (Pas un nombre) : QNAN et SNAN. • QNAN : NAN dont le bit 22 correspond à 1 • SNAN : NAN dont le bit 22 correspond à 0 Elles se comportent comme suit : • Les QNAN ne provoquent pas d'erreurs lorsqu'ils apparaissent dans les opérandes d'une fonction ou d'une expression. • Les SNAN provoquent une erreur lorsqu'ils apparaissent dans les opérandes d'une fonction ou d'une expression mathématique (voir %SW17 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence) et %S18 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence)). Le tableau ci-dessous présente la formule de calcul de la valeur du nombre à virgule flottante : Nombre à virgule flottante Valeur Normalisé Non normalisé (DEN) 198 35006145.25 Types de données Langages de programmation et structure NOTE: Un nombre réel compris entre -1,1754944e-38 et 1,754944e-38 est un nombre non normalisé DEN. Lorsqu'une opérande correspond à un DEN, le résultat n'est pas garanti. Les bits %SW17 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence) et %S18 (voir EcoStruxure™ Control Expert, Bits et mots système, Manuel de référence) sont augmentés, sauf pour le Modicon M340. Les automates Modicon M340 peuvent utiliser des opérandes non normalisés, mais avec une perte de précision en raison du format. Le dépassement inférieur est signalé suivant l'opération uniquement lorsque le résultat est égal à 0 (dépassement inférieur total) ou lorsqu'il est non normalisé (dépassement inférieur graduel, avec perte de précision). Type réel Présentation : Type Echelle (bits) Valeur par défaut REAL 32 0.0 Plage de valeurs (parties grisées) : Lorsqu'un résultat est : • compris entre -1,1754944e-38 et 1,1754944e-38, il s'agit d'un DEN ; • inférieur à -3,4028234e+38, le symbole -INF (pour - infini) s'affiche ; • supérieur à +3,4028234e+38, le symbole INF (pour + infini) s'affiche ; • indéfini (racine carrée d'un nombre négatif), le symbole NAN s'affiche. Exemple de valeur normalisée inexacte 7,986 est codé de la façon suivante par l'application : S E=129 M=8359248 0 1000001 11111111000110101010000 35006145.25 199 Langages de programmation et structure Types de données Avec la formule : Le nombre 7,986 devrait correspondre à : Le significatif étant exprimé sous forme d'entier, il peut être codé uniquement sous la forme 8359248 (arrondi à la limite la plus proche). Aucun nombre ne peut être codé entre le chiffre significatif 8359247 et 8359248, ou entre le nombre réel 7,985999584197998046875 et 7,98600006103515625 Poids du bit le moins significatif (écart) en précision absolue : L'écart devient très important pour les valeurs élevées comme indiqué ci-dessous : Valeur M=8359248 100 000 000 Entre 226 et 227 2127 2127 NOTE: L'écart correspond au poids du bit le moins significatif. 200 35006145.25 Types de données Langages de programmation et structure Pour obtenir la résolution attendue, il est nécessaire de définir la plage maximale du calcul conformément à la formule suivante : p correspond à la précision et e à l'exposant (e = E-127) Par exemple, si la précision doit être égale à 0,001, la partie correspondant à la virgule décimale sera : avec : Au-delà de la limite F, la précision est perdue. Cas classique : compteurs Il convient de faire preuve de discernement dans l'utilisation des nombres à virgule flottante, en particulier lorsqu'il est nécessaire d'y ajouter une faible valeur. Lors de petits incréments, le compteur ne fonctionne pas correctement et donne des résultats erronés sans augmentation lorsque l'incrément est inférieur au bit le moins significatif du compteur. Pour obtenir des valeurs correctes, il est recommandé de s'appuyer sur un entier double (UDINT) et de multiplier le résultat par un incrément. Exemple : • Incrémentez une valeur de 0,001 de 33000 à 1000000. • Comptez de 33000000 à 1000000000 (valeur multipliée par 1000) avec un agrément de 1. • Obtenez le résultat en multipliant la valeur par 0,001. La précision minimale F par plage sera la suivante : De...à... F (minimum) 3300 à 65536 0,004 65536 à 131072 0,008 35006145.25 201 Langages de programmation et structure Types de données De...à... F (minimum) ... ... 524288 à 1000000 0,063 Ce compteur peut aller jusqu'à 4294967295 x 0,001 = 4294967,5 avec une précision minimale de 0,5 NOTE: Ici, la valeur réelle correspond à la valeur binaire codée. Elle peut être différente de l'affichage sur un écran d'exploitation en raison de l'arrondi (4,294968e+006) Types de données élémentaires (EDT) au format chaine de caractères Objet de cette section Cette section décrit le type de données au format chaine de caractères. Présentation des types de données au format chaîne de caractères Introduction Les types de données au format chaîne de caractères appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction). Type chaîne de caractères Le format chaîne de caractères est utilisé pour représenter une chaîne de caractères ASCII dans laquelle chaque caractère est codé au format 8 bits. Caractéristiques des types chaîne de caractères : 202 • Par défaut, une chaîne contient 16 caractères (sans compter les caractères de fin de chaîne). • Une chaîne contient des caractères ASCII compris entre 16#20 et 16#FF (représentation hexadécimale). 35006145.25 Types de données Langages de programmation et structure • Dans une chaîne vide, le caractère de fin de chaîne (code ASCII "ZERO") est en première position. • Une chaîne de caractères peut contenir un maximum de 65535 caractères. La taille de la chaîne de caractères peut être optimisée lors de la définition du type à l'aide de la commande STRING[<taille>], où <taille> est un entier non signé (UINT) capable de définir une chaîne de 1 à 65535 caractères ASCII. NOTE: Les caractères ASCII 0 à 127 sont les mêmes dans toutes les langues, alors que les caractères 128 à 255 sont propres à chaque langue. Soyez vigilant lorsque la langue d'affichage dans Control Expert est différente de celle du système d'exploitation. Deux langues différentes peuvent perturber la communication CHAR MODE et ne permettent pas de garantir la correction de l'envoi des caractères au-delà de 127. C'est notamment le cas du caractère « Arrêt sur réception » qui n'est pas pris en compte lorsqu'il est supérieur à 127. Règles syntaxiques Un guillemet simple « ’ » (code ASCII 16#27) précède et termine l'entrée. Le symbole $ (dollar) et un caractère spécial dont la signification est la suivante lorsqu'il est suivi de ces lettres : • $L ou $l, aller à la ligne suivante (retour à la ligne) • $N ou $n, aller au début de la ligne suivante (nouvelle ligne) • $P ou $p, aller à la page suivante • $R ou $r, retour chariot • $T ou $t, tabulation (Tab) • $$, représente le caractère $ dans une chaîne • $’, représente le guillemet dans une chaîne La syntaxe $nn permet à l'utilisateur d'afficher, dans une variable STRING, des caractères qui ne sont pas destinés à l'impression, comme un retour chariot (code ASCII 16#0D), par exemple. Exemples Exemples de saisies : 35006145.25 203 Langages de programmation et structure Type Saisie Types de données Contenu de la chaîne • représente le caractère de fin de chaîne * représente des octets vides STRING ‘ABCD’ ABCD•************ (16 caractères) STRING[4] ‘jean’ jean• STRING[10] ‘It$’ jean’ It$’ jean•* STRING[5] ’’ •***** STRING[5] ’$’’ ’•**** STRING[5] ‘Le nombre’ Le no• STRING[13] ’0123456789’ 0123456789•*** STRING[5] ‘$R$L’ <cr><lf>•*** STRING[5] ’$$1,00’ $1,00• Déclaration de variable de type STRING Une variable de type STRING peut être déclarée de deux façons différentes : • STRING et • STRING[<Nombre d'éléments>] Le comportement n'est pas le même suivant l'utilisation : Type Déclaration de variable Paramètres d'entrée FFB Paramètres de sortie EF Paramètres de sortie FB STRING Longueur fixe : 16 caractères La longueur correspond exactement à la longueur du paramètre d'entrée. La longueur correspond exactement à la longueur du paramètre d'entrée. Longueur fixe de 16 caractères STRING[<n>] Longueur fixe : n caractères La longueur correspond à la longueur du paramètre d'entrée, avec une limite de n caractères. L'EF écrit n caractères maximum. Le FB écrit n caractères maximum. Chaîne et le paramètre ANY Lorsque vous utilisez une variable de type STRING en tant que paramètre de type ANY, il est vivement recommandé de vérifier que la longueur de la variable est inférieure à la longueur maximale déclarée. Exemple : 204 35006145.25 Types de données Langages de programmation et structure Utilisation de STRING sur la fonction SEL (Sélecteur). String1: STRING[8] String2: STRING[4] String3: STRING[4] String1:= 'AAAAAAAA'; String3:= 'CC'; Cas 1 : String2:= 'BBBB'; (* la taille de la chaîne est égale à la taille maximum déclarée *) String1:= SEL(FALSE, String2, String3); (* le résultat sera : 'BBBBAAAA' *) Cas 2 : String2:= 'BBB'; (* la taille de la chaîne est inférieure à la taille maximum déclarée *) String1:= SEL(FALSE, String2, String3); (* Le résultat sera : 'BBB' *) Types de données élémentaires (EDT) au format chaîne de bits Objet de cette section Cette section décrit le type de données au format chaîne de bits. qui sont : • le type Byte, • le type Word, • le type Dword. Présentation des types de données au format chaîne de bits Introduction Les types de données au format chaîne de bits appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction). 35006145.25 205 Langages de programmation et structure Types de données Rappel concernant le format chaîne de bits Ce format se distingue des autres en cela que l'ensemble des bits qui le constitue ne représente pas une valeur numérique, mais une combinaison de bits séparés. Les données qui appartiennent à ces types de formats peuvent être représentées dans les trois bases suivantes : • Hexadécimale (16#) • Octale (8#) • Binaire (2#) Types de données au format chaîne de bits Trois types de données : Type Echelle (bits) Valeur par défaut BYTE 8 0 WORD 16 0 DWORD 32 0 Types de chaînes de bits Le type Byte Le type Byte est codé sur un format de 8 bits. Le tableau suivant donne les limites inférieure et supérieure des bases qui peuvent être utilisées. Base Limite inférieure Limite supérieure Hexadécimale 16#0 16#FF Octale 8#0 8#377 Binaire 2#0 2#11111111 Exemples de représentation : 206 35006145.25 Types de données Langages de programmation et structure Donnée Représentation dans l'une des bases 00001000 16#8 00110011 8#63 00110011 2#110011 Le type Word Le type Word est codé sur un format de 16 bits. Le tableau suivant donne les limites inférieure et supérieure des bases qui peuvent être utilisées. Base Limite inférieure Limite supérieure Hexadécimale 16#0 16#FFFF Octale 8#0 8#177777 Binaire 2#0 2#1111111111111111 Exemples de représentation : Donnée Représentation dans l'une des bases 0000000011010011 16#D3 1010101010101010 8#125252 0000000011010011 2#11010011 Le type Dword Le type Dword est codé sur un format de 32 bits. Le tableau suivant donne les limites inférieure et supérieure des bases qui peuvent être utilisées. Base Limite inférieure Limite supérieure Hexadécimale 16#0 16#FFFFFFFF Octale 8#0 8#37777777777 Binaire 2#0 2#11111111111111111111111111111111 Exemples de représentation : 35006145.25 207 Langages de programmation et structure Types de données Donnée Représentation dans l'une des bases 00000000000010101101110011011110 16#ADCDE 00000000000000010000000000000000 8#200000 00000000000010101011110011011110 2#10101011110011011110 Types de données dérivés (DDT/IODDT/DDDT) Objet de cette section Cette section décrit les types de données dérivés (DDT, derived data types), à savoir : • tables (DDT) • structures ◦ structures concernant les données d'E/S (IODDT) ◦ structures concernant d'autres données (DDT) ◦ structures concernant les données d'E/S. Tableaux Qu'est-ce qu'un tableau ? Un tableau est un élément de données incluant un ensemble de données de type identique, tel que : • données élémentaires (EDT), par exemple : 208 ◦ un groupe de mots BOOL, ◦ un groupe de mots entiers UINT, ◦ etc. 35006145.25 Types de données • Langages de programmation et structure données dérivées (DDT), par exemple : ◦ un groupe de tables WORD, ◦ un groupe de structures, ◦ des DDT d'équipement, ◦ etc. Caractéristiques Un tableau est caractérisé par deux paramètres : • un paramètre définissant son organisation (dimension(s) du tableau), • un paramètre définissant le type de données qu'il contient. NOTE: L'organisation la plus complexe est le tableau à 15 dimensions, et la taille maximale d'un tableau est 65 535 octets. La syntaxe incluant ces deux paramètres est la suivante : Définition et instanciation d'un tableau Définition d'un type de tableau : 35006145.25 209 Langages de programmation et structure Types de données Instanciation d'un tableau Les instances Tab_1 et Tab_2 sont de même type et ont le même nombre de dimensions ; la seule différence concerne ce qui se passe lors de l'instanciation : • Le type Tab_1 est nommé X. • Le type Tab_2 doit être défini (la table correspondante ne porte pas de nom). NOTE: il est préférable d'attribuer un nom au type, puisque chaque modification requise ne sera effectuée qu'une seule fois (en effet, dans le cas contraire, le nombre de modifications serait aussi important que le nombre d'instances). Exemples Le tableau ci-dessous répertorie des instances de tableaux dont le nombre de dimensions diffère : Saisie Commentaires Tab_1: ARRAY[1..2] OF BOOL Tableau à 1 dimension contenant 2 mots de type booléen Tab_2: ARRAY[-10..20] OF WORD Tableau à 1 dimension contenant 31 structures de type WORD (structure définie par l'utilisateur) Tab_3: ARRAY[1..10, 1..20] OF INT Tableaux à 2 dimensions contenant 10 x 20 nombres entiers Tab_4: ARRAY[0..2, -1..1, 201..300, 0..1] OF REAL Tableaux à 4 dimensions contenant 3 x 3 x 100 x 2 nombres réels NOTE: un grand nombre de fonctions (READ_VAR, WRITE_VAR, par exemple) ne reconnaissent pas l'index d'un tableau de mots commençant par un nombre autre que 0. Si vous avez recours à ce type d'index, les fonctions examinent le nombre de mots du tableau, mais pas celui figurant au niveau du premier ensemble de l'index dans la définition du tableau. 210 35006145.25 Types de données Langages de programmation et structure AVERTISSEMENT COMPORTEMENT INATTENDU DE L'APPLICATION - INDEX DE TABLEAU NON VALIDE Lors de l'application de fonctions à des variables de type tableau, vérifiez que les fonctions sont compatibles avec la valeur de l'index de début des tableaux lorsque cette valeur est supérieure à 0. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Accès à un élément de données dans le tableau Tab_1 ou Tab_3 : Règles d'affectation entre les tableaux Les 4 tableaux suivants sont disponibles : Structures Qu'est ce qu'une structure ? C'est un élément de donnée qui contient un ensemble de données de type différent par exemple : 35006145.25 211 Langages de programmation et structure • un ensemble BOOL, WORD, UINT, etc. (structure EDT), • un ensemble de tables (structure de DDT), • un ensemble REAL, DWORD, tables, etc. (structures EDT et DDT). Types de données NOTE: vous pouvez créer des structures imbriquées (DDT imbriqués) sur 15 niveaux. Les structures récursives (DDT) ne sont pas autorisées. Caractéristiques Une structure est constituée de données caractérisées par : • un type, • un nom, qui permet de l’identifier, • un commentaire (optionnel) décrivant son rôle. Définition d'un type de structure : Définition de deux instances de donnée de structure de type IDENT : Accés aux données d'une structure Accès aux données de l'instance Person_1 de type IDENT : 212 35006145.25 Types de données Langages de programmation et structure Présentation de la famille des types de données dérivés (DDT) Introduction La famille DDT (Derived Data Type) inclut les types de données dits "dérivés" tels que : • tables • structures Représentation : Caractéristiques Un élément de donnée appartenant à la famille DDT comporte : • le nom du type, page 179 (32 caractères maximum) défini par l'utilisateur (facultatif pour les tables, mais recommandé), page 209 • le type (structure ou table) • un commentaire facultatif (1 024 caractères maximum) (les caractères autorisés correspondent aux codes ASCII 32 à 255) • la description (dans le cas d'une structure) de ces éléments : ◦ nom de l'élément, page 179 (32 caractères maximum) ◦ type d'élément ◦ commentaire facultatif (1 024 caractères maximum) expliquant le rôle de l'élément (les caractères autorisés correspondent aux codes ASCII 32 à 255) 35006145.25 213 Langages de programmation et structure • Types de données des informations telles que : ◦ le numéro de version du type, ◦ la date de la dernière modification du code, des variables internes ou des variables de l'interface, ◦ un fichier descriptif (32 767 caractères) facultatif décrivant le bloc fonction et ses différentes modifications. NOTE: 1. Plate-forme M580 et simulateur d'automate : la taille totale d'un tableau ne dépasse pas 2 Mo pour les structures DDT et les tableaux DDT 2. Autres plates-formes : la taille totale d'un tableau ne dépasse pas 64 Ko Exemples Définition de types 214 35006145.25 Types de données Langages de programmation et structure Accès aux données d'une instance de structure de type DRAW DDT : Règles de mappage Présentation Les DDT sont stockés dans la mémoire de l'automate dans l'ordre de déclaration de ses éléments. Les règles ci-après sont toutefois utilisées. Principe pour Premium et Quantum Principe de stockage pour Premium et Quantum : • les éléments sont stockés dans l'ordre dans lequel ils sont déclarés dans la structure ; • l'octet est l'élément de base (alignement des données dans les octets de mémoire) ; • une règle d'alignement est associée à chaque élément : ◦ les types BOOL et BYTE sont alignés de façon indifférente sur les octets pairs ou impairs ; ◦ tous les autres types élémentaires sont alignés sur les octets impairs ; ◦ les structures et les tableaux sont alignés conformément à la règle d'alignement des types BOOL et BYTE s'ils ne contiennent que des éléments BOOL et BYTE, sinon ils sont alignés sur les bits impairs de la mémoire. 35006145.25 215 Langages de programmation et structure Types de données AVERTISSEMENT RISQUE D'INCOMPATIBILITE APRES CONVERSION DE CONCEPT Avec l'application de programmation Concept, les structures de données ne gèrent pas le changement des décalages (quel que soit son type, chaque élément est défini l'un à la suite de l'autre dans la mémoire). Il est donc recommandé de tout vérifier, en particulier la cohérence des données lors de l'utilisation des DDT qui se trouvent sur la « RAM d'état » (risques de décalage) ou les fonctions liées à la communication avec d'autres équipements (transferts avec une taille différente de celle programmée dans Concept). Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Principe pour Modicon M340, M580 et Momentum Principe de stockage de ces automates : • les éléments sont stockés dans l'ordre dans lequel ils sont déclarés dans la structure ; • l'octet est l'élément de base ; • une règle d'alignement et fonction de l'élément : ◦ les types BOOL et BYTE sont alignés sur les octets pairs ou impairs ; ◦ les types INT, WORD et UINT sont alignés sur les octets impairs ; ◦ DINT, UDINT, REAL, TIME, DATE, TOD, DT et DWORD sont alignés sur les mots doubles ; ◦ les structures et les tableaux sont alignés conformément aux règles de leurs éléments. AVERTISSEMENT ECHANGES ERRONES ENTRE UN MODICON M340, M580, MOMENTUM ET UN PREMIUM OU QUANTUM. Vérifiez si les alignements de la structure des données échangées sont identiques dans les deux projets. Si tel n'est pas le cas, les données ne seront pas correctement échangées. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. NOTE: Il est possible que l'alignement des données soit différent lorsque le projet est transféré du simulateur Control Expert vers un automate M340, M580 ou Momentum. Par conséquent, vérifiez la structure des données du projet. 216 35006145.25 Types de données Langages de programmation et structure NOTE: Control Expert indique les différences d'alignement. Vérifiez les instances correspondantes dans l'éditeur de données. Consultez la page Options du projet (voir EcoStruxure™ Control Expert - Modes de fonctionnement) pour savoir comment activer cette option. Alignement des DDT d'équipement Modicon M580 pour la scrutation des E/S Deux modes de scrutation d'E/S sont proposés : • Le mode de scrutation d'E/S hérité (utilisé dans Unity Pro ≤ V11.1) crée des structures de DDT d'équipement alignées sur 32 bits par défaut. • Le mode de scrutation d'E/S amélioré (compatible pour les applications créées avec Unity Pro ≤ V12.0) crée des structures de DDT d'équipement alignées sur 16 bits par défaut. NOTE: Unity Pro est l’ancien nom de Control Expert pour les versions 13.1 et antérieures. Pour conserver l'alignement d'origine des applications créées pour Unity Pro ≤ V11.1, sélectionnez le mode de scrutation d'E/S hérité. Exemple d'alignement non concordant pour un équipement Modbus TCP : • Exemple d'agencement en mode hérité (alignement 32 bits, tableau de 4 types BYTE). Si 3 types INT sont transmis, la structure en mode hérité crée 2 octets vides à prendre en compte dans l'interprétetation de la structure globale. 35006145.25 217 Langages de programmation et structure • Types de données Exemple d'agencement en mode amélioré (alignement 16 bits, tableau de types INT). Si 3 types INT sont transmis, aucun octet vide n'est ajouté par le système ; toutes les données de la structure sont utiles. Exemples Le tableau ci-après donne quelques exemples de structures de données. Dans les exemples suivants, des DDT de type de structure sont adressés à %MWi. Le premier octet du mot correspond aux 8 bits de poids faible, le deuxième octet correspond aux 8 bits de poids fort. Dans le cas des structures suivantes, la première variable est mappée avec l'adresse % MW100 : Première adresse de la mémoire Description de la structure Modicon M340, M580 ou Momentum Premium Para_PWM1 %MW100 (premier octet) %MW100 (premier octet) t_period : TIME %MW102 (premier octet) %MW102 (premier octet) t_min : TIME %MW104 (premier octet) %MW104 (premier octet) in_max : REAL Mode_TOTALIZER %MW100 (premier octet) %MW100 (premier octet) hold : BOOL %MW100 (deuxième octet) %MW100 (deuxième octet) rst : BOOL Info_TOTALIZER 218 %MW100 (premier octet) %MW100 (premier octet) outc : REAL %MW102 (premier octet) %MW102 (premier octet) cter : UINT 35006145.25 Types de données Langages de programmation et structure Première adresse de la mémoire Description de la structure %MW103 (premier octet) %MW103 (premier octet) done : BOOL %MW103 (deuxième octet) %MW103 (deuxième octet) Réservé à l'alignement Le tableau ci-après donne deux exemples de structures de données avec des tableaux : Première adresse de la mémoire Description de la structure Modicon M340, M580 ou Momentum Premium EHC105_Out %MW100 (premier octet) %MW100 (premier octet) Quit : BYTE %MW100 (deuxième octet) %MW100 (deuxième octet) Control : ARRAY [1..5] OF BYTE %MW104 (premier octet) %MW103 (premier octet) Final : ARRAY [1..5] OF DINT CPCfg_ex %MW100 (premier octet) %MW100 (premier octet) Profile_type : INT %MW101 (premier octet) %MW101 (premier octet) Interp_type : INT %MW102 (premier octet) %MW102 (premier octet) Nb_of_coords : INT %MW103 (premier octet) %MW103 (premier octet) Nb_of_points : INT %MW104 (premier octet) %MW104 (premier octet) reserved : ARRAY [0..4] OF BYTE %MW106 (deuxième octet) %MW106 (deuxième octet) Réservé à l'alignement de la variable Master_offset sur les octets pairs %MW108 (premier octet) %MW107 (premier octet) Master_offset : DINT %MW110 (premier octet) %MW109 (premier octet) Follower_offset : INT %MW111 (mot entier) - Réservé à l'alignement Présentation des types de données dérivés d'entrée/ sortie (IODDT) Présentation Les types de données dérivés d’entrées\sorties (IODDT, Input Output Derived Data Type) sont prédéfinis par le constructeur. Ils contiennent des objets langage de la famille EDT appartenant à la voie d’un module métier. 35006145.25 219 Langages de programmation et structure Types de données Représentation : Les type IODDT sont des structures dont la taille (nombre d’éléments constitutifs) dépend de la voie ou du module d’entrée/sortie qu’elles représentent. Un module d'entrée/sortie donné peut avoir plus d'un IODDT. La différence par rapport à une structure classique est que : • la structure IODDT est prédéfinie par le constructeur, • les éléments composant la structure IODDT n'ont pas d'allocation mémoire contiguë, mais une adresse spécifique dans le module. Exemples Structure IODDT pour une voie d'entrée\de sortie d'un module analogique 220 35006145.25 Types de données Langages de programmation et structure Accès aux données d'une instance de type ANA_IN_GEN : Accès par adressage direct : Aperçu des types de données dérivés d'équipement (DDT d'équipement) Présentation Un DDT d'équipement est un type de données dérivé qui est prédéfini par le constructeur et ne peut pas être modifié par l'utilisateur. Il contient les éléments de langage d'E/S d'un module d'E/S. 35006145.25 221 Langages de programmation et structure Types de données Illustration : Comme les structures DDT, les structures DDT d'équipement peuvent contenir les types de données suivants : • EDT • DDT • Tableau d'EDT et de DDT Les types DDT sont des structures dont la taille (nombre d'éléments qui les composent) dépend de la voie ou du module d'E/S qu'elles représentent. Dans l'implémentation actuelle, un module d'E/S prend en charge un seul DDT d'équipement. La différence avec une structure classique est que : • la structure DDT est prédéfinie par le constructeur, ◦ la structure DDT prend en charge le type EBOOL, ◦ la structure DDT prend en charge le type avec bits extraits. Règle de dénomination d'instance DDT Modules concernés par la règle de dénomination par défaut Le tableau suivant indique les principales catégories des modules concernés par la règle de dénomination d'instance DDT : 222 35006145.25 Types de données Langages de programmation et structure Architecture Position Famille Station d'E/S locales X80 Modicon M580 Modicon Quantum E/S analogiques : la plupart des modules – E/S TOR : la plupart des modules Comptage : la plupart des modules Communication : Station d'E/S Ethernet • BMXEIA0100 • BMXNOM0200 • BMECXM0100 et esclaves reliés Modicon Quantum – X80 Module adaptateur BM•CRA312•• Module adaptateur BM•CRA312•• E/S analogiques : la plupart des modules E/S analogiques : la plupart des modules E/S TOR : la plupart des modules E/S TOR : la plupart des modules Comptage : la plupart des modules Comptage : la plupart des modules Communication : Communication : Modicon Quantum Communication : • 140CRP31200 • BMXEIA0100 • BMXEIA0100 • BMXNOM0200 • BMXNOM0200 • BMECXM0100 et esclaves reliés • BMECXM0100 et esclaves reliés La station La station E/S analogiques : la plupart des modules – E/S TOR : la plupart des modules Comptage : non Communication : non Règle de dénomination par défaut La syntaxe est fondée sur la dénomination topologique, elle est construite comme suit : 35006145.25 223 Langages de programmation et structure Types de données BBBx_dx_rx_sx_PPPPPPP_SSS • • • • BBBx : Nom du bus et numéro du bus. ◦ BBB = Nom du bus représenté par les 3 premiers caractères du nom de bus affiché dans le navigateur de projets Control Expert. ◦ x = Numéro du bus dx : Numéro de station. ◦ d=d ◦ x = Numéro de station. Le numéro est 0 pour une station virtuelle. rx : Numéro de rack. ◦ r=r ◦ x = Numéro du rack. Le numéro est 0 pour un rack virtuel, facultatif pour des équipements CANopen. sx : Numéro d'emplacement. ◦ s=s ◦ x = Numéro d'emplacement. Facultatif pour des équipements CANopen. • PPPPPPP : Numéro de référence d'équipement. Numéro de référence sans espace tel qu'il apparaît sur la représentation de l'équipement dans Control Expert. • SSS : Nom d'un sous-ensemble si le DDT d'équipement est lié à un sous-ensemble. Ces caractères sont facultatifs. NOTE: Si un nom n'est pas unique, _rrrrr est ajouté à la fin de la chaîne (rrrrr étant une série de caractères aléatoires). Exemples Exemples d'instance DDT d'équipement dans une application Modicon M580 (UC M580) : • Station locale Modicon M580 0, rack 0, emplacement 2, située sur le PLC bus numéro 0. Module BMXDAI0805. PLC0_d0_r0_s2_DAI0805 • Station d'E/S X80 Ethernet 1, rack 0, emplacement 0, située sur le EIO bus numéro 2. Module BMXCRA31200. EIO2_d1_r0_s0_CRA31200 • Station d'E/S Modicon Quantum Ethernet 2, rack 1, située sur le EIO bus numéro 2. Station Modicon Quantum avec module adaptateur 140CRA31200 EIO2_d2_DROP NOTE: Dans ce cas, le rack et les numéros d'emplacement sont omis. 224 35006145.25 Types de données Langages de programmation et structure Exemples d'instance DDT d'équipement dans une application Modicon Quantum (UC Quantum) : • Station locale Modicon Quantum 1, rack 1, emplacement 4 située sur le Local Bus numéro 2. Module adaptateur 140CRP31200 pour l'adressage des stations d'E/S Ethernet. LOC1_d1_r1_s4_CRP31200 • Station d'E/S X80 Ethernet 1, rack 0, emplacement 0, située sur le EIO bus numéro 2. Module BMECRA31210. EIO2_d1_ECRA31210 NOTE: Dans ce cas, le rack et les numéros d'emplacement sont omis comme pour l'adaptateur de station d'E/S Quantum Ethernet. • Station d'E/S X80 Ethernet 1, rack 0, emplacement 1, située sur le EIO bus numéro 2. Module BMXDAI0805. EIO2_d1_r0_s1_DAI0805 • Station d'E/S Modicon Quantum Ethernet 2, rack 1, située sur le EIO bus numéro 2. Station Modicon Quantum avec module adaptateur 140CRA31200 EIO2_d2_DROP NOTE: Dans ce cas, le rack et les numéros d'emplacement sont omis. Changer le nom d'un DDT d'équipement, et copier, coller et déplacer un module Les actions sur les instances DDT d'équipement et les modules associé à un DDT d'équipement sont décrites dans la section suivante : Gestion d'une instance de DDT d'équipement (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Types de données des blocs fonction (DFB/EFB) Objet de cette section Cette section décrit les types de données des blocs fonction, à savoir : • blocs fonction utilisateur (DFB) • blocs fonction élémentaires (EFB) 35006145.25 225 Langages de programmation et structure Types de données Présentation des familles de types de données des blocs fonction Introduction Les familles de types de données des blocs fonction sont les suivantes : • la famille des blocs fonction élémentaires (EFB), page 174 • la famille des blocs fonction utilisateur (DFB), page 174 Représentation : Les blocs fonctions sont des entités contenant : 226 • des variables d'entrée et de sortie servant d'interface avec l'application • un algorithme de traitement exploitant les variables d'entrée et renseignant les variables de sortie • des variables internes privées et publiques exploitées par l'algorithme de traitement 35006145.25 Types de données Langages de programmation et structure Illustration Bloc fonction : Bloc fonction utilisateur (DFB) Les types bloc fonction utilisateur (blocs fonction dérivés) sont développés par l'utilisateur avec un ou plusieurs langages (selon le nombre de sections). Ces langages sont les suivants : • schéma à contacts (LD) • langage littéral structuré (ST) • langage liste d'instructions (IL) • langage en blocs fonctionnels (FBD) Un type DFB peut avoir une ou plusieurs instances ; chaque instance est référencée par un nom (symbole) et possède les types de données du DFB. Bloc fonction élémentaire (EFB) Les blocs fonctions élémentaires (EFB) sont fournis par le constructeur ; ils sont programmés en langage C. L'utilisateur peut créer son propre EFB, à condition de disposer de l'outil logiciel en option "SDKC". 35006145.25 227 Langages de programmation et structure Types de données Un type EFB peut avoir une ou plusieurs instances ; chaque instance est référencée par un nom (symbole) et possède les données du type d'EFB. Caractéristiques des types de données de bloc fonction (EFB/DFB) Définition du type Le type d'un bloc fonction EFB ou DFB est défini par : • le nom de type, page 179, défini par l’utilisateur pour les DFB • un commentaire facultatif. (les caractères autorisés correspondent aux codes ASCII 32 à 255) • les données d’interface de l'application : • • • 228 ◦ les entrées, pas accessibles en lecture/écriture depuis l’application, mais lues par le code du bloc fonction, ◦ les entrées/sorties, pas accessibles en lecture/écriture depuis l’application, mais lues et écrites par le code du bloc fonction, ◦ les sorties, accessibles en lecture depuis l’application et lues et écrites par le code du bloc fonction. les donnéees internes : ◦ données internes publiques, accessibles en lecture/écriture depuis l’application, lues et écrites par le code du bloc fonction, ◦ données internes privées, pas accessibles depuis l'application mais lues et écrites par le code du bloc fonction. le code : ◦ pour les DFB, il est écrit par l'utilisateur dans le langage de l'automate (ST, IL, LD, FBD) et il est structuré en une ou plusieurs sections, ◦ pour les EFB, il est écrit en langage C. des informations telles que : ◦ le numéro de version du type, ◦ la date de la derniére modification du code, ou des variables internes, ou des variables d'interface. ◦ une fiche descriptive facultative (32767 caractères) décrivant la fonction du bloc et ses différentes modifications. 35006145.25 Types de données Langages de programmation et structure Caractéristiques Ce tableau donne les caractéristiques des éléments composant un type : Elément EFB DFB Nom 32 caractères 32 caractères Commentaire 1024 caractères 1024 caractères Données d'entrée 32 maximum 32 maximum Données d'entrée/sortie 32 maximum 32 maximum Données de sortie 32 maximum 32 maximum Nombre d'interfaces 32 maximum (2) 32 maximum (2) Données publiques Pas de limites (1) Pas de limites (1) Données privées Pas de limites (1) Pas de limites (1) Langage de programmation Langage C Langage : (entrées+sorties+entrées/sorties) Section • littéral structuré (ST), • liste d’instructions (IL), • schéma à contacts (LD), • diagramme à blocs fonction (FBD). Une section est définie par : • un nom (32 caractères maximum), • une condition de validation, • un commentaire (256 caractères maximum), • une protection : ◦ aucune, ◦ lecture seule, ◦ lecture/écriture. Une section ne peut pas accéder aux variables déclarées dans l’application, sauf : • les doubles mots système %SDi, • les mots système %SWi, • les bits système %Si. (1) : la seule limitation est la taille mémoire de l'automate. (2) : ne sont pas prises en compte l'entrée EN et la sortie ENO. 35006145.25 229 Langages de programmation et structure Types de données Caractéristiques d'éléments appartenant aux blocs fonction Qu'est-ce qu'un élément ? Chaque élément (données d'interface ou données internes) est défini par : • un nom, page 179 (comportant 32 caractères maximum), attribué par l'utilisateur ; • un type, qui fait partie de l'une des familles ci-après : ◦ Types de Données Elémentaires (EDT), ◦ Type de Données Dérivé (DDT), ◦ Type de Données Dérivé d'Equipement (DDT d'équipement), ◦ Types de Données de Blocs Fonction (EFB/DFB) • un commentaire facultatif de 1024 caractères maximum (les caractères autorisés correspondent aux codes ASCII 32 à 255) ; • une valeur initiale ; • un droit d'accès issu du programme d'application (pour afficher des sections de l'application ou la section appartenant aux DFB, reportez-vous à la rubrique Définition du type de bloc fonction (variables d'interface et internes), page 228) ; • un droit d'accès provenant des requêtes de communication ; • un indicateur de sauvegarde de variables publiques. Types de données autorisés pour un élément appartenant à un DFB Les types de données autorisés sont indiqués dans le tableau ci-dessous : Elément du DFB 230 Types EDT Types DDT IODDT Tables sans nom ANY_ ARRAY Autre ANY... Types de bloc fonction Données d'entrée Oui Non Oui Oui Oui Oui(2) Non Données d'entrée/de sortie Oui(1) Oui Oui Oui Oui Oui(2) Non Données de sortie Oui Non Oui Non Oui Oui (2) (3) Non 35006145.25 Types de données Langages de programmation et structure Elément du DFB Types EDT Types DDT Données publiques Oui Non Oui Non Données privées Oui Non Oui Non ANY... Types de bloc fonction Oui Non Non Oui Non Oui (1) : non autorisé pour les données statiques de type EBOOL utilisées sur les automates Quantum (2) : non autorisé pour les données de type BOOL et EBOOL (3) : achèvement lors de l'exécution du DFB et utilisation impossible en dehors du DFB Types de données autorisés pour un élément appartenant à un EFB Les types de données autorisés sont indiqués dans le tableau ci-dessous : Elément de l'EFB Types EDT Types DDT IODDT Tables sans nom ANY_ ARRAY Autre ANY... Types de bloc fonction Données d'entrée Oui Non Non Oui Oui Oui(1) Non Données d'entrée/de sortie Oui Oui Non Oui Oui Oui(1) Non Données de sortie Oui Non Non Non Oui Oui (1) (2) Non Données publiques Oui Non Non Non Oui Non Non Données privées Oui Non Non Non Oui Non Oui (1) : non autorisé pour les données de type BOOL et EBOOL (2) : achèvement lors de l'exécution de l'EFB et utilisation impossible en dehors de l'EFB Valeurs initiales pour un élément appartenant à un DFB Le tableau suivant précise si les valeurs initiales entrées sont issues de la définition du type de DFB ou de l'instance de DFB : 35006145.25 231 Langages de programmation et structure Types de données Elément du DFB Provenant du type de DFB Provenant de l'instance de DFB Données d'entrée (pas de type ANY...) Oui Oui Données d'entrée (de type ANY...) Non Non Données d'entrée/de sortie Non Non Données de sortie (pas de type ANY...) Oui Oui Données de sortie (de type ANY...) Non Non Données publiques Oui Oui Données privées Oui Non Valeurs initiales pour un élément appartenant à un EFB Le tableau suivant précise si les valeurs initiales entrées sont issues de la définition du type d'EFB ou de l'instance d'EFB : Elément de l'EFB Provenant du type d'EFB Provenant de l'instance d'EFB Données d'entrée (pas de type ANY..., voir generic data types, page 233) Oui Oui Données d'entrée (de type ANY...) Non Non Données d'entrée/de sortie Non Non Données de sortie (pas de type ANY...) Oui Oui Données de sortie (de type ANY...) Non Non Données publiques Oui Oui Données privées Oui Non AVERTISSEMENT COMPORTEMENT INATTENDU DE L'APPLICATION - INDEX DE TABLEAU NON VALIDE Lorsque des EFB et des DFB sont utilisés sur des variables de type tableau (array), utilisez uniquement des tableaux dont l'index de début est égal à 0. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 232 35006145.25 Types de données Langages de programmation et structure Types de données génériques (GDT) Objet de cette section Cette section décrit les types de données générique GDT (Generic data types). Présentation des types de données génériques Présentation Les types de données génériques sont des ensembles de types classiques (EDT, DDT) ayant pour vocation de déterminer la compatibilité entre ces types classiques. Ces ensembles sont identifiés par le préfixe ANY_ARRAY, mais ces préfixes ne peuvent en aucun cas être utilisés pour instancier des données. Leurs champs d'utilisation concernent les familles de type de données blocs fonctions (EFB \DFB) et les fonctions élémentaires (EF), afin de définir les types de données compatibles avec leur interface : • entrées • entrées/sorties • sorties Types de données génériques (GDT) disponibles Les types de données génériques disponibles dans Control Expert sont les suivants : • ANY_ARRAY_WORD • ANY_ARRAY_UINT • ANY_ARRAY_UDINT • ANY_ARRAY_TOD • ANY_ARRAY_TIME • ANY_ARRAY_STRING • ANY_ARRAY_REAL • ANY_ARRAY_INT • ANY_ARRAY_EBOOL • ANY_ARRAY_DWORD 35006145.25 233 Langages de programmation et structure • ANY_ARRAY_DT • ANY_ARRAY_DINT • ANY_ARRAY_DATE • ANY_ARRAY_BYTE • ANY_ARRAY_BOOL Types de données Exemple Soit le DFB suivant : NOTE: Les objets autorisés pour les différents paramètres sont définis dans ce tableau, page 506. Types de données appartenant aux diagrammes fonctionnels en séquence (SFC) Objet de cette section Cette section décrit les types de données appartenant aux diagrammes fonctionnels en séquence SFC (Sequential function chart) qui sont des structures prédéfinies par le constructeur. 234 35006145.25 Types de données Langages de programmation et structure Présentation des types de données de la famille SFC (diagramme fonctionnel en séquence) Introduction La famille des types de données diagrammes fonctionnels en séquence (SFC, Sequential function chart) regroupe des types de données dérivés tels que des structures restituant les propriétés et l’état du graphe (chart) et des actions le composant. Chaque étape est représentée par deux structures, à savoir : • la structure SFCSTEP_STATE • la structure SFCSTEP_TIMES Représentation : NOTE: Les deux types de structure SFCSTEP_STATE et SFCSTEP_TIMES sont aussi rattachés à chaque macro-étape du diagramme fonctionnel en séquence. Définition de la structure de type SFCSTEP_STATE Cette structure rassemble tous les types de données liés à l’état de l’étape ou de la macroétape. Ces types de données sont les suivants : • x : type de données élémentaire (EDT) BOOL contenant la valeur TRUE quand l’étape est active, • t : type de données élémentaire (EDT) TIME contenant le temps d'activité de l'étape (si désactivé, la valeur de l'étape est maintenue jusqu'à la prochaine activation), • tminErr : type de données élémentaire (EDT) BOOL contenant la valeur TRUE si le temps d’activité de l’étape est inférieur au temps d’activité minimal programmé, 35006145.25 235 Langages de programmation et structure • Types de données tmaxErr : type de données élémentaire (EDT) BOOL contenant la valeur TRUE si le temps d’activité de l’étape est supérieur au temps d’activité maximal programmé, Ces types de données sont accessibles à partir de l’application en lecture seule. Définition de la structure de type SFCSTEP_TIMES Cette structure rassemble tous les types de données liés à la définition des paramètres d'exécution de l'étape ou de la macro-étape. Ces types de données sont les suivants : • delay : type de données élémentaire (EDT) TIME définissant le temps de retard de scrutation de la transition situé en aval de l’étape active. • tmin : type de données élémentaire (EDT) TIME contenant la durée minimale durant laquelle l'étape doit être exécutée. Si cette valeur n'est pas respectée, tmin.Err prend la valeur TRUE. • tmax : type de données élémentaire (EDT) TIME contenant la durée maximale durant laquelle l'étape doit être exécutée. Si cette valeur n'est pas respectée, tmax.Err prend la valeur TRUE. Ces données sont accessibles uniquement à partir de l'éditeur SFC. Syntaxe d'accès aux données de la structure SFCSTEP_STATE Les noms d’instance de cette structure correspondent aux noms des étapes ou macroétapes du diagramme fonctionnel en séquence 236 Syntaxe Commentaire Nom_Etape.x Permet de connaitre l’état de l’étape (active\inactive) Nom_Etape.t Permet de connaitre le temps d’activation en cours ou total de l’étape Nom_Etape.tminErr Permet de connaitre si le temps minimal d’activation de l’étape est inférieur au temps programmé dans Nom_Etape.tmin Nom_Etape.tmaxErr Permet de connaitre si le temps maximal d’activation de l’étape est supérieur au temps programmé dans Nom_Etape.tmax 35006145.25 Types de données Langages de programmation et structure Compatibilité entre types de données Objet de cette section Cette section présente la compatibilité au sein des familles des types de donnés suivantes: • la famille Type de données élémentaire (EDT), • la famille Type de données dérivé (DDT), • la famille Type de données générique (GDT). Compatibilité entre types de données Introduction Ci-dessous sont présentées les différentes règles de compatibilité entre types à l'intérieur de chacune des familles suivantes : • la famille Type de données élémentaire (EDT), • la famille Type de données dérivé (DDT), • la famille Type de données générique (GDT). Famille Type de données élémentaires (EDT) La famille de types de données élémentaires (EDT) contient les sous-familles suivantes : • la sous-famille de types de données au format binaire, • la sous-famille de types de données au format BCD, • la sous-famille de types de données au format Réel, • la sous-famille de types de données au format chaîne de caractères, • la sous-famille de types de données au format chaîne de bits. Il n'y a pas de compatibilité entre deux types de données quels qu'ils soient, même s'ils appartiennent à la même sous-famille. Famille Type de données dérivées (DDT) La famille de types de données dérivées (DDT) contient les sous-familles suivantes : • la sous-famille de type tables, 35006145.25 237 Langages de programmation et structure • Types de données la sous-famille de type structures : ◦ structures concernant les données d'E/S (IODDT) ◦ structures concernant les équipements (DDT d'équipement) ◦ structures concernant d'autres données Règles concernant les structures : Deux structures sont compatibles si leurs éléments sont : • de même nom, • de même type, • organisés suivant le même ordre. Il existe quatre types de structures : Compatibilité entre les types de structures Types ELEMENT_1 ELEMENT_1 ELEMENT_2 ELEMENT_3 ELEMENT_4 OUI NON NON NON NON ELEMENT_2 OUI ELEMENT_3 NON NON ELEMENT_4 NON NON NON NON Règles concernant les tables 238 35006145.25 Types de données Langages de programmation et structure Deux tables sont compatibles si : • leurs dimensions et l'organisation de leurs dimensions sont identiques, • chaque dimension correspondante est de même type. Il existe cinq types de tables : Compatibilité entre les types de tables Le type... et le type... sont... TAB_1 TAB_2 incompatibles TAB_2 TAB_3 compatibles TAB_4 TAB_5 compatibles TAB_4[25] TAB_5[28] compatibles Famille Type de données génériques (GDT) La famille de types de données génériques (GDT) est composée d'ensembles organisés de façon hiérarchique qui contiennent des types de données appartenant aux familles suivantes : • Types de Données Elémentaires (EDT) • Types de Données Dérivés (DDT) Règles : Un type de données classique est compatible avec les types de données génériques qui lui sont liés hiérarchiquement. 35006145.25 239 Langages de programmation et structure Types de données Un type de données générique est compatible avec les types de données génériques qui lui sont liés hiérarchiquement. Exemple : Déclarations du type de données Reference Vue d'ensemble Cette section décrit le type de données Reference. Déclarations de types de données Reference Introduction Le type de données Reference permet le mappage de différents types de données dans un type de données dérivées (DDT). Une référence contient l'adresse mémoire d'une variable. AVIS COMPORTEMENT IMPREVU DE L'APPLICATION Pendant le test de votre application, veillez tout particulièrement à vérifier la bonne utilisation des références dans le programme. Le non-respect de ces instructions peut provoquer des dommages matériels. 240 35006145.25 Types de données Langages de programmation et structure Les références sont déclarées à l'aide du mot clé REF_TO suivi du type de la valeur référencée (par exemple : myRefInt: REF_TO INT). Une référence peut être affectée à une autre référence si elle désigne le même type de données ou un type compatible (par exemple : myRefINT1:= myRefINT2). Les références peuvent être affectées à des paramètres ou à des fonctions. Récapitulatif des opérations sur les références dans Control Expert Opération Description Exemple Déclaration Déclaration d'une variable en tant que référence myRefInt de type REF_TO INT Affectation Affecte une référence à une autre référence (même type de données) myRefINT1:= myRefINT2; Affecte une référence à un paramètre ou à une fonction myFB (r := myRef); Comparaison avec NULL IF myRef = NULL THEN … Référencer Affecte l'adresse d'une variable à une référence myRefA := REF(A); Déréférencement Fournit la valeur de la variable de référence A := myRefA^; B := myRefArrayType^[12]; Une référence peut être dissociée à l'aide du suffixe « ^ » (caret), mais la dissociation d'une référence NULL génère une erreur. Limites applicables aux références Une référence : • à une référence n'est pas prise en charge • ne peut pas recevoir de façon explicite l'affectation de la valeur NULL • à un IODDT n'est pas prise en charge en raison de l'absence d'allocation mémoire ; il n'y a pas d'adresse à référencer • ne peut pointer que vers des variables du type de données qu'elle prend en charge (EDT, DDT ou DDT d'équipement) et ne peut être comparée qu'à une référence du même type ou d'un type compatible • ne peut être utilisée qu'avec les opérateurs ":=", "=" et "<>" et les fonctions élémentaires (EF) "EQ" et "NE". 35006145.25 241 Langages de programmation et structure Types de données • ne peut pas être une variable temporaire, par exemple une liaison FBD ou la valeur résultant d'un appel de fonction élémentaire (EF) imbriqué • ne peut pas être utilisée avec les langages de programmation SFC et LL984 • respecte les droits d'accès de la variable référencée par l'attribut de variable Droits lecture/écriture (R/W) de variable référencée • doit être affecté à une broche de référence du FFB (paramètre obligatoire) Il est possible de déclarer un DFB ou un FFB avec des références de paramètre d'entrée ou de sortie, mais pas avec un paramètre d'entrée/sortie, lequel est déjà une référence. Une fois déréférencée (dissociée), une référence peut être utilisée comme une variable du type référencé. Seul un niveau de déréférencement est autorisé. La valeur initiale d'une référence ne peut pas être cyclique : Utilisations possibles dans une section de l'application Une variable d'application peut uniquement être référencée à une référence de variable d'application ou à une référence de variable publique du DFB : • Var_Ref := REF(Var); • DFB_Instance.public_Var_Ref := REF(Var); Une variable d'application peut uniquement être affectée à une variable d'application ou à une variable publique du DFB : 242 • Var1_Ref := Var2_Ref; • DFB_Instance.public_Var_Ref := Var_Ref; 35006145.25 Types de données Langages de programmation et structure Utilisations possibles dans une section du DFB Une variable d'entrée/sortie ou une variable privée peut uniquement être référencée, respectivement, à une référence de sortie ou à une référence publique pour la première et à une référence privée pour la seconde : • Out_Var_Ref := REF(In_Out_Var); • Public_Var_Ref := REF(In_Out_Var); • Private_Var1 := REF(Private_Var2); Il est possible d'affecter une référence d'entrée, une référence de sortie, une référence d'entrée/sortie et une référence publique à une référence de sortie ou à une référence publique. Par ailleurs, les références privées peuvent uniquement être affectées à une référence privée : • Out_Var_Ref := In_Var_Ref; • Out_Var_Ref := Out_Var_Ref; • Out_Var_Ref := In_Out_Var_Ref; • Out_Var_Ref := Public_Var_Ref; • Public_Var_Ref := In_Var_Ref; • Public_Var_Ref := Out_Var_Ref; • Public_Var_Ref := In_Out_Var_Ref; • Public_Var_Ref := Public_Var_Ref; • Private_Var_Ref := Private_Var_Ref; Droits d'accès des références Les attributs suivants peuvent être définis dans une référence à l'aide de l'éditeur de données : • R/W Programme : définir la référence en lecture seule. • Droits lecture/écriture (R/W) de variable référencée : indiquer si la variable référencée est en lecture seule (c'est le cas lorsque Droits lecture/écriture (R/W) de variable référencée n'est pas sélectionné). • Constante : empêcher le programme d'apporter des modifications. NOTE: Une variable de référence doit respecter les attributs L/E de la variable référencée. Ce tableau montre les seuls droits d'accès disponibles pour les variables et les variables référencées associées : 35006145.25 243 Langages de programmation et structure Types de données Référence Variable Exemple d'affectation R/W Programme Droits lecture/écriture (R/W) de variable référencée Constante R/W Programme RO RW Oui RO MyREF^ := Var; RO RW Oui RW MyREF^ := Var; RW RO Non RO MyREF := REF(Var); RW RO Non RW MyREF := REF(Var); RW RW Non RO MyREF^ := Var; RW RW Non RW MyREF := REF(Var); RW RW Non RW MyREF^ := Var; NOTE: Dans tous les autres cas, le logiciel Control Expert détecte une erreur et affiche un message qui explique comment corriger l'application. 244 35006145.25 Instances de données Langages de programmation et structure Instances de données Contenu de ce chapitre Instances de types de données............................................... 245 Attributs des instances de données ......................................... 249 Instances de Données à Adressage Direct .............................. 252 Contenu du chapitre Ce chapitre décrit les instances de données et leurs caractéristiques. Ces instances peuvent être: • des instances de données non localisées, • des instances de données localisées, • des instances de données à adressage direct. Instances de types de données Introduction Qu’est ce qu'une instance de types de données ?, page 176 L’instance d’un type de données est référencée soit par : • un nom (symbole), dans ce cas on dit que les données sont non localisées, car leur allocation mémoire n’est pas définie mais effectuée automatiquement par le système, • un nom (symbole) et une adresse topologique définie par le constructeur, dans ce cas on dit que les données sont localisées, car leur allocation mémoire est connue, • une adresse topologique définie par le constructeur, dans ce cas on dit que la donnée est à adressage direct, son allocation mémoire est connue. Instances de données non localisées Les instances de données non localisées sont gérées par le système d'exploitation de l'automate, leur emplacement physique dans la mémoire n'est pas connu de l'utilisateur. 35006145.25 245 Langages de programmation et structure Instances de données Les instances de données non localisées sont définies à partir de types de données pouvant appartenir à l'une de ces familles : • Types de Données Elémentaires (EDT) • Types de Données Dérivés (DDT) • Type de Données Dérivé d'Equipement (DDT d'équipement), • Types de Données de Blocs Fonction (EFB/DFB), • Types de Données Diagramme Fonctionnel en Séquence (SFC). Exemples : NOTE: Les instances de types de données de diagramme fonctionnel en séquence (SFC) sont créées au moment où elles sont insérées dans le programme d'application avec un nom par défaut que l’utilisateur peut modifier. Instances de données localisées Localiser une variable (définie par un symbole) consiste à créer une adresse dans l'éditeur de variables. Les instances de données localisées possèdent un emplacement mémoire prédéfini dans l'automate et cet emplacement est connu de l'utilisateur : • Adresse topologique pour les modules d'entrée/sortie • Adresse globale (M340, Premium) ou RAM d'Etat (M580, M340, Quantum) Les instances de données localisées sont définies à partir de types de données pouvant appartenir à l'une de ces familles : • 246 Types de Données Elémentaires (EDT) 35006145.25 Instances de données Langages de programmation et structure • Types de Données Dérivés (DDT) • Types de Données Dérivés d'Entrée/Sortie (IODDT). La liste ci-dessous présente les instances de données à localiser sur un type d'adresse % MW, %KW : • INT, • UINT, • WORD, • BYTE, • DATE, • DT, • STRING, • TIME, • TOD, • Type de structure DDT, • Tableau. Les instances de données EBOOL ou de tableaux EBOOL doivent être localisées sur un type d'adresse %M, %Q ou %I. Le type d'instance de données IODDT doit être localisé par le type de voie de module %CH NOTE: Les instances de type double de données localisées (DINT, DUNIT, DWORD) ou les instances flottantes (REAL) doivent être localisées par un type d’adresse %MW, %KW. Seule la localisation du type d'instance objets d'E/S est possible avec le type %MD<i>, % KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF en utilisant leur adresse topologique (par exemple %MD0.6.0.11, %MF0.6.0.31). NOTE: Pour M580 et M340, vérifiez que la valeur d'index (i) est paire, page 216 pour les instances de type double de données localisées (%MW et %KW). 35006145.25 247 Langages de programmation et structure Instances de données Exemples : 248 35006145.25 Instances de données Langages de programmation et structure NOTE: Les instances de types de données de diagramme fonctionnel en séquence (SFC) sont créées au moment où elles sont insérées dans le programme d’application avec un nom par défaut que l’utilisateur peut modifier. Instances de données à adressage direct Les instances de données à adressage direct possèdent un emplacement prédéfini dans la mémoire automate ou dans un module métier et cet emplacement est connu de l’utilisateur. Les instances de données à adressage direct sont définies à partir de types appartenant à la famille de type de données élémentaires (EDT). Exemples d’instances de données à adressage direct : Interne Constante %M<i> Système Entrée/sortie %S<i> %Q, %I %SW<i> %QW, %IW %MW<i> %KW<i> %MD<i> (1) %KD<i> (1) %QD, %ID %MF<i> (1) %KF<i> (1) %QF, %IF Réseaux %NW Légende : (1) Non disponible pour Modicon M340 NOTE: les instances de données localisées peuvent être utilisées par un adressage direct dans le programme. Exemple : • Var_1 : DINT AT %MW10 ;%MW10 et %MW11 sont utilisés tous les deux. Un adressage direct %MD10 peut être utilisé, ou Var_1 dans le programme. Attributs des instances de données Présentation Les attributs d'une instance de données sont des informations qui la définissent. Ces informations sont : 35006145.25 249 Langages de programmation et structure Instances de données • son nom, page 179 (sauf pour les instances de données à adressage direct, page 252), • son adresse topologique (sauf pour les instances de types de données non localisées), • son type de données, qui peut appartenir à l'une des familles suivantes : • ◦ types de données élémentaires (EDT), ◦ types de données dérivés (DDT), ◦ DDT d'équipement, ◦ blocs fonction (EFB/DFB), ◦ diagramme fonctionnel séquentiel (SFC). un commentaire descriptif optionnel (de 1 024 caractères au maximum). (les caractères autorisés correspondent aux codes ASCII 32 à 255) Nom d'une instance de données Il s'agit d'un symbole (32 caractères au maximum) qui est instancié automatiquement avec un nom par défaut, lequel peut être modifié par l'utilisateur. Certains noms ne peuvent être utilisés, par exemple : • mots-clés utilisés dans les langages textuels, • noms de sections de programme, • noms de types de données prédéfinis ou choisis par l’'utilisateur (structures, tables), • noms de types de données DFB/EFB prédéfinis ou choisis par l'utilisateur, • noms de fonctions élémentaires (EF) prédéfinis ou choisis par l'utilisateur. Nom d'instances appartenant à la famille SFC Les noms des instances sont déclarés implicitement pendant que l'utilisateur dessine son diagramme fonctionnel en séquence (SFC). Ce sont des noms par défaut fournis par le constructeur et modifiables par l'utilisateur. Noms par défaut fournis par le constructeur : 250 Objet SFC Nom Etape S_<nom section>_<numéro étape> Etape de macro-étape S_<nom section>_<numéro macro-étape>_<numéro étape> Macro-étape MS_<nom section>_<numéro étape> Macro-étape imbriquée MS_<nom section>_<numéro macro-étape>_<numéro étape> 35006145.25 Instances de données Langages de programmation et structure Objet SFC Nom Etape d'entrée de macro-étape S_IN<nom section>_<numéro macro-étape> Etape de sortie de macro-étape S_OUT<nom section>_<numéro macro-étape> Transition T_<nom section>_<numéro transition> Transition de macro-étape T_<nom section>_<numéro macro-étape>_<numéro transition> Noms d'instances appartenant à la famille des blocs fonction Les noms d'instances sont déclarés implicitement pendant que l'utilisateur insère les instances dans les sections du programme d'application. Ce sont des noms par défaut fournis par le constructeur et modifiables par l'utilisateur. Syntaxe des noms par défaut fournis par le constructeur : NOTE: Le nom d'instance n'inclut pas le nom de la section dans laquelle l'instance est utilisée, car elle peut être utilisée dans différentes sections de l'application. Accès à un élément d'une instance de la famille DDT La syntaxe d'accès est la suivante : Règle : La taille maximum de la syntaxe d’accès est de 1024 caractères, et les limites possibles d'un type de données dérivé sont les suivantes : • 10 niveaux d'imbrication (tables/structures), • 6 dimensions par table, 35006145.25 251 Langages de programmation et structure • Instances de données 4 chiffres pour définir l'index de l'élément d'une table. Accès à un élément d'une instance de la famille DDT d'équipement La syntaxe d'accès est la suivante : Règle : La taille maximum de la syntaxe d’accès est de 1024 caractères, et les limites possibles d'un type de données dérivé sont les suivantes : • 10 niveaux d'imbrication (tables/structures), • 6 dimensions par table, • 4 chiffres pour définir l'index de l'élément d'une table. Instances de Données à Adressage Direct Aperçu Qu'est-ce qu'une instance de données à adressage direct ?, page 249 Syntaxe d'accès La syntaxe d’une instance de données à adressage direct est définie par le symbole % suivi d’un préfixe de localisation mémoire et, dans certains cas, d’informations supplémentaires. Le préfixe de localisation mémoire peut être : 252 • M, pour les variables internes • K, pour les constantes (Premium, M580 and M340) 35006145.25 Instances de données Langages de programmation et structure • S, pour les variables système • N, pour les variables réseau • I, pour les variables d'entrée • Q, pour les variables de sortie Variables internes %M Syntaxe d’accès : Syntaxe Format Exemple Droit d’accès programme Bit %M<i> ou %MX<i> 3 bits (EBOOL) %M1 L/E Mot %MW<i> 16 bits (INT) %MW10 L/E Bit extrait de mot %MW<i>.<j> 1 bit (BOOL) %MW15.5 L/E Mot double %MD<i> (1) 32 bits (DINT) %MD8 L/E Réel (virgule flottante) %MF<i> (1) 32 bits (REAL) %MF15 L/E Légende (1) : Non disponible pour Modicon M340. <i> représente le numéro d'instance (à partir de 0 pour Premium et de 1 pour Quantum). Pour les M580 et M340, vérifiez que les instances de type double (mot double) ou à virgule flottante (réel) sont situées dans un %MW de type entier (INT) et dont l'index <i> est pair. NOTE: Les données %M<i> ou %MX<i> détectent les fronts et gèrent le forçage. 35006145.25 253 Langages de programmation et structure Instances de données Organisation mémoire : NOTE: La modification de %MW<i> implique les modifications correspondantes de % MD<i> et %MF<i>. Constantes %K Syntaxe d’accès : Syntaxe Format Droit d’accès programme Constante Mot %KW<i> 16 bits (INT) L Constante double mot %KD<i> (1) 32 bits (DINT) L Constante Réel (virgule flottante) %KF<i> (1) 32 bits (REAL) L Légende (1) : Non disponible pour Modicon M340. <i> représente le numéro d'instance. NOTE: L'organisation mémoire est identique à celle des variables internes, qui ne sont pas disponibles sur les automates Quantum. 254 35006145.25 Instances de données Langages de programmation et structure Constantes %I Syntaxe d’accès : Syntaxe Format Droit d’accès programme Constante Bit %I<i> 3 bits (EBOOL) L Constante Mot %IW<i> 16 bits (INT) L <i> représente le numéro d'instance. NOTE: Ces données ne sont disponibles que sur les automates Quantum et Momentum. Variables Système %S Syntaxe d’accès : Syntaxe Format Droit d’accès programme Bit %S<i> ou %SX<i> 1 bit (BOOL) L/E ou L Mot %SW<i> 32 bits (INT) L/E ou L <i> représente le numéro d'instance. NOTE: L'organisation de la mémoire est identique à celle des variables internes. Les données %S<i> et %SX<i> ne sont pas utilisées pour la détection des fronts et ne gèrent pas le forçage. Variables Réseau %N Ces variables contiennent des informations, qui doivent être échangées entre plusieurs programmes d'application via le réseau de communication. Syntaxe d’accès : Syntaxe Format Droit d’accès programme Mot commun %NW<n>.<s>.<d> 16 bits (INT) L/E ou L Bit extrait de mot %NW<n>.<s>.<d>.<j> 1 bit (BOOL) L/E ou L <n> représente le numéro de réseau. 35006145.25 255 Langages de programmation et structure Instances de données <s> représente le numéro de station. <d> représente le numéro de donnée. <j> représente la position du bit dans le mot. Cas des Variables d'Entrée/Sortie Ces variables sont contenues dans les modules métiers. Syntaxe d’accès : Syntaxe Exemple Droit d’accès programme %CH<@mod>.<c> %CH4.3.2 L Bit de type BOOL d'erreur de module détectée %I<@mod>.MOD.ERR %I4.2.MOD.ERR L Bit de type BOOL d'erreur de voie détectée %I<@mod>.<c>.ERR %I4.2.3.ERR L Bit de type BOOL ou EBOOL %I<@mod>.<c> %I4.2.3 L %I<@mod>.<c>.<d> %I4.2.3.1 L %IW<@mod>.<c> %IW4.2.3 L %IW<@mod>.<c>.<d> %IW4.2.3.1 L %ID<@mod>.<c> %ID4.2.3 L %ID<@mod>.<c>.<d> %ID4.2.3.2 L %IF<@mod>.<c> %IF4.2.3 L %IF<@mod>.<c>.<d> %IF4.2.3.2 L %Q<@mod>.<c> %Q4.20.3 L/E %Q<@mod>.<c>.<d> %Q4.20.30.1 L/E %QW<@mod>.<c> %QW4.2.3 L/E %QW<@mod>.<c>.<d> %QW4.2.3.1 L/E %QD<@mod>.<c> %QD4.2.3 L/E %QD<@mod>.<c>.<d> %QD4.2.3.2 L/E Structure d'Entrée/Sortie (IODDT) Entrées %I Mot de type INT Mot double de type DINT REAL de type Lecture (virgule flottante) Sorties %Q Bit de type EBOOL Mot de type INT Mot double de type DINT 256 35006145.25 Instances de données REAL de type Lecture (virgule flottante) Langages de programmation et structure Syntaxe Exemple Droit d’accès programme %QF<@mod>.<c> %QF4.2.3 L/E %QF<@mod>.<c>.<d> %QF4.2.3.2 L/E %MW<@mod>.<c> %MW4.2.3 L/E %MW<@mod>.<c>.<d> %MW4.2.3.1 L/E %MD<@mod>.<c> %MD4.2.3 L/E %MD<@mod>.<c>.<d> %MD4.2.3.2 L/E %MF<@mod>.<c> %MF4.2.3 L/E %MF<@mod>.<c>.<d> %MF4.2.3.2 L/E %KW<@mod>.<c> %KW4.2.3 L %KW<@mod>.<c>.<d> %KW4.2.3.1 L %KD<@mod>.<c> %KD4.2.3 L %KD<@mod>.<c>.<d> %KD4.2.3.12 L %KF<@mod>.<c> %KF4.2.3 L %KF<@mod>.<c>.<d> %KF4.2.3.12 L Variables %M (Premium) Mot de type INT Mot double de type DINT REAL de type Lecture (virgule flottante) Constantes %K (Modicon M580, Modicon M340 et Premium) Mot de type INT Mot double de type DINT REAL de type Lecture (virgule flottante) <@mod = \<b>.<e>\<r>.<m> <b> numéro de bus (omis pour une station locale). <e> numéro du point de connexion de l'équipement (omis pour une station locale, le point de connexion est également appelé "station" pour les utilisateurs de Quantum). <r> numéro de rack. <m> emplacement du module. <c> numéro de voie (0 à 999) ou mot réservé MOD. <d> numéro des données (0 à 999) ou mot réservé ERR (facultatif si valeur 0). Pour les M580 et M340, <d> est pair. 35006145.25 257 Langages de programmation et structure Instances de données Exemples : station locale et station sur bus pour automates Modicon M340. 258 35006145.25 Instances de données Langages de programmation et structure Exemples : station locale et station sur bus pour automates Quantum et Premium. 35006145.25 259 Langages de programmation et structure Références de données Références de données Contenu de ce chapitre Référence aux instances de données par valeur ...................... 260 Référence aux instances de données par nom ......................... 262 Références d'instances de données par adresses .................... 264 Règles d'appellation des données ........................................... 268 Contenu du chapitre Ce chapitre décrit les références d’instances de données. Ces références peuvent être: • des références par valeurs, • des références par noms, • des références par adresses. Référence aux instances de données par valeur Présentation Qu’est ce qu’une référence d’instance de données ?, page 178 Aperçu Une référence à une instance de données par valeur est une instance ne possédant pas de nom (symbole) ou d’adresse topologique. Il s'agit d'une valeur immédiate qui peut être affectée à une instance de type de données appartenant à la famille EDT. La norme IEC 1131 autorise les valeurs immédiates sur les instances des types de données suivants : • 260 booléens ◦ BOOL ◦ EBOOL 35006145.25 Références de données • • entiers ◦ INT ◦ UINT ◦ DINT ◦ UDINT ◦ TIME réels ◦ • • Langages de programmation et structure REAL dates et heures ◦ DATE ◦ DATE AND TIME ◦ TIME OF DAY chaînes de caractères ◦ STRING Le logiciel de programmation étend la norme en y ajoutant les types chaine de bits. • BYTE • WORD • DWORD Exemples de valeurs immédiates : Ce tableau associe des valeurs immédiates à des types d’instance Valeur immédiate Type d’instance ’Je suis une chaine de caractères’ STRING T#1s TIME D#2000-01-01 DATE TOD#12:25:23 TIME_OF_DAY DT#2000-01-01-12:25:23 DATE_AND_TIME 16#FFF0 WORD UINT#16#9AF (valeur typée) UINT DWORD#16#FFFF (valeur typée) DWORD 35006145.25 261 Langages de programmation et structure Références de données Référence aux instances de données par nom Présentation Qu’est ce qu’une référence d’instance de données ?, page 178 Références aux 'instances de la famille EDT L'utilisateur choisit un nom (symbole) qui permet d'accéder à l'instance de données : Références aux instances de la famille DDT Tables : L'utilisateur choisit un nom (symbole) qui permet d'accéder à l'instance de données : Structures : 262 35006145.25 Références de données Langages de programmation et structure L'utilisateur choisit un nom (symbole) qui permet d'accéder à l'instance de données : 35006145.25 263 Langages de programmation et structure Références de données Références aux instances des familles DFB\EFB L'utilisateur choisit un nom (symbole) qui permet d'accéder à l'instance de données. Références d'instances de données par adresses Présentation Qu’est ce qu’une référence d’instance de données ?, page 178 Aperçu Une référence d'instance de données par adresse n'est possible que sur certaines instances de données qui appartiennent à la famille EDT. Ces instances sont : • 264 les variables internes (%M<i>, %MW<i>, %MD<i>, %MF<i>), 35006145.25 Références de données • les constantes (%KW<i>, %KD<i>, %KF<i>), • les entrées/sorties (%I<adresse>, %Q<adresse>). Langages de programmation et structure NOTE: Les instances %MD<i>, %MF<i>, %KD<i> et %KF<i> ne sont pas disponibles pour les automates Modicon M340 et Modicon M580. Référence par adressage direct L'adressage est considéré direct quand l'adresse de l'instance est fixe, c'est-à-dire définie lors de l'écriture dans le programme. Exemples : Références par adresse indexée L'adressage est considéré indexé lorsque l'adresse de l'instance est complétée par un index. L'index est défini soit par : • une valeur appartenant aux types Entiers, • une expression arithmétique composée de types Entiers. Une variable indexée a toujours un équivalent non indexé : 35006145.25 265 Langages de programmation et structure Références de données Les règles de calcul de <j> sont les suivantes : Objet<i>[index] Objet<j> %M<i>[index] <j>=<i> + <index> %MW<i>[index] <j>=<i> + <index> %KW<i>[index] <j>=<i> + <index> %MD<i>[index] <j>=<i> + (<index> x 2) %KD<i>[index] <j>=<i> + (<index> x 2) %MF<i>[index] <j>=<i> + (<index> x 2) %KF<i>[index] <j>=<i> + (<index> x 2) Exemples : Lors de la compilation du programme, un contrôle vérifie que : • l'index n'est pas négatif, • l'index ne dépasse pas l'espace mémoire alloué pour chacun des trois types. Bits extraits de mots Il est possible d'extraire l'un des 16 bits des mots simples (%MW, %SW; %KW, %IW, % QW). L'adresse de l'instance est complétée par le rang du bit extrait (<j>). 266 35006145.25 Références de données Langages de programmation et structure Exemples : Bits extraits d'octets Il est possible d'extraire l'un des bits d'un octet. L'adresse du bit extrait est accessible par : • le nom de l'octet correspondant, • le rang définissant sa position dans l'octet (nombre entre 0 et 7). Exemple : MyByte est une variable de type BYTE. MyByte.i est une valeur BOOL valide si 0 <= i <= 7 MyByte.0, MyByte.3 et MyByte.7 sont des valeurs BOOL valides. MyByte.8 n'est pas valide. Création d'un type de structure avec le bit extrait L'utilisateur peut créer un type de structure à l'aide du bit extrait (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Pour afficher la boîte de dialogue Classement des bits, cliquez avec le bouton droit sur l'instance ou le type de données qui doit être : • WORD • UINT • INT • BYTE • un bit extrait avec un parent compatible 35006145.25 267 Langages de programmation et structure Références de données Tableaux de bits et de mots Il s'agit d'une suite d'objets adjacents (bits ou mots) de même type et de longueur définie. Présentation des tableaux de bits : Type Adresse Accès en écriture Bits d'entrées TOR %Ix.<i>:L Non Bits de sorties TOR %Qx.<i>:L Oui Bits internes %M<i>:L Oui Présentation des tableaux de mots : Type Adresse Accès en écriture Mots internes %MW<i>:L Oui %MD<i>:L %MF<i>:L Mots constantes %KW<i>:L Non %KD<i>:L %KF<i>:L Mots système %SW50:4 Oui Exemples : • %M2:65 définit un tableau EBOOL de %M2 à %M66. • %M125:30 définit un tableau INT de %MW125 à %MW154. Règles d'appellation des données Introduction Dans une application, l'utilisateur choisit un nom pour : 268 • définir un type de données, • instancier des données (symbole), 35006145.25 Références de données Langages de programmation et structure • identifier une unité de programme, • identifier une section. Certaines règles ont été définies afin d'empêcher les conflits. Pour cela, il faut différencier les différents domaines d'application des données. Qu'est ce qu'un domaine ? Il s'agit d'un espace de l'application à partir duquel une variable est accessible ou non, tel que : • • le domaine application qui comprend : ◦ les différentes tâches de l'application, ◦ les unités de programme et/ou les sections qui les composent, les domaines par types de données tels que : ◦ les structures/tables pour la famille DDT, ◦ les EFB\DFB pour la famille des blocs fonction Règles Le tableau suivant définit s'il est possible ou non d'utiliser un nom déjà existant dans l'application pour des éléments nouvellement créés : Program Unit Section SR DDT/ IODDT Type de FB Instances de FB EF Variable Program Unit Non Non Non Oui Oui Oui Oui Oui Section Non Non(5) Non Oui Oui Oui Oui Oui Non Contenu de l'application -> Nouveaux éléments (cidessous) SR Non Non Non Oui Oui Non (1) DDT/IODDT Non Non Non Non Non(4) Non Non Non Type de FB Oui Oui Oui Non Non (3) Non (3) Instances de FB Non Non Non Non Oui Non Oui Non EF Oui Oui (2) Non Non Non Non Non 35006145.25 (4) 269 Langages de programmation et structure Contenu de l'application -> Références de données Program Unit Section SR DDT/ IODDT Type de FB Instances de FB EF Variable Oui Oui Non Oui Oui Non (1) Non Nouveaux éléments (cidessous) Variable (1) Une instance appartenant au domaine application ne peut pas avoir le même nom qu'une EF. (2) Une instance appartenant au domaine du type (variable interne) peut avoir le même nom qu'une EF. L'EF en question ne peut pas être utilisée avec ce type. (3) La création ou l'importation d'EFB/DFB ayant le même nom qu'une instance existante sont interdites. (4) Un élément DDT/IODDT peut avoir le même nom qu'un bloc fonction ou qu'une EF. Par contre, vous ne pourrez pas utiliser le bloc fonction ou l'EF dans l'application. (5) Exception : deux sections appartenant à deux Program Units différentes peuvent porter le même nom. NOTE: Ci-dessous un complément aux règles présentées dans le tableau, qui précisent que : 270 • à l'intérieur d'un type, une instance (variable interne) ne peut avoir le même nom que le nom de type de l'objet auquel elle appartient, • il n'y a pas de conflit entre le nom d'une instance appartenant à une section de l'application et le nom d'une instance appartenant à une section d'un DFB, • il n'y a pas de conflit entre le nom d'une section appartenant à une tâche et le nom d'une section appartenant à un DFB. 35006145.25 Langages de programmation et structure Langage de programmation Contenu de cette partie Langage à blocs fonction (FBD) .............................................. 272 Langage à contacts (LD) ........................................................ 300 Langage séquentiel SFC ........................................................ 345 Liste d'instructions (IL)............................................................ 404 Texte structuré (ST) ............................................................... 452 Contenu de cette partie Cette partie décrit la syntaxe des langages de programmation disponibles. 35006145.25 271 Langages de programmation et structure Langage à blocs fonction (FBD) Langage à blocs fonction (FBD) Contenu de ce chapitre Informations générales sur le langage à blocs fonction FBD ...................................................................................... 272 Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) ....................................... 274 Appels de sous-programme.................................................... 285 Commandes.......................................................................... 285 Liaison .................................................................................. 287 Objet texte............................................................................. 289 Ordre d'exécution des FFB ..................................................... 289 Modification de l'ordre d'exécution........................................... 293 Planification des boucles ........................................................ 298 Présentation Ce chapitre décrit le langage à blocs fonction FBD conforme à la norme IEC 61131. Informations générales sur le langage à blocs fonction FBD Introduction L'éditeur FBD permet la programmation graphique de blocs fonction conformément à la norme IEC 61131-3. 272 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Représentation d'une section FBD Représentation : Objets Les objets du langage FBD (diagramme de blocs fonctionnels) offrent des aides permettant de structurer une section en un certain nombre de : • EF (fonctions élémentaires, page 274) et EFB (blocs fonction élémentaires, page 275), • DFB (blocs fonction dérivés), page 276, • Procédures, page 276 et • Commandes, page 285. Ces objets, regroupés sous l'abréviation générique FFB, peuvent être liés les uns aux autres par : • liens, page 287 ou • paramètres réels, page 277. Les commentaires de la logique du programme peuvent être fournis en utilisant des objets texte (voir Objet texte, page 289). 35006145.25 273 Langages de programmation et structure Langage à blocs fonction (FBD) Taille de la section Une section FBD comprend une fenêtre incluant une seule page. Cette page est placée sur une grille. Une unité de grille comprend 10 points de trame. Une unité de trame est l'espace le plus petit possible entre deux objets d'une section FBD. Le langage FBD n'est pas basé sur des cellules. Les objets sont toutefois ajustés sur les points de trame. Une section FBD peut être configurée en nombre de cellules (points de trame horizontaux et points de trame verticaux). Conformité IEC Pour la description de la conformité relative du langage de programmation FBD au standard de l'IEC, reportez-vous à la section Conformité CEI, page 548. Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) Introduction FFB est le terme générique pour : • Fonction élémentaire (EF), page 274 • Bloc fonction élémentaire (EFB), page 275 • les DFB (blocs fonction dérivés), page 276 • Procédure, page 276 Fonction élémentaire Les fonctions élémentaires (EF) n’ont pas d’état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque appel de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat. 274 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Une fonction élémentaire est représentée graphiquement sous la forme d'un cadre avec des entrées et une sortie. Les entrées sont toujours représentées à gauche du cadre, et la sortie toujours à droite. Le nom de la fonction, c’est-à-dire son type, figure au centre du cadre. Le numéro d'exécution, page 289 de la fonction apparaît à droite du type de fonction. Le numéro de la fonction se trouve au-dessus du cadre. Il représente le numéro séquentiel de la fonction dans la section actuelle. Les numéros de fonction ne sont pas modifiables. Fonction élémentaire Pour certaines fonctions élémentaires, il est possible d'augmenter le nombre d'entrées. Bloc fonction élémentaire Les blocs fonction élémentaires (EFB) ont des états internes. Si les valeurs d'entrée sont identiques, la valeur de sortie peut varier à chaque appel de la fonction. Par exemple, pour un compteur, la valeur de sortie augmente. Un bloc fonction élémentaire est représenté graphiquement sous la forme d'un cadre avec des entrées et des sorties. Les entrées sont toujours représentées sur la gauche et les sorties toujours sur la droite du cadre. Les blocs fonction peuvent avoir plusieurs sorties. Le nom du bloc fonction, c'est-à-dire le type de bloc fonction, apparaît au centre du cadre. Le numéro d'exécution, page 289 du bloc fonction apparaît à droite du type de bloc fonction. Le nom d'instance apparaît au-dessus du cadre. Le nom d’instance permet d’identifier précisément le bloc fonction dans un projet. Le nom de l'instance EFB est créé automatiquement et se présente comme suit : TYPE_n, où : • TYPE est le type du bloc fonction, • n est le numéro séquentiel du type de bloc fonction dans le projet. Par exemple : 35006145.25 275 Langages de programmation et structure Langage à blocs fonction (FBD) • La première instance de l'EFB de type TON est appelée TON_0. • La première instance de l'EFB de type MOTOR est appelée MOTOR_0. • La deuxième instance de l'EFB de type TON est appelée TON_1. Pour plus de clarté, vous pouvez modifier ces noms générés automatiquement. Le nom d'instance (32 caractères maximum) doit être unique dans tout le projet ; majuscules et minuscules ne sont pas différenciées. Le nom d'instance doit respecter les conventions de noms générales. NOTE: conformément à la norme IEC 61131-3, les noms d'instance doivent commencer par une lettre. Si vous voulez également utiliser un chiffre comme premier caractère, vous devez le déclarer explicitement. Bloc fonction élémentaire DFB Les blocs fonction dérivés (DFB) ont les mêmes caractéristiques que les blocs fonction élémentaires. Ils sont cependant créés par l'utilisateur dans les langages FBD, LD, IL et/ou ST. L'unique différence par rapport aux blocs fonction élémentaires est que le bloc fonction dérivé est représenté graphiquement sous la forme d'un cadre avec deux lignes verticales. Bloc fonction dérivé Procédure Techniquement, les procédures sont des fonctions. 276 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure L'unique différence par rapport aux fonctions élémentaires est que les procédures peuvent comprendre plus d'une sortie et qu'elles prennent en charge le type de données VAR_IN_ OUT. Les procédures sont une extension de la norme IEC 61131-3 et doivent être activées de manière explicite. En apparence, les procédures ne sont pas différentes des fonctions élémentaires. Procédure Paramètres Des entrées et des sorties permettent de transférer les valeurs vers ou depuis un FFB. Ces entrées et ces sorties sont appelées « paramètres formels ». Les paramètres formels sont liés à des objets qui comprennent les états courants du processus. Ces objets sont appelés « paramètres réels ». Paramètres formels et réels : Durant l'exécution du programme, les valeurs sont transmises, par le biais des paramètres réels, du processus au FFB, et renvoyées à nouveau en sortie après le traitement. Seul un objet (paramètre réel) des types de données suivants peut être relié aux entrées d'un FFB : • Variable 35006145.25 277 Langages de programmation et structure • Adresse • Littéral • Expression ST, page 452 Langage à blocs fonction (FBD) Les expressions ST des entrées d'un FFB représentent une extension de la norme IEC 61131-3 et doivent être activées de manière explicite. • Liaison Les combinaisons d'objets (paramètres réels) suivantes peuvent être reliées aux sorties d'un FFB : • une variable, • une variable et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 284), • une adresse, • une adresse et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 284), • une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 284). Le type de données de l'objet à relier doit correspondre à celui de l’entrée/la sortie du FFB. On choisira un type de données adapté au bloc fonction, si tous les paramètres réels sont des valeurs littérales. Exception : pour les entrées/sorties FFB génériques de type de données ANY_BIT, des objets de type de données INT ou DINT (pas UINT ni UDINT) peuvent être reliés. Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : Non autorisé : (Dans ce cas AND_INT doit être utilisé.) 278 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Il n'est en principe pas nécessaire d'affecter un paramètre réel à tous les paramètres formels. Cependant, cela n'est pas valable pour les broches inversées. Un paramètre réel doit toujours leur être affecté. Cela vaut également pour certains types de paramètre formel. Pour connaître les types concernés, consultez le tableau suivant. Tableau des types de paramètre formel : Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT DEVICE DDT STRUCT FB ANY EFB : Entrée - - - - / / - / - EFB : VAR_IN_OUT + - - - + / - / - EFB: Sortie - - + + + / - / + DFB : Entrée - - - - / + - / - DFB : VAR_IN_ OUT + - - - + + - / - DFB: Sortie - - + / / / - / + EF : Entrée - - - - + / - + - EF : VAR_IN_OUT + - - - + / - / - EF : Sortie - - - - - / - / - Procédure : Entrée - - - - + / - + - Procédure : VAR_ IN_OUT + + + + + / + / + Procédure : Sortie - - - - - / - / + + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Non applicable Les FFB utilisant des paramètres réels sur les entrées auxquelles aucune valeur n'a encore été affectée, fonctionnent avec les valeurs initiales de ces paramètres réels. Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pour exécuter le bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (« 0 ») est utilisée. Si aucune valeur n'est affectée à un paramètre formel et que l'instance du bloc fonction/DFB a été appelée plusieurs fois, les instances exécutées ensuite réutilisent avec l'ancienne valeur. NOTE: Les structures de données non affectées sont toujours initialisées avec la valeur 0 ; il n'est pas possible de définir des valeurs initiales. 35006145.25 279 Langages de programmation et structure Langage à blocs fonction (FBD) NOTE: Une broche d'entrée ANY_ARRAY_xxx non connectée crée automatiquement un tableau masqué comportant 1 élément. Variables publiques Certains blocs fonction disposent non seulement d'entrées et de sorties, mais également de variables publiques. Ces variables transfèrent des valeurs statiques (non influencées par le processus) au bloc fonction. Elles sont donc utilisées lors du paramétrage du bloc fonction. Les variables publiques sont une extension de la norme IEC 61131-3. Les valeurs sont affectées aux variables publiques avec leur valeur initiale. Les variables publiques sont ensuite lues via le nom d'instance du bloc fonction et le nom de la variable publique. Exemple : Variables privées Certains blocs fonction disposent non seulement d'entrées, de sorties et de variables publiques, mais également de variables privées. A l'instar des variables publiques, ces variables servent à transmettre des valeurs statistiques (non influencées par le processus) au bloc fonction. 280 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Le programme utilisateur n'a pas accès à ces variables. Seule la table d'animation en a la capacité. NOTE: les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via la table d'animation. Les variables privées sont une extension de la norme IEC 61131-3. Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : • Les FFB sont exécutés seulement si l'entrée EN est sur 1 ou si l'entrée EN, page 282 est grisée. • Les entrées et sorties booléennes peuvent être inversées. • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 284. • Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, page 281. Appel multiple d'une instance de bloc fonction Les instances de DFB ou bloc fonction peuvent être appelées à plusieurs reprises, à l'exception des instances d'EFB de communication et blocs fonction/DFB ayant une sortie ANY mais pas d'entrée ANY, qui ne peuvent être appelées qu'une seule fois. L'appel multiple d'une même instance de DFB/bloc fonction est, par exemple, utile dans les cas suivants : • Si le bloc fonction/DFB n'a aucune valeur interne ou s'il n'est pas nécessaire pour un traitement ultérieur. Dans ce cas, l'appel multiple de la même instance de DFB/bloc fonction permet d'économiser de l'espace mémoire, car le code du bloc fonction/DFB n'est chargé qu'une seule fois. Le bloc fonction/DFB est, pour ainsi dire, traité comme une « fonction ». • Si le bloc fonction/DFB a une valeur interne censée influencer différents segments du programme, la valeur d'un compteur, par exemple, doit être augmentée en différents endroits du programme. Dans ce cas, l'appel multiple de la même instance de bloc fonction/DFB permet de ne pas sauvegarder les résultats intermédiaires en vue d'un traitement ultérieur à un autre endroit du programme. 35006145.25 281 Langages de programmation et structure Langage à blocs fonction (FBD) EN et ENO Une entrée EN et une sortie ENO peuvent être configurées pour tous les FFB. Si la valeur de EN est déjà à « 0 », lors de l'appel de FFB, les algorithmes définis par FFB ne sont pas exécutés et ENO est réglé sur « 0 ». Si la valeur de EN est égale à 1 lors de l'appel du FFB, les algorithmes définis par ce FFB sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est réglé sur « 0 ». Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Reportez-vous à la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Si ENO est réglé sur « 0 » (car EN = 0 ou en raison d'une erreur d'exécution) : • Blocs fonction ◦ Traitement des paramètres EN/ENO avec des blocs fonction qui possèdent (uniquement) une liaison en tant que paramètre de sortie : Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct. ◦ Traitement EN/ENO pour les blocs fonction ayant une variable et une liaison comme paramètre de sortie : Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct. La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre. 282 35006145.25 Langage à blocs fonction (FBD) • Langages de programmation et structure Fonctions/procédures Selon la définition CEI 61131-3, les sorties de fonctions désactivées (entrée EN mise à « 0 ») sont indéfinies. (Cette caractéristique s'applique également aux procédures.) Voici, néanmoins, une explication des états des sorties dans un tel cas : ◦ Traitement EN/ENO pour les fonctions/procédures ayant (seulement) une liaison comme paramètre de sortie : Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés. Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0. Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement. Consultez la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). ◦ Traitement EN/ENO pour les fonctions/procédures ayant une variable et une liaison comme paramètres de sortie : Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés. Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0. Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement. Consultez la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre. Le comportement aux sorties des FFB est indépendant du fait que les FFB soient appelés sans EN/ENO ou avec EN = 1. 35006145.25 283 Langages de programmation et structure Langage à blocs fonction (FBD) NOTE: pour les blocs fonction désactivés (EN = 0) équipés d'une fonction d'horloge interne (par exemple, le bloc fonction DELAY), le temps semble continuer de s'écouler, car il est calculé à l'aide d'une horloge système et est, par conséquent, indépendant du cycle du programme et de la libération du bloc. Variable VAR_IN_OUT Les FFB sont souvent utilisés pour lire une variable à l'entrée (variables d'entrée), pour la traiter et pour transmettre de nouveau les valeurs modifiées de cette même variable (variables de sortie). Ce cas exceptionnel d'une variable d'entrée/de sortie est également appelé variable VAR_ IN_OUT. Dans le FFB, une ligne indique que les variables d'entrée et de sortie sont liées l'une à l'autre. Variable VAR_IN_OUT Il convient de noter les particularités suivantes en cas d'utilisation de FFB avec des variables VAR_IN_OUT : 284 • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • les liaisons graphiques permettent uniquement de relier des sorties VAR_IN_OUT à des entrées VAR_IN_OUT. • seule une liaison graphique unique peut être reliée à une entrée/sortie VAR_IN_OUT. • il n'est pas possible de combiner des variables/adresses et des liaisons graphiques dans les sorties VAR_IN_OUT). • il est interdit de relier des valeurs littérales ou des constantes à des entrées/sorties VAR_IN_OUT. • il est interdit d'utiliser des négations au niveau des entrées/sorties VAR_IN_OUT. • des variables/composantes de variables différentes peuvent être reliées à l'entrée VAR_IN_OUT et à la sortie VAR_IN_OUT. Dans un tel cas, la valeur de la variable/ composante de variable à l'entrée est copiée dans la variable/composante de variable à la sortie. 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Appels de sous-programme Appel d'un sous-programme En FBD, les sous-programmes sont appelés à l'aide des blocs suivants. Si est l'état de EN est 1, le sous-programme correspondant (nom de variable dans SR_Name est appelé. Pour ce type de bloc, la sortie ENO n'est pas utilisée pour afficher l'état d'erreur. En l'occurrence, la sortie ENO est toujours à 1 et permet d'appeler simultanément plusieurs sous-programmes. La construction suivante permet d'appeler simultanément plusieurs sous-programmes. Le sous-programme à appeler doit se trouver dans la même tâche que la section FBD appelante. Il est possible d'appeler des sous-programmes au sein de sous-programmes. Les appels de sous-programmes sont un complément de la norme IEC 61131-3 et doivent être activés de manière explicite. Dans les sections d'actions SFC, les appels de sous-programmes ne sont autorisés que si le mode multijeton est activé. Commandes Présentation Les éléments de commande servent à l'exécution de sauts au sein d'une section FBD et au retour prématuré dans le programme principal depuis un sous-programme (SRx) ou un bloc fonction dérivé (DFB). 35006145.25 285 Langages de programmation et structure Langage à blocs fonction (FBD) Commandes Les commandes suivantes sont disponibles. Désignation Représentation Description Si l'état de la liaison de gauche est 1, un saut est exécuté jusqu'à un libellé (dans la section en cours). Saut Pour générer un saut conditionnel, l'objet saut est lié à une sortie FFB booléenne. Pour générer un saut inconditionnel, la valeur 1 est affectée à l'objet saut via la fonction AND. Libellé LABEL: Les libellés (destinations de saut) sont représentés par du texte terminé par deux-points. Le texte est limité à 32 caractères et doit être unique dans l'ensemble de la section. Le texte doit respecter les conventions sur les noms générales. Les étiquettes de saut ne peuvent être placées qu'entre les deux premiers points de grille sur la marge gauche de la section. Remarque : les libellés de saut ne doivent « traverser » aucun réseau, c'està-dire aucun objet ne doit traverser la ligne imaginaire entre le libellé de saut et la marge droite de la section. Cette règle est également valable pour les liaisons. Retour Les objets RETURN ne peuvent pas être utilisées dans le programme principal. • Dans un DFB, un objet RETURN force le retour au programme qui a appelé le DFB. ◦ Le reste de la section DFB contenant l'objet RETURN n'est pas exécuté. ◦ Les sections suivantes du DFB ne sont pas exécutées. Le programme qui a appelé le DFB est exécuté après le retour au programme à partir du DFB. Si le DFB est appelé par un autre DFB, le DFB qui a fait l'appel est exécuté après retour. • Dans un sous-programme (SR), un objet RETURN force le retour au programme qui a appelé le SR. ◦ Le reste du DFB contenant l'objet RETURN n'est pas exécuté. Le programme qui a appelé le SR est exécuté après le retour à partir du SR. 286 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Liaison Description Les liaisons sont des liens verticaux et horizontaux entre les FFB. Représentation Les points de liaison sont marqués par un cercle rempli. 35006145.25 287 Langages de programmation et structure Langage à blocs fonction (FBD) Le croisement est représenté par une liaison "interrompue". Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : 288 • Les liaisons peuvent être utilisées pour n'importe quel type de données. • Les types de données respectifs des entrées/sorties à relier doivent correspondre les uns aux autres. • Plusieurs liaisons peuvent être reliées à une sortie FFB. Une seule cependant peut être reliée à une entrée FFB. • Les entrées et sorties peuvent être reliées ensemble. La liaison de plusieurs sorties n'est pas possible. Cela signifie qu'aucun lien OU via des liaisons n'est possible dans FBD. Il faut utiliser une fonction OR dans ce cas. • Le chevauchement des liaisons avec d’autres objets est admis. • Les boucles ne peuvent pas être configurées par le biais de liaisons, étant donné que, dans ce cas, l’ordre d’exécution dans la section ne peut pas être déterminé clairement. Les boucles doivent être créées à l'aide de paramètres réels (voir Planification des boucles, page 298). 35006145.25 Langage à blocs fonction (FBD) • Langages de programmation et structure Afin d'éviter le croisement de liaisons, ces dernières peuvent également être représentées sous la forme de connecteurs. A cette occasion, la source et la cible de la liaison sont caractérisées par un nom unique au sein de la section. Selon le type d'objet source, le nom du connecteur est formé comme suit : ◦ Pour les fonctions : "numéro de fonction/paramètre formel" de la source de la liaison. ◦ Pour les blocs fonction : "nom d'instance/paramètre formel" de la source de la liaison. Objet texte Description Dans le langage à blocs fonctions FBD, les textes peuvent être positionnés sous forme d’objets texte. La taille de ces objets texte dépend de la longueur du texte. Selon la longueur du texte, la taille de l'objet peut être agrandie, dans les sens vertical et horizontal, d'unités de grille supplémentaires. Les objets texte ne doivent pas chevaucher des FFB ; le chevauchement avec des liaisons est toutefois admis. Ordre d'exécution des FFB Introduction L'ordre d'exécution est défini par la position des FFB dans la section (exécution de gauche à droite et de haut en bas). Lorsque, par la suite, les FFB sont liés à des liaisons graphiques, l’ordre d’exécution est alors déterminé par le flux de signaux. 35006145.25 289 Langages de programmation et structure Langage à blocs fonction (FBD) Le numéro d'exécution (numéro figurant dans le coin supérieur droit du cadre de FFB) indique l'ordre d'exécution. Ordre d'exécution des réseaux Les règles suivantes s'appliquent à l'ordre d'exécution des réseaux : • l'exécution d'une section a lieu réseau pour réseau via la liaison des FFB du haut vers le bas. • les boucles ne peuvent pas être configurées par le biais de liaisons, étant donné que, dans ce cas, l’ordre d’exécution ne peut pas être défini de façon unique. Les boucles doivent être résolues par le biais de paramètres réels (voir Planification des boucles, page 298). • L'ordre d'exécution des réseaux qui ne sont pas reliés entre eux par des liaisons est défini par l'ordre graphique (de la partie supérieure droite vers la partie inférieure gauche). Vous pouvez influencer l'ordre d'exécution (voir Modification de l'ordre d'exécution, page 293). • Le calcul d'un réseau doit être terminé entièrement avant que ne commence le calcul d'un autre réseau qui utilise les sorties du réseau précédent. • Aucun élément d'un réseau n'est considéré comme calculé avant que l'état de toutes les entrées de cet élément n'ait été calculé. • Le calcul d'un réseau est considéré comme terminé lorsque toutes les sorties de ce réseau sont calculées. Flux de signaux dans un réseau Les règles suivantes s'appliquent à l'ordre d'exécution au sein d'un réseau : • Un FFB n'est calculé que lors tous les éléments (sorties FFB, etc) qui sont reliés à ses entrées sont calculés. • L'ordre d'exécution des FFB reliés à différentes sorties du même FFB va du haut vers le bas. • L'ordre d'exécution des FFB n'est pas influencé par leur position au sein du réseau. Cela ne s'applique pas lorsque plusieurs FFB sont reliés à la même sortie du FFB "à appeler". Dans ce cas l'ordre d'exécution est défini par l'ordre graphique (du haut vers le bas). 290 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Priorités Priorités lors de la détermination du flux de signaux au sein d'une section. Priorité Règle Description 1 Lien Les liaisons ont la priorité la plus élevée lors de la détermination du flux de signaux au sein d'une section FBD. 2 Définition utilisateur Intervention de l'utilisateur sur l'ordre d'exécution. 3 Réseau par réseau Le calcul d'un réseau doit être complètement terminé avant que le calcul du réseau suivant puisse commencer. 4 Ordre des sorties Les FFB qui sont reliés aux sorties du même FFB "à appeler" sont calculés du haut vers le bas. 5 Rung par rung Priorité la moins élevée. (Cela ne s'applique que si aucune autre règle n'intervient.) 35006145.25 291 Langages de programmation et structure Langage à blocs fonction (FBD) Exemple Exemple d'ordre d'exécution des objets dans une section FBD : 292 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Modification de l'ordre d'exécution Introduction L'ordre d'exécution des réseaux et l'ordre d'exécution des objets au sein d'un réseau sont définis par une série de règles, page 291. Dans certains cas, il est nécessaire de modifier l'ordre d'exécution proposé par le système. Pour définir/modifier l'ordre d'exécution des réseaux, vous disposez des possibilités suivantes : • Utilisation de liaisons au lieu de paramètres réels • Position des réseaux • Détermination explicite de l'ordre d'exécution. Pour définir/modifier l'ordre d'exécution des réseaux, vous disposez des possibilités suivantes : • Position des FFB 35006145.25 293 Langages de programmation et structure Langage à blocs fonction (FBD) Situation d'origine Le schéma suivant représente deux réseaux dont l'ordre d'exécution est déterminé uniquement par leur position au sein de la section, même si les blocs .4/.5 et .7/.8 nécessitent un ordre d'exécution différent. 294 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Liaison au lieu des paramètres réels Si vous utilisez une liaison au lieu d'une variable, les deux réseaux sont exécutés dans l'ordre correct (voir aussi Situation d'origine, page 294). 35006145.25 295 Langages de programmation et structure Langage à blocs fonction (FBD) Position des réseaux Il est possible d'obtenir l'ordre d'exécution correct en modifiant la position des réseaux dans la section (voir aussi Situation d'origine, page 294). 296 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Détermination explicite Il est possible d'obtenir l'ordre d'exécution correct en modifiant de manière explicite l'ordre d'exécution d'un FFB. Pour indiquer quels FFB ont subi une modification de leur ordre d'exécution, le numéro d'exécution est affiché sur un champ noir (voir aussi Situation d'origine, page 294). NOTE: Le système n'autorise qu'une seule référence par instance. Ainsi, l'instance ".7"par exemple ne peut être référencée qu'une fois. Position des FFB La position des FFB n'a une influence sur l'ordre d'exécution que si plusieurs FFB sont reliés à la même sortie du FFB "appelant" (voir aussi Situation d'origine, page 294). Dans le premier réseau, les positions de bloc .4 et .5 sont permutées. Dans ce cas (source commune des deux entrées de bloc), l'ordre d'exécution des deux blocs est également permuté (traitement du haut vers le bas). 35006145.25 297 Langages de programmation et structure Langage à blocs fonction (FBD) Dans le second réseau, les positions de bloc .7 et .8 sont permutées. Dans ce cas (source différente des entrées de bloc), l'ordre d'exécution des deux blocs n'est pas permuté (traitement dans l'ordre d'appel des sorties). Planification des boucles Boucles non permises La configuration de boucles exclusivement par le biais de liaisons n’est pas permise, étant donné que, dans ce cas, une détermination unique du flux de signaux n’est pas possible (la sortie d’un FFB est l’entrée du FFB suivant, et la sortie de celui-ci est à son tour l’entrée du premier). 298 35006145.25 Langage à blocs fonction (FBD) Langages de programmation et structure Boucles non autorisées via des liaisons Résolution par le biais d'un paramètre réel Une telle logique doit être résolue par le biais de variables de réaction, afin que le flux de signaux puisse être défini de façon unique. Les variables de réaction doivent être initialisées. La valeur initiale est utilisée lors de la première exécution de la logique. Une fois la première exécution effectuée, la valeur initiale est remplacée par la valeur réelle. Respectez pour les deux variantes l'ordre d'exécution (numéro entre parenthèses après le nom d'instance) des deux blocs. Boucle générée avec un paramètre réel : type 1 Boucle générée avec un paramètre réel : type 2 35006145.25 299 Langages de programmation et structure Langage à contacts (LD) Langage à contacts (LD) Contenu de ce chapitre Informations générales sur le langage à contacts LD (Ladder Diagram) ............................................................................... 300 Contacts ............................................................................... 303 Bobines................................................................................. 304 Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) ....................................... 306 Commandes.......................................................................... 318 Blocs opération et blocs comparaison...................................... 319 Liaisons ................................................................................ 322 Objet texte............................................................................. 326 Reconnaissance de front ........................................................ 326 Ordre d'exécution et flux de signaux ........................................ 335 Planification des boucles ........................................................ 338 Modification de l'ordre d'exécution........................................... 339 Présentation Ce chapitre décrit le langage à contacts LD conforme à la norme IEC 611311. Informations générales sur le langage à contacts LD (Ladder Diagram) Présentation La présente section décrit le langage à contacts (diagramme Ladder) LD selon CEI 61131-3. La structure d’une section LD correspond à un rung pour des montages à relais. Sur le côté gauche de l'éditeur LD, se trouve la barre d'alimentation gauche. Cette barre d’alimentation gauche correspond à la phase (conducteur L) d’un rung. De même que sur un rung, le système ne "traite", lors de la programmation LD, que les objets LD qui sont branchés sur l’alimentation, c’est-à-dire qui sont reliés à la barre d’alimentation gauche. La barre d'alimentation droite correspond au conducteur neutre. Toutes les bobines et sorties FFB y sont reliées directement ou indirectement, ce qui permet d’établir un flux de courant. Un groupe d'objets reliés les uns aux autres et ne présentant aucune liaison vers d'autres objets (à l'exception de la barre d'alimentation) est appelé réseau ou rung. 300 35006145.25 Langage à contacts (LD) Langages de programmation et structure Représentation d'une section LD Représentation : Objets Les objets du langage de programmation LD offrent des aides permettant de structurer une section en un ensemble de : • contacts, page 303 35006145.25 301 Langages de programmation et structure Langage à contacts (LD) • bobines, page 304 • EF et EFB (fonctions élémentaires, page 306 et blocs fonction élémentaires, page 307) • DFB (blocs fonction dérivés, page 308) • procédures, page 308 • Contrôles, page 318 et • blocs d'opération et de comparaison, page 319 représentant une extension de la norme CEI 61131-3. Ces objets peuvent être liés les uns aux autres par : • Liens, page 322 ou • Paramètres réels, page 309 (FFB uniquement) Les commentaires de la logique du programme peuvent être fournis en utilisant des objets texte (voir Objet texte, page 326). Taille de la section Une section LD comprend une fenêtre incluant une seule page. Cette page est placée sur une grille qui partage la section en lignes et colonnes. Les sections LD peuvent comporter de 11 à 63 colonnes et de 17 à 3998 lignes. Le langage de programmation LD est axé sur les cellules, ce qui signifie qu'un seul objet peut être placé dans chaque cellule. Ordre d'exécution L’ordre d’exécution des différents objets dans une section LD est déterminé par le flux de données à l’intérieur de la section. Les réseaux branchés sur la barre d’alimentation gauche sont traités de haut en bas (liaison avec la barre d’alimentation gauche). Les réseaux qui sont indépendants entre eux dans la section sont traités selon leur position (de haut en bas) (voir aussi Ordre d'exécution et flux de signaux, page 335). Conformité CEI Pour plus d'informations sur la conformité CEI du langage LD, voir Conformité CEI, page 548. 302 35006145.25 Langage à contacts (LD) Langages de programmation et structure Contacts Introduction Un contact est un élément LD qui transfère un état sur la liaison horizontale vers son côté droit. Cet état est le résultat d'une opération booléenne AND sur l'état de la liaison horizontale de gauche avec l'état du paramètre booléen réel associé. Un contact ne modifie pas la valeur du paramètre réel associé. Les contacts occupent une cellule. Sont autorisés comme paramètres réels : • variables booléennes • constantes booléennes • adresses booléennes (adresses topologiques ou symboliques) • Expression ST, page 452 avec résultat booléen (par ex. VarA OR VarB) Les expressions ST comme paramètres réels de contacts représentent une extension de la norme IEC 61131-3 et doivent être activées de manière explicite. Types de contact Les contacts disponibles sont les suivants : Désignation Représentation Description Normalement ouvert Dans le cas des contacts normalement ouverts, l'état de la liaison de gauche est transféré vers la liaison de droite si l'état du paramètre booléen réel approprié (indiqué par xxx) est ON. Sinon, l'état de la liaison de droite est OFF. Normalement fermé Dans le cas des contacts normalement fermés, l'état de la liaison de gauche est transféré vers la liaison de droite si l'état du paramètre booléen réel approprié (indiqué par xxx) est OFF. Sinon, l'état de la liaison de droite est OFF. 35006145.25 303 Langages de programmation et structure Désignation Représentation Contact de détection de transitions positives Langage à contacts (LD) Description Dans le cas de contacts de détection de transitions positives, la liaison de droite est ON pour un cycle de programme si un passage de OFF à ON du paramètre réel booléen (xxx) associé a lieu et qu’en même temps, l'état de la liaison de gauche est ON. Sinon, l'état de la liaison de droite est 0. Voir aussi Reconnaissance de front, page 326. Contact de détection de transitions négatives Dans le cas de contacts de détection de transitions négatives, la liaison de droite est ON pour un cycle de programme si un passage de ON à OFF du paramètre réel booléen (xxx) associé a lieu et qu'en même temps, l'état de la liaison de gauche est ON. Sinon, l'état de la liaison de droite est 0. Voir aussi Reconnaissance de front, page 326. Bobines Présentation Une bobine est un élément LD qui transfère l'état de la liaison horizontale du côté gauche, sans le modifier, à la liaison horizontale du côté droit. L'état est stocké dans le paramètre booléen réel respectif. Normalement, les bobines suivent des contacts ou des FFB, mais elles peuvent aussi être suivies par des contacts. Les bobines occupent une cellule. Sont autorisés comme paramètres réels : • variables booléennes • adresses booléennes (adresses topologiques ou symboliques) Types de bit de sortie Les bobines suivantes sont disponibles : 304 35006145.25 Langage à contacts (LD) Désignation Représentation Langages de programmation et structure Description Bobine Dans le cas de bobines, l'état de la liaison de gauche est transféré vers le paramètre booléen réel associé (indiqué par xxx) et la liaison de droite. Bobine inverse Avec les bobines inverses, l'état de la liaison de gauche est copié vers la liaison de droite. L'état inversé de la liaison de gauche est copié vers le paramètre booléen réel associé (indiqué par xxx). Si la liaison de gauche est OFF, alors la liaison de droite sera également OFF et le paramètre booléen réel associé sera ON. Bobine de détection de transitions positives Dans le cas de bobines de détection de transitions positives, l'état de la liaison de gauche est copié sur la liaison de droite. Le paramètre réel associé du type de données EBOOL (indiqué par xxx) est 1 pour un cycle de programme, si un passage de 0 à 1 de la liaison gauche est effectué. Voir aussi Reconnaissance de front, page 326. Bobine de détection de transitions négatives Dans le cas de bobines de détection de transitions négatives, l'état de la liaison de gauche copié sur la liaison de droite. Le paramètre réel booléen associé (indiqué par xxx) est 1 pour un cycle de programme, si un passage de 1 à 0 de la liaison gauche est effectué. Voir aussi Reconnaissance de front, page 326. Bobine d'enclenchement Avec les bobines d'enclenchement, l'état de la liaison de gauche est copié vers la liaison de droite. Le paramètre booléen réel associé (indiqué par xxx) est défini sur ON si l'état de la liaison de gauche est ON, sinon il reste inchangé. Le paramètre réel booléen approprié peut être réinitialisé via la bobine de déclenchement. Voir aussi Reconnaissance de front, page 326. Bobine de déclenchement Avec les bobines de déclenchement, l'état de la liaison de gauche est copié vers la liaison de droite. Le paramètre booléen réel associé (indiqué par xxx) est défini sur OFF si l'état de la liaison de gauche est ON, sinon il reste inchangé. Le paramètre réel booléen approprié peut être initialisé via la bobine d'enclenchement. Voir aussi Reconnaissance de front, page 326. Bobine d'arrêt Avec les bobines d'arrêt, si l'état de la liaison de gauche est 1, l'exécution du programme est immédiatement arrêtée (avec les bobines d'arrêt, l'état de la liaison de gauche n'est pas copié sur la liaison de droite). Définit la CPU sur le mode HALT, page 170. Bobine d'appel Avec les bobines d'appel, l'état de la liaison de gauche est copié vers la liaison de droite. Si l'état de la liaison de gauche est ON alors le sousprogramme associé (indiqué par xxx) est appelé. Le sous-programme à appeler doit se trouver dans la même tâche que la section LD appelante. Il est possible d'appeler des sous-programmes au sein de sous-programmes. Les sous-programmes sont un complément de la norme CEI 61131-3 et doivent être activés de manière explicite. Dans les sections d'actions SFC, les bobines d'appel (appels de sousprogrammes) sont autorisées uniquement si le mode Multitoken est activé. 35006145.25 305 Langages de programmation et structure Langage à contacts (LD) Fonctions élémentaires, blocs fonction élémentaires, blocs fonction dérivés et procédures (FFB) Introduction FFB est le terme générique pour : • Fonction élémentaire (EF), page 306 • Bloc fonction élémentaire (EFB), page 307 • Bloc fonction dérivé (DFB), page 308 • Procédure, page 308 Les FFB occupent une largeur de 1 à 3 colonnes (en fonction de la longueur des noms des paramètres formels) et une longueur de 2 à 33 lignes (en fonction du nombre de lignes des paramètres formels). Fonction élémentaire Les fonctions n'ont pas d'état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque appel de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Une fonction élémentaire est représentée graphiquement sous la forme d'un cadre avec des entrées et une sortie. Les entrées sont toujours représentées à gauche du cadre, et la sortie toujours à droite. Le nom de la fonction, c’est-à-dire son type, figure au centre du cadre. Le numéro d'exécution, page 335 de la fonction apparaît à droite du type de fonction. Le numéro de la fonction se trouve au-dessus du cadre. Il représente le numéro séquentiel de la fonction dans la section actuelle. Les numéros de fonction ne sont pas modifiables. 306 35006145.25 Langage à contacts (LD) Langages de programmation et structure Fonction élémentaire Pour certaines fonctions élémentaires, il est possible d'augmenter le nombre d'entrées. Bloc fonction élémentaire Les blocs fonction élémentaires ont des états internes. Si les valeurs d'entrée sont identiques, la valeur de sortie peut varier à chaque appel de la fonction. Par exemple, pour un compteur, la valeur de sortie augmente. Un bloc fonction élémentaire est représenté graphiquement sous la forme d'un cadre avec des entrées et des sorties. Les entrées sont toujours représentées sur la gauche et les sorties toujours sur la droite du cadre. Le nom du bloc fonction, c'est-à-dire le type de bloc fonction, est affiché au centre du cadre. Le nom d'instance est affiché au-dessus du cadre. Les blocs fonction peuvent avoir plusieurs sorties. Le nom du bloc fonction, c'est-à-dire le type de bloc fonction, apparaît au centre du cadre. Le numéro d'exécution, page 335 du bloc fonction apparaît à droite du type de bloc fonction. Le nom d'instance apparaît au-dessus du cadre. Le nom d’instance permet d’identifier précisément le bloc fonction dans un projet. Le nom d'instance est généré automatiquement et il est associé à la structure suivante : TYPE_n où TYPE correspond au nom du type de bloc de fonction : TYPE_n • TYPE = Type de bloc fonction • n = numéro courant du bloc fonction au sein du projet Pour plus de clarté, vous pouvez modifier ces noms générés automatiquement. Le nom d'instance (32 caractères maximum) doit être unique dans tout le projet ; majuscules et minuscules ne sont pas différenciées. Le nom d'instance doit respecter les conventions de noms générales. NOTE: conformément à la norme IEC 61131-3, les noms d'instance doivent commencer par une lettre. Si vous voulez également utiliser un chiffre comme premier caractère, vous devez le déclarer explicitement. 35006145.25 307 Langages de programmation et structure Langage à contacts (LD) Bloc fonction élémentaire DFB Les blocs fonction dérivés (DFB) ont les mêmes caractéristiques que les blocs fonction élémentaires. Ils sont cependant créés par l'utilisateur dans les langages FBD, LD, IL et/ou ST. L'unique différence par rapport aux blocs fonction élémentaires est que le bloc fonction dérivé est représenté graphiquement sous la forme d'un cadre avec deux lignes verticales. Bloc fonction dérivé Procédure Techniquement, les procédures sont des fonctions. 308 35006145.25 Langage à contacts (LD) Langages de programmation et structure L'unique différence par rapport aux fonctions élémentaires est que les procédures peuvent comprendre plus d'une sortie et qu'elles prennent en charge le type de données VAR_IN_ OUT. En apparence, les procédures ne sont pas différentes des fonctions élémentaires. Les procédures sont une extension de la norme CEI 61131-3 et doivent être activées de manière explicite. Procédure Paramètres Des entrées et des sorties permettent de transférer les valeurs vers ou depuis un FFB. Ces entrées et ces sorties sont appelées « paramètres formels ». Les paramètres formels sont liés à des objets qui comprennent les états courants du processus. Ces objets sont appelés « paramètres réels ». 35006145.25 309 Langages de programmation et structure Langage à contacts (LD) Paramètres formels et réels : Durant l'exécution du programme, les valeurs sont transmises, par le biais des paramètres réels, du processus au FFB, et renvoyées à nouveau en sortie après le traitement. Seul un objet (paramètre réel) des types de données suivants peut être relié aux entrées d'un FFB : • Contact • Variable • Adresse • Littéral • Expression ST Les expressions ST des entrées d'un FFB représentent une extension de la norme IEC 61131-3 et doivent être activées de manière explicite. • Liaison Les combinaisons d'objets (paramètres réels) suivantes peuvent être reliées aux sorties d'un FFB : 310 • une ou plusieurs bobines • un ou plusieurs contacts • une variable, • une variable et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 317) • une adresse, • une adresse et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 317) • une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT, page 317) 35006145.25 Langage à contacts (LD) Langages de programmation et structure Le type de données de l'objet à relier doit correspondre à celui de l’entrée/la sortie du FFB. On choisira un type de données adapté au bloc fonction, si tous les paramètres réels sont des valeurs littérales. Exception : pour les entrées/sorties FFB génériques de type de données ANY_BIT, des objets de type de données INT ou DINT (pas UINT ni UDINT) peuvent être reliés. Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : Non autorisé : (Dans ce cas AND_INT doit être utilisé.) Il n'est en principe pas nécessaire d'affecter un paramètre réel à tous les paramètres formels. Cependant, cela n'est pas valable pour les broches inversées. Un paramètre réel doit toujours leur être affecté. Cela vaut également pour certains types de paramètre formel. Pour connaître les types concernés, consultez le tableau suivant. Tableau des types de paramètre formel : Type de paramètre EDT STRING ARRAY ANY_ ARRAY IODDT DDT d'équipement STRUCT FB ANY EFB : Entrée - - - - / / - / - DFB: Sortie - - + / / / - / + EFB : VAR_IN_ OUT + + + + + / + / + DFB : Entrée - - - - / + - / - DFB : VAR_IN_ OUT + + + + + + + / + EFB: Sortie - - + + + / - / + EF : Entrée - - - - + / - + - 35006145.25 311 Langages de programmation et structure Langage à contacts (LD) Type de paramètre EDT STRING ARRAY ANY_ ARRAY IODDT DDT d'équipement STRUCT FB ANY EF : VAR_IN_ OUT + + + + + / + / + EF : Sortie - - - - - - - / - Procédure : Entrée - - - - + / - + - Procédure : VAR_ IN_OUT + + + + + / + / + Procédure : Sortie - - - - - / - / + + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Non applicable Les FFB utilisant des paramètres réels sur les entrées auxquelles aucune valeur n'a encore été affectée, fonctionnent avec les valeurs initiales de ces paramètres réels. Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pendant l'exécution du bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. Si aucune valeur n'est affectée à un paramètre formel et que le bloc fonction/DFB a été instancié à plusieurs reprises, les instances appelées par la suite travaillent avec l'ancienne valeur. NOTE: Une broche d'entrée ANY_ARRAY_xxx non connectée crée automatiquement un tableau masqué comportant 1 élément. Variables publiques Certains blocs fonction disposent non seulement d'entrées et de sorties, mais également de variables publiques (Public Variables). Ces variables permettent de transmettre des valeurs statistiques (valeurs non influencées par le procédé) au bloc fonction. Elles sont donc utilisées lors du paramétrage du bloc fonction. Les variables publiques sont une extension de la norme IEC 61131-3. Les valeurs sont affectées aux variables publiques avec leur valeur initiale. 312 35006145.25 Langage à contacts (LD) Langages de programmation et structure Les variables publiques sont ensuite lues via le nom d'instance du bloc fonction et le nom de la variable publique. Exemple : Variables privées Certains blocs fonction disposent non seulement d'entrées, de sorties et de variables publiques, mais également de variables privées. A l'instar des variables publiques, ces variables servent à transmettre des valeurs statistiques (non influencées par le processus) au bloc fonction. Le programme utilisateur n'a pas accès à ces variables. Seule la table d'animation en a la capacité. NOTE: les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via la table d'animation. Les variables privées sont une extension de la norme IEC 61131-3. Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : • Les FFB ne sont traités que lorsqu'ils sont connectés directement ou indirectement à la barre d'alimentation gauche. 35006145.25 313 Langages de programmation et structure Langage à contacts (LD) • Si le FFB doit être exécuté de façon conditionnelle, l'entrée EN, page 314 peut être préalablement reliée par des contacts ou d'autres FFB. • Les entrées et sorties booléennes peuvent être inversées. • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 317. • Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, page 314. Appel multiple d'une instance de bloc fonction Les instances de DFB ou bloc fonction peuvent être appelées à plusieurs reprises, à l'exception des instances d'EFB de communication et blocs fonction/DFB ayant une sortie ANY mais pas d'entrée ANY, qui ne peuvent être appelées qu'une seule fois. L'appel multiple d'une même instance de DFB/bloc fonction est, par exemple, utile dans les cas suivants : • Si le bloc fonction/DFB n'a aucune valeur interne ou s'il n'est pas nécessaire pour un traitement ultérieur. Dans ce cas, l'appel multiple de la même instance de DFB/bloc fonction permet d'économiser de l'espace mémoire, car le code du bloc fonction/DFB n'est chargé qu'une seule fois. Le bloc fonction/DFB est, pour ainsi dire, traité comme une « fonction ». • Si le bloc fonction/DFB a une valeur interne censée influencer différents segments du programme, la valeur d'un compteur, par exemple, doit être augmentée en différents endroits du programme. Dans ce cas, l'appel multiple de la même instance de bloc fonction/DFB permet de ne pas sauvegarder les résultats intermédiaires en vue d'un traitement ultérieur à un autre endroit du programme. EN et ENO Une entrée EN et une sortie ENO peuvent être configurées pour tous les FFB. Si la valeur de EN est déjà à « 0 », lors de l'appel de FFB, les algorithmes définis par FFB ne sont pas exécutés et ENO est réglé sur « 0 ». Si la valeur de EN est déjà à « 1 », lors de l'appel de FFB, les algorithmes définis par FFB sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est réglé sur « 0 ». 314 35006145.25 Langage à contacts (LD) Langages de programmation et structure Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Reportez-vous à la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Si ENO est réglé sur « 0 » (car EN = 0 ou en raison d'une erreur d'exécution) : • Blocs fonction ◦ Traitement des paramètres EN/ENO avec des blocs fonction qui possèdent (uniquement) une liaison en tant que paramètre de sortie : Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct. ◦ Traitement EN/ENO pour les blocs fonction ayant une variable et une liaison comme paramètre de sortie : Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct. La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre. 35006145.25 315 Langages de programmation et structure • Langage à contacts (LD) Fonctions/procédures Selon la définition CEI 61131-3, les sorties de fonctions désactivées (entrée EN mise à « 0 ») sont indéfinies. (Cette caractéristique s'applique également aux procédures.) Voici, néanmoins, une explication des états des sorties dans un tel cas : ◦ Traitement EN/ENO pour les fonctions/procédures ayant (seulement) une liaison comme paramètre de sortie : Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés. Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0. Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement. Pour plus d'informations, consultez la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). ◦ Traitement EN/ENO pour les fonctions/procédures ayant une variable et une liaison comme paramètre de sortie : Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés. Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0. Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement. Pour plus d'informations, consultez la section Maintenir les liens de sortie sur les EF désactivés (voir EcoStruxure™ Control Expert, Modes de fonctionnement). La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre. Le comportement aux sorties des FFB est indépendant du fait que les FFB soient appelés sans EN/ENO ou avec EN = 1. 316 35006145.25 Langage à contacts (LD) Langages de programmation et structure NOTE: pour les blocs fonction désactivés (EN = 0) équipés d'une fonction d'horloge interne (par exemple, le bloc fonction DELAY), le temps semble continuer de s'écouler, car il est calculé à l'aide d'une horloge système et est, par conséquent, indépendant du cycle du programme et de la libération du bloc. Variable VAR_IN_OUT Les FFB sont souvent utilisés pour lire une variable à l'entrée (variables d'entrée), pour la traiter et pour transmettre de nouveau les valeurs modifiées de cette même variable (variables de sortie). Ce cas exceptionnel d'une variable d'entrée/de sortie est également appelé variable VAR_ IN_OUT. Dans le FFB, une ligne indique que les variables d'entrée et de sortie sont liées l'une à l'autre. Variable VAR_IN_OUT Il convient de noter les particularités suivantes en cas d'utilisation de FFB avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • les liaisons graphiques permettent uniquement de relier des sorties VAR_IN_OUT à des entrées VAR_IN_OUT. • seule une liaison graphique unique peut être reliée à une entrée/sortie VAR_IN_OUT. • une combinaison de variables/d'adresses et de liaisons graphiques n'est pas possible pour les sorties VAR_IN_OUT. • il est interdit de relier des valeurs littérales ou des constantes à des entrées/sorties VAR_IN_OUT. • il est interdit d'utiliser des négations au niveau des entrées/sorties VAR_IN_OUT. 35006145.25 317 Langages de programmation et structure • Langage à contacts (LD) des variables/composantes de variables différentes peuvent être reliées à l'entrée VAR_IN_OUT et à la sortie VAR_IN_OUT. Dans un tel cas, la valeur de la variable/ composante de variable à l'entrée est copiée dans la variable/composante de variable à la sortie. Commandes Présentation Les commandes permettent l'exécution de sauts dans une section LD et le retour au programme principal à partir d'un sous-programme (SRx) ou d'un bloc fonction dérivé (DFB). Les commandes occupent une cellule. Commandes Les commandes suivantes sont disponibles. 318 35006145.25 Langage à contacts (LD) Désignation Représentation Langages de programmation et structure Description Si l'état de la liaison gauche est 1, un saut est exécuté jusqu'au libellé (dans la section en cours). Saut Pour générer un saut inconditionnel, l'objet saut est placé directement sur la barre d'alimentation gauche. Pour générer un saut conditionnel, l'objet saut est placé à la fin d'une série de contacts. Libellé LABEL: Les libellés (destinations de saut) sont représentés par du texte terminé par deux-points. Le texte est limité à 38 caractères et doit être unique dans l'ensemble de la section. Le texte doit respecter les conventions de nommage générales. Les libellés de saut peuvent être placés uniquement dans la première cellule directement sur la barre d'alimentation gauche. Remarque : les libellés de saut ne doivent « traverser » aucun réseau, c'està-dire aucun objet ne doit traverser la ligne imaginaire entre le libellé de saut et la marge droite de la section. Cela s'applique également aux liaisons booléennes et FFB. Retour Les objets RETURN ne peuvent pas être utilisés dans le programme principal. • Dans un DFB, un objet RETURN force le retour au programme qui a appelé le DFB. ◦ Le reste de la section DFB contenant l'objet RETURN n'est pas exécuté. ◦ Les sections suivantes du DFB ne sont pas exécutées. Le programme qui a appelé le DFB est exécuté après le retour au programme à partir du DFB. Si le DFB est appelé par un autre DFB, le DFB qui a fait l'appel est exécuté après retour. • Dans un SR, un objet RETURN force le retour au programme qui a appelé le SR. ◦ Le reste du DFB contenant l'objet RETURN n'est pas exécuté. Le programme qui a appelé le SR est exécuté après le retour à partir du SR. Blocs opération et blocs comparaison Introduction En plus des objets définis dans la norme IEC 61131-3, il existe plusieurs autres blocs servant à l'exécution d'instructions ST, page 453 et d'expressions ST, page 452 et à des opérations de comparaison simples. Ces blocs sont exclusivement disponibles dans le langage de programmation LD. 35006145.25 319 Langages de programmation et structure Langage à contacts (LD) Objets Les objets suivants sont disponibles : 320 35006145.25 Langage à contacts (LD) Désignation Bloc opération Représentation Langages de programmation et structure Description Si l'état de la liaison de gauche est 1, l'instruction ST comprise dans le bloc est exécutée. Toutes les instructions ST, page 453 sont permises sauf les instructions de commande : • (RETURN, • JUMP, IF, • CASE, • FOR, • etc.) Pour les blocs opération, quel que soit le résultat de l'instruction ST, l'état de la liaison gauche est transmis à la liaison droite. Un bloc peut contenir jusqu'à 4096 caractères. Si tous les caractères ne peuvent pas être affichés, les premiers caractères seront affichés suivis de points de suspension (...). Un bloc opération occupe 1 ligne et 4 colonnes. Exemple : Dans cet exemple, Instruction1 est exécutée si In1=1. Instruction2 est exécutée si In1=1 et In2=1 (le résultat de Instruction1 n'est pas important pour l'exécution de Instruction2). Out1 passe à 1 si In1=1 et In2=1 (les résultats de Instruction1 et Instruction2 n'ont pas d'influence sur l'état de Out1). Bloc de comparaison horizontal Les blocs de comparaison horizontaux sont utilisés pour exécuter une expression de comparaison (<, >, <=, >=, =, <>) dans le langage de programmation ST. (Remarque : la même fonctionnalité est également disponible via les expressions ST, page 452.) Un bloc comparaison exécute un ET de sa broche d’entrée gauche et du résultat de sa condition de comparaison, puis affecte le résultat du ET de façon inconditionnelle à la broche de sortie droite. Par exemple, lorsque l'état de la liaison gauche est 1 et que le résultat de la comparaison est 1, l'état de la liaison droite est 1. Un bloc de comparaison horizontal peut contenir jusqu'à 4096 caractères. Si tous les caractères ne peuvent pas être affichés, les premiers caractères seront affichés suivis de points de suspension (...). Un bloc de comparaison horizontal occupe une ligne et deux colonnes. 35006145.25 321 Langages de programmation et structure Désignation Représentation Langage à contacts (LD) Description Exemple : Dans cet exemple, Compare1 est exécuté si In1=1. Compare2 est exécuté si In1=1 , In2=1 et résultat de Compare1=1. Out1 passe à 1 si In1=1, In2=1, résultat de Compare1=1 et résultat de Compare2=1. Liaisons Description Les liaisons sont des liens entre des objets LD (contacts, bobines, FFB, etc.). Une différence est faite entre deux types de liaison : • Liaisons booléennes Les liaisons booléennes comprennent un ou plusieurs segments qui relient entre eux des objets booléens (contacts, bobines). Pour les liaisons booléennes, une distinction est faite entre : ◦ Les liaisons booléennes horizontales Les liaisons booléennes horizontales permettent une liaison en série de contacts et bobines. ◦ Les liaisons booléennes verticales Les liaisons booléennes verticales permettent une liaison en parallèle de contacts et bobines. • Liaisons FFB Les liaisons FFB comprennent une combinaison de segments horizontaux et verticaux qui relient les entrées/sorties FFB avec d'autres objets. 322 35006145.25 Langage à contacts (LD) Langages de programmation et structure Connexions: Remarques générales sur la programmation Veuillez observer les remarques générales qui suivent sur la programmation : • Les types de données respectifs des entrées/sorties à relier doivent correspondre les uns aux autres. • Les liaisons entre des paramètres de longueur variable (ex : ANY_ARRAY_INT) ne sont pas permises. • Plusieurs liaisons peuvent être reliées à une même sortie (côté droit d'un contact/d'une bobine, sortie FFB). Cependant une seule liaison est possible avec chaque entrée (côté gauche d'un contact/d'une bobine, entrée FFB). • Les contacts, bobines et entrées de FFB non reliés ont par défaut la valeur "0". • Les boucles ne peuvent pas être configurées par le biais de liaisons, étant donné que, dans ce cas, l’ordre d’exécution dans la section ne peut pas être déterminé clairement. Les boucles doivent être créées à l'aide de paramètres réels (voir Boucles non permises, page 338). 35006145.25 323 Langages de programmation et structure Langage à contacts (LD) Remarques sur la programmation de liaisons booléennes Remarques sur la programmation de liaisons booléennes : • Le chevauchement des liaisons booléennes avec d’autres objets n'est pas admis. • Le flux de signaux (passage de courant) d'une liaison booléenne va de gauche à droite. C'est pourquoi les liaisons dirigées vers l'arrière ne sont pas autorisées. • Si deux liaisons booléennes se croisent, un lien entre les deux liaisons est automatiquement créé. Etant donné que le croisement de liaisons booléennes n'est pas possible, les liaisons ne sont pas identifiées de manière particulière. Remarques sur la programmation des liaisons FFB Remarques sur la programmation des liaisons FFB : 324 • Au moins un côté d'une liaison FFB doit être relié à une entrée ou une sortie FFB. • Les liaisons FFB sont représentées par un trait double afin de les différencier des liaisons booléennes. • Le flux de signaux (passage de courant) d'une liaison FFB va de la sortie FFB vers l'entrée FFB, indépendamment de la direction. C'est pourquoi les liaisons dirigées vers l'arrière sont autorisées. • Seules des entrées FFB et des sorties FFB peuvent être reliées ensemble. La liaison de plusieurs sorties FFB entre elles n'est pas possible. Cela signifie qu'en LD aucune liaison OU n'est possible via des liaisons FFB. • Le chevauchement des liaisons FFB avec d’autres objets est admis. • Le croisement de liaisons FFB est admis. Le croisement est représenté par une liaison "interrompue". 35006145.25 Langage à contacts (LD) Langages de programmation et structure • Dans le cadre de liaisons FFB, les points de liaison entre plusieurs liaisons FFB sont représentés par un cercle rempli. • Afin d'éviter le croisement de liaisons, les liaisons FFB peuvent également être représentées sous forme de connecteurs. A cette occasion, la source et la cible de la liaison FFB sont caractérisées par un nom unique au sein de la section. Selon le type d'objet source, le nom du connecteur est formé comme suit : ◦ Pour les fonctions : "numéro de fonction/paramètre formel" de la source de la liaison. ◦ Pour les blocs fonction : "nom d'instance/paramètre formel" de la source de la liaison. ◦ Pour les contacts : "OUT1_numéro d'ordre" 35006145.25 325 Langages de programmation et structure Langage à contacts (LD) Liaisons verticales La "liaison verticale" constitue un cas particulier de liaison. La liaison verticale tient lieu de OU logique. Avec cette forme de liaison OU, 32 entrées (contacts) et 64 sorties (bobines, liaisons) sont possibles. Objet texte Introduction Dans le langage à contacts LD, les textes peuvent être positionnés sous forme d’objets texte. La taille de ces objets texte dépend de la longueur du texte. Selon la longueur du texte, la taille de l'objet peut être agrandie, dans les sens vertical et horizontal, d'unités de grille supplémentaires. Les objets texte peuvent chevaucher d'autres objets. Reconnaissance de front Introduction Pendant la reconnaissance d'un front, un bit est surveillé pendant un passage de 0 à 1 (front positif ou ascendant) ou de 1 à 0 (front négatif ou descendant). Pour ce faire, la valeur du bit du cycle précédent est comparée à la valeur du bit du cycle en cours. Dans ce cas, non seulement la valeur en cours est requise mais également l’ancienne valeur. C’est pourquoi, lors de la détection de fronts, 2 bits (valeurs courante et ancienne) sont requis au lieu d’un. Comme le type de données BOOL n'offre qu'un seul bit (valeur courante), un autre type de données est utilisé pour la détection de fronts, EBOOL (BOOL étendu). Outre la détection des fronts, le type de données EBOOL offre une option pour le forçage. Vous devez donc également l'enregistrer que le forçage de bit soit actif ou non. Le type de données EBOOL enregistre les données suivantes : • la valeur courante du bit dans le bit de valeur, • la valeur précédente du bit dans le bit d'historique, (au début de chaque cycle, le contenu du bit de valeur est copié dans le bit d’historique) 326 35006145.25 Langage à contacts (LD) • Langages de programmation et structure les informations sur l'activation du forçage du bit dans le bit de forçage, (0 = forçage inactif, 1 = forçage actif) Restrictions d'EBOOL ATTENTION COMPORTEMENT IMPREVU DE L'EQUIPEMENT Pour une bonne détection des fronts, %M doit être mis à jour à chaque cycle de tâche. Lors d'une écriture unique, le front est infini. Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. En utilisant une variable EBOOL pour les contacts afin de reconnaître les fronts positifs (P) et négatifs (N) (fronts ascendants et descendants, avec une EF), vous devez respecter les restrictions ci-après. EBOOL avec %M non écrit dans le programme Une variable EBOOL avec une adresse %M qui n'est pas écrite dans le programme, mais fournie directement (par une table d'animation, un écran ou une interface, par exemple), fonctionnera de manière imprévue. La valeur du front reste indéfiniment TRUE car %M n'est écrit qu'une seule fois. NOTE: pour éviter cela, %M doit être écrit à la fin de la tâche pour mettre à jour les informations de valeur anciennes. L'ancienne valeur n'est mise à jour que lorsque le bit %M est écrit. Par conséquent, si vous n'écrivez le bit qu'une fois, la détection de front est infinie. Valeur ancienne Valeur actuelle Détection de front Description 0 0 0 état 0 (avant d'écrire le bit) 0 1 1 Ecrivez 1 dans le bit (avec une table d'animation, par exemple). 0 1 1 Si vous ne l'écrivez pas à nouveau, le front demeure indéfiniment. 1 1 0 Ecrivez à nouveau 1 dans le bit, la valeur ancienne est actualisée et la détection de front est réglée sur 0. EBOOL avec %M écrit dans le programme 35006145.25 327 Langages de programmation et structure Langage à contacts (LD) Pour une variable EBOOL avec une adresse %M écrite dans le programme, vous devez respecter les limitations suivantes : • N'utilisez pas le bit avec une bobine d'enclenchement ou de déclenchement. Dans ce cas, l'ancienne valeur n'est pas actualisée. Vous pouvez donc établir un front infini. • N'écrivez pas le bit de manière conditionnelle. Une logique simple telle que IF NOT %M1 THEN %M1 := TRUE; END_IF cause un front éternel car elle n'est écrite qu'une fois. EBOOL avec %I Pour une variable EBOOL avec une adresse %I, vous devez respecter les restrictions suivantes : • En fonctionnement multitâche, la vérification du front %I doit être effectuée dans la tâche où il est actualisé. Il est déconseillé d'utiliser la détection du front d'un %I planifiée dans une tâche de priorité supérieure. Exemple : si vous avez une tâche fast qui actualise %I, n'utilisez pas la détection de front dans la tâche mast. Selon la planification, le front peut être détecté ou non. Détection de fronts positifs Pour détecter des fronts positifs, vous devez utiliser un contact pour la détection de fronts positifs. Avec ce contact, la connexion de droite pour un cycle de programme est 1 lorsque la transition du paramètre associé réel (A) passe de 0 à 1 et que, simultanément, l'état de la connexion de gauche est 1. Sinon, l'état de la liaison de droite est 0. Dans l'exemple, un front positif de la variable A doit être reconnu et B doit donc être défini pendant un cycle. 328 35006145.25 Langage à contacts (LD) Langages de programmation et structure Chaque fois que le bit de valeur de A est égal à 1 et que le bit d'historique est égal à 0, B est réglé sur 1 pendant un cycle (cycle 1, 4 et 9). Détection de fronts négatifs Pour détecter des fronts négatifs, vous devez utiliser un contact pour la détection de fronts négatifs. Avec ce contact, la connexion de droite pour un cycle de programme est 1 lorsque la transition du paramètre associé réel (A) passe de 1 à 0 et que, simultanément, l'état de la connexion de gauche est 1. Sinon, l'état de la liaison de droite est 0. Dans l'exemple, un front négatif de la variable A doit être reconnu et B doit donc être défini pendant un cycle. Chaque fois que le bit de valeur de A est égal à 0 et que le bit d'historique est égal à 1, B est réglé sur 1 pendant un cycle (cycle 2 et 8). 35006145.25 329 Langages de programmation et structure Langage à contacts (LD) Forçage de bits Lors du forçage de bits, la valeur des variables indiquée par la logique est écrasée par la valeur de forçage. Dans l'exemple, un front négatif de la variable A doit être reconnu et B doit donc être défini pendant un cycle. Chaque fois que le bit de valeur ou le bit de forçage de A est égal à 0 et que le bit d'historique est égal à 1, B est réglé sur 1 pendant un cycle (cycle 1 et 8). Utilisation des variables BOOL et EBOOL Le comportement de la détection de fronts peut varier selon que vous utilisez le type de variable BOOL ou EBOOL : • Lorsque vous utilisez une variable BOOL, le système gère l'historique en permettant la détection de front pendant l'exécution du contact. • Lorsque vous utilisez une variable EBOOL, le bit d'historique est actualisé pendant l'exécution de la bobine. Les exemples suivants montrent les différents comportements selon le type de variable. 330 35006145.25 Langage à contacts (LD) Langages de programmation et structure La variable A est définie comme BOOL ; chaque fois que A est réglé sur 1, %MW1 est incrémenté de 1. La variable B est définie comme EBOOL ; son comportement diffère de celui de la variable A. Lorsque B est réglé sur 1, %MW2 est incrémenté de 1 parce que le bit d'historique n'est pas actualisé. 35006145.25 331 Langages de programmation et structure Langage à contacts (LD) La variable C est définie comme EBOOL ; son comportement est identique à celui de la variable A. Le bit d'historique est actualisé. Perte de la détection de fronts probablement due au forçage de bobines Le forçage de bobines peut causer la perte de la détection de fronts. Dans l'exemple, lorsque A est égal à 1, B devrait être égal à 1, et avec un front montant de A, la bobine B sera définie pendant un cycle. Dans cet exemple, la variable B est d'abord affectée à la bobine, puis à la liaison pour reconnaître les fronts montants. 332 35006145.25 Langage à contacts (LD) Langages de programmation et structure Au début du deuxième cycle, le bit de valeur de B est égal à 0. En cas de forçage de B dans ce cycle, le bit de forçage et le bit de valeur sont réglés sur 1. Pendant le traitement de la première ligne de logique dans le troisième cycle, le bit d'historique de la bobine (B) est également réglé sur 1. Problème : Pendant la détection de front (comparaison du bit de valeur et du bit d'historique), dans la deuxième ligne de logique, aucun front n'est détecté car, en raison de la lise à jour, le bit de valeur et d'historique de la ligne 1 de B sont toujours identiques. Solution : Dans cet exemple, la variable B est d'abord affectée à la liaison pour reconnaître les fronts montants, puis à la bobine. 35006145.25 333 Langages de programmation et structure Langage à contacts (LD) Au début du deuxième cycle, le bit de valeur de B est égal à 0. En cas de forçage de B dans ce cycle, le bit de forçage et le bit de valeur sont réglés sur 1. Pendant le traitement de la première ligne de logique dans le troisième cycle, le bit d'historique de la liaison (B) reste réglé sur 0. La détection de front reconnaît la différence entre les bits de valeur et les bits d'historique et règle la bobine (C) sur 1 pour un cycle. Perte de la détection de fronts probablement due à l'utilisation des bobines d'enclenchement ou de déclenchement L'utilisation de bobines d'enclenchement ou de déclenchement peut causer la perte de la détection de fronts avec les variables EBOOL. La variable au-dessus de la bobine d'enclenchement/de déclenchement (variable C dans l'exemple) est toujours affectée par la valeur de la liaison de gauche. Si la liaison de gauche est 1, le bit de valeur bit (variable C dans l'exemple) est copié dans le bit d'historique et le bit de valeur est réglé sur 1. Si la liaison de gauche est 0, le bit de valeur bit (variable C dans l'exemple) est copié dans le bit d'historique, mais le bit de valeur n'est pas modifié. Ainsi, quelle que soit la valeur prise par la liaison de gauche avant la bobine d'enclenchement ou de déclenchement, le bit d'historique est toujours mis à jour. Dans l'exemple, un front positif de la variable C devrait être reconnu et définir D pendant un cycle. 334 35006145.25 Langage à contacts (LD) Langages de programmation et structure Ligne de code Comportement en LD Equivalence en ST 1 Situation initiale : C = 0, Bit d'historique = 0 IF A AND B THEN C := 1; ELSE C := C; END_IF; A = 1, B = 1, C = 1, Bit d'historique = 0 2 IF NOT(A) AND NOT(B) THEN C := 0; ELSE C := C; A = 1, END_IF; B = 1, C = 1, Bit d'historique = 1 - 3 C = 1, Bit d'historique = 1 D = 0, car le bit de valeur et le bit d'historique de C sont identiques. Le front montant de C, représenté dans ligne 1 du code, n'est par reconnu par le code de la ligne 2, car cela force l'actualisation du bit d'historique. (Si la condition est FALSE, la valeur présente de C est à nouveau attribuée à C, voir l'instruction ELSE de la ligne de code 2 dans l'exemple ST, par exemple.) Ordre d'exécution et flux de signaux Ordre d'exécution des réseaux Les règles suivantes s'appliquent à l'ordre d'exécution des réseaux : 35006145.25 335 Langages de programmation et structure Langage à contacts (LD) • L'exécution d'une section a lieu réseau par réseau via les liaisons d'objets du dessus et du dessous. • Les boucles ne peuvent pas être configurées par le biais de liaisons, étant donné que, dans ce cas, l’ordre d’exécution ne peut pas être défini de façon claire. Les boucles doivent être créées à l'aide de paramètres réels (voir Planification des boucles, page 338). • L’ordre d’exécution des réseaux reliés ensemble uniquement par la barre gauche d’alimentation est déterminé par l’ordre graphique (du haut vers le bas) dans lequel ces réseaux sont reliés à la barre gauche d’alimentation. Cela ne s'applique pas si l'ordre a été influencé par des éléments de commande. • Le traitement d'un réseau doit être complètement terminé avant que le traitement du réseau suivant puisse commencer. • Aucun élément d'un réseau n'est considéré comme traité avant que l'état de toutes les entrées de cet élément n'ait été traité. • Le traitement d'un réseau est considéré comme terminé lorsque toutes les sorties de ce réseau sont traitées. Cela s'applique également si le réseau comprend un ou plusieurs éléments de commande. Flux de signaux dans un réseau Les règles suivantes s'appliquent au flux de signaux au sein d'un réseau (rung) : • Le flux de signaux pour les liaisons booléennes est ◦ de la gauche vers la droite pour les liaisons booléennes horizontales et ◦ du haut vers le bas pour les liaisons booléennes verticales. • Le flux de signaux d'une liaison FFB va de la sortie FFB vers l'entrée FFB, indépendamment de la direction. • Un FFB n'est calculé que lorsque tous les éléments (sorties FFB, etc.) qui sont reliés à ses entrées sont calculés. • L'ordre d'exécution des FFB reliés à différentes sorties du même FFB va du haut vers le bas. • L'ordre d'exécution des objets n'est pas influencé par leur position au sein du réseau. • L'ordre d'exécution des FFB apparaît sous forme de numéro d'exécution au dessus du FFB. Priorités Priorités lors de la détermination du flux de signaux au sein d'une section : 336 35006145.25 Langage à contacts (LD) Langages de programmation et structure Priorité Règle Description 1 Liaison Les liaisons ont la priorité la plus élevée lors de la détermination du flux de signaux au sein d'une section LD. 2 Réseau par réseau Le traitement d'un réseau doit être complètement terminé avant que le traitement du réseau suivant puisse commencer. 3 Ordre des sorties Les sorties du même bloc fonction ou les sorties de liaisons verticales sont traitées du haut vers le bas. 4 Réseau connexe par réseau connexe Priorité la moins élevée. L’ordre d’exécution des réseaux reliés ensemble uniquement par la barre gauche d’alimentation est déterminé par l’ordre graphique (du haut vers le bas) dans lequel ces réseaux sont reliés à la barre gauche d’alimentation. (Cela ne s'applique que si aucune autre règle n'intervient.) Exemple Exemple de l'ordre d'exécution des objets dans une section LD : NOTE: Les numéros d'exécution de contacts et de bobines n'est pas affiché. Ils n'ont été indiqués dans le graphique que pour fournir une meilleure vue d'ensemble. 35006145.25 337 Langages de programmation et structure Langage à contacts (LD) Planification des boucles Boucles non permises La création de boucles exclusivement par le biais de liaisons n’est pas permise, étant donné que, dans ce cas, une détermination claire du flux de signaux n’est pas possible (la sortie d’un FFB est l’entrée du FFB suivant, et la sortie de celui-ci est à son tour l’entrée du premier). Boucles non autorisées via des liaisons : Résolution par le biais d'un paramètre réel Une telle logique doit être résolue par le biais de variables de réaction, afin que le flux de signaux puisse être déterminé de façon claire. Les variables de réaction doivent être initialisées. La valeur initiale est utilisée lors de la première exécution de la logique. Une fois la première exécution effectuée, la valeur initiale est remplacée par la valeur réelle. Respectez pour les deux variantes l'ordre d'exécution (numéro entre parenthèses après le nom d'instance) des deux blocs. 338 35006145.25 Langage à contacts (LD) Langages de programmation et structure Boucle générée avec un paramètre réel : type 1 Boucle générée avec un paramètre réel : type 2 Modification de l'ordre d'exécution Introduction L'ordre d'exécution des réseaux et l'ordre d'exécution des objets au sein d'un réseau sont définis par une série de règles, page 335. Dans certains cas, il est nécessaire de modifier l'ordre d'exécution proposé par le système. Pour définir/modifier l'ordre d'exécution des réseaux, vous disposez des possibilités suivantes : • Utilisation de liaisons au lieu de paramètres réels • Position des réseaux Pour définir/modifier l'ordre d'exécution des réseaux, vous disposez des possibilités suivantes : • Position des objets 35006145.25 339 Langages de programmation et structure Langage à contacts (LD) Situation d'origine L'image suivante illustre deux réseaux dont l'ordre d'exécution est déterminé uniquement par leur position au sein de la section, indépendamment du fait que les blocs 0.4/0.5 et 0.7/0.8 nécessite un ordre d'exécution différent. 340 35006145.25 Langage à contacts (LD) Langages de programmation et structure Liaison au lieu d'un paramètre réel Si vous utilisez une liaison au lieu d'une variable, les deux réseaux sont exécutés dans l'ordre correct (voir aussi Situation d'origine, page 340). 35006145.25 341 Langages de programmation et structure Langage à contacts (LD) Position des réseaux Il est possible d'obtenir l'ordre d'exécution correct en modifiant la position des réseaux dans la section (voir aussi Situation d'origine, page 340). Position des objets La position des objets ne peut avoir une influence sur l'ordre d'exécution que si plusieurs entrées (liaison gauche de contacts/bobines, entrées FFB) sont reliées à la même sortie de l'objet "à appeler" (liaison droite de contacts/bobines, sorties FFB) (voir aussi Situation d'origine, page 340). 342 35006145.25 Langage à contacts (LD) Langages de programmation et structure Situation initiale : Dans le premier réseau, les positions de bloc 0.1 et 0.2 sont permutées. Dans ce cas (source commune des deux entrées de bloc), l'ordre d'exécution des deux blocs est également permuté (traitement du haut vers le bas). La même règle s'applique pour la permutation des bobines C et D dans le deuxième réseau. 35006145.25 343 Langages de programmation et structure Langage à contacts (LD) Dans le troisième réseau, les positions de bloc 0.4 et 0.5 sont permutées. Dans ce cas (source différente des entrées de bloc), l'ordre d'exécution des deux blocs n'est pas permuté (traitement dans l'ordre d'appel des sorties de bloc). La même règle s'applique pour la permutation des bobines G et H dans le dernier réseau. 344 35006145.25 Langage séquentiel SFC Langages de programmation et structure Langage séquentiel SFC Contenu de ce chapitre Généralités concernant le diagramme fonctionnel en séquence (SFC) .................................................................... 345 Etape et macro-étape............................................................. 350 Action et section d'action ........................................................ 359 Transition et section de transition ............................................ 369 Saut...................................................................................... 373 Liaison .................................................................................. 374 Divergences et convergences ................................................. 376 Objet texte............................................................................. 379 Jeton unique.......................................................................... 379 Jetons multiples..................................................................... 390 Objet de ce chapitre Ce chapitre décrit le langage séquentiel SFC conforme à la norme CEI 611311. Généralités concernant le diagramme fonctionnel en séquence (SFC) Objet de ce sous-chapitre Ce sous-chapitre vous donne un aperçu général du diagramme fonctionnel en séquence SFC. Informations générales sur le langage séquentiel SFC Présentation Cette section décrit le langage séquentiel SFC (diagramme fonctionnel en séquence), conforme à la norme CEI 61131-3. 35006145.25 345 Langages de programmation et structure Langage séquentiel SFC Structure d'un diagramme fonctionnel en séquence Un diagramme fonctionnel en séquence conforme à la norme CEI est créé dans Control Expert à partir de section SFC (niveau supérieur), de sections de transition et de sections d'action. Ces sections SFC ne sont admises que dans la tâche maître du projet. Dans d'autres tâches ou DFB, les sections SFC ne peuvent pas être utilisées. Chaque section SFC contient exactement un réseau SFC (séquence) dans le jeton unique. Les jetons multiples d'une section SFC peuvent contenir un ou plusieurs réseaux SFC indépendants les uns des autres. Objets Une section SFC propose les objets suivants pour la création d'un programme : • Etape, page 350 • macroétape (séquence de sous-étapes imbriquées), page 354 • transition (condition de transition), page 370 • Saut, page 373 • Liaison, page 375 • Divergence en OU, page 376 • convergence en OU, page 376 • Divergence en ET, page 378 • convergence en ET, page 378 Les commentaires de la logique du programme peuvent être fournis en utilisant des objets texte (voir les rubriques Objet texte, page 379). 346 35006145.25 Langage séquentiel SFC Langages de programmation et structure Représentation d'une section SFC Représentation : Structure d'une section SFC Une section SFC est une "machine d'états", c.-à-d. que l'état est déterminé par les étapes actives et les transitions renvoient le comportement de commutation/modification entre les états. Les étapes et transitions sont reliées les unes aux autres par des liaisons dirigées. Deux étapes consécutives ne peuvent jamais être directement reliées ; elles sont toujours 35006145.25 347 Langages de programmation et structure Langage séquentiel SFC séparées par une transition. Les évolutions des états actifs de signaux se déroulent le long des liaisons dirigées, et sont déclenchées par la commutation d’une transition. Le déroulement d'une séquence va dans le sens des liaisons dirigées et se déroule de la partie inférieure de l’étape précédente à la partie supérieure de l’étape suivante. Les branchements sont traités de la gauche vers la droite. Chaque étape peut compter zéro ou plusieurs actions. A chaque transition est associée une condition de transition. La dernière transition de la séquence est toujours reliée à une autre étape de la séquence (par une liaison graphique ou un symbole de "saut") de manière à obtenir une boucle fermée. Les séquences d'étapes se déroulent donc de façon cyclique. Variable SFCCHART_STATE A la création d'une section SFC, une variable du type de données SFCCHART_STATE lui est automatiquement attribuée. La variable ainsi créée porte toujours le nom de la section SFC correspondante. Cette variable sert à affecter les blocs de commande SFC à la section SFC à commander. Règle de jetons Le comportement d'un réseau SFC dépend largement du nombre de jetons choisis, c.-à-d. du nombre d'étapes actives. Un comportement univoque est possible en utilisant un seul jeton (single token). Les divergences en ET comportant un jeton actif (étape) par branche sont considérées comme des jetons uniques. Ceci correspond à une séquence d'étapes selon la norme CEI 61131-3. Une séquence d'étapes comportant un maximum d'étapes actives (jetons multiples) définies par l'utilisateur augmente le niveau de liberté. Les limitations relatives à l'obligation d'unicité et du non-blocage sont à cet effet levées et doivent être assurées par l'utilisateur. Les séquences d'étape à jetons multiples ne sont pas conformes à la norme CEI 61131-3. Taille de la section 348 • Une section SFC se compose d'une fenêtre comportant une seule page. • Pour des raisons de performance, il est recommandé de créer moins de 100 sections SFC dans un projet (les macrosections ne sont pas comptabilisées). • Cette fenêtre comporte une grille logique de 200 lignes et 32 colonnes. • Les étapes, transitions et sauts ont respectivement besoin d'une cellule. 35006145.25 Langage séquentiel SFC Langages de programmation et structure • Les divergences et convergences ne nécessitent pas de cellule propre, mais sont insérées dans la cellule correspondante de l'étape ou de la transition. • Un maximum de 1.024 étapes peuvent être placées dans chaque section SFC (y compris toutes leurs macrosections). • Il est possible d'activer jusqu'à 100 étapes (jetons multiples) par section SFC (avec toutes ses macrosections). • Il est possible de placer manuellement jusqu'à 64 étapes simultanément par section SFC (jetons multiples). • 20 actions, au maximum, peuvent être affectées à chaque étape SFC. • La possibilité d'imbrication des macros, c'est-à-dire "macroétape dans macroétape", s'élève à huit niveaux. Conformité CEI Pour la description de la conformité CEI du langage de programmation SFC, voir Conformité CEI, page 548. Règles de liaison Règles de liaison Le tableau suivant indique les connexions que vous pouvez établir entre les sorties d'objet et les entrées d'objet. Depuis la sortie de l'objet Vers l'entrée de l'objet Etape Transition Divergence en OU Convergence en ET Transition Etape Saut Divergence en ET Convergence en OU Divergence en OU Transition Convergence en OU Etape Saut 35006145.25 349 Langages de programmation et structure Depuis la sortie de l'objet Langage séquentiel SFC Vers l'entrée de l'objet Divergence en ET Convergence en OU Divergence en ET Etape Saut Convergence en OU (uniquement en mode multijeton, page 390) Convergence en ET Transition Divergence en OU (uniquement en mode multijeton, page 390) Convergence en OU Etape et macro-étape Objet de ce sous-chapitre Ce sous-chapitre décrit les objets étape et macro-étape du diagramme fonctionnel en séquence (SFC). Etape Types d'étape Les étapes peuvent présenter les types suivants : Type Etape "normale" Représentation Description Une étape devient active lorsque l'étape précédente devient inactive (un temps de retard éventuellement défini doit s'être écoulé) et que la transition en amont est vraie. Une étape devient normalement inactive lorsque le temps de retard éventuellement défini s'est écoulé et que la transition en aval est vraie. Pour les convergences en ET, toutes les étapes précédentes doivent satisfaire ces conditions. Chaque étape comporte des actions ou aucune action. Les étapes sans action sont dites étapes d'attente. Etape initiale L'état initial d'une séquence est caractérisé par l'étape initiale. A l'issue de l'initialisation du projet ou de la séquence, l'étape initiale est active. Généralement, aucune action n'est affectée aux étapes initiales. 350 35006145.25 Langage séquentiel SFC Type Représentation Langages de programmation et structure Description Pour les jetons uniques (conformément à la norme CEI 61131-3), une seule étape initiale est admise par séquence. Pour les jetons multiples, un nombre d'étapes initiales pouvant être défini (de 0 à 100) est possible. Macro-étape Voir Macro-étape, page 354 Etape d'entrée voir Etape d'entrée, page 355 Etape de sortie voir Etape de sortie, page 355 Noms d'étape A chaque création d'étape, un numéro est suggéré. La structure du numéro proposé est la suivante : S_i_j, où i représente le numéro actuel (interne) de la section et j est le numéro de l'étape actuelle (interne) dans cette section. Vous pouvez modifier les numéros suggérés pour avoir une meilleure vue d'ensemble. Les noms d'étape (32 caractères maximum) doivent être uniques dans l'ensemble du projet, c'est-à-dire qu'il ne doit pas exister d'autre étape, variable, section etc. ayant le même nom. Aucune distinction n’est faite entre majuscules et minuscules. Le nom d'étape doit répondre aux conventions sur les noms. Temps d'étape A chaque étape peuvent être affectés un temps minimum de contrôle, un temps maximum de contrôle et un temps de retard. 35006145.25 351 Langages de programmation et structure • Langage séquentiel SFC Temps de contrôle minimum Le temps minimum de contrôle indique la durée minimale pendant laquelle l’étape doit normalement être active. Si l'étape devient inactive avant que ce délai ne soit écoulé, un message d'erreur est généré. En mode d’animation, l’erreur est de plus signalée par un contour jaune de l’objet étape. Si vous n'indiquez pas de temps minimum de contrôle ou que vous indiquez un temps minimum nul, aucun contrôle de l'étape n'est effectué. L'état d'erreur est conservé jusqu'à ce que l'étape redevienne active. • Temps de contrôle maximum Le temps maximum de contrôle indique la durée maximale pendant laquelle l’étape doit normalement être active. Si l'étape est toujours active lorsque ce délai est écoulé, un message d'erreur est généré. En mode d’animation, l’erreur est de plus signalée par un contour rose de l'objet étape. Si vous n'indiquez pas de temps maximum de contrôle ou que vous indiquez un temps maximum nul, aucun contrôle de l'étape n'est effectué. L'état d'erreur est conservé jusqu'a ce que l'étape devienne inactive. • Temps de retard Le temps de retard (palier de l'étape) indique la durée minimale pendant laquelle l’étape doit être active. NOTE: Les durées indiquées ne sont valables que pour l’étape, pas pour les actions qui y sont associées. Pour celles-ci, il est possible de définir des temps propres. Définition des temps d'étape Lors de la définition/détermination des temps, veuillez tenir compte de la formule suivante : Temps de retard < temps minimum de contrôle < temps maximum de contrôle On distingue 2 possibilités d'affectation des valeurs définies à une étape : • Littéral de durée • Utilisation de la structure de données SFCSTEP_TIMES Variable SFCSTEP_TIMES Chaque étape peut être implicitement associée à une variable du type de données SFCSTEP_TIMES. Les éléments de cette structure de données sont accessibles en lecture et en écriture (read/write). 352 35006145.25 Langage séquentiel SFC Langages de programmation et structure La structure de données est traitée comme toute autre structure de données, c'est-à-dire qu'elle peut être utilisée dans des déclarations de variable et il est donc possible d'y accéder dans son ensemble (par exemple en tant que paramètre FFB). Description de la structure de données : Nom de l'élément Type de données Description "VarName".delay TIME Temps de retard "VarName".min TIME Temps de contrôle minimum "VarName".max TIME Temps de contrôle maximum Variable SFCSTEP_STATE A chaque étape est affectée de façon implicite une variable du type de données SFCSTEP_ STATE. Cette variable d’étape porte le nom de l’étape à laquelle elle est affectée. Les éléments de cette structure de données ne sont accessibles qu'en lecture (read-only). Vous pouvez afficher les variables SFCSTEP_STATE dans l'Editeur de données. Le Commentaire d'une variable SFCSTEP_STATE est le commentaire saisi en tant que propriété de l'étape elle-même. Voir le chapitre Définition des propriétés des étapes (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Cette structure de données ne peut pas être utilisée dans des déclarations de variable. C'est pourquoi il est impossible d'accéder à la structure de données dans son ensemble (par exemple sous forme de paramètre FFB). Description de la structure de données : Nom de l'élément Type de données Description "StepName".t TIME Temps d’activation actuel dans l'étape. Lorsque l'étape est désactivée, la valeur de cet élément est maintenue jusqu'à la prochaine activation de l'étape. "StepName".x BOOL 1 : Etape active 0 : Etape inactive 35006145.25 353 Langages de programmation et structure Langage séquentiel SFC Nom de l'élément Type de données Description "StepName".tminErr BOOL Cet élément est une extension de la norme IEC 61131-3. 1 : Dépassement par valeur inférieure du temps minimum de contrôle 0 : Pas de dépassement par valeur inférieure du temps minimum de contrôle Cet élément est automatiquement réinitialisé dans les cas suivants : "StepName".tmaxErr BOOL • Lorsque l'étape est réactivée • Si la commande de séquence est réinitialisée • Si le bouton de commande de réinitialisation d'erreur de durée est activé Cet élément est une extension de la norme IEC 61131-3. 1 : Dépassement du temps maximum de contrôle 0 : Pas de dépassement du temps maximum de contrôle Cet élément est automatiquement réinitialisé dans les cas suivants : • A la sortie de l'étape • Si la commande de séquence est réinitialisée • Si le bouton de commande de réinitialisation d'erreur de durée est activé Macro-étapes et macro-sections Macro-étape Les macro-étapes servent à appeler une macro-section et ainsi à établir une structure hiérarchique des commandes d'enchaînement. Représentation d'une macro-étape : Les macro-étapes ont les caractéristiques suivantes : 354 • Les macro-étapes peuvent être placées dans des sections de "commande de séquence" et dans des macro-sections. • Le nombre de macro-étapes n’est pas limité. • Le degré d'imbrication des macro-étapes l'une dans l'autre est de 8 niveaux. 35006145.25 Langage séquentiel SFC Langages de programmation et structure • A chaque macro-étape est affectée de façon implicite une variable du type de données SFCSTEP_STATE, voir Variable SFCSTEP_STATE, page 353. • Il est possible d'allouer aux macro-étapes une variable du type de données SFCSTEP_ TIMES, voir Variable SFCSTEP_TIMES, page 352. • AUCUNE action ne peut être affectée aux macroétapes. • Chaque macro-étape peut être remplacée par la séquence contenue dans la macrosection correspondante. Les macro-étapes sont une extension de la norme IEC 61131-3 et doivent être activées de manière explicite. Etape d'entrée Chaque macro-section commence par une étape d'entrée. Représentation d'une étape d'entrée : Les étapes d'entrée ont les caractéristiques suivantes : • Les étapes d'entrée sont automatiquement placées dans les macro-sections par l'éditeur SFC. • Une seule étape d'entrée est insérée pour chaque macro-section. • Une étape d'entrée ne peut pas être supprimée, copiée ou insérée manuellement. • A chaque étape d'entrée est affectée de façon implicite une variable du type de données SFCSTEP_STATE, voir Variable SFCSTEP_STATE, page 353. • Il est possible d'allouer aux étapes d'entrée une variable du type de données SFCSTEP_TIMES, voir Variable SFCSTEP_TIMES, page 352. • Des actions peuvent être affectées aux étapes d'entrée. Etape de sortie Chaque macro-section se termine par une étape de sortie. Représentation d'une étape de sortie : 35006145.25 355 Langages de programmation et structure Langage séquentiel SFC Les étapes de sortie ont les caractéristiques suivantes : • Les étapes de sortie sont automatiquement placées dans les macro-sections par l'éditeur SFC. • Une seule étape de sortie est insérée pour chaque macro-section. • Une étape de sortie ne peut pas être supprimée, copiée ou insérée manuellement. • AUCUNE action ne peut être affectée aux étapes de sortie. • Les étapes de sortie ne peuvent se voir affecter qu'un temps de retard. L'affectation de temps de contrôle n'est pas possible, voir Temps d'étape, page 351. Macro-section Une macro-section se compose d'une séquence unique qui comprend essentiellement les mêmes éléments que les sections de "commande de séquence" (étapes, étape(s) initiale(s), macro-étapes, transitions, divergences, convergences etc.). De plus, chaque macro-section comporte en début une étape d'entrée et en fin une étape de sortie. Chaque macro-étape peut être remplacée par la séquence contenue dans la macro-section correspondante. Les macro-sections peuvent donc contenir 0, 1 ou plusieurs étapes initiales, voir Types d'étape, page 350. • Jeton unique ◦ 0 étape initiale Utilisé dans les macro-sections si une étape initiale est déjà disponible dans la section de rang hiérarchique supérieur ou inférieur. ◦ 1 étape(s) initiale(s) Utilisé dans les macro-sections si aucune étape initiale n'est disponible dans la section de rang hiérarchique supérieur ou inférieur. • Jetons multiples Un maximum de 100 étapes initiales peuvent être utilisées dans chaque section (y compris toutes leurs macro-sections). 356 35006145.25 Langage séquentiel SFC Langages de programmation et structure Utilisation des macro-sections Le nom des macro-sections est identique au nom de la macro-étape appelante. Si le nom de la macro-étape est modifié, le nom de la macro-section correspondante l'est aussi automatiquement. Une macro-section ne peut être utilisée qu'une seule fois. Traitement des macro-étapes Traitement des macro-étapes : Etape 1 Description Une macro-étape devient active lorsque la condition de transition qui la précède est VRAIE. L'étape d'entrée de la macro-section devient également active. 2 La séquence de la macro-section est exécutée. La macro-étape reste active tant qu'au moins une étape de la macro-section est active. 35006145.25 3 Si l'étape de sortie de la macro-section est active, la transition suivant la macroétape est validée. 4 La macroétape devient inactive lorsque l'étape de sortie est active et donc que la condition de transition suivante est validée et que la condition de transition est VRAIE. L'étape de sortie de la macro-section devient également inactive. 357 Langages de programmation et structure Langage séquentiel SFC Noms d'étape A chaque création d'étape, un numéro est suggéré. Signification des numéros proposés : Type d'étape Numéro proposé Description Macro-étape MS_i_j MS = Macro Step (macro-étape) i = numéro (séquentiel interne) de la section actuelle j = numéro (séquentiel interne) de la macro-étape actuelle dans la section actuelle Etape d'entrée MS_k_l_IN MS = Macro Step (macro-étape) k = numéro (séquentiel interne) de la section appelante l = numéro (séquentiel interne) de la macro-étape actuelle de la section appelante IN = Input (étape d'entrée) Etape de sortie MS_k_l_OUT MS = Macro Step (macro-étape) k = numéro (séquentiel interne) de la section appelante l = numéro (séquentiel interne) de la macro-étape actuelle de la section appelante OUT = Output (étape de sortie) Etape "normale" (dans une macrosection) S_k_m S = Step (étape) k = numéro (séquentiel interne) de la section appelante m = numéro (séquentiel interne) de l'étape actuelle de la section appelante Vous pouvez modifier les numéros suggérés pour avoir une meilleure vue d'ensemble. Les noms d'étape (28 caractères maximum pour les noms de macroétapes, 32 caractères maximum pour les noms d'étapes) doivent être uniques dans l'ensemble du projet, c'est-àdire qu'il ne doit pas exister d'autre étape, variable, section (excepté le nom de la macrosection affectée à la macro-étape) etc. ayant le même nom. Aucune distinction n’est faite entre majuscules et minuscules. Le nom d'étape doit respecter les conventions sur les noms normalisées. Si le nom de la macroétape est modifié, le nom de la macro-section correspondante et des étapes qu'elle contient le sont aussi automatiquement.. Par exemple, si MS_1_1 est renommé en MyStep, les noms d'étape de la macro-section sont convertis en MyStep_IN, MyStep_1, ..., MyStep_n, MyStep_OUT. 358 35006145.25 Langage séquentiel SFC Langages de programmation et structure Action et section d'action Objet de ce sous-chapitre Ce sous-chapitre décrit les actions et les sections d'action du du diagramme fonctionnel en séquence SFC Action Introduction Les actions ont les caractéristiques suivantes : • Une action peut être une variable booléenne (variable d'action, page 360) ou une section (section d'action, page 360) du langage de programmation FBD, LD, IL ou ST. • Il est possible d’affecter aucune ou plusieurs actions à une étape. Une étape à laquelle aucune action n'est affectée a une fonction d’attente, c.-à-d. qu’elle attend que la transition affectée soit achevée. • Si plusieurs actions sont affectées à une même étape, elles sont traitées dans l'ordre de leur occurrence dans la zone de liste d'actions. Exception : Indépendamment de leur position dans la zone de liste, les actions comportant le qualificatif P1 sont toujours traitées en premier et les actions comportant le qualificatif P0 sont traitées en dernier. • Le contrôle des action est exprimé par des qualificatifs, page 362. • 20 actions, au maximum, peuvent être affectées à chaque étape • La variable affectée à une action peut également être utilisée dans des actions d'autres étapes. • Vous pouvez utiliser la variable d'action en lecture et en écriture dans toute autre section du projet (affectation multiple). • Les actions auxquelles un qualificatif temporisé a été affecté ne peuvent être activées qu'une seule fois. • Seuls les variables/adresses booléennes ou les éléments booléens de variables multiéléments peuvent être utilisés comme variables d'action. • Les actions ont un nom unique. Le nom de l'action est soit le nom de la variable d'action, soit le nom de la section d'action. 35006145.25 359 Langages de programmation et structure Langage séquentiel SFC Variable d'action Sont autorisées comme variables d'action : • Adresse de type de données BOOL Une action peut être affectée à une sortie matérielle via une adresse. Dans ce cas, l'action peut être utilisée en tant que signal d'activation d'une transition, en tant que signal d'entrée dans une autre section ou en tant que signal de sortie pour le matériel. • Variable simple ou élément d'une variable multi-élément du type de donnée BOOL Une variable permet d'utiliser une action comme signal d’entrée dans une autre section. ◦ Variable non localisée Pour les variables non localisées, l'action peut être utilisée en tant que signal d'activation d'une transition et en tant que signal d'entrée dans une autre section. ◦ Variable localisée Pour les variables localisées, l’action peut être utilisée comme signal d'activation d'une transition, comme signal d’entrée dans une autre section et comme signal de sortie pour le matériel. Noms d'action Si vous utilisez une adresse ou une variable en tant qu'action, sa désignation sert de nom d'action (par exemple %Q10.4, Variable1). Si vous utilisez une section d'action en tant qu'action, le nom de section sert de nom d'action. Les noms d'action (32 caractères maximum) doivent être uniques dans l'ensemble du projet, c'est-à-dire qu'il ne doit pas exister d'autres transition, variable, section etc. ayant le même nom. Aucune distinction n’est faite entre majuscules et minuscules. Le nom d'action doit respecter les conventions sur les noms. Section d'action Introduction Une section d'action peut être créée pour chaque action. Cette section contient la logique de l'action et elle est automatiquement reliée à l'action. 360 35006145.25 Langage séquentiel SFC Langages de programmation et structure Nom de la section d'action Le nom de la section de transition est toujours identique à l'action associée, page 360. Langages de programmation Les langages de programmation possibles pour les sections d'action sont FBD, LD, IL et ST. Caractéristiques des sections d'action Les sections d'action présentent les caractéristiques suivantes : • Les sections d'action peuvent comporter un nombre quelconque de sorties. • Les appels de sous-programmes ne sont possibles dans les sections d'action que si le mode Multijeton est activé. Remarque : Les sous-programmes appelés ne sont pas soumis à la commande de la séquence. Autrement dit : ◦ le qualificatif affecté à la section d'action appelante n'a aucun effet sur le sousprogramme ◦ le sous-programme reste actif lorsque l'étape appelante est désactivée • Les fonctions, blocs fonction et procédures de diagnostic ne peuvent pas être utilisés dans les sections d'action. • Les sections d'action peuvent avoir un nombre quelconque de réseaux. • Les sections d'action appartiennent à la section SFC dans laquelle elles ont été définies et peuvent se voir affecter un nombre quelconque d'actions au sein de cette section SFC (et toutes les macro-sections associées). • Les sections d'action auxquelles un qualificatif avec durée a été affecté ne peuvent être activées qu'une seule fois. • Les sections d'action appartiennent à la section SFC dans laquelle elles ont été définies. Si une section SFC est supprimée, toutes les sections d'action de cette section SFC sont supprimées automatiquement. • Les sections d'action peuvent être appelées uniquement par des actions. Variable SFCACTION_STATE Lorsqu'une logique de scrutation finale est activée, chaque section d'action se voit affecter implicitement une variable de type de données SFCACTION_STATE. Cette variable porte le nom de la section d'action associée. Les éléments de cette structure de données sont en lecture seule. 35006145.25 361 Langages de programmation et structure Langage séquentiel SFC Vous pouvez afficher les variables SFCACTION_STATE dans l'Editeur de données. Le Commentaire d'une variable SFCACTION_STATE est le commentaire saisi en tant que propriété de la section d'action elle-même. Pour plus d'informations, reportez-vous à la section Affectation d'actions à une étape (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Cette structure de données ne peut pas être utilisée dans des déclarations de variable. C'est pourquoi il est impossible d'accéder à la structure de données dans son ensemble (par exemple en tant que paramètre de FFB). NOTE: L'utilisation d'une variable SFCACTION_STATE dans des branches parallèles est limitée à une occurrence. La portée de cette variable est la section SFC dans laquelle la section d'action a été créée. Structure du DDT : Nom de l'élément Type de données Description ActionName.t TIME Temps écoulé depuis que la section d'action est devenue active ActionName.q BOOL 1 : section d'action active 0 : section d'action inactive Qualificatif Introduction Chaque action associée à une étape doit avoir un qualificatif définissant la commande de l'action. NOTE: Le comportement d'exécution d'une section d'actions dépend de l'état d'activation de l'option Comportement de l'action SFC : logique de scrutation finale activée. Qualificatifs N / None Signification : Rien en mémoire Description : Si l'étape est active, l'action est 1 ; si l'étape est inactive, l'action est 0. 362 35006145.25 Langage séquentiel SFC Avec une scrutation finale : Langages de programmation et structure Si l'étape est active, l'action est 1 (ActionName.q = 1) et lorsque l'étape devient inactive, l'action est exécutée encore une fois avec ActionName.q = 0. Qualificatif R Signification : Réinitialisation prioritaire Description : L'action qui est définie dans une autre étape avec le qualificatif S est réinitialisée. L'activation de n'importe quelle action peut également être empêchée. NOTE: Les qualificatifs sont déclarés automatiquement comme non mémorisés en mémoire tampon. Cela signifie que leur valeur est remise à zéro après l'arrêt et le redémarrage du programme, par exemple lors d'un cycle hors/sous tension. Si vous avez besoin d'une sortie avec mémoire tampon, utilisez les blocs fonction RS ou SR de la bibliothèque de blocs standard. Qualificatif S Signification : Sauvegardé en mémoire Description : L'action configurée reste active même lorsque l'étape correspondante devient inactive. L'action ne devient inactive que lorsqu'elle est réinitialisée dans une autre étape de la section SFC en cours avec le qualificatif R. 35006145.25 363 Langages de programmation et structure Langage séquentiel SFC NOTE: • Si une variable d'action est modifiée en dehors de la section SFC en cours, il se peut qu'elle ne reflète plus l'état d'activation de l'action. • 100 actions au maximum sont autorisées à l'aide du qualificatif S dans chaque section SFC. Avec une scrutation finale : Si l'étape est active, l'action reste active (ActionName.q = 1) et lorsqu'elle est réinitialisée dans une autre étape, elle est exécutée une fois de plus avec ActionName.q = 0. Qualificatif L Signification : Temps limité Description : Si l'étape est active, l'action l'est aussi. Lorsque la durée que vous avez définie pour l'action est écoulée, l'action repasse à 0, même si l'étape est encore active. L'action passe également à 0 lorsque l'étape devient inactive. 364 35006145.25 Langage séquentiel SFC Langages de programmation et structure NOTE: Pour ce qualificatif, il faut de plus définir une durée de type de données TIME. Avec une scrutation finale : Si l'étape est active, l'action l'est aussi (ActionName.q = 1). Lorsque la durée que vous avez définie est écoulée, l'action est exécutée une fois de plus avec ActionName.q = 0. Elle passe ensuite à 0 même si l'étape est encore active. Qualificatif D Signification : Différé Description : Si l'étape est active, le temporisateur interne est lancé et l'action est définie sur 1 après la durée définie manuellement pour l'action. Si l'étape devient inactive après cela, l'action devient également inactive. Si l'étape devient inactive avant l'expiration du délai interne, l'action ne devient pas active. NOTE: Pour ce qualificatif, il faut de plus définir une durée de type de données TIME. 35006145.25 365 Langages de programmation et structure Avec une scrutation finale : Langage séquentiel SFC Si l'étape est active et après la durée définie, l'action devient active (ActionName.q = 1) et lorsque l'étape devient inactive, l'action est exécutée une fois de plus avec ActionName.q = 0. Qualificatif P Signification : Impulsion Description : Lorsque l'étape devient active, l'action passe à 1 et y reste pendant un cycle de programme, que l'étape reste active ou non. Avec une scrutation finale : 366 Si l'étape devient active, l'action passe à 1 et y reste pendant deux cycles de programme, le premier avec ActionName.q = 1 et le second avec ActionName.q = 0. Le fait que l'étape reste active ou non n'a pas d'importance. 35006145.25 Langage séquentiel SFC Langages de programmation et structure Qualificatif DS Signification : Différé et défini Description : Lorsque l'étape devient active, le temporisateur interne est lancé et l'action devient active lorsque la durée définie manuellement est écoulée. L'action ne redevient inactive que lorsqu'elle est réinitialisée dans une autre étape avec le qualificatif R. Si l'étape devient inactive avant l'expiration du délai interne, l'action ne devient pas active. NOTE: Pour ce qualificatif, il faut de plus définir une durée de type de données TIME. Avec une scrutation finale : Si l'étape est active et après la durée définie, l'action devient active (ActionName.q = 1) et lorsque l'action est réinitialisée dans une autre étape, l'action est exécutée une fois de plus avec ActionName.q = 0. Qualificatif P1 Signification : Impulsion (front montant) 35006145.25 367 Langages de programmation et structure Langage séquentiel SFC Description : Si l'étape devient active (front 0->1), l'action passe à 1 et y reste pendant un cycle de programme, que l'étape reste active ou non. NOTE: Les actions avec qualificatif P1 sont toujours traitées en premier, quelle que soit leur position dans la zone de liste des actions. Avec une scrutation finale : Si l'étape devient active (front 0->1), l'action passe à 1 avec ActionName.q = 0 et y reste pendant un cycle de programme, que l'étape reste active ou non. Qualificatif P0 Signification : Impulsion (front descendant) Description : Si l'étape devient inactive (front 1->0), l'action passe à 1 et y reste pendant un cycle de programme. 368 35006145.25 Langage séquentiel SFC Avec une scrutation finale : Langages de programmation et structure Si l'étape devient inactive (front 1->0), l'action passe à 1 avec ActionName.q = 0 et y reste pendant un seul cycle de programme. Transition et section de transition Objet de ce sous-chapitre Ce sous-chapitre décrit les objets transition et les sections de transition du diagramme fonctionnel en séquence SFC. 35006145.25 369 Langages de programmation et structure Langage séquentiel SFC Transition Introduction Une transition indique la condition à laquelle le contrôle d'une ou de plusieurs étapes précédant la transition passe à une ou plusieurs étapes consécutives le long de la liaison correspondante. Condition de transition A chaque transition est affectée une condition de transition du type de donnée BOOL. Sont autorisés comme conditions de transition : • une adresse (entrée ou sortie), • une variable (entrée ou sortie), • un libellé ou • une section de transition, page 371. Le type de condition de transition détermine la position de son nom. Condition de transition • Adresse • Variable • Valeur littérale • Section de transition Position du nom Nom de transition Si vous utilisez une adresse ou une variable comme condition de transition, sa désignation est utilisée comme nom de transition (par exemple %I10.4, Variable1). Si vous utilisez une section de transition comme condition de transition, le nom de section est utilisé comme nom de transition. Les noms de transition (32 caractères maximum) doivent être uniques dans l'ensemble du projet, c'est-à-dire qu'il ne doit pas exister d'autre transition, variable, section etc. (à 370 35006145.25 Langage séquentiel SFC Langages de programmation et structure l'exception de la section de transition correspondante) ayant le même nom. Aucune distinction n’est faite entre majuscules et minuscules. Le nom de transition doit respecter les conventions sur les noms normalisées. Activation d’une transition Une transition est activée lorsque les étapes qui la précèdent immédiatement sont actives. Les transitions, dont les étapes immédiatement antérieures ne sont pas actives ne sont normalement pas évaluées. NOTE: Si aucune condition de transition n’est définie, la transition ne sera jamais active. Déclenchement d’une transition Le déclenchement d’une transition s’effectue lorsque la transition est activée et que les conditions de transition correspondantes sont satisfaites. Le déclenchement d’une transition entraîne la désactivation (réinitialisation) de toutes les étapes qui la précèdent immédiatement et qui sont liées à cette transition, puis l'activation de toutes les étapes qui suivent immédiatement. Temps de déclenchement d’une transition Théoriquement, le temps de déclenchement (temps de commutation) d'une transition peut être le plus court possible, mais il ne peut jamais prendre la valeur zéro. Le temps de déclenchement d’une transition est au moins égal au temps d'un cycle de programme. Section de transition Introduction Une section de transition peut être créée pour chaque transition. Il s'agit d'une section qui contient la logique de la condition de transition et qui est automatiquement reliée à la transition. Nom de la section de transition Le nom de la section de transition est toujours identique à la transition associée. Voir Nom de transition, page 370. 35006145.25 371 Langages de programmation et structure Langage séquentiel SFC Langages de programmation Les langages de programmation possibles pour les sections de transition sont FBD , LD , IL et ST. Réseaux suggérés pour les sections de transition : Langage Réseau suggéré FBD Description Le réseau conseillé suggéré contient un bloc AND comportant 2 entrées et dont la sortie est liée à une variable qui porte le nom de la section de transition. Le bloc proposé peut être relié ou, si vous ne le désirez pas, être supprimé. LD Le réseau suggéré contient une bobine reliée à une variable portant le nom de la section de transition. La bobine proposée peut être reliée ou, si vous ne la désirez pas, être supprimée. IL - Le réseau proposé est vide. Le seul contenu admis consiste en la création d'une logique booléenne. L'affectation du résultat logique à la sortie (variable de transition) est effectuée automatiquement, c'est-à-dire que l'affectation mémoire ST n'est pas autorisée. Exemple : LD A AND B ST - Le réseau proposé est vide. Le seul contenu admis consiste à créer une logique booléenne sous forme d'expression (imbriquée). L'affectation du résultat logique à la sortie (variable de transition) est effectuée automatiquement, de sorte que l''instruction d'affectation := n'est pas autorisée. L'expression ne se termine pas par un pointvirgule (;). Exemple : A AND B ou A AND (WORD_TO_BOOL (B)) 372 35006145.25 Langage séquentiel SFC Langages de programmation et structure Caractéristiques des sections de transition Les sections de transition ont les caractéristiques suivantes : • les sections de transition n'ont qu'une seule sortie (variable de transition) et son type de données est BOOL. Le nom de cette variable est identique au nom de la section de transition. • La variable de transition ne doit être utilisée en écriture qu’une seule fois. • La variable de transition peut être lue à n'importe quelle position du projet. • Seules des fonctions peuvent être utilisées ; les blocs fonction et les procédures ne sont pas admis. • Dans LD, une seule bobine peut être utilisée. • Il n’existe qu’un seul réseau, c'est-à-dire que toutes les fonctions utilisées sont reliées entre elles, directement ou indirectement. • Les sections de transition ne peuvent être utilisées qu'une seule fois. • Les sections de transition font partie de la section SFC dans laquelle elles ont été définies. Si la section SFC correspondante est supprimée, toutes les sections de transition de cette section SFC sont supprimées automatiquement. • Les sections de transition ne peuvent être appelées qu'à partir de transitions. Saut Vue d’ensemble Ce sous-chapitre décrit les objets saut du langage séquentiel SFC. Saut Généralités Les sauts permettent de représenter des liaisons dirigées qui ne sont pas tracées entièrement. Représentation d'un saut : 35006145.25 373 Langages de programmation et structure Langage séquentiel SFC Propriétés des sauts Les sauts présentent les caractéristiques suivantes : • Plusieurs sauts peuvent avoir une même étape pour cible. • Conformément à la norme CEI 61131-3, les sauts dans une séquence en ET, page 378 ou depuis une séquence en ET ne sont pas possibles. Si un saut doit être réutilisé, il doit être activé explicitement. • Dans le cadre des sauts, on distingue les sauts de séquence, page 381 et les boucles de séquence, page 382. • La cible du saut est indiquée par le symbole de cible (>). Nom de saut Les sauts ne possèdent pas de nom à proprement parler. Au lieu de cela, le nom de l'étape cible (cible du saut) est indiqué sur le symbole du saut. Liaison Vue d’ensemble Ce sous-chapitre décrit les liaisons du langage séquentiel SFC. 374 35006145.25 Langage séquentiel SFC Langages de programmation et structure Liaison Introduction Les liaisons relient les étapes et les transitions, les transitions et les étapes, etc. Caractéristiques des liaisons Les liaisons ont les caractéristiques suivantes : • Il est impossible d'établir une liaison entre des objets de même type (étape avec étape, transition avec transition, etc.). • Les liaisons sont possibles entre les éléments suivants : ◦ sorties d'objets non reliées et ◦ entrées d'étape non reliées ou reliées (cela signifie que plusieurs entrées d'étape peuvent être liées) • Le chevauchement entre des liaisons et d'autres objets SFC (étape, transition, saut, etc.) n'est pas possible • Les chevauchements entre liaisons sont possibles • Le croisement inter-liaison est possible et est indiqué sous forme de liaison "interrompue" : • Les liaisons se composent de segments verticaux et horizontaux. 35006145.25 375 Langages de programmation et structure Langage séquentiel SFC • Le flux de signaux dans une séquence est généralement de haut en bas. Cependant pour permettre la mise en oeuvre de boucles, les liaisons vers une étape peuvent également se faire de bas en haut. Ceci est valable pour les liaisons de transitions, de divergences en ET et de convergences en OU vers une étape. Dans ce cas, le sens de la liaison est représentée par une flèche : • Pour les liaisons, on distingue les sauts de séquence, page 381 et les boucles de séquence, page 382. Divergences et convergences Objet de ce sous-chapitre Ce sous-chapitre décrit les objets de convergence et de divergence du diagramme fonctionnel en séquence SFC. Divergences en OU et convergences en OU Introduction La divergence en OU permet de programmer des branchements conditionnels au sein du flux de contrôle de la structure SFC. Dans les divergences en OU, une étape est suivie d'autant de transitions sous la ligne horizontale qu’il y a de traitements différents. Toutes les branches divergentes sont ensuite réunies en une branche unique à l'aide de convergences en OU ou de sauts, page 373 dans laquelle le traitement se poursuit. 376 35006145.25 Langage séquentiel SFC Langages de programmation et structure Exemple d'une séquence en OU Exemple d'une séquence en OU Caractéristiques d'une séquence en OU Les caractéristiques d'une séquence en OU dépendent principalement de son mode de contrôle : jeton unique ou jetons multiples. Voir • Caractéristiques d'une séquence en OU en jeton unique, page 380 • Caractéristiques d'une séquence en OU en jetons multiples, page 391 35006145.25 377 Langages de programmation et structure Langage séquentiel SFC Divergence en ET et convergence en ET Introduction Avec les divergences en ET, la commutation d'une seule transition active plusieurs (maximum 32) étapes (branches) en parallèle. L'exécution se fait de gauche à droite. Après cette activation commune, les différentes branches sont traitées indépendamment l'une de l'autre.. Conformément à la norme CEI 61131-1, toutes les branches d'une divergence en ET sont regroupées par une convergence en ET. La transition qui suit une convergence en ET est évaluée lorsque toutes les étapes précédant immédiatement la convergence en ET ont été validées. La combinaison d'une divergence en ET avec une convergence en OU n'est possible qu'en mode jetons multiples, page 394. Exemple d'une séquence en ET Exemple d'une séquence en ET 378 35006145.25 Langage séquentiel SFC Langages de programmation et structure Caractéristiques d'une séquence en ET voir • Caractéristiques d'une séquence en ET en mode jeton unique, page 380 • Caractéristiques d'une séquence en ET en mode jetons multiples, page 391 Objet texte Vue d’ensemble Ce sous-chapitre décrit les objets texte du langage séquentiel SFC. Objet texte Introduction En langage SFC, il est possible de positionner du texte sous forme d'objets texte. La taille de ces objets texte dépend de la longueur du texte. Cet objet texte a au moins la taille d'une cellule et peut, selon la taille du texte, être étendu sur des cellules complémentaires dans le sens vertical ou horizontal. Les objets texte peuvent recouvrir avec d'autres objets SFC. Jeton unique Objet de ce sous-chapitre Ce sous-chapitre décrit le mode "jeton unique" pour les commandes de séquence. Jeton unique d'ordre d'exécution Description Les règles suivantes s'appliquent aux jetons uniques : 35006145.25 379 Langages de programmation et structure Langage séquentiel SFC • La situation d'origine est définie par l'étape initiale. La commande de séquence ne contient qu'une seule étape initiale. • une seule étape est active à la fois dans une séquence. La seule exception est pour les divergences en ET dans lesquelles une étape est active par divergence. • Les évolutions des états de signaux actifs se produisent le long des liaisons dirigées et sont déclenchés par la commutation d’une ou de plusieurs transitions. La séquence d’une chaîne va dans le sens des liaisons dirigées et se déroule de la partie inférieure de l’étape précédente à la partie supérieure de l’étape suivante. • Une transition est validée lorsque les étapes qui la précèdent directement sont actives. Les transitions, dont les étapes qui les précèdent directement ne sont pas actives, ne sont normalement pas évaluées. • Le déclenchement d’une transition s’effectue lorsque la transition est validée et que la condition de transition correspondante est vraie. • Le déclenchement d’une transition entraîne la désactivation (réinitialisation) de toutes les étapes qui la précèdent directement et qui sont connectées à la transition. Ensuite, toutes les étapes qui la suivent directement sont activées. • Lorsque plusieurs conditions de transition d'une série d'étapes consécutives sont remplies, la scrutation est effectué à une cadence d'une étape par cycle. • Les étapes ne peuvent pas être activées ni désactivées par d'autres sections non SFC. • Vous pouvez utiliser des macroétapes. • Une seule branche est active à la fois dans une divergence en OU. Le résultat des conditions de transition détermine quelle branche est exécutée en fonction des transitions qui suivent la divergence en OU. Si une condition de transition est vraie, les transitions restantes ne sont plus exécutées. La branche qui contient la transition remplie devient active. Les divergences répondent à une priorité de gauche à droite. Toutes les divergences en OU sont regroupées à leur issue par une convergence en OU ou par des sauts. • pour les divergences en ET, la commutation d'une seule transition active plusieurs étapes (branches) en parallèle. Après cette activation commune, les différentes branches sont exécutées indépendamment. Toutes les branches en ET sont regroupées à leur issue par une convergence en ET. Il n’est pas possible d’effectuer des sauts vers ou à partir d’une branche en ET. Séquence en OU Séquences en OU Selon la norme IEC 61131-3, une seule commutation (1 parmi n choix) peut être effectuée pour les transitions. Le résultat des conditions de transition déterminera quelle branche sera exécutée en fonction des transitions qui suivent la divergence en OU. Les transitions de la 380 35006145.25 Langage séquentiel SFC Langages de programmation et structure divergence sont traitées de gauche à droite. Si une condition de transition est vraie, les transitions restantes ne sont plus exécutées. La branche qui contient la transition satisfaite devient active. Il en résulte une priorité de gauche à droite pour les divergences. Si aucune des transitions n'est effectuée, l’étape validée à ce moment-là reste valide. Séquences en OU : Si… Alors Si S_5_10 est active et que la condition de transition a est vraie (indépendamment de b), une séquence est exécutée de S_5_10 vers S_5_11. Si S_5_10 est active et que la condition de transition b est vraie alors que a est fausse, une séquence est exécutée de S_5_10 vers S_5_12. Sauts de séquence et boucles de séquence Saut de séquence Un saut de séquence est un cas particulier de divergence en OU qui permet d'ignorer plusieurs étapes d'une séquence. Un saut de séquence peut être réalisé avec des sauts ou avec des liaisons. 35006145.25 381 Langages de programmation et structure Langage séquentiel SFC Saut de séquence : Si… Alors Si la condition de transition a est vraie, une séquence est exécutée de S_5_10 vers S_5_11, S_ 5_12 et S_5_13. Si la condition de transition b est vraie, un saut est effectué directement de S_5_10 à S_5_13. Si la condition de transition e est vraie, une séquence est exécutée de S_5_10 vers S_5_14 et S_ 5_13. Boucle de séquence Une séquence en boucle est un cas spécial de divergence en OU dans lequel une ou plusieurs branches reconduisent à une étape antérieure. Une séquence en boucle peut être réalisée avec des sauts ou avec des liaisons. 382 35006145.25 Langage séquentiel SFC Langages de programmation et structure Boucle de séquence : Si… Alors Si la condition de transition a est vraie, une séquence s'exécute de S_1_11 vers S_1_12. Si la condition de transition b est vraie, une séquence s'exécute de S_1_12 vers S_1_13. Si la condition de transition b est fausse et que c est vraie, une séquence s'exécute de S_1_12 vers S_1_14. Si la condition de transition f est vraie, un saut est réalisé à partir de S_1_14 pour revenir à S_1_ 12. La boucle établie depuis S_1_12 à l'aide des conditions de transition c et f pour revenir à S_1_12 est réitérée jusqu'à ce que la condition de transition b soit vraie ou que c soit fausse et d vraie. Si les conditions de transition b et c sont fausses et que d est vraie, un saut en arrière est effectué directement de S_1_12 à S_1_11. La boucle de S_1_11 à S_1_12 puis de nouveau à S_1_11 via les conditions de transition a et d se répète jusqu'à ce que la condition de transition b ou c soit vraie. Les boucles sans fin ne sont pas admises dans une séquence en OU. 35006145.25 383 Langages de programmation et structure Langage séquentiel SFC Séquences en boucle sans fin : Si… Alors Si la condition de transition b est vraie, une séquence s'exécute de S_1_1 vers S_1_3. Si la condition de transition e est vraie, un saut est exécuté vers S_1_4. Si la condition de transition f est vraie, un saut est exécuté vers S_1_3. La boucle effectuée à partir de S_1_3 via la condition de transition e vers S_1_4 via la condition de transition f et un saut de retour à S_1_3 se répète désormais indéfiniment. Séquences en ET Séquences en ET Pour les divergences en ET, la validation d'une seule transition active plusieurs étapes (branches) en parallèle (32 au maximum). Cette règle s'applique aux modes monojeton et multijeton. 384 35006145.25 Langage séquentiel SFC Langages de programmation et structure Traitement des séquences en ET : Si… Alors Si S_5_10 est active et que la condition de transition a (faisant partie de la transition commune) est également vraie, une séquence s'exécute de S_5_10 vers S_5_11, S_5_ 12 et S_5_13. Si les étapes S_5_11, S_5_12 et S_5_13 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si les étapes S_5_14, S_5_15 et S_5_16 sont actives en même temps et que la condition de transition e (faisant partie de la transition commune) est vraie, une séquence est exécutée de S_5_14, S_5_15 et S_5_ 16 vers S_5_17. Utilisation d'une divergence en OU dans une séquence en ET Si vous utilisez une seule divergence en OU dans une séquence en ET, cela provoque le blocage de la séquence en mode monojeton. 35006145.25 385 Langages de programmation et structure Langage séquentiel SFC Utilisation d'une divergence en OU dans une séquence en ET : Si… Alors Si la condition de transition a est vraie, une séquence est exécutée vers S_7_1 et S_7_2. Si les étapes S_7_1 et S_7_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition d est vraie, une séquence s'exécute vers S_7_5. Si la condition de transition b est vraie et que c est fausse, une séquence s'exécute vers S_7_3. Comme les étapes S_7_3, S_7_4 et S_7_5 sont liées par une convergence en ET, aucune séquence ne peut suivre S_ 7_6 car S_7_3 et S_7_4 ne peuvent jamais être actives en même temps. (Soit S_7_3 est activée avec la condition de transition b, soit S_7_4 est activée avec la condition de transition c, mais jamais les deux étapes en même temps.) Par conséquent, S_7_3, S_7_4 et S_7_5 ne peuvent pas non plus être actives en même temps. La séquence est bloquée. Le même problème survient si la condition de transition b est fausse et c est vraie lors de l'entrée dans la divergence en OU. 386 35006145.25 Langage séquentiel SFC Langages de programmation et structure Sélection de séquences en ET asymétriques Introduction Selon la norme IEC 61131-3, une divergence en ET doit toujours être fermée par une convergence en ET. Le nombre de divergences en ET ne doit cependant pas nécessairement correspondre au nombre de convergences en ET. Nombre supérieur de convergences Séquence avec 1 divergence en ET et 2 convergences en ET : Si… Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_19_2, S_19_3 et S_19_ 4. Si les étapes S_19_2, S_19_3 et S_19_4 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition b est vraie, une séquence s'exécute vers S_19_5. Si les étapes S_19_2 et S_19_5 sont actives et que la condition de transition c est vraie, la séquence en ET est abandonnée. 35006145.25 387 Langages de programmation et structure Langage séquentiel SFC Nombre supérieur de divergences Séquence avec 2 divergences en ET et 1 convergence en ET : Si… Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_19_2 et S_19_3. Si les étapes S_19_2 et S_19_3 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition b est vraie, une séquence s'exécute vers S_19_4 et S_19_5. Si les étapes S_19_4 et S_19_5 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si les étapes S_19_2, S_19_4 et S_19_5 sont actives et que la condition de transition c est vraie, la séquence en ET est abandonnée. 388 35006145.25 Langage séquentiel SFC Langages de programmation et structure Séquences en ET imbriquées Séquences en ET imbriquées : Si… Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_8_10 et S_8_11. Si la condition de transition b est vraie, une séquence s'exécute vers S_8_12 et S_8_13. Si la condition de transition c est vraie, une séquence s'exécute vers S_8_14, S_8_15 et S_8_ 16. Si les étapes S_8_13 et S_8_14 sont actives et que la condition de transition d est vraie, une séquence s'exécute vers S_8_17. 35006145.25 389 Langages de programmation et structure Langage séquentiel SFC Si… Alors Si les étapes S_8_12 et S_8_17 sont actives et que la condition de transition e est vraie, une séquence s'exécute vers S_8_18. ... ... Jetons multiples Objet de ce sous-chapitre Ce sous-chapitre décrit le mode "jetons multiples" pour les commandes de séquence. Ordre d'exécution à plusieurs jetons Description Les règles suivantes s'appliquent aux jetons multiples : 390 • la situation de départ est définie par un nombre défini d'étapes initiales (de 0 à 100). • dans la séquence, vous pouvez définir librement un nombre d'étapes qui seront simultanément actives. • les évolutions des états de signaux actifs se produisent le long des liaisons dirigées et sont déclenchés par la commutation d’une ou de plusieurs transitions. La séquence d’une chaîne va dans le sens des liaisons dirigées et se déroule de la partie inférieure de l’étape précédente à la partie supérieure de l’étape suivante. • une transition est validée lorsque les étapes qui la précèdent directement sont actives. Les transitions dont les étapes qui les précèdent directement ne sont pas actives, ne sont pas évaluées. • le déclenchement d’une transition s’effectue lorsque la transition est validée et que la condition de transition correspondante est vraie. • le déclenchement d’une transition entraîne la désactivation (réinitialisation) de toutes les étapes qui la précèdent directement et qui sont connectées à la transition. Ensuite, toutes les étapes qui la suivent directement sont activées. • lorsque plusieurs conditions de transition d'une série d'étapes consécutives sont remplies, la scrutation est effectué à une cadence d'une étape par cycle. • les étapes et macro-étapes peuvent être activées ou désactivées par d'autres sections non SFC ou par des opérations utilisateur. • si une étape active est simultanément activée et désactivée, l'étape reste active. 35006145.25 Langage séquentiel SFC Langages de programmation et structure • vous pouvez utiliser des macroétapes. Les sections de macro-étapes peuvent également comporter des étapes initiales. • dans les divergences en OU, plusieurs branches peuvent être actives simultanément. Le résultat des conditions de transition des transitions qui suivent la divergence en OU déterminera quelle branche sera exécutée. Les transitions des branches sont exécutées en parallèle. Les branches dont la transition est remplie deviennent actives. Les branches en OU ne doivent pas être regroupées à leur issue par une convergence en OU ou par des sauts. • si vous voulez mettre en oeuvre des sauts vers ou depuis une branche en ET, vous pouvez valider une option correspondante. Dans ce cas, les branches en ET ne doivent pas être regroupées à leur issue par une convergence en ET. • des appels de sous-programmes peuvent être utilisés dans une section d'action. • vous pouvez générer des jetons multiples à l'aide des éléments suivants : • ◦ étapes initiales multiples, ◦ divergences en OU ou en ET non refermées, ◦ sauts associés à des séquences en OU ou en ET, ◦ activation d'étapes à l'aide du bloc de commande SFC SETSTEP depuis une section non-SFC ou à l'aide d'instructions de commande SFC. les jetons sont terminés par les actions suivantes : ◦ rencontre simultanée de deux jetons ou plus dans une même étape, ◦ désactivation d'étapes à l'aide du bloc de commande SFC RESETSTEP depuis une section non-SFC ou à l'aide d'instructions de commande SFC. Séquence en OU Séquences en OU En mode de jetons multiples, l'utilisateur peut définir le comportement de l'évaluation des conditions de transition dans les divergences en OU. Les solutions suivantes sont possibles : • Traitement de gauche à droite avec arrêt après la première transition active (choix de 1 parmi n). Cela correspond au comportement des séquences en OU avec jeton unique, page 380. • Traitement en parallèle de toutes les transitions de la divergence en OU (choix de x parmi n) 35006145.25 391 Langages de programmation et structure Langage séquentiel SFC Choix de x parmi n Dans le mode multijeton, plusieurs commutations peuvent être validées parallèlement (choix de x parmi n). Les branches à exécuter sont déterminées par le résultat des conditions des transitions qui suivent la divergence en OU. Les transitions des branches sont toutes exécutées. Toutes les branches dont les conditions de transition sont satisfaites sont activées. Si aucune des transitions n'est vraie, l’étape validée à ce moment-là reste valide. Choix de x parmi n : Si... Alors Si S_5_10 est active et que la condition de transition a est vraie alors que b est fausse, une séquence est exécutée de S_5_10 vers S_5_11. Si S_5_10 est active et que la condition de transition a est fausse alors que b est vraie, une séquence est exécutée de S_5_10 vers S_5_12. Si S_5_10 est active et que les conditions de transition a et b sont vraies, une séquence est exécutée de S_5_10 vers S_5_11 et S_5_12. L'activation en parallèle des deux branches en OU génère un deuxième jeton. Les deux jetons fonctionnent maintenant en parallèle, ce qui veut dire que les étapes S_5_11 et S_5_12 sont actives en même temps. Jeton 1 (S_5_11) Si... 392 Jeton 2 (S_5_12) Alors Si... Alors 35006145.25 Langage séquentiel SFC Si la condition de transition c est vraie, Langages de programmation et structure une séquence est exécutée de S_5_11 vers S_5_13. Si la condition de transition d est vraie, une séquence est exécutée de S_5_12 vers S_5_13. Si S_5_13 est encore active (jeton 1) en raison de l'activation de la condition de transition c, le jeton 2 s'arrête et la séquence est exécutée à nouveau en mode monojeton. Si S_5_13 n'est plus active (jeton 1), elle est réactivée par le jeton 2 et les deux jetons continuent d'opérer en parallèle (mode multijeton). Si vous désirez que les divergences en OU soient validées de manière exclusive dans ce mode, vous devez le mentionner explicitement dans la logique de transition. Exemple : Terminaison d'une divergence en OU par une convergence en ET Si une divergence en OU est refermée par une convergence en ET, cela peut déclencher un blocage de la séquence. Terminaison d'une divergence en OU par une convergence en ET : 35006145.25 393 Langages de programmation et structure Langage séquentiel SFC Si… Alors Si la condition de transition a est vraie et que b est fausse, une séquence s'exécute vers S_6_1. Comme les étapes S_6_1 et S_6_2 sont liées par une convergence en ET, il n'est pas possible de quitter la divergence parce que S_6_1 et S_6_2 ne peuvent jamais être actives en même temps. (Soit S_6_1 est activée avec la condition de transition a, soit S_6_2 est activée avec la condition de transition b.) Par conséquent, S_6_1 et S_6_2 ne peuvent jamais être actives en même temps et la séquence est bloquée. Ce blocage peut être levé, par exemple par un deuxième jeton décalé dans le temps et exécuté via la transition b. Séquences en ET Séquences en ET Pour les divergences en ET, la validation d'une seule transition active plusieurs étapes (branches) en parallèle (32 au maximum). Ceci est valable aussi bien pour le jeton unique que pour les jetons multiples. Traitement des séquences en ET : 394 35006145.25 Langage séquentiel SFC Langages de programmation et structure Si… Alors Si S_5_10 est active et que la condition de transition a (faisant partie de la transition commune) est également vraie, une séquence s'exécute de S_5_10 vers S_5_11, S_5_ 12 et S_5_13. Si les étapes S_5_11, S_5_12 et S_5_13 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si les étapes S_5_14, S_5_15 et S_5_16 sont actives en même temps et que la condition de transition e (faisant partie de la transition commune) est vraie, une séquence est exécutée de S_5_14, S_5_15 et S_5_ 16 vers S_5_17. Terminaison d'une divergence en ET par une convergence en OU Pour les jetons multiples, il est possible de terminer les divergences en ET par une convergence en OU au lieu d'une convergence en ET. Terminaison d'une séquence en ET par une divergence en OU (variante 1) : Si... Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_5_1 et S_5_2. Si les étapes S_5_1 et S_5_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition b est vraie et que c est fausse, une séquence s'exécute vers S_5_3. Un deuxième jeton est créé par la séquence exécutée sur la convergence en OU de sortie de la séquence en ET. Les deux jetons opèrent en parallèle, ce qui signifie que S_5_2 et S_5_3 sont actives en même temps. Jeton 1 (S_5_3) Si... L'étape S_5_3 est active. 35006145.25 Jeton 2 (S_5_2) Alors Si... Alors L'étape S_5_2 est active. 395 Langages de programmation et structure Langage séquentiel SFC Si la condition de transition c est vraie, une séquence s'exécute vers S_5_3. Si S_5_3 est encore active (jeton 1), le jeton 2 s'arrête et la séquence est exécutée à nouveau en mode de jeton unique. Si S_5_3 n'est plus active (jeton 1), elle est réactivée par le jeton 2 et les deux jetons continuent à être exécutés en parallèle (mode multijeton). Terminaison d'une séquence en ET par une divergence en OU (variante 2) : Si... Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_5_1 et S_5_2. Un deuxième jeton est créé par la séquence exécutée sur la convergence en OU de sortie de la séquence en ET. Les deux jetons fonctionnent en parallèle, ce qui veut dire que les étapes S_5_1 et S_5_2 sont actives en même temps. Jeton 1 (S_5_2) Si... Jeton 2 (S_5_1) Alors L'étape S_5_2 est active. Si... Alors L'étape S_5_1 est active. Si la condition de transition b est vraie, une séquence s'exécute vers S_5_2. Si S_5_2 est encore active (jeton 1), le jeton 2 s'arrête et le traitement de la séquence continue en mode jeton unique. Si l'étape S_5_2 n'est plus active (jeton 1), elle est réactivée par le jeton 2 et les deux jetons continuent à être exécutés en parallèle (mode multijeton). Utilisation d'une divergence en OU dans une séquence en ET Si une seule divergence en OU est utilisée dans une séquence en ET, cela peut déclencher un blocage de la séquence. 396 35006145.25 Langage séquentiel SFC Langages de programmation et structure Utilisation d'une divergence en OU dans une séquence en ET : Si… Alors Si la condition de transition a est vraie, une séquence est exécutée vers S_7_1 et S_7_2. Si les étapes S_7_1 et S_7_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition d est vraie, une séquence s'exécute vers S_7_5. Si la condition de transition b est vraie, une séquence s'exécute vers S_7_3. Comme S_7_3, S_7_4 et S_7_5 sont reliées par une convergence en ET, il n'est pas possible de quitter la séquence en ET car S_7_3 et S_7_4 ne peuvent pas être actives en même temps. (Soit S_7_3 est activée avec la condition de transition b, soit S_7_4 est activée avec la condition de transition c.) Par conséquent, S_7_3, S_7_4 et S_7_5 ne peuvent pas non plus être actives en même temps. La séquence est bloquée. Ce blocage peut être levé, par exemple par un deuxième jeton décalé dans le temps exécuté via la transition c. Saut dans une séquence en ET Description La possibilité de sauter dans une séquence en ET ou hors d'une séquence en ET peut être activée en mode multijeton. Un saut dans une séquence en ET n'active pas toutes les branches. La transition postérieure à la convergence en ET n'étant évaluée que lorsque toutes les étapes qui la 35006145.25 397 Langages de programmation et structure Langage séquentiel SFC précèdent directement ont été validées, vous ne pouvez plus quitter la séquence en ET, elle reste bloquée. Saut dans une séquence en ET Saut dans une séquence en ET Si… Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_1_1 et S_1_2. Si les étapes S_1_1 et S_1_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si S_1_2 est active et que la condition de transition b est vraie, une séquence s'exécute de S_1_2 vers S_1_3. Si S_1_1 et S_1_3 sont active et que la condition de transition c (qui appartient à la transition commune) est vraie, une séquence s'exécute depuis S_1_1 et S_1_3 jusqu'à un saut vers S_1_1. Si S_1_1 est activée par le saut, seule la branche partant de S_1_1 est active. La branche de S_1_2 n'est pas active. Comme S_1_1 et S_1_3 ne sont pas actives en même temps, la séquence ne peut pas continuer et se bloque. Ce blocage peut être levé, par exemple, par un deuxième jeton décalé dans le temps qui réactive l'étape S_1_2. 398 35006145.25 Langage séquentiel SFC Langages de programmation et structure Saut hors d’une séquence en ET Introduction La possibilité de sauter dans ou hors d'une séquence en ET peut être activée en mode multijeton. Dans tous les cas, des jetons supplémentaires sont générés. Saut hors d’une séquence en ET Saut hors d’une séquence en ET : Si... Alors Si la condition de transition a est vraie et que b est fausse, une séquence s'exécute vers S_2_1 et S_2_2. Si les étapes S_2_1 et S_2_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition c est vraie, un saut est exécuté vers S_2_3. 35006145.25 399 Langages de programmation et structure Langage séquentiel SFC Le saut hors de la séquence en ET génère un deuxième jeton. Les deux jetons opèrent alors en parallèle, c'est-à-dire que S_2_1 et S_2_3 sont actives en même temps. Jeton 1 (S_2_1) Jeton 2 (S_2_3) Si... Alors Si... Alors Si la condition de transition e est vraie, une séquence s'exécute vers S_2_5. Si la condition de transition d est vraie, une séquence s'exécute vers S_2_4. Si la condition de transition f est vraie, une séquence s'exécute vers S_2_5. Si S_2_5 est encore active (jeton 1) en raison de l'activation de la condition de transition e, le jeton 2 s'arrête et la séquence continue en mode monojeton. Si S_2_5 n'est plus active (jeton 1), elle est réactivée par le jeton 2 et les deux jetons continuent à opérer en parallèle (mode multijeton). Saut entre deux branches d'une séquence en ET Saut entre deux branches d'une séquence en ET Si... Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_4_1 et S_4_2. Si les étapes S_4_1 et S_4_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition b est vraie, une séquence s'exécute vers S_4_3. 400 35006145.25 Langage séquentiel SFC Langages de programmation et structure Si la condition de transition c est vraie, un saut est exécuté vers S_4_1. Le saut hors d'une séquence de divergence génère un deuxième jeton. Les deux jetons opèrent en parallèle, ce qui signifie que S_4_3 et S_4_1 sont actives en même temps. Jeton 1 (S_4_3) Si... L'étape S_4_3 est traitée Jeton 2 (S_4_1) Alors Si... Alors L'étape S_4_1 est traitée Si la condition de transition b est vraie, une séquence s'exécute vers S_4_3. Si l'étape S_4_3 est encore active (jeton 1) lors de l'activation par le jeton 2, ce dernier s'arrête et la séquence continue en mode monojeton. Si l'étape S_4_3 n'est plus active (jeton 1) en raison de l'activation par le jeton 2, elle est réactivée par le jeton 2 et les deux jetons continuent d'opérer en parallèle (mode multijeton). Dans les deux cas, la séquence en ET est quittée si la condition de transition d est vraie. 35006145.25 401 Langages de programmation et structure Langage séquentiel SFC Quitter une séquence en ET avec une divergence en OU Quitter une séquence en ET avec une divergence en OU : Si... Alors Si la condition de transition a est vraie, une séquence s'exécute vers S_3_1 et S_3_2. Si les étapes S_3_1 et S_3_2 sont activées, les séquences sont exécutées indépendamment l'une de l'autre. Si la condition de transition b est fausse et que c est vraie, une séquence s'exécute vers S_3_5. La séquence exécutée sur la divergence en OU pour sortir de la séquence en ET génère un deuxième jeton. Les deux jetons opèrent en parallèle, ce qui signifie que S_3_1 et S_3_5 sont actives en même temps. Jeton 1 (S_3_1) Si... Jeton 2 (S_3_5) Alors Comme S_3_4 ne peut pas devenir active, S_3_1 reste (jeton 1) active. Si... Alors Si la condition de transition d est vraie, une séquence s'exécute vers S_3_6. Si la condition de transition a est vraie, une séquence s'exécute vers S_3_1 et S_3_2. Le jeton 2 est alors arrêté et la séquence est à nouveau exécutée en mode monojeton. 402 35006145.25 Langage séquentiel SFC Langages de programmation et structure Si la condition de transition a est vraie, une séquence s'exécute vers S_3_1 et S_3_2. Si la condition de transition b est vraie et que c est fausse, une séquence s'exécute vers S_3_4. Comme S_3_4 ne peut pas devenir active, S_3_1 reste (jeton 1) active jusqu'à ce qu'une séquence apparaisse sur S_ 3_2 (jeton 2) et que la transition soit b. Si S_4_4 n'est plus active (jeton 1), elle est réactivée par le jeton 2 et les deux jetons continuent d'opérer en parallèle (mode multijeton). (La convergence des deux jetons peut aussi être réalisée dans l'étape S_4_3.) 35006145.25 403 Langages de programmation et structure Liste d'instructions (IL) Liste d'instructions (IL) Contenu de ce chapitre Remarques générales sur le langage liste d’instructions IL.......................................................................................... 404 Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures ........................................................................... 426 Objet de ce sous-chapitre Ce chapitre décrit le langage de programmation Liste d'instructions IL conforme à la norme CEI 61131. Remarques générales sur le langage liste d’instructions IL Objet de ce sous-chapitre Ce sous-chapitre vous donne un aperçu général du langage liste d’instructions IL. Informations générales sur le langage IL (Instruction List) Présentation Le langage de programmation de type Liste d’instructions (IL) vous permet par exemple d’appeler des fonctions et des blocs fonction de façon conditionnelle ou inconditionnelle, de lancer des affectations et d’exécuter des sauts conditionnels ou inconditionnels au sein de la section. Procédure Une liste d’instructions se compose d’une chaîne d’instructions. 404 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Chaque instruction commence sur une nouvelle ligne et comprend : • un opérateur, page 412, • si nécessaire un modificateur, page 410 et • si nécessaire un ou plusieurs opérandes, page 408 Si plusieurs opérandes sont utilisés, ceux-ci sont séparés par des virgules. Un libellé, page 423 peut être placé au début de l'instruction. Ce libellé est suivi du signe deux points. Un commentaire, page 425 peut suivre l'instruction. Exemple : Structure du langage de programmation IL est un langage de programmation dit orienté accumulateur, ce qui signifie que chaque instruction utilise ou modifie le contenu de l’accumulateur (une sorte de mémoire temporaire). La norme CEI 61131 désigne cet accumulateur comme le « résultat ». Pour cette raison, une liste d'instructions doit toujours commencer par l'opérande LD (Charger en commande accumulateur). Exemple d’ajout : Commande Signification LD 10 La valeur 10 est chargée dans l'accumulateur. ADD 25 25 est ajouté au contenu de l’accumulateur. ST A Le résultat est stocké dans la variable A. Le contenu de la variable A et de l'accumulateur est 35. Toute instruction supplémentaire fonctionne avec le contenu de l'accumulateur « 35 » s'il ne commence pas par LD. Les opérations de comparaison se rapportent toujours à l’accumulateur. Le résultat booléen de la comparaison est stocké dans l’accumulateur et devient ainsi son contenu actuel. Exemple de comparaison : 35006145.25 405 Langages de programmation et structure Liste d'instructions (IL) Commande Signification LD B La valeur B est chargée dans l'accumulateur. GT 10 Le contenu de l’accumulateur est comparé à 10. ST A Le résultat de la comparaison est stocké dans la variable A. Si B est inférieur ou égal à 10, la valeur de la variable A et du contenu de l'accumulateur est 0 (FALSE). Si B est supérieur à 10, la valeur de la variable A et du contenu de l'accumulateur est 1 (TRUE). Taille de la section La taille d'une ligne d'instruction est limitée à 300 caractères. La longueur d'une section IL n'est pas limitée au sein de l'environnement de programmation. La longueur d'une section IL est en général limitée par la taille de la mémoire de l’automate. NOTE: Aucune limite de taille n'est appliquée à cette section, mais parfois lors de l'attribution d'une grande quantité de valeurs littérales ou l'utilisation de certaines instructions spécifiques, une section peut générer une erreur de génération de code durant la génération de l'application. La solution consiste donc à diviser la section en plusieurs sections pour générer l'application. Syntaxe Les identificateurs et les mots clés ne sont pas sensibles à la casse. Les caractères d’espacement et de tabulation n’ont aucune influence sur la syntaxe et ils peuvent être utilisés librement. Exception : les caractères d'espacement et de tabulation ne sont pas autorisés dans : 406 • mots-clés • valeurs littérales • valeurs • identificateurs • variables • combinaisons [par exemple: (* pour les commentaires)] 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Ordre de l'exécution L'exécution des instructions s'effectue ligne par ligne, du haut vers le bas. Cet ordre peut être modifié avec l'utilisation de parenthèses. Si, par exemple, A, B, C et D ont les valeurs 1, 2, 3 et 4, et sont calculés comme suit : LD A ADD B SUB C MUL C ST E le résultat dans E sera 0. Pour le calcul suivant : LD A ADD B SUB( LD C MUL D ) ST E le résultat dans E sera -9. Fonctionnement en cas d'erreur Les conditions suivantes seront traitées comme des erreurs lors de l'exécution d'une expression : • Division par 0. • Les opérandes n'ont pas le type de données correct pour l'opération. • Le résultat d'une opération numérique dépasse la plage de valeurs de son type de données. Conformité CEI Pour la description de la conformité CEI du langage IL, voir Conformité CEI, page 548. 35006145.25 407 Langages de programmation et structure Liste d'instructions (IL) Opérandes Présentation Les opérateurs sont utilisés sur les opérandes. Un opérande peut être : • une adresse, • un libellé, • une variable, • une variable multi-éléments, • un élément d’une variable multi-éléments, • une sortie EFB/DFB ou • un appel d'EFB/de DFB. Types de données L’opérande et le contenu actuel de l’accumulateur doivent obligatoirement avoir le même type de données. Si des opérandes de différents types de données doivent être traités, une conversion de types doit obligatoirement être effectuée auparavant. Dans l’exemple, la variable Integer i1 est convertie en une variable Real, avant d’être ajoutée à la variable Real r4. LD i1 INT_TO_REAL ADD r4 ST r3 Comme exception à cette règle, des variables du type de données TIME peuvent être multipliées par des variables du type de données INT, DINT, UINT ou UDINT ou divisées par ces dernières. Opérations autorisées : • LD timeVar1 DIV dintVar1 ST timeVar2 • LD timeVar1 MUL intVar1 ST timeVar2 408 35006145.25 Liste d'instructions (IL) • Langages de programmation et structure LD timeVar1 MUL 10 ST timeVar2 Cette fonction est considérée comme " indésirable " par la norme CEI 61131-3. Utilisation directe d'adresses Les adresses peuvent être utilisées directement (sans déclaration préalable). Dans ce cas, le type de données est directement affecté à l'adresse. L'affectation a lieu via le "préfixe de taille". Le tableau suivant indique les différents préfixes de taille. Préfixe de taille / Symbole Exemple Type de données pas de préfixe %I10, %CH203.MOD, %CH203.MOD.ERR BOOL X %MX20 BOOL B %QB102.3 BYTE W %KW43 INT D %QD100 DINT F %MF100 REAL Utilisation d'autres types de données Si d’autres types de données doivent être affectés en tant que types de données par défaut d'une adresse, cela doit faire l’objet d’une déclaration explicite. L'éditeur de variables facilite la déclaration de ces variables. Il n'est pas possible de déclarer directement le type de données d'une adresse dans une section ST (par exemple la déclaration AT %MW1 : UINT ; non permise). Exemple : les variables ci-dessous sont déclarées dans l'éditeur de variables. UnlocV1 : ARRAY [1..10] OF INT; LocV1 : ARRAY [1..10] OF INT AT %MW100; LocV2 : TIME AT %MW100; Les appels ci-dessous sont donc corrects du point de vue de la syntaxe : %MW200 := 5; LD LocV1[%MW200] ST UnlocV1[2] LD t#3s 35006145.25 409 Langages de programmation et structure Liste d'instructions (IL) ST LocV2 Accès aux variables de champs Lors d’un accès aux valeurs d’un tableau (ARRAY), seuls les libellés et les variables du type INT, DINT, UINT et UDINT sont autorisés pour l’index. L'index d'un élément ARRAY peut être négatif si la limite inférieure de la plage est négative. Exemple : enregistrement d’une valeur d’un tableau LD var1[i] ST var2.otto[4] Modificateur Présentation Les modificateurs influencent l’exécution de l’opérateur (voir Opérateurs, page 412). Tableau des modificateurs Tableau des modificateurs : Modificateur Applicable sur les opérandes du type de données Description N BOOL, BYTE, WORD, DWORD Le modificateur N est utilisé pour inverser bit à bit la valeur d’un opérande. Exemple : Dans l'exemple C est égal à 1, si A est égal à 1 et B est égal à 0. LD A ANDN B ST C C BOOL Le modificateur C est utilisé pour exécuter l’instruction associée, si la valeur de l’accu est 1 (TRUE). Exemple : Dans l'exemple, le saut après START est realize uniquement lorsque A est égal à 1 (TRUE) et B à 1 (TRUE). LD A AND B 410 35006145.25 Liste d'instructions (IL) Modificateur Langages de programmation et structure Applicable sur les opérandes du type de données Description JMPC START CN BOOL Si le modificateur C est combiné avec le modificateur N, l'instruction associée est exécutée seulement si la valeur de l'accumulateur est un 0 booléen (FALSE). Exemple : Dans l'exemple, le saut vers START est exécuté seulement si A est 0 (FALSE) et B est 0 (FALSE). LD A AND B JMPCN START ( toutes Le modificateur Parenthèse gauche ( est utilisé pour repousser l’évaluation de l’opérande, jusqu’à ce que l’opérateur Parenthèse droite ) apparaisse. Le nombre d'opérations Parenthèse droite doit être égal au nombre de modificateurs Parenthèse gauche. Il est possible d’imbriquer les parenthèses. Exemple : Dans l'exemple, E a pour valeur 1, si C et/ou D sont définis sur 1 et si A et B ont aussi la valeur 1. LD A AND B AND( C OR D ) ST E L’exemple peut être programmé de la façon suivante : LD A AND B AND( LD C OR D ) ST E 35006145.25 411 Langages de programmation et structure Liste d'instructions (IL) Opérateurs Introduction Un opérateur est un symbole pour : • une opération arithmétique à exécuter, • une opération logique à exécuter ou • l'appel d'un bloc fonction élémentaire, d'un DFB ou d'un sous-programme. Les opérateurs sont génériques, ce qui signifie qu’ils s’adaptent automatiquement au type de données des opérandes. Opérateurs de chargement et d'enregistrement Opérateurs de chargement et d’enregistrement du langage IL : 412 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Opérateur Modificateur Signification Opérandes Description LD N Charge la valeur des opérandes dans l’accumulateur Valeur littérale, variable, adresse directe avec type de données quelconque La valeur d'un opérande est chargée dans l'accumulateur via LD. La taille de l'accumulateur s'adapte automatiquement au type de données de l’opérande. Cela s'applique également aux types de données dérivés. (uniquement pour les opérandes des types de données BOOL, BYTE, WORD ou DWORD) Exemple : Dans cet exemple, la valeur de A est chargée dans l'accumulateur, ajoutée à la valeur de B et le résultat est enregistré dans E. LD A ADD B ST E ST N (uniquement pour les opérandes des types de données BOOL, BYTE, WORD ou DWORD) Enregistre la valeur de l’accumulateur dans l’opérande. Variable, adresse directe avec type de données quelconque La valeur actuelle de l’accumulateur est enregistrée dans l’opérande via ST. Le type de données de l’opérande doit correspondre au type de données de l’accumulateur. Exemple : Dans cet exemple, la valeur de A est chargée dans l'accumulateur, ajoutée à la valeur de B et le résultat est enregistré dans E. LD A ADD B ST E Le fait que ST soit suivi d'un LD ou pas détermine si l'on continue à travailler avec l'ancien résultat dans les calculs suivants. Exemple : Dans cet exemple, la valeur de A est chargée dans l'accumulateur, ajoutée à la valeur de B et le résultat est enregistré dans E. La valeur de B est ensuite déduite de celle de E (contenu actuel de l'accumulateur) et le résultat est enregistré dans C. LD A ADD B ST E SUB 3 ST C Opérateurs de paramétrage et de réinitialisation Opérateurs de paramétrage et de réinitialisation du langage IL 35006145.25 413 Langages de programmation et structure Liste d'instructions (IL) Opérateur Modificateur Signification Opérandes Description S - Définit l’opérande sur 1 si le contenu de l’accumulateur est 1. Variable, adresse directe avec type de données BOOL S permet de définir l’opérande sur 1 lorsque le contenu de l’accumulateur actuel est un 1 booléen. Exemple : Dans cet exemple, la valeur de A est chargée dans l'accumulateur. Si le contenu de l'accumulateur (valeur de A) est 1, alors OUT est défini sur 1. LD A S OUT Cet opérateur est habituellement utilisé en paire avec l’opérateur de réinitialisation R. Exemple : L'exemple suivant montre un retournement RS (réinitialisation dominante) commandé via les deux variables booléennes A et C. LD A S OUT LD C R OUT R - Définit l’opérande sur 0 si le contenu de l’accumulateur est 1. Variable, adresse directe avec type de données BOOL R permet de définir l’opérande sur 0 lorsque le contenu actuel de l’accumulateur est un 1 booléen. Exemple : Dans cet exemple, la valeur de A est chargée dans l'accumulateur. Si le contenu de l'accumulateur (valeur de A) est 1, alors OUT est défini sur 0. LD A R OUT Cet opérateur est habituellement utilisé en paire avec l’opérateur de paramétrage S. Exemple : L'exemple suivant illustre un retournement SR (paramétrage dominant) commandé via les deux variables booléennes A et C. LD A R OUT LD C S OUT 414 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Opérateurs logiques Opérateurs logiques du langage IL : Opérateur Modificateur Signification Opérandes Description AND N, N(, ( ET logique Valeur littérale, adresse directe de type de données BOOL, BYTE, WORD ou DWORD L'opérateur AND établit une liaison ET logique entre le contenu de l’accumulateur et l’opérande. Pour les types de données BYTE, WORD et DWORD, la liaison est effectuée bit par bit. Exemple : Dans l'exemple suivant, D est défini sur 1 si A, B et C sont définis sur 1. LD A AND B AND C ST D OR N, N(, ( OU logique Valeur littérale, adresse directe de type de données BOOL, BYTE, WORD ou DWORD L'opérateur OR établit une liaison OU logique entre le contenu de l’accumulateur et l’opérande. Pour les types de données BYTE, WORD et DWORD, la liaison est effectuée bit par bit. Exemple : Dans l'exemple suivant, D est défini sur 1 si A ou B ou C est défini sur 1. LD A OR B OR C ST D 35006145.25 415 Langages de programmation et structure Liste d'instructions (IL) Opérateur Modificateur Signification Opérandes Description XOR N, N(, ( OU exclusif logique Valeur littérale, adresse directe de type de données BOOL, BYTE, WORD ou DWORD L'opérateur XOR établit une liaison OU exclusif logique entre le contenu de l’accumulateur et l’opérande. Si plus de deux opérandes sont reliés, le résultat de l’opération est 1 pour un nombre impair d'états 1 et 0 pour un nombre pair d’états 1. Pour les types de données BYTE, WORD et DWORD, la liaison est effectuée bit par bit. Exemple : Dans l'exemple suivant, D est défini sur 1 si A ou B est à 1. Si A et B sont dans le même état (tous les deux à 0 ou tous les deux à 1), D est défini sur 0. LD A XOR B ST D Si plus de deux opérandes sont reliés, le résultat de l’opération est 1 pour un nombre impair d'états 1 et 0 pour un nombre pair d’états 1. Exemple : Dans l'exemple suivant, F est défini sur 1 si 1 ou 3 opérandes sont à 1. F est défini sur 0 si 0, 2 ou 4 opérandes sont à 1. LD A XOR B XOR C XOR D XOR E ST F NOT - Négation logique (complément) Contenu de l'accumulateur de type de données BOOL, BYTE, WORD ou DWORD NOT permet d'inverser le contenu de l'accumulateur bit par bit. Exemple : Dans l'exemple suivant, B est défini sur 1 si A est à 0 et B est défini sur 0 si A est à 1. LD A NOT ST B 416 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Opérateurs arithmétiques Opérateurs arithmétiques du langage de programmation IL Opérateur Modificateur Signification Opérandes Description ADD ( Addition Valeur littérale, variable, adresse directe des types de données INT, DINT, UINT, UDINT, REAL ou TIME ADD ajoute la valeur de l’opérande à la valeur du contenu de l’accumulateur. Exemple : L'exemple suivant correspond à la formule D = A + B + C LD A ADD B ADD C ST D SUB ( Soustraction Valeur littérale, variable, adresse directe des types de données INT, DINT, UINT, UDINT, REAL ou TIME SUB permet de soustraire la valeur de l'opérande du contenu de l’accumulateur. Exemple : L'exemple suivant correspond à la formule D = A - B - C LD A SUB B SUB C ST D MUL ( Multiplication Valeur littérale, variable, adresse directe des types de données INT, DINT, UINT, UDINT ou REAL MUL permet de multiplier le contenu de l’accumulateur par la valeur de l’opérande. Exemple : L'exemple suivant correspond à la formule D = A * B * C LD A MUL B MUL C ST D Remarque La fonction MULTIME de la bibliothèque obsolète est disponible pour les multiplications faisant intervenir le type de données Time. 35006145.25 417 Langages de programmation et structure Liste d'instructions (IL) Opérateur Modificateur Signification Opérandes Description DIV ( Division Valeur littérale, variable, adresse directe des types de données INT, DINT, UINT, UDINT ou REAL DIV permet de diviser le contenu de l’accumulateur par la valeur de l’opérande. Exemple : L'exemple suivant correspond à la formule D = A / B / C LD A DIV B DIV C ST D Remarque : La fonction DIVTIME de la bibliothèque obsolète est disponible pour les divisions faisant intervenir le type de données Time. MOD ( Division modulo Valeur littérale, variable, adresse directe des types de données INT, DINT, UINT ouUDINT MOD permet de diviser la valeur du premier opérande par la valeur du deuxième et de renvoyer le reste de la division (modulo) comme résultat. Exemple : Dans cet exemple • C est à 1 si A a pour valeur 7 et B a pour valeur 2 • C est à 1 si A a pour valeur 7 et B a pour valeur -2 • C est à -1 si A a pour valeur -7 et B a pour valeur 2 • C est à -1 si A a pour valeur -7 et B a pour valeur -2 LD A MOD B ST C Opérateurs de comparaison Opérateurs de comparaison du langage IL : 418 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Opérateur Modificateur Signification Opérandes Description GT ( Comparaison :> Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT ou TOD GT permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur est supérieur au contenu de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur est inférieur ou égal au contenu de l'opérande, le résultat est un 0 booléen. Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est supérieur à 10, sinon la valeur de D est 0. LD A GT 10 ST D GE ( Comparaison : >= Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT ou TOD GE permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur est supérieur ou égal au contenu de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur est inférieur au contenu de l'opérande, le résultat est un 0 booléen. Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est supérieur ou égal à 10, sinon la valeur de D est 0. LD A GE 10 ST D EQ ( Comparaison := Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT ou TOD EQ permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur est égal à celui de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur n'est pas égal à celui de l'opérande, le résultat est un 0 booléen. Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est égal à 10, sinon la valeur de D est 0. LD A EQ 10 ST D NE ( 35006145.25 Comparaison : <> Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, NE permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur n'est pas égal à celui de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur est égal à celui de l'opérande, le résultat est un 0 booléen. 419 Langages de programmation et structure Opérateur Modificateur Signification Liste d'instructions (IL) Opérandes UINT, UDINT, REAL, TIME, DATE, DT ou TOD Description Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est différent de 10, sinon la valeur de D est 0. LD A NE 10 ST D LE ( Comparaison : <= Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT ou TOD LE permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur est inférieur ou égal à celui de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur est supérieur à celui de l'opérande, le résultat est un 0 booléen. Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est inférieur ou égal à 10, sinon la valeur de D est 0. LD A LE 10 ST D LT ( Comparaison :< Valeur littérale, variable, adresse directe de type de données BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT ou TOD LT permet de comparer le contenu de l’accumulateur au contenu de l’opérande. Si le contenu de l'accumulateur est inférieur à celui de l'opérande, le résultat est un 1 booléen. Si le contenu de l'accumulateur est supérieur ou égal à celui de l'opérande, le résultat est un 0 booléen. Exemple : Dans l'exemple suivant, la valeur de D est 1 si A est inférieur à 10, sinon la valeur de D est 0. LD A LT 10 ST D Opérateurs d'appel Opérateurs d'appel du langage IL : 420 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Opérateur Modificateur Signification Opérandes Description CAL C, CN Appel d’un bloc fonction, d’un DFB ou d'un sousprogramme Nom d'instance du bloc fonction, DFB ou sous-programme CAL permet d'appeler un bloc fonction, un DFB ou un sous-programme avec ou sans conditions. Exécution d’une fonction Valeur littérale, variable, adresse directe (le type de données dépend de la fonction) Le nom de fonction vous permet d’exécuter cette fonction. Valeur littérale, variable, adresse directe (le type de données dépend de la procédure) Le nom de procédure vous permet d’exécuter cette procédure. (uniquement si le contenu de l'accumulateur présente le type de données BOOL) NOM_DE_ FONCTION NOM_DE_ PROCEDURE - - Exécution d'une procédure voir aussi Appel de blocs fonction élémentaires et de blocs fonction dérivés, page 432 et Appel de sous-programme, page 423 Voir aussi Appel de fonctions élémentaires, page 426 Voir aussi Procédures d'appel, page 444 Opérateurs de structuration Opérateurs de structuration du langage IL : 35006145.25 421 Langages de programmation et structure Liste d'instructions (IL) Opérateur Modificateur Signification Opérandes Description JMP C, CN Saut vers l'étiquette LABEL JMP permet d'effectuer un saut avec ou sans conditions vers une étiquette. (uniquement si le contenu de l'accumulateur présente le type de données BOOL) RET C, CN (uniquement si le contenu de l'accumulateur présente le type de données BOOL) Voir aussi Libellés et sauts, page 423 Retour à l'unité organisationnelle supérieure suivante du programme - Les opérateurs RETURN peuvent être utilisés dans des blocs fonction dérivés (DFB) et dans des sous-programmes (SR). Les opérateurs RETURN ne peuvent pas être utilisés dans le programme principal. • Dans un DFB, un opérateur RETURN force le retour au programme qui a appelé le DFB. ◦ Le reste de la section DFB contenant l'opérateur RETURN n'est pas exécuté. ◦ Les sections suivantes du DFB ne sont pas exécutées. Le programme qui a appelé le DFB est exécuté après le retour au programme à partir du DFB. Si le DFB est appelé par un autre DFB, le DFB qui a fait l'appel est exécuté après retour. • Dans un sous-programme (SR), un opérateur RETURN force le retour au programme qui a appelé le SR. ◦ Le reste du SR contenant l'opérateur RETURN n'est pas exécuté. Le programme qui a appelé le SR est exécuté après le retour à partir du SR. ) - Traitement d’opérations placées en attente - La parenthèse droite ) permet de lancer le traitement de l’opérateur en attente. Le nombre d'opérations Parenthèse droite doit être égal au nombre de modificateurs Parenthèse gauche. Il est possible d’imbriquer les parenthèses. Exemple : Dans l'exemple suivant, E est à 1 si C et/ou D sont à 1 et que A et B sont à 1. LD A AND B AND( C OR D 422 35006145.25 Liste d'instructions (IL) Opérateur Modificateur Langages de programmation et structure Signification Opérandes Description ) ST E Appel de sous-programme Appeler un sous-programme En IL, l'appel d'un sous-programme se compose de l'opérateur CAL, suivi du nom de la section de sous-programme, puis d'une liste de paramètres vide (facultative). Les appels de sous-programmes ne fournissent pas de valeurs de retour. Le sous-programme à appeler doit se trouver dans la même tâche que la section IL appelante. Il est possible d'appeler des sous-programmes au sein de sous-programmes. par exemple: ST A CAL SubroutineName () LD B ou ST A CAL SubroutineName LD B Les appels de sous-programmes sont un complément de la norme CEI 61131-3 et doivent être activés de manière explicite. Dans les sections d'actions SFC, les appels de sous-programmes ne sont autorisés que si le mode Multitoken a été activé. Libellés et sauts Présentation Les libellés sont les cibles des sauts. 35006145.25 423 Langages de programmation et structure Liste d'instructions (IL) Propriétés des libellés : Propriétés des libellés : • Les libellés doivent toujours être le premier élément d’une ligne. • Leur nom doit être unique dans tout le répertoire, et les majuscules et les minuscules ne sont pas différenciées. • La longueur maximale d’un libellé est de 256 caractères. • Les libellés doivent satisfaire aux conventions de dénomination CEI. • Les libellés sont séparés de l'instruction suivante par le signe deux points (:). • Les libellés doivent se trouver au début des « expressions » car seules des valeurs non définies peuvent se trouver dans l'accumulateur. Exemple : start: LD A AND B OR C ST D JMP start Propriétés des sauts : Propriétés des sauts : • Avec l'opération JMP, le saut est exécuté avec ou sans conditions vers un libellé. • JMP peut être utilisé avec les modificateurs C et CN (uniquement si le contenu de l'accumulateur est du type de données BOOL). • Les sauts sont possibles au sein des sections de DFB et de programme. • Les sauts ne sont possibles que dans la section courante. Les destinations possibles sont : 424 • La première instruction LD d'un appel EFB/DFB avec attribution de paramètres d'entrée (voir start2). • Une instruction LD normale (voir start1). • Une instruction CAL qui ne fonctionne pas avec l'attribution de paramètres d'entrée (voir start3). • Une instruction JMP (voir start4). • La fin d'une liste d'instructions (voir start5). 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Exemple start2: LD A ST counter.CU LD B ST counter.R LD C ST counter.PV CAL counter JMPCN start4 start1: LD A AND B OR C ST D JMPC start3 LD A ADD E JMP start5 start3: CAL counter ( CU:=A R:=B PV:=C ) JMP start1 LD A OR B OR C ST D start4: JMPC start1 LD C OR B start5: ST A Commentaire Description Dans l’éditeur IL, les commentaires commencent par la chaîne de caractères (* et se terminent par la chaîne de caractères *). Vous pouvez entrer un commentaire quelconque entre ces deux chaînes de caractères. Selon la norme CEI 61131-3, il n'est pas possible d'imbriquer des commentaires. Toutefois, si des commentaires sont imbriqués, ils doivent être activés de manière explicite. 35006145.25 425 Langages de programmation et structure Liste d'instructions (IL) Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures Objet de ce sous-chapitre Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures dans le langage de programmation IL. Appel de fonctions élémentaires Utilisation des fonctions Les fonctions élémentaires sont disponibles sous forme de bibliothèques. Leur logique est créée en langage de programmation C et n'est pas modifiable dans l’éditeur IL. Les fonctions n'ont pas d'état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque appel de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Pour certaines fonctions élémentaires, il est possible d'augmenter le nombre d'entrées. Les fonctions élémentaires ne renvoient qu'une seule valeur (sortie). Paramètres Pour transférer des valeurs vers ou à partir d'une fonction, il faut des « entrées » et une « sortie ». Elles sont appelées paramètres formels. Les états actuels du processus sont transmis aux paramètres formels. Ces paramètres sont dits réels. Les paramètres réels utilisables comme entrées d'une fonction sont les suivants : • Variable • Adresse • Littéral Les paramètres réels utilisables comme sorties d'une fonction sont les suivants : 426 • Variable • Adresse 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Le type des données des paramètres réels doit correspondre à celui des paramètres formels. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2) Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2) (Dans ce cas, AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...) (Dans ce cas, un changement de type explicite doit être effectué via INT_ARR_TO_WORD_ ARR (...). Pour l'appel formel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels. Le tableau suivant répertorie les types de paramètres formels auxquels une valeur doit être affectée : Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT STRUCT FB ANY Entrée - - - - + - + - VAR_IN_OUT + + + + + + / + Sortie - - - - - - / - + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Non applicable Si aucune valeur n’est affectée à un paramètre formel, la valeur initiale est utilisée lors de l’exécution de la fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. 35006145.25 427 Langages de programmation et structure Liste d'instructions (IL) Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : • Les fonctions ne sont exécutées que lorsque l'entrée EN = 1 ou lorsque l'entrée EN est inutilisée (voir aussi EN and ENO, page 431). • Toutes les fonctions génériques sont surchargées. Cela signifie que les fonctions peuvent être appelées avec ou sans la saisie du type de données. Ex. : LD i1 ADD i2 ST i3 est identique à LD i1 ADD_INT i2 ST i3 • Contrairement au langage ST, le langage IL n'autorise pas l'imbrication de fonctions. • Il existe deux façons d'appeler une fonction : ◦ Appel formel (appel avec les noms des paramètres formels) ◦ Appel informel (appel d'une fonction sans les noms des paramètres formels) Appel formel Avec ce type d'appel (incluant les noms des paramètres formels), les fonctions sont appelées via une suite d'instructions qui comprend le nom de la fonction et une liste entre parenthèses des valeurs affectées (paramètres réels) aux paramètres formels. L’ordre d’énumération des paramètres formels n'est pas important. La liste des paramètres réels peut continuer sur la ligne suivante, après une virgule. Après l'exécution de la fonction, le résultat est chargé dans l'accumulateur et peut être sauvegardé via ST. Ce type d'appel autorise l'utilisation de EN et ENO. 428 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel d'une fonction avec les noms des paramètres formels : ou LIMIT ( MN:=0, IN:=var1, MX:=var2 ) ST out Appel de la même fonction en FBD : Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Parameter, page 426). LIMIT (MN:=0, IN:=var1) ST out Appel de la même fonction en FBD : Appel informel Avec ce type d'appel (sans les noms des paramètres formels), les fonctions sont appelées via une suite d'instructions qui comprend le chargement du premier paramètre réel dans l'accumulateur, puis le nom de la fonction et, éventuellement, la liste des paramètres réels. L’ordre d’énumération des paramètres réels est important. La liste des paramètres réels 35006145.25 429 Langages de programmation et structure Liste d'instructions (IL) doit figurer sur une seule ligne. Après l'exécution de la fonction, le résultat est chargé dans l'accumulateur et peut être sauvegardé via ST. Ce type d'appel n'autorise pas l'utilisation de EN et ENO. Appel d'une fonction avec les noms des paramètres formels : Appel de la même fonction en FBD : NOTE: pour l'appel informel, la liste des paramètres réels ne doit pas figurer entre parenthèses. La norme IEC 61133-3 exige d'enlever les parenthèses, afin d'indiquer que le premier paramètre réel ne fait pas partie de la liste. Appel informel non valide d'une fonction : Si la valeur à traiter (premier paramètre réel) se trouve déjà dans l’accumulateur, l’instruction de chargement n’est plus nécessaire. LIMIT B,C ST résultat Si le résultat doit être directement utilisé, l’instruction de sauvegarde n’est plus nécessaire. LD A LIMIT_REAL B,C MUL E Si la fonction à exécuter n’a qu’une entrée, son nom n’est pas suivi d’une liste de paramètres réels. 430 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel d'une fonction avec un paramètre réel : Appel de la même fonction en FBD : EN et ENO Pour toutes les fonctions, une entrée EN et une sortie ENO peuvent être configurées. Si EN est à « 0 » lorsque la fonction est appelée, les algorithmes définis par cette dernière ne sont pas exécutés et ENO est mis à « 0 ». Si EN est à « 1 » lorsque la fonction est appelée, les algorithmes définis par la fonction sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est mis à « 0 ». Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Si ENO est mis à « 0 » (parce que EN = 0 ou suite à une erreur d'exécution), la sortie de la fonction est mise à « 0 ». Le comportement de sortie de la fonction ne dépend pas de l'appel de la fonction sans EN/ ENO ou avec EN = 1. Si EN et ENO sont utilisés, l'appel de la fonction doit être formel. LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) ST out Appel de la même fonction en FBD : 35006145.25 431 Langages de programmation et structure Liste d'instructions (IL) Appel de blocs fonction élémentaires et de blocs fonction dérivés Bloc fonction élémentaire Les blocs fonction élémentaires ont des états internes. Pour des valeurs égales aux entrées, la valeur à la sortie peut être différente à chaque exécution du bloc fonction. Pour un compteur, par exemple, la valeur de la sortie est incrémentée. Les blocs fonction peuvent comprendre plusieurs valeurs de renvoi (sorties). Bloc fonction dérivé Les blocs fonction dérivés (DFB) ont les mêmes caractéristiques que les blocs fonction élémentaires. Ils sont cependant créés par l'utilisateur dans les langages FBD, LD, IL et/ou ST. Paramètre Pour importer des valeurs dans un bloc fonction ou les exporter d'un bloc fonction, des entrées et des sorties sont nécessaires. Elles sont appelées paramètres formels. Les états actuels du processus sont transmis aux paramètres formels. Ces objets sont appelés paramètres réels. Pour les entrées de bloc fonction, on peut utiliser un paramètre réel de type : • Variable • Adresse • Littéral Pour les sorties de bloc fonction, on peut utiliser des paramètres réels de type : • Variable • Adresse Le type des données des paramètres réels doit correspondre à celui des paramètres formels. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. Exception : Pour les paramètres formels génériques de type ANY_BIT, des paramètres réels de type INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. 432 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2) Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2) (Dans ce cas, AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...) (Dans ce cas, un changement de type explicite doit être effectué via INT_ARR_TO_WORD_ ARR (...). Il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Le tableau suivant répertorie les types de paramètres formels auxquels une valeur doit être affectée : Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT DEVICE DDT FB ANY EFB : Entrée - - - - / / / - EFB : VAR_IN_ OUT + + + + + / / + EFB : Sortie - - + + + / / + DFB : Entrée - - - - / + / - DFB : VAR_IN_ OUT + + + + + + / + DFB : Sortie - - + / / / / + + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Sans objet Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pour exécuter le bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. Si aucune valeur n'est affectée à un paramètre formel et que le bloc fonction/DFB a été instancié à plusieurs reprises, les instances appelées par la suite utilisent l'ancienne valeur. 35006145.25 433 Langages de programmation et structure Liste d'instructions (IL) NOTE: une broche d'entrée ANY_ARRAY_xxx non connectée crée automatiquement un tableau masqué comportant 1 élément. Variables publiques Certains blocs fonction disposent non seulement d'entrées et de sorties, mais également de variables publiques. Ces variables permettent de transmettre des valeurs statistiques (valeurs non influencées par le procédé) au bloc fonction. Elles sont donc utilisées lors du paramétrage du bloc fonction. Les variables publiques sont une extension de la norme IEC 61131-3. Des valeurs sont affectées aux variables publiques via leur valeur initiale ou par les instructions de chargement et d'enregistrement. Exemple : Les variables publiques sont ensuite lues via le nom d'instance du bloc fonction et le nom de la variable publique. Exemple : Variables privées Certains blocs fonction disposent non seulement d'entrées, de sorties et de variables publiques, mais également de variables privées. A l'instar des variables publiques, ces variables servent à transmettre des valeurs statistiques (non influencées par le processus) au bloc fonction. 434 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Le programme utilisateur n'a pas accès à ces variables. Seule la table d'animation en a la capacité. NOTE: les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via la table d'animation. Les variables privées sont une extension de la norme IEC 61131-3. Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : • Les fonctions ne sont exécutées que lorsque l'entrée EN = 1 ou lorsque l'entrée EN est inutilisée (voir aussi EN et ENO, page 441). • L'affectation des variables aux sorties ANY ou ARRAY doit être effectuée avec l'opérateur => (voir également Forme formelle de CAL avec liste des paramètres d'entrée, page 436). Une affectation en dehors du cadre de l'appel de bloc fonction n'est pas possible. L'instruction My_Var := My_SAH.OUT n'est pas valide, la sortie OUT du bloc fonction SAH étant de type ANY. L'instruction Cal My_SAH (OUT=>My_Var) est en revanche valide. • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 442. • L'utilisation des blocs fonction comprend deux parties : • ◦ la déclaration, page 436, ◦ l'appel du bloc fonction. Il existe quatre façons d'appeler un bloc fonction : ◦ forme formelle de CAL avec liste des paramètres d'entrée, page 436 (appel avec les noms des paramètres formels) Des variables peuvent ainsi être affectées aux sorties via l'opérateur =>. ◦ forme informelle de CAL avec liste des paramètres d'entrée, page 437 (appel sans les noms des paramètres formels) ◦ CAL et chargement/sauvegarde, page 438 du paramètre d'entrée ◦ utilisation des opérateurs d’entrée, page 439 35006145.25 435 Langages de programmation et structure • Liste d'instructions (IL) Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, à l'exception des instances d'EFB de communication qui ne peuvent être appelées qu'une seule fois (voir Appel multiple d'une instance de bloc fonction, page 441). Déclaration Avant d'être appelé, un bloc fonction doit être déclaré dans l'éditeur de variables. Forme formelle de CAL avec liste des paramètres d'entrée Dans cette forme d'appel (avec les noms des paramètres formels), les blocs fonction sont appelés via une instruction CAL suivie du nom d'instance du bloc fonction et d'une liste entre parenthèses des affectations de paramètres réels aux paramètres formels. L'affectation des paramètres formels d'entrée s'effectue via := et l'affectation des paramètres formels de sortie via =>. L'ordre d'énumération des paramètres formels d'entrée et de sortie n'est pas important. La liste des paramètres réels peut être éditée directement après une virgule. Il est possible d'utiliser EN et ENO avec ce type d'appel. Appel d'un bloc fonction dans la forme formelle de CAL avec liste des paramètres d'entrée : ou CAL MY_COUNT (CU:=var1, R:=reset, PV:=100, Q=>out, CV=>current) Appel du même bloc fonction en FBD : 436 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir aussi Paramètre, page 432). CAL MY_COUNT (CU:=var1, R:=reset, Q=>out, CV=>current) Appel du même bloc fonction en FBD : La valeur d'une sortie de bloc fonction peut être stockée puis sauvegardée en chargeant la sortie du bloc fonction (nom d'instance du bloc fonction séparé par un point ou saisie du paramètre formel). Chargement et sauvegarde des sorties de bloc fonction : Forme informelle de CAL avec liste des paramètres d'entrée Dans cette forme d'appel (sans les noms des paramètres formels), les blocs fonction sont appelés via l'instruction CAL suivie du nom d'instance du bloc fonction et d'une liste entre parenthèses des paramètres réels des entrées et sorties. L'ordre d'énumération des paramètres réels dans l'appel d’un bloc fonction est important. La liste des paramètres réels ne peut pas être éditée. EN et ENO ne peuvent pas être utilisés avec ce type d'appel. Appel d'un bloc fonction dans la forme informelle de CAL avec liste des paramètres d'entrée : 35006145.25 437 Langages de programmation et structure Liste d'instructions (IL) Appel du même bloc fonction en FBD : Même lors d'un appel informel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Paramètre, page 432). Il s'agit d'une extension de la norme IEC 61131-3, qui doit donc être activée de manière explicite. Un champ de paramètre vide permet d'omettre un paramètre. Appel avec un champ de paramètre vide : CAL MY_COUNT (var1, , 100, out, current) Appel du même bloc fonction en FBD : Si les paramètres formels sont omis à la fin, aucun champ de paramètre vide ne doit être utilisé. MY_COUNT (var1, reset) Appel du même bloc fonction en FBD : CAL et chargement/sauvegarde des paramètres d'entrée Vous pouvez appeler les blocs fonction à l’aide d’une liste d’instructions demandant le chargement des paramètres réels suivi de leur sauvegarde dans les paramètres formels, puis de l’instruction CAL. L’ordre de chargement et de sauvegarde des paramètres n'est pas important. 438 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Seules les instructions de chargement et de sauvegarde du bloc fonction en cours de configuration doivent figurer entre la première instruction de chargement des paramètres réels et l'appel du bloc fonction. Aucune autre instruction n'est autorisée à cet endroit. Il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir aussi Paramètre, page 432). CAL avec chargement/sauvegarde des paramètres d'entrée : Utilisation des opérateurs d'entrée Vous pouvez appeler les blocs fonction à l’aide d’une liste d’instructions demandant le chargement des paramètres réels suivi de leur sauvegarde dans les paramètres formels, puis d’un opérateur d’entrée. L’ordre de chargement et de sauvegarde des paramètres n’est pas important. Seules les instructions de chargement et de sauvegarde du bloc fonction en cours de configuration doivent figurer entre la première instruction de chargement des paramètres réels et l'opérateur d'entrée du bloc fonction. Aucune autre instruction n’est autorisée à cet endroit. Ce type d'appel n'autorise pas l'utilisation de EN et ENO. Il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir aussi Paramètre, page 432). Reportez-vous au tableau pour connaître les opérateurs d’entrée disponibles pour les différents blocs fonction. Aucun autre opérateur d'entrée n'est disponible. Opérateur d’entrée Type de FB S1, R SR S, R1 RS CLK R_TRIG 35006145.25 439 Langages de programmation et structure Opérateur d’entrée Type de FB CLK F_TRIG CU, R, PV CTU_INT, CTU_DINT, CTU_UINT, CTU_UDINT CD, LD, PV CTD_INT, CTD_DINT, CTD_UINT, CTD_UDINT CU, CD, R, LD, PV CTUD_INT, CTUD_DINT, CTUD_UINT, CTUD_UDINT IN, PT TP IN, PT TON IN, PT TOF Liste d'instructions (IL) Utilisation des opérateurs d’entrée : Appel d'un bloc fonction sans entrées Même si le bloc fonction ne dispose pas d'entrées ou si les entrées ne sont pas à paramétrer, vous devez appeler le bloc fonction avant de pouvoir utiliser ses sorties. Faute de quoi, le système transmettra les valeurs initiales des sorties, c'est-à-dire « 0 ». Ex. : Appel du bloc fonction en IL : CAL MY_CLOCK ()CAL MY_COUNT (CU:=MY_CLOCK.CLK1, R:=reset, PV:=100) LD MY_COUNT.Q ST out LD MY_COUNT.CV ST current 440 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel du même bloc fonction en FBD : Appel multiple d'une instance de bloc fonction Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, à l'exception des instances d'EFB de communication qui ne peuvent être appelées qu'une seule fois. L'appel multiple d'une même instance de DFB/bloc fonction est, par exemple, utile dans les cas suivants : • Si le bloc fonction/DFB n'a aucune valeur interne ou s'il n'est pas nécessaire pour un traitement ultérieur. Dans ce cas, multiplier les appels de la même instance de DFB/bloc fonction permet d'économiser de l'espace mémoire, car le code du bloc fonction/DFB n'est chargé qu'une seule fois. Le bloc fonction/DFB est, pour ainsi dire, traité comme une « fonction ». • Si le bloc fonction/DFB a une valeur interne censée influencer différents segments du programme, la valeur d'un compteur, par exemple, doit être augmentée en différents endroits du programme. Dans ce cas, l'appel multiple de la même instance de bloc fonction/DFB permet de ne pas sauvegarder les résultats intermédiaires en vue d'un traitement ultérieur à un autre endroit du programme. EN et ENO Pour tous les blocs fonction/DFB, une entrée EN et une sortie ENO peuvent être configurées. Si la valeur de EN est égale à « 0 », lorsque le bloc fonction/DFB est appelé, les algorithmes définis par ce dernier ne sont pas exécutés et ENO est mis à « 0 ». Au cas où la valeur d'EN est égale à « 1 », lorsque le bloc fonction/DFB est appelé, les algorithmes définis par ce dernier sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est réglé sur « 0 ». 35006145.25 441 Langages de programmation et structure Liste d'instructions (IL) Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Si ENO est mis à « 0 » (du fait de EN = 0 ou d'une erreur d'exécution), les sorties du bloc fonction/DFB conservent l'état qu'elles avaient au dernier cycle exécuté correctement. Le comportement aux sorties des blocs fonction/DFB est le même, que les blocs fonction/ DFB aient été appelés sans EN/ENO ou avec EN = 1. Si EN/ENO doivent être utilisés, l'appel du bloc fonction doit être exécuté sous forme d'appel formel. L'affectation d'une variable à ENO doit être effectuée avec l'opérateur =>. CAL MY_COUNT (EN:=1, CU:=var1, R:=reset, PV:=value, ENO=>error, Q=>out, CV=>current) ; Appel du même bloc fonction en FBD : Variable VAR_IN_OUT Très souvent, on utilise des blocs fonction pour lire une variable au niveau de l’entrée (variables d’entrée), traiter celle-ci, et sortir les valeurs modifiées de la même variable (variables de sortie). Ce type particulier de variable d'entrée/de sortie est également appelé variable VAR_IN_OUT. Il convient de noter les particularités suivantes lors de l’utilisation de blocs fonction/DFB avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • il est interdit d'affecter des valeurs littérales ou des constantes aux entrées VAR_IN_ OUT. • aucune valeur ne doit être affectée aux sorties VAR_IN_OUT. • Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Appel d'un bloc fonction avec une variable VAR_IN_OUT en IL : CAL MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) 442 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel du même bloc fonction en FBD : Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Par conséquent, les appels de blocs fonction suivants ne sont pas valides : Appel non valide, exemple 1 : LD V1 Chargement de la variable V1 dans l'accumulateur CAL InOutFB Appel d'un bloc fonction avec un paramètre VAR_IN_OUT. L'accumulateur contient désormais une référence à un paramètre VAR_IN_ OUT. AND V2 Opération ET sur le contenu de l'accumulateur et la variable V2. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT (contenu de l'accumulateur) en dehors de l'appel d'un bloc fonction. Appel non valide, exemple 2 : LD V1 Chargement de la variable V1 dans l'accumulateur AND InOutFB.inout Opération ET sur le contenu de l'accumulateur et une référence à un paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel du bloc fonction. Les appels de blocs fonction suivants sont en revanche valides : Appel valide, exemple 1 : CAL InOutFB (IN1:=V1,inout:=V2 Appel d'un bloc fonction avec le paramètre VAR_IN_OUT et affectation du paramètre réel dans l'appel de bloc fonction. Appel valide, exemple 2 : 35006145.25 443 Langages de programmation et structure Liste d'instructions (IL) LD V1 Chargement de la variable V1 dans l'accumulateur ST InOutFB.IN1 Affectation du contenu de l'accumulateur au paramètre IN1 du bloc fonction IN1. CAL InOutFB(inout:=V2) Appel du bloc fonction avec affectation du paramètre réel (V2) au paramètre VAR_IN_OUT. Procédures d'appel Procédure Les procédures sont disponibles sous forme de bibliothèques. La logique des procédures est établie en langage de programmation C et ne peut pas être modifiée dans l’éditeur IL. Comme les fonctions, les procédures n'ont pas d'états internes. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque exécution de la procédure. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Contrairement aux fonctions, les procédures ne livrent aucune valeur de renvoi et prennent en charge les variables VAR_IN_OUT. Les procédures sont un complément de la norme CEI 61131-3 et doivent être activées de manière explicite. Paramètres Pour importer des valeurs dans une procédure ou exporter des valeurs d'une procédure, on a besoin d'« entrées » et de « sorties ». Ces entrées et ces sorties sont appelées « paramètres formels ». Les états actuels du processus sont transmis aux paramètres formels. Ce sont les paramètres réels. On peut utiliser comme paramètre réel des entrées de procédure : • variable, • adresse, • valeur littérale. On peut utiliser comme paramètre réel des sorties de procédure : 444 • variable, • adresse. 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Le type de données du paramètre réel doit correspondre au type de données du paramètre formel. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. Il s'agit d'une extension de la norme CEI 61131-3, qui doit être activée de manière explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2) Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2) (Dans ce cas AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...) (Dans ce cas, un changement de type explicite doit être effectué via INT_ARR_TO_WORD_ ARR (...). Pour l'appel formel, il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Pour connaître les types de paramètre formel pour lesquels cela est cependant impératif, veuillez vous reporter au tableau. Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT STRUCT FB ANY Entrée - - + + + + + + VAR_IN_OUT + + + + + + / + Sortie - - - - - - / + + paramètre réel impératif - paramètre réel non impératif / non applicable Si aucune valeur n’est affectée à un paramètre formel, la valeur initiale est utilisée pendant l’exécution du bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. 35006145.25 445 Langages de programmation et structure Liste d'instructions (IL) Remarques sur la programmation Veuillez tenir compte des remarques qui suivent sur la programmation : • Les procédures ne sont exécutées que lorsque l'entrée EN = 1 ou lorsque l'entrée EN est désactivée (voir aussi EN and ENO, page 449). • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 449. • Il existe deux façons d'appeler une procédure : ◦ appel formel (appel d'une fonction avec les noms des paramètres formels) Des variables peuvent alors être affectées aux sorties via l'opérateur => (appel d'un bloc fonction sous forme abrégée). ◦ appel informel (appel d'une fonction sans les noms des paramètres formels) Appel formel Avec cette forme d'appel (avec les noms des paramètres formels), les procédures sont appelées via une suite d'instructions composée d'une instruction optionnelle CAL suivie du nom de la procédure et d'une liste entre parenthèses des affectations de paramètres réels aux paramètres formels. L'affectation des paramètres formels des entrées s'effectue via l'affectation := et l'affectation des paramètres formels des sorties via l'affectation =>. L’ordre d’énumération des paramètres formels d'entrées et de sorties n'est pas important. La liste des paramètres réels peut être éditée directement après une virgule. Il est possible d'utiliser EN et ENO avec ce type d'appel. Appel d'une procédure avec les noms des paramètres formels : ou CAL PROC (IN1:=var1, IN2:=var1, OUT1=>result1,OUT2=>result2) ou PROC (IN1:=var1, IN2:=var1, OUT1=>result1, OUT2=>result2) ou CAL PROC (IN1:=var1, IN2:=var1, OUT1=>result1, OUT2=>result2) 446 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel de la même procédure dans FBD : Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Parameter, page 444). PROC (IN1:=var1, OUT1=>result1, OUT2=>result2) ou CAL PROC (IN1:=var1, OUT1=>result1, OUT2=>result2) Appel de la même procédure dans FBD : Appel informel sans instruction CAL Avec cette forme d'appel (sans les noms des paramètres formels), les procédures sont appelées via une suite d'instructions qui comprend le chargement du premier paramètre réel dans l'accumulateur suivi du nom de la procédure, lui-même suivi d'une liste optionnelle des paramètres réels des entrées et sorties. L’ordre d’énumération des paramètres réels est important. La liste des paramètres réels ne peut pas être éditée. EN et ENO ne peuvent pas être utilisés avec ce type d'appel. Appel d'une procédure avec les noms des paramètres formels : Appel de la même procédure dans FBD : 35006145.25 447 Langages de programmation et structure Liste d'instructions (IL) NOTE: veuillez noter que pour l'appel informel, la liste des paramètres réels ne doit pas être indiquée entre parenthèses. La norme CEI 61133-3 exige dans ce cas d'enlever les parenthèses, afin d'indiquer que le premier paramètre réel ne fait pas partie de la liste. Appel informel non valide d'une procédure : Si la valeur à traiter (premier paramètre réel) se trouve déjà dans l’accumulateur, l’instruction de chargement n’est plus nécessaire. EXAMP1 var2,result1,result2 Appel informel avec instruction CAL Avec cette forme d'appel, les procédures sont appelées par une suite d'instructions composée de l'instruction CAL suivie du nom de la procédure, suivi lui-même de la liste entre parenthèses des paramètres réels des entrées et sorties. L’ordre d’énumération des paramètres réels est important. La liste des paramètres réels ne peut pas être éditée. EN et ENO ne peuvent pas être utilisés avec ce type d'appel. Appel d'une procédure avec les noms de paramètres formels et l'instruction CAL : ou CAL PROC (var1, var2, result1, result2) Appel de la même procédure dans FBD : NOTE: contrairement à l'appel informel sans instruction CAL, dans le cadre de l'appel informel avec instruction CAL, la valeur à traiter (le premier paramètre réel) n'est pas chargée explicitement dans l'accumulateur, mais fait partie de la liste des paramètres réels. Par conséquent, lors d'appels informels à l'aide d'une instruction CAL, la liste des paramètres réels doit être indiquée entre parenthèses. 448 35006145.25 Liste d'instructions (IL) Langages de programmation et structure EN et ENO Pour toutes les procédures, une entrée EN et une sortie ENO peuvent être configurées. Si la valeur d’EN est égale à « 0 », lorsque la procédure est appelée, les algorithmes définis par cette dernière ne sont pas exécutés et ENO est mis sur « 0 ». Si la valeur d’EN est égale à « 1 », lorsque la procédure est appelée, les algorithmes définis par la procédure sont exécutés. Une fois les algorithmes exécutés, la valeur de la sortie ENO est réglée sur « 1 ». En cas d'erreur lors de l'exécution de ces algorithmes, la sortie ENO est réglée sur « 0 ». Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Si ENO est mis sur « 0 » (en raison de EN=0 ou d'une erreur d'exécution), les sorties de la procédure sont mises sur « 0 ». Si EN/ENO doivent être utilisés, l'appel de la procédure doit être exécuté comme un appel formel. L'affectation d'une variable à ENO doit être effectuée avec l'opérateur =>. PROC (EN:=1, IN1:=var1, IN2:=var2, ENO=>error, OUT1=>result1, OUT2= >result2) ; Appel de la même procédure dans FBD : Variable VAR_IN_OUT Très souvent, on utilise des procédures pour lire une variable au niveau de l’entrée (variables d’entrée), traiter celle-ci, et sortir à nouveau les valeurs modifiées de la même variable (variables de sortie). Ce cas particulier d'une variable d'entrée/de sortie est également appelé variable VAR_IN_OUT. Il convient de noter les particularités suivantes dans le cas de l’utilisation de procédures avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • il est interdit d’affecter des valeurs littérales ou des constantes aux entrées VAR_IN_ OUT. • aucune valeur ne doit être affectée aux sorties VAR_IN_OUT. • les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel de procédure. 35006145.25 449 Langages de programmation et structure Liste d'instructions (IL) Appel d'une procédure avec une variable VAR_IN_OUT dans IL : PROC3 (IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) ; Appel de la même procédure dans FBD : Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel de procédure. Les appels de procédure suivants sont par conséquent invalides : Appel non valide, exemple 1 : LD V1 Chargement de la variable V1 dans l'accumulateur CAL InOutProc Appel d'une procédure avec un paramètre VAR_IN_OUT. L'accumulateur est alors chargé avec référence à un paramètre VAR_IN_ OUT. AND V2 Liaison ET du contenu de l'accumulateur avec la variable V2. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT (contenu de l'accumulateur) en dehors de l'appel de procédure. Appel non valide, exemple 2 : LD V1 Chargement de la variable V1 dans l'accumulateur AND InOutProc.inout Liaison ET du contenu de l'accumulateur avec référence à un paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel de procédure. Appel non valide, exemple 3 : LD V1 Chargement de la variable V1 dans l'accumulateur InOutFB V2 Appel de la procédure avec affectation du paramètre réel (V2) au paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée car, pour ce type d'appel de procédure, le paramètre VAR_IN_OUT continuerait d'être utilisable dans l'accumulateur. Les appels de procédure suivants sont en revanche valides : 450 35006145.25 Liste d'instructions (IL) Langages de programmation et structure Appel valide, exemple 1 : CAL InOutProc (IN1:=V1,inout: =V2) Appel d'une procédure avec un paramètre VAR_IN_OUT et affectation formelle des paramètres réels au sein de l'appel de procédure. Appel valide, exemple 2 : InOutProc (IN1:=V1,inout:=V2) Appel d'une procédure avec un paramètre VAR_IN_OUT et affectation formelle des paramètres réels au sein de l'appel de procédure. Appel valide, exemple 3 : CAL InOutProc (V1,V2) 35006145.25 Appel d'une procédure avec un paramètre VAR_IN_OUT et affectation informelle des paramètres réels au sein de l'appel de procédure. 451 Langages de programmation et structure Texte structuré (ST) Texte structuré (ST) Contenu de ce chapitre Remarques générales sur le littéral structuré ST ...................... 452 Instructions............................................................................ 462 Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures ............................................................................ 477 Objet de ce sous-chapitre Ce chapitre décrit le langage de programmation Littéral structuré ST conforme à la norme CEI 61131. Remarques générales sur le littéral structuré ST Objet de ce sous-chapitre Ce sous-chapitre vous donne un aperçu général sur le littéral structuré ST. Informations générales sur le langage ST (Structured Text) Présentation Le langage de texte structuré (ST) permet notamment d'appeler des blocs fonction, d'exécuter des fonctions et des attributions, d'exécuter des instructions conditionnelles et de répéter des tâches. Expression Le langage ST utilise ce que l'on appelle des « expressions ». Les expressions sont des constructions composées d'opérateurs et d'opérandes qui fournissent une valeur lors de leur exécution. 452 35006145.25 Texte structuré (ST) Langages de programmation et structure Opérateur Les opérateurs sont des symboles représentant les opérations à exécuter. Opérande Les opérateurs sont utilisés sur les opérandes. Les opérandes sont des variables, des valeurs littérales, des entrées/sorties FFB, etc. Procédure Les instructions permettent d'attribuer les valeurs renvoyées par des expressions à des paramètres réels et de structurer et contrôler les expressions. Représentation d'une section ST Représentation d'une section ST : Taille de la section La taille d'une ligne d'instruction est limitée à 300 caractères. La longueur d'une section ST n'est pas limitée dans l'environnement de programmation. La longueur d'une section ST est en général limitée par la taille de la mémoire de l'automate. 35006145.25 453 Langages de programmation et structure Texte structuré (ST) NOTE: Aucune limite de taille n'est appliquée à cette section, mais parfois lors de l'attribution d'une grande quantité de valeurs littérales ou l'utilisation de certaines instructions spécifiques, une section peut générer une erreur de génération de code durant la génération de l'application. La solution consiste donc à diviser la section en plusieurs sections pour générer l'application. Syntaxe Les identificateurs et les mots clés ne sont pas sensibles à la casse. Exception : les caractères d'espacement et de tabulation ne sont pas autorisés dans : • mots-clés • valeurs littérales • valeurs • identificateurs • variables • combinaisons [par exemple: (* pour les commentaires)] Ordre de l'exécution L’interprétation d’une expression consiste à appliquer les opérateurs aux opérandes, selon l'ordre défini par le rang des opérateurs (voir Tableau des opérateurs, page 457). L’opérateur de rang le plus élevé dans l'expression est exécuté en premier, l’opérateur de rang inférieur suivant est ensuite exécuté, etc. jusqu’à la fin de l'interprétation. Les opérateurs de même rang sont exécutés de gauche à droite, tels qu'ils sont écrits dans l’expression. Cet ordre peut être modifié avec l'utilisation de parenthèses. Si, par exemple, A, B, C et D ont les valeurs 1, 2, 3 et 4, et sont calculés comme suit : A+B-C*D Le résultat est -9. Pour le calcul suivant : (A+B-C)*D Le résultat sera 0. Si un opérateur a deux opérandes, l'opérande gauche est exécutée en premier. Par exemple, dans l'expression SIN(A)*COS(B) L'expression SIN(A) est calculée en premier, puis COS(B) est calculé, et enfin le produit est calculé. 454 35006145.25 Texte structuré (ST) Langages de programmation et structure Fonctionnement en cas d'erreur Les conditions suivantes seront traitées comme des erreurs lors de l'exécution d'une expression : • Division par 0. • Les opérandes n'ont pas le type de données correct pour l'opération. • Le résultat d'une opération numérique dépasse la plage de valeurs de son type de données. En cas d'erreur lors de l'exécution d'une opération, le bit système correspondant (%S) est activé (si cela est pris en charge par l'automate utilisé). Conformité CEI Pour plus d'informations sur la conformité CEI du langage ST, voir Conformité CEI, page 548. Opérandes Présentation Un opérande peut être : • une adresse, • un libellé, • une variable, • une variable multi-éléments, • un élément d’une variable multi-éléments, • un appel de fonction ou • une sortie FFB. Types de données Les types de données des opérandes à traiter dans une instruction doivent être identiques. Si des opérandes de différents types de données doivent être traités, une conversion de types doit obligatoirement être effectuée auparavant. Dans l’exemple, la variable Integer i1 est convertie en une variable Real, avant d’être ajoutée à la variable Real r4. 35006145.25 455 Langages de programmation et structure Texte structuré (ST) r3 := r4 + SIN(INT_TO_REAL(i1)) ; Comme exception à cette règle, des variables du type de données TIME peuvent être multipliées par des variables du type de données INT, DINT, UINT ou UDINT ou divisées par ces dernières. Opérations autorisées : • timeVar1 := timeVar2 / dintVar1; • timeVar1 := timeVar2 * intVar1; • timeVar := 10 * time#10s; Cette fonction est considérée comme " indésirable " par la norme CEI 61131-3. Utilisation directe d'adresses Les adresses peuvent être utilisées directement (sans déclaration préalable). Dans ce cas, le type de données est directement affecté à l'adresse. L'affectation a lieu via le "préfixe de taille". Le tableau suivant indique les différents préfixes de taille : Préfixe de taille / Symbole Exemple Type de données pas de préfixe %I10, %CH203.MOD, %CH203.MOD.ERR BOOL X %MX20 BOOL B %QB102.3 BYTE W %KW43 INT D %QD100 DINT F %MF100 REAL Utilisation d'autres types de données Si d’autres types de données doivent être affectés en tant que types de données par défaut d'une adresse, cela doit faire l’objet d’une déclaration explicite. L'éditeur de variables facilite la déclaration de ces variables. Il n'est pas possible de déclarer directement le type de données d'une adresse dans une section ST (par ex. la déclaration AT %MW1 : UINT ; non permise). Exemple : les variables ci-dessous sont déclarées dans l'éditeur de variables. UnlocV1 : ARRAY [1..10] OF INT; LocV1 : ARRAY [1..10] OF INT AT %MW100; LocV2 : TIME AT %MW100; 456 35006145.25 Texte structuré (ST) Langages de programmation et structure Les appels ci-dessous sont donc corrects du point de vue de la syntaxe : %MW200 := 5; UnlocV1[2] := LocV1[%MW200]; LocV2 := t#3s; Accès aux variables de champs Lors d’un accès aux variables de champ (ARRAY), seuls les libellés et les variables du type INT, UINT, DINT et UDINT sont autorisés dans l’indication d’index. L'index d'un élément ARRAY peut être négatif si la limite inférieure de la plage est négative. Exemple : Emploi de variables de zone var1[i] := 8 ; var2.otto[4] := var3 ; var4[1+i+j*5] := 4 ; Opérateurs Introduction Un opérateur est un symbole pour : • une opération arithmétique à effectuer ou • une opération logique à exécuter ou • un traitement de fonction (appel) Les opérateurs sont génériques, ce qui signifie qu’ils s’adaptent automatiquement au type de données de l’opérande. Tableau des opérateurs Les opérateurs sont exécutés en fonction de leur rang, voir également Ordre de l'exécution, page 454. Opérateurs du langage ST : 35006145.25 457 Langages de programmation et structure Texte structuré (ST) Opérateur Signification Rang Opérandes possibles Description () Mise entre parenthèses 1 (le plus haut) Expression La mise entre parenthèses est utilisée pour modifier la séquence d’exécution des opérateurs. Exemple : Si les opérandes A, B, C and D ont respectivement les valeurs 1, 2, 3 et 4, alors A+B-C*D donne le résultat -9 et (A+B-C)*D donne le résultat 0. FUNCNAME (liste des paramètres réels) Traitement de fonction (appel) 2 Expression, valeur littérale, variable, adresse (tous les types de données) Le traitement de fonction est utilisé pour exécuter des fonctions (voir Appel de fonctions élémentaires, page 477). - Négation 3 Expression, valeur littérale, variable, adresse du type de données INT, DINT ou REAL Dans le cas de la négation -, le système change le signe de la valeur de l’opérande. Exemple : Dans l'exemple, OUT a la valeur -4 si IN1 est égal à 4. OUT := - IN1 ; NON Complément 3 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD Dans le cas de NOT, le système effectue une inversion de chaque bit de l’opérande. Exemple : Dans l'exemple, OUT a la valeur 0011001100 si IN1 est égal à 1100110011. OUT := NOT IN1 ; ** Elévation de puissance 4 Expression, valeur littérale, variable, adresse du type de données REAL (base) et INT, DINT, UINT, UDINT ou REAL (exposant) Dans le cas de l’élévation à une puissance plus haute **, la valeur du premier opérande (base) est augmentée de la valeur du second opérande (exposant). Exemple : Dans l'exemple, OUT est égal à 625,0 si IN1 est 5,0 et IN2 4,0. OUT := IN1 ** IN2 ; * Multiplication 5 Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT ou REAL Dans le cas de la multiplication *, la valeur du premier opérande est multipliée par la valeur du deuxième opérande. Exemple : Dans l'exemple, OUT est égal à 20.0 si IN1 est 5,0 et IN2 4,0. OUT := IN1 * IN2 ; 458 35006145.25 Texte structuré (ST) Opérateur Signification Langages de programmation et structure Rang Opérandes possibles Description Note : La fonction MULTIME de la bibliothèque obsolète est destinée aux multiplications du type de données Time. / Division 5 Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT ou REAL Dans le cas de la division /, la valeur du premier opérande est divisée par la valeur du deuxième opérande. Exemple : Dans l'exemple, OUT est égal à 4.0 si IN1 est 20.0 et IN2 5.0. OUT := IN1 / IN2 ; Note : La fonction DIVTIME de la bibliothèque obsolète est destinée aux divisions du type de données Time. MOD Modulo 5 Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT ou UDINT Dans le cas de MOD, la valeur du premier opérande est divisée par la valeur du deuxième opérande et le reste de la division (Modulo) est sorti comme résultat. Exemple : Dans cet exemple, • OUT est 1, si IN1 est 7 et IN2 2 • OUT est 1, si IN1 est 7 et IN2 -2 • OUT est -1, si IN1 est -7 et IN2 2 • OUT est -1, si IN1 est -7 et IN2 -2 OUT := IN1 MOD IN2 ; + Addition 6 Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT, REAL ou TIME Dans le cas de l’addition +, la valeur du premier opérande est ajoutée à la valeur du deuxième opérande. Exemple : Dans cet exemple, OUT est égal à 9 si IN1 est 7 et IN2 2. OUT := IN1 + IN2 ; - Soustraction 6 Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT, REAL ou TIME Dans le cas de la soustraction -, la valeur du deuxième opérande est soustraite à la valeur du premier opérande. Exemple : Dans l'exemple, OUT est égal à 6 si IN1 est 10 et IN2 4. OUT := IN1 - IN2 ; < Comparaison "inférieur à" 35006145.25 7 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD < permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est inférieure à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est supérieure ou égale à celle du second, le résultat est un 0 booléen. 459 Langages de programmation et structure Opérateur Signification Rang Texte structuré (ST) Opérandes possibles Description Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est inférieur à 10. Sinon, il vaut 0. OUT := IN1 < 10 ; > Comparaison "supérieur à" 7 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD > permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est supérieure à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est inférieure ou égale à celle du second, le résultat est un 0 booléen. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est supérieur à 10. Si IN1 est inférieur à 0, alors il vaut 0. OUT := IN1 > 10 ; <= Comparaison "inférieur ou égal à" 7 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD <= permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est inférieure ou égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est supérieure à celle du second, le résultat est un 0 booléen. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est inférieur ou égal à 10. Sinon, il est égal à 0. OUT := IN1 <= 10 ; >= Comparaison "supérieur ou égal à" 7 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD >= permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est supérieure ou égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est inférieure à celle du second, le résultat est un 0 booléen. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est supérieur ou égal à 10. Sinon, il est égal à 0. OUT := IN1 >= 10 ; = Egalité 8 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD = permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est différente de celle du second, le résultat est un 0 booléen. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est égal à 10. Sinon, il vaut 0. 460 35006145.25 Texte structuré (ST) Opérateur Signification Langages de programmation et structure Rang Opérandes possibles Description OUT := IN1 = 10 ; <> Inégalité 8 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD <> permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est différente de celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est égale à celle du second, le résultat est un 0 booléen. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 n'est pas égal à 10. Sinon, il vaut 0. OUT := IN1 <> 10 ; & ET logique 9 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD & permet d'établir une liaison ET logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit. Exemple : Dans les exemples OUT est égal à 1 si IN1, IN2 et IN3 valent 1. OUT := IN1 & IN2 & IN3 ; AND ET logique 9 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD AND permet d'établir une liaison ET logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit. Exemple : Dans les exemples OUT est égal à 1 si IN1, IN2 et IN3 valent 1. OUT := IN1 AND IN2 AND IN3 ; 35006145.25 461 Langages de programmation et structure Texte structuré (ST) Opérateur Signification Rang Opérandes possibles Description XOR OU exclusif logique 10 Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD XOR permet d'établir une liaison OU exclusif logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit. Exemple : Dans l'exemple, OUT est égal à 1 si IN1 et IN2 ne sont pas égaux. Si IN1 et IN2 ont le même état (tous deux 0 ou 1), OUT est sur 0. OUT := IN1 XOR IN2 ; Si plus de deux opérandes sont reliés, le résultat de l’opération est à l’état 1 pour un nombre impair d'états 1 et à l’état 0 pour un nombre pair d’états 1. Exemple : Dans l'exemple, OUT est égal à 1 si 1 ou 3 opérandes valent 1. OUT vaut 0 si 0, 2 ou 4 opérandes valent 1. OUT := IN1 XOR IN2 XOR IN3 XOR IN4 ; OR OU logique 11 (le plus bas) Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD OR permet d'établir une liaison OU logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit. Exemple : Dans l'exemple, OUT a la valeur 1 si IN1, IN2 ou IN3 est sur 1. OUT := IN1 OR IN2 OR IN3 ; Instructions Objet de ce sous-chapitre Ce sous-chapitre décrit les instructions du langage de programmation Littéral structuré ST. Instructions Description Les instructions sont les "commandes" du langage de programmation ST. 462 35006145.25 Texte structuré (ST) Langages de programmation et structure Les instructions doivent être terminées par des points-virgules. Une ligne peut contenir plusieurs instructions (séparées par des points-virgules). Un point-virgule isolé représente une instruction d'espacement, page 475. Affectation Présentation L’affectation remplace la valeur courante d’une variable à élément unique ou multiple par le résultat de l’évaluation d’une expression. Une affectation est composée d’une indication de variables à gauche, suivie de l'opérateur d’affectation :=, suivi de l’expression à évaluer. Les deux variables (côtés gauche et droit de l'opérateur d'affectation) doivent être du même type de données. Les variables ARRAY font exception. A l'issue de l'activation explicite de l'option correspondante, l'affectation de deux variables ARRAY ayant des longueurs différentes est possible. Affectation de la valeur d'une variable à une autre variable Les affectations sont utilisées pour affecter la valeur d’une variable à une autre variable. L’instruction A := B ; est par exemple utilisée pour remplacer la valeur de la variable A par la valeur courante de la variable B. Si A et B ont un type de données élémentaire, la valeur individuelle de B est transmise vers A. Si A et B ont un type de données dérivé, les valeurs de tous les éléments de B sont transmises vers A. Affectation d'une valeur littérale à une variable Les affectations sont utilisées pour affecter une valeur littérale à une variable. L’instruction C := 25 ; est par exemple utilisée pour affecter la valeur 25 à la variable C. 35006145.25 463 Langages de programmation et structure Texte structuré (ST) Affectation de la valeur d'une opération à une variable Les affectations sont utilisées pour affecter à une variable une valeur qui est le résultat d’une opération. L’instruction X := (A+B-C)*D ; est par exemple utilisée pour affecter à la variable X le résultat de l’opération (A+B-C)*D. Affectation de la valeur d'un FFB à une variable Les affectations sont utilisées pour affecter à une variable une valeur renvoyée par une fonction ou un bloc fonction. L’instruction B := MOD(C,A) ; est par exemple utilisée pour appeler la fonction MOD (modulo) et affecter le résultat du calcul à la variable B. L’instruction A := MY_TON.Q ; est par exemple utilisée pour affecter à la variable A la valeur de la sortie Q du bloc fonction MY_TON (instance du bloc fonction TON). (Il ne s'agit pas d'un appel de bloc fonction) ) Affectations multiples Les affectations multiples sont une extension de la norme CEI 61131-3 et doivent être activées de manière explicite. Même à l'issue de l'activation, les affectations multiples ne sont PAS autorisées dans les cas suivants : • dans la liste de paramètres d'un appel de bloc fonction • dans la liste d'éléments pour l'initialisation de variables structurées L’instruction X := Y := Z est permise. Les instructions FB(in1 := 1, In2 := In3 := 2) ; et strucVar := (comp1 := 1, comp2 := comp3 := 2) ; 464 35006145.25 Texte structuré (ST) Langages de programmation et structure ne sont pas permises. Affectations entre variables ARRAY et WORD/DWORD. Les affectations entre variables ARRAY et WORD/DWORD ne sont possibles que si une conversion de types a été effectuée au préalable, par ex. : %Q3.0:16 := INT_TO_AR_BOOL(%MW20) ; Les fonctions de conversion suivantes sont disponibles (bibliothèque générale, famille ARRAY) : • MOVE_BOOL_AREBOOL • MOVE_WORD_ARWORD • MOVE_DWORD_ARDWORD • MOVE_INT_ARINT • MOVE_DINT_ARDINT • MOVE_REAL_ARREAL Instruction de sélection IF...THEN...END_IF Description L’instruction IF détermine qu’une instruction ou un groupe d’instructions peuvent être exécutés uniquement si la valeur de l’expression booléenne correspondante est 1 (vrai). Si la valeur de la condition est 0 (faux), l’instruction ou le groupe d’instructions ne sont pas exécutés. L’instruction THEN marque la fin d’une condition et le début d’une ou plusieurs instructions. L’instruction END_IF marque la fin de l’instruction ou des instructions. NOTE: 74 Vous pouvez imbriquer des instructions IF...THEN...END_IF pour créer des instructions de sélection complexes. Exemple IF...THEN...END_IF La condition peut être exprimée via une variable booléenne. Si la valeur de FLAG est 1, les instructions sont exécutées. Si la valeur de FLAG est 0, elles ne sont pas exécutées. IF FLAG THEN C:=SIN(A) * COS(B) ; 35006145.25 465 Langages de programmation et structure Texte structuré (ST) B:=C - A ; END_IF ; La condition peut également être exprimée via une opération qui livre un résultat booléen. Si A est supérieur à B, les instructions sont exécutées. Si A est inférieur ou égal à B, elles ne sont pas exécutées. IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ; END_IF ; Exemple IF NOT...THEN...END_IF NOT permet d’inverser la condition (les deux instructions sont exécutées si le résultat est 0). IF NOT FLAG THEN C:=SIN_REAL(A) * COS_REAL(B) ; B:=C - A ; END_IF ; Voir aussi ELSE, page 466 ELSIF, page 467 Instruction de sélection ELSE Description L'instruction ELSE vient toujours après une instruction IF...THEN, ELSIF...THEN ou CASE. Si l’instruction ELSE vient après IF ou ELSIF, l’instruction ou le groupe d’instructions sont exécutées seulement si les expressions booléennes correspondantes des instructions IF et ELSIF ont la valeur 0 (faux). Si la condition de l’instruction IF ou ELSIF est à 1 (vrai), l’instruction ou le groupe d’instructions ne sont pas exécutées. Si l’instruction ELSE vient après CASE, l’instruction ou le groupe d’instructions ne sont exécutées que si aucun repère ne contient la valeur du sélecteur. Si un repère contient la valeur du sélecteur, l’instruction ou le groupe d’instructions ne sont pas exécutées. 466 35006145.25 Texte structuré (ST) Langages de programmation et structure NOTE: Vous pouvez imbriquer autant d'instructions IF...THEN...ELSE...END_IF que vous voulez pour créer des instructions de sélection complexes. Exemple d'utilisation de ELSE IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ; ELSE C:=A + B ; B:=C * A ; END_IF ; Voir aussi IF, page 465 ELSIF, page 467 CASE, page 468 Instruction de sélection ELSIF...THEN Description L'instruction ELSIF vient toujours après une instruction IF...THEN. L’instruction ELSIF détermine qu'une instruction ou un groupe d’instructions sont exécutées seulement si l’expression booléenne correspondant à l’instruction IF a la valeur 0 (faux) et que l’expression booléenne correspondant à l’instruction ELSIF a la valeur 1 (vrai). Si la condition de l’instruction IF est vraie (1) ou que la condition de l’instruction ELSIF est fausse (0), l’instruction ou le groupe d’instructions ne sont pas exécutées. L’instruction THEN marque la fin des conditions ELSIF et le début de l'instruction (ou des instructions). NOTE: Vous pouvez imbriquer autant d'instructions IF...THEN...ELSIF... THEN...END_IF que vous voulez pour créer des instructions de sélection complexes. Exemple d'utilisation de l'instruction ELSIF...THEN IF A>B THEN C:=SIN(A) * COS(B) ; 35006145.25 467 Langages de programmation et structure Texte structuré (ST) B:=SUB(C,A) ; ELSIF A=B THEN C:=ADD(A,B) ; B:=MUL(C,A) ; END_IF ; Exemple d'instructions imbriquées IF A>B THEN IF B=C THEN C:=SIN(A) * COS(B) ; ELSE B:=SUB(C,A) ; END_IF ; ELSIF A=B THEN C:=ADD(A,B) ; B:=MUL(C,A) ; ELSE C:=DIV(A,B) ; END_IF ; Voir aussi IF, page 465 ELSE, page 466 Instruction de sélection CASE...OF...END_CASE Description L’instruction CASE est composée d’une expression de type de données INT (le "sélecteur") et d’une liste de groupes d’instructions. Chaque groupe porte un repère constitué d’un ou de plusieurs entiers (INT, DINT, UINT, UDINT) ou de plages de valeurs entières. L’on exécutera le premier groupe d’instructions dont le repère contient la valeur calculée du sélecteur. Sinon aucune des instructions n’est exécutée. L’instruction OF caractérise le début des repères. A l’intérieur d’une instruction CASE, on peut définir une instruction ELSE dont les instructions seront exécutées si aucun repère ne contient la valeur du sélecteur. L’instruction END_CASE marque la fin de l’instruction (ou des instructions). 468 35006145.25 Texte structuré (ST) Langages de programmation et structure Exemple d'utilisation de CASE...OF...END_CASE Exemple d'utilisation de CASE...OF...END_CASE Voir aussi ELSE, page 466 Instruction récurrente FOR...TO...BY...DO...END_FOR Description L’instruction FOR est utilisée si le nombre d’occurrences peut être défini à l’avance. Sinon, l'instruction WHILE, page 471 ou REPEAT, page 472 est utilisée. L’instruction FOR reprend une chaîne d’instructions jusqu’à l’instruction END_FOR. Le nombre d'occurrences est déterminé par la valeur initiale, la valeur finale et la variable de commande. La variable de commande, la valeur initiale et la valeur finale doivent être du même type de données (INT, UINT, DINT ou UDINT). La variable de commande, la variable initiale et la variable finale peuvent être modifiées avec une instruction récurrente. Cela constitue un complément de la norme CEI 61131-3. L’instruction FOR incrémente la valeur de la variable de commande d'une valeur initiale à une valeur finale. Par défaut, la valeur de l'incrément est 1. Si une autre valeur doit être utilisée, il est possible d'indiquer explicitement une valeur d'incrément (variable ou constante). La valeur de la variable de commande est contrôlée avant chaque nouvelle exécution de la boucle. La boucle est abandonnée si ladite valeur est en dehors de la plage de la valeur initiale et de la valeur finale. 35006145.25 469 Langages de programmation et structure Texte structuré (ST) Avant la première exécution de la boucle, on contrôlera si l’incrément des variables de commande progresse vers la valeur finale à partir de la valeur initiale. Si ce n'est pas le cas (par ex. valeur initiale ≤ valeur finale et incrément négatif), la boucle n'est pas traitée. La valeur de la variable de commande n'est pas définie en dehors de la boucle. L’instruction DO marque la fin de la définition d'une récurrence et le début de l'instruction (ou des instructions). L'ocurrence peut être interrompue avant la fin l'aide de l'instruction EXIT. L’instruction END_ FOR marque la fin de l'instruction (ou des instructions). Exemple : FOR avec incrément 1 FOR avec incrément 1 FOR avec incrément différent de 1 Si un autre incrément que doit être utilisé, vous pouvez le définir avec BY. L'incrément, la valeur initiale, la valeur finale et la variable de commande doivent être du même type de données (DINT ou INT). Le critère qui détermine le sens de traitement (comptage, décomptage) est le signe de l'expression BY Si cette expression est positive, la boucle est comptée, si elle est négative, la boucle est décomptée. Exemple : comptage à deux étapes Comptage à deux étapes 470 35006145.25 Texte structuré (ST) Langages de programmation et structure Exemple : décomptage Décomptage FOR i:= 10 TO 1 BY -1 DO (* BY < 0 : Backwards.loop *) C:= C * COS(B) ; (* Instruction exécutée 10 x *) END_FOR ; Exemple : Boucles « uniques » Les boucles de l'exemple sont exécutées exactement une fois puisque la valeur initiale = la valeur finale. Et ce n'est pas important si l'incrément est positif ou négatif. FOR i:= 10 TO 10 DO (* Boucle unique *) C:= C * COS(B) ; END_FOR ; ou, FOR i:= 10 TO 10 BY -1 DO (* Boucle unique *) C:= C * COS(B) ; END_FOR ; Exemple : Boucles critiques Si dans l'exemple l'incrément est j > 0, alors l'instruction est exécutée. Si j < 0, les instructions ne sont pas exécutées car la situation Valeur initiale < Valeur finale ne permet qu'un incrément ≥ 0. Si Si = 0, les instructions sont exécutées et on obtient une boucle sans fin car avec un incrément de 0 la valeur finale n'est jamais atteinte. FOR i:= 1 TO 10 BY j DO C:= C * COS(B) ; END_FOR ; Instruction de répétition WHILE...DO...END_WHILE Description L’instruction WHILE provoque l’exécution répétée d’une chaîne d’instructions jusqu’à ce que l'expression booléenne correspondante soit 0 (fausse). Si l'expression est fausse dès le départ, le groupe d’instructions n’est jamais exécuté. 35006145.25 471 Langages de programmation et structure Texte structuré (ST) L’instruction DO marque la fin de la définition d'une répétition et le début de l'instruction (ou des instructions). L'ocurrence peut être interrompue précocément à l'aide de l'instruction EXIT. L’instruction END_WHILE marque la fin de l’instruction (des instructions). Dans les cas suivants, WHILE ne doit pas être utilisé car cela risque de former une boucle sans fin entraînant l'échec du programme : • WHILE ne doit pas servir à effectuer une synchronisation entre processus, par exemple une "boucle d'attente" avec une condition de fin définie en externe. • WHILE ne doit pas être utilisé dans un algorithme car la réalisation de la condition de fin de boucle ou l'exécution d'une instruction EXIT ne peuvent pas être garanties. Exemple d'utilisation de WHILE...DO...END_WHILE x := 1; WHILE x <= 100 DO x := x + 4; END_WHILE ; Voir aussi EXIT, page 473 Instruction REPEAT...UNTIL...END_REPEAT Description L'instruction REPEAT provoque la répétition (au moins une fois) d'une chaîne d’instructions jusqu'à ce que la condition booléenne associée ait la valeur 1 (vraie). L'instruction UNTIL marque la condition de fin. La répétition peut être interrompue prématurément à l'aide de l'instruction EXIT. L’instruction END_REPEAT marque la fin de l’instruction (ou des instructions) à répéter. Dans les cas suivants, la structure REPEAT ne doit pas être utilisée car elle forme une boucle sans fin qui entraîne l'échec du programme : • 472 REPEAT ne doit pas être utilisé pour effectuer une synchronisation entre processus, par exemple une "boucle d'attente" avec une condition de fin définie en externe. 35006145.25 Texte structuré (ST) • Langages de programmation et structure REPEAT ne doit pas être utilisé dans un algorithme pour lequel la satisfaction de la condition de fin de boucle ou l'exécution d'une instruction EXIT ne peuvent pas être garanties. Exemple de boucle REPEAT...UNTIL...END_REPEAT x := -1; REPEAT x := x + 2; UNTIL x >= 101 END_REPEAT; Voir également EXIT, page 473 Instruction EXIT dans les répétitions Description L'instruction EXIT permet d'arrêter une répétition (FOR, WHILE, REPEAT) avant que la condition de fin ne soit remplie. Lorsque l'instruction EXIT fait partie d'une répétition imbriquée, la boucle la plus profonde (qui contient l'instruction EXIT) est ignorée. L'instruction située immédiatement après la fin de boucle (END_FOR, END_WHILE ou END_REPEAT) est alors exécutée. Exemple d'instruction EXIT Si FLAG est sur 0, SUM est égal à 15 une fois les instructions exécutées. Si FLAG est sur 1, SUM est égal à 6 une fois les instructions exécutées. SUM := 0 ; FOR I := 1 TO 3 DO FOR J := 1 TO 2 DO IF FLAG=1 THEN EXIT ; END_IF ; SUM := SUM + J ; END_FOR ; 35006145.25 473 Langages de programmation et structure Texte structuré (ST) SUM := SUM + I ; END_FOR ; Voir également CASE, page 468 WHILE, page 471 REPEAT, page 472 Appel de sous-programme Appel de sous-programme L'appel d'un sous-programme comprend le nom de la section du sous-programme suivi d'une liste de paramètres vide. Les appels de sous-programmes ne fournissent pas de valeurs de retour. Le sous-programme à appeler doit se trouver dans la même tâche que la section ST appelante. Il est possible d'appeler des sous-programmes au sein de sous-programmes. par ex. Nom du sous-programme () ; Les appels de sous-programme sont un complément de la norme CEI 61131-3 et doivent être activés de manière explicite. Dans les sections d'actions SFC, les appels de sous-programmes ne sont autorisés que si le mode Multitoken a été activé. RETURN Description Les instructions RETURN peuvent être utilisées dans des blocs fonction dérivés (DFB) et dans des sous-programmes (SR). Les instructions RETURN ne peuvent pas être utilisées dans le programme principal. 474 35006145.25 Texte structuré (ST) • Langages de programmation et structure Dans un DFB, une instruction RETURN force le retour au programme qui a appelé le DFB. ◦ Le reste de la section de DFB contenant l'instruction RETURN n'est pas exécuté. ◦ Les sections suivantes du DFB ne sont pas exécutées. Le programme qui a appelé le DFB est exécuté après le retour au programme à partir du DFB. Si le DFB est appelé par un autre DFB, le DFB qui a fait l'appel est exécuté après retour. • Dans un sous-programme (SR), une instruction RETURN force le retour au programme qui a appelé le SR. ◦ Le reste du SR contenant l'instruction RETURN n'est pas exécuté. Le programme qui a appelé le SR est exécuté après le retour à partir du SR. Instruction d'espacement Description Un seul point-virgule ; représente une instruction d'espacement. par ex. IF x THEN ; ELSE .. Dans l'exemple l'instruction qui suit l'instruction THEN est une instruction d'espacement. Cela signifie que le programme quitte l'instruction IF dès que la condition IF atteint 1. Etiquettes et sauts Introduction Les étiquettes servent de cible à atteindre pour les sauts. Les étiquettes et les sauts en ST constituent une extension de la norme CEI 61131-3 et doivent être activés explicitement. Propriétés des étiquettes Propriétés des étiquettes : • Les étiquettes doivent toujours être le premier élément d’une ligne. 35006145.25 475 Langages de programmation et structure Texte structuré (ST) • Elles ne peuvent se trouver que devant les instructions du premier ordre (pas dans les boucles). • Leur nom doit être unique dans tout le répertoire, les majuscules et les minuscules n'étant pas différenciées. • Les étiquettes doivent satisfaire aux conventions de dénomination générales. • Les étiquettes sont séparées par deux points : de l'instruction suivante. Propriétés des sauts Propriétés des sauts • Les sauts sont possibles au sein des sections de DFB et de programme. • Les sauts ne sont possibles que dans la section courante. Exemple IF var1 THEN JMP START; : :START: ... Commentaire Description Dans l’éditeur ST, les commentaires commencent par la chaîne de caractères (* et se terminent par la chaîne de caractères *). Vous pouvez entrer un commentaire quelconque entre ces deux chaînes de caractères. Les commentaires peuvent être saisis à n'importe quelle position dans l'éditeur ST, à l'exception des mots clés, libellés, identificateurs et variables. Selon la norme CEI 61131-3, il n'est pas possible d'imbriquer des commentaires. Toutefois, si des commentaires sont imbriqués, ils doivent être activés de manière explicite. 476 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures Objet de ce sous-chapitre Appel de fonctions élémentaires, de blocs fonction élémentaires, de blocs fonction dérivés et de procédures dans le langage de programmation ST. Appel de fonctions élémentaires Fonctions élémentaires Les fonctions élémentaires sont disponibles sous forme de bibliothèques. Leur logique est créée en langage de programmation C et n'est pas modifiable dans l’éditeur ST. Les fonctions n'ont pas d'état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque exécution de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Certaines fonctions élémentaires peuvent être étendues à plus de deux entrées. Les fonctions élémentaires ne renvoient qu'une seule valeur (sortie). Paramètres Pour transférer des valeurs vers ou à partir d'une fonction, il faut des « entrées » et une « sortie ». Elles sont appelées paramètres formels. Les états actuels du processus sont transmis aux paramètres formels. Ces paramètres sont dits réels. Les paramètres réels utilisables comme entrées d'une fonction sont les suivants : • Variable Adresse Littéral Expression ST Les paramètres réels utilisables comme sorties d'une fonction sont les suivants : • Variable 35006145.25 477 Langages de programmation et structure • Texte structuré (ST) Adresse Le type des données des paramètres réels doit correspondre à celui des paramètres formels. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2); Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (Dans ce cas AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...); (Dans ce cas, une conversion de type explicite doit être effectuée à l'aide de INT_ARR_TO_ WORD_ARR (...);. Il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Le tableau suivant répertorie les types de paramètres formels auxquels une valeur doit être affectée : Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT STRUCT FB ANY Entrée - - - - + - + - VAR_IN_OUT + + + + + + / + Sortie - - - - - - / - + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Non applicable Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pour exécuter le bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. 478 35006145.25 Texte structuré (ST) Langages de programmation et structure Remarques sur la programmation Gardez à l'esprit les remarques suivantes : • Toutes les fonctions génériques sont surchargées. Cela signifie que les fonctions peuvent être appelées avec ou sans la saisie du type de données. Ex. : i1 := ADD (i2, 3); est identique à i1 := ADD_INT (i2, 3); • Les fonctions peuvent être imbriquées, page 481. • Les fonctions ne sont exécutées que si l'entrée EN = 1 ou si l'entrée EN, page 482 est inutilisée. • Il existe deux façons d'appeler une fonction : ◦ Appel formel (appel d'une fonction avec les noms des paramètres formels) ◦ Appel informel (appel d'une fonction sans les noms des paramètres formels) Appel formel Lors d'un appel formel (avec les noms des paramètres formels), l'appel se compose du paramètre réel de la sortie, de l'instruction d'affectation :=, du nom de la fonction et d'une liste entre parenthèses des valeurs affectées (paramètres réels) aux paramètres formels. L’ordre d’énumération des paramètres formels dans l’appel d’une fonction n’est pas important. Ce type d'appel autorise l'utilisation de EN et ENO. Appel d'une fonction avec les noms des paramètres formels : Appel de la même fonction en FBD : 35006145.25 479 Langages de programmation et structure Texte structuré (ST) Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à chaque paramètre, page 477 formel. out:=LIMIT (MN:=0, IN:=var1) ; Appel de la même fonction en FBD : Appel informel Lors d'un appel informel (sans les noms des paramètres formels), l'appel se compose du paramètre réel de la sortie, du symbole de l'instruction d'affectation :=, du nom de la fonction et d'une liste entre parenthèses des paramètres réels des entrées. L’ordre d’énumération des paramètres réels dans l’appel d’une fonction est important. Ce type d'appel n'autorise pas l'utilisation de EN et ENO. Appel d'une fonction sans les noms des paramètres formels : Appel de la même fonction en FBD : Lors d'un appel informel, il n'est pas nécessaire d'affecter une valeur à chaque paramètre, page 477 formel. Il s'agit d'une extension de la norme CEI 61131-3 et doit donc être activée de manière explicite. Un champ de paramètre vide permet d'omettre un paramètre. Appel avec un champ de paramètre vide : out:=LIMIT ( ,var1, 5 + var) ; 480 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel de la même fonction en FBD : Si les paramètres formels sont omis à la fin, aucun champ de paramètre vide ne doit être utilisé. out:=LIMIT (0, var1) ; Appel de la même fonction en FBD : Imbrication de fonctions L'appel d'une fonction peut contenir l'appel d'autres fonctions. Le nombre d'imbrications est illimité. Appel imbriqué d'une fonction de tableau : out:=LIMIT (MN:=4, IN:=MUL(IN1:=var1, IN2:=var2), MX:=5) ; Appel de la même fonction en FBD : Les fonctions qui renvoient une valeur de type ANY_ARRAY ne peuvent pas être utilisées dans un appel de fonction. Imbrication non autorisée avec ANY_ARRAY : Le type de données ANY_ARRAY est autorisé comme valeur de renvoi de la fonction appelé ou comme paramètre des fonctions imbriquées. 35006145.25 481 Langages de programmation et structure Texte structuré (ST) Imbrication autorisée avec ANY_ARRAY : EN et ENO Pour toutes les fonctions, une entrée EN et une sortie ENO peuvent être configurées. Si EN est à « 0 » lorsque la fonction est appelée, les algorithmes définis par cette dernière ne sont pas exécutés et ENO est mis à « 0 ». Si EN est à « 1 » lorsque la fonction est appelée, les algorithmes définis par la fonction sont exécutés. Si ces algorithmes s'exécutent sans erreur, ENO est mis à « 1 ». Si une erreur se produit durant l’exécution de ces algorithmes, ENO est mis à « 0 ». Si aucune valeur n'est attribuée à la broche EN lors de l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN est à « 1 »). Si ENO est mis à « 0 » (parce que EN = 0 ou suite à une erreur d'exécution), la sortie de la fonction est mise à « 0 ». Le comportement de sortie de la fonction ne dépend pas de l'appel de la fonction sans EN/ ENO ou avec EN = 1. Si EN et ENO sont utilisés, l'appel de la fonction doit être formel. out:=LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) ; Appel de la même fonction en FBD : 482 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel de bloc fonction élémentaire et de bloc fonction dérivé Bloc fonction élémentaire Les blocs fonction élémentaires ont des états internes. Pour des valeurs égales aux entrées, la valeur à la sortie peut être différente à chaque exécution du bloc fonction. Pour un compteur, par exemple, la valeur de la sortie est incrémentée. Les blocs fonction peuvent comprendre plusieurs valeurs de renvoi (sorties). Bloc fonction dérivé Les blocs fonction dérivés (DFB) ont les mêmes caractéristiques que les blocs fonction élémentaires. Ils sont cependant créés par l'utilisateur dans les langages FBD, LD, IL et/ou ST. Paramètres Pour importer des valeurs dans un bloc fonction ou les exporter d'un bloc fonction, des entrées et des sorties sont nécessaires. Elles sont appelées paramètres formels. Les états actuels du processus sont transmis aux paramètres formels. Ces objets sont appelés paramètres réels. Pour les entrées de bloc fonction, on peut utiliser un paramètre réel de type : • Variable • Adresse • Littéral Pour les sorties de bloc fonction, on peut utiliser des paramètres réels de type : • Variable • Adresse Le type des données des paramètres réels doit correspondre à celui des paramètres formels. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. 35006145.25 483 Langages de programmation et structure Texte structuré (ST) Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2); Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (Dans ce cas AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...); (Dans ce cas, un changement de type explicite doit être effectué via INT_ARR_TO_WORD_ ARR (...);.) Il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Le tableau suivant répertorie les types de paramètres formels auxquels une valeur doit être affectée : Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT DDT d'équipement STRUCT FB ANY EFB : Entrée - - - - / / - / - EFB : VAR_IN_ OUT + + + + + / + / + EFB : Sortie - - + + + / - / + DFB : Entrée - - - - / + - / - DFB : VAR_IN_ OUT + + + + + + + / + DFB : Sortie - - + / / / - / + + Paramètre réel impératif - Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir. / Non applicable Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pendant l'exécution du bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. Si aucune valeur n'est affectée à un paramètre formel et que le bloc fonction/DFB a été instancié à plusieurs reprises, les instances appelées par la suite travaillent avec l'ancienne valeur. 484 35006145.25 Texte structuré (ST) Langages de programmation et structure NOTE: Une broche d'entrée ANY_ARRAY_xxx non connectée crée automatiquement un tableau masqué comportant 1 élément. Variables publiques Certains blocs fonction disposent non seulement d'entrées et de sorties, mais également de variables publiques. Ces variables permettent de transmettre des valeurs statistiques (valeurs non influencées par le procédé) au bloc fonction. Elles sont donc utilisées lors du paramétrage du bloc fonction. Les variables publiques sont une extension de la norme IEC 61131-3. Des valeurs sont affectées aux variables publiques via leur valeur initiale ou au travers d'affectations. Exemple : Les variables publiques sont ensuite lues via le nom d'instance du bloc fonction et le nom de la variable publique. Exemple : Variables privées Certains blocs fonction disposent non seulement d'entrées, de sorties et de variables publiques, mais également de variables privées. A l'instar des variables publiques, ces variables servent à transmettre des valeurs statistiques (non influencées par le processus) au bloc fonction. Le programme utilisateur n'a pas accès à ces variables. Seule la table d'animation en a la capacité. 35006145.25 485 Langages de programmation et structure Texte structuré (ST) NOTE: les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via la table d'animation. Les variables privées sont une extension de la norme IEC 61131-3. Remarques sur la programmation Gardez à l'esprit les remarques suivantes sur la programmation : • Les blocs fonction ne sont exécutés que si l'entrée EN est à 1 ou n'est pas utilisée, page 490. • L'affectation de variables aux sorties de type ANY ou ARRAY doit être effectuée via l'opérateur =>. Une affectation en dehors de l'appel d'un bloc fonction n'est pas possible. L'instruction My_Var := My_SAH.OUT; n'est pas valide, la sortie OUT du bloc fonction SAH étant de type ANY. L'instruction Cal My_SAH (OUT=>My_Var); est en revanche valide. • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 491. • L'utilisation des blocs fonction comprend deux parties dans ST : • ◦ Déclaration, page 486 ◦ l'appel du bloc fonction Il existe deux façons d'appeler un bloc fonction : ◦ appel formel, page 487 (appel avec les noms des paramètres formels) Des variables peuvent ainsi être affectées aux sorties via l'opérateur => ◦ • appel informel, page 488 (appel sans les noms des paramètres formels) Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, page 490, contrairement aux instances d'EFB de communication qui ne peuvent être appelées qu'une seule fois. Déclaration Avant d'être appelé, un bloc fonction doit être déclaré dans l'éditeur de variables. 486 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel formel Avec des appels formels (comprenant des noms de paramètres formels), les blocs fonction sont appelés via une séquence constituée des noms des instances de blocs fonction suivis d'une liste entre parenthèses des affectations de paramètres réels aux paramètres formels. Utilisez l'opérateur := pour affecter les paramètres formels d'entrée et l'opérateur => pour les paramètres formels de sortie. L'ordre d'énumération des paramètres formels d'entrée et de sortie n'est pas important. Il est possible d'utiliser EN et ENO avec ce type d'appel. Appel d'un bloc fonction avec les noms des paramètres formels : Appel du même bloc fonction dans FBD : Pour affecter la valeur d'une sortie de bloc fonction, entrez le nom réel du paramètre, puis l'instruction d'affectation := suivie du nom d'instance du bloc fonction, puis chargez le paramètre formel de la sortie du bloc fonction (séparé par un point). Par exemple : MY_COUNT (CU:=var1, R:=reset, PV:=100 + value); Q := MY_COUNT.out ; CV := MY_COUNT.current ; NOTE: les DDT de type Array ne peuvent pas être affectés de cette manière, contrairement aux DDT de type Structure. Il n'est pas nécessaire d'affecter une valeur à tous les paramètres, page 483 formels. MY_COUNT (CU:=var1, R:=reset, Q=>out, CV=>current); 35006145.25 487 Langages de programmation et structure Texte structuré (ST) Appel du même bloc fonction dans FBD : Appel informel Pour l'appel informel (sans les noms des paramètres formels), les blocs fonction sont appelés via une instruction qui comprend le nom d'instance du bloc fonction suivi d'une liste entre parenthèses des paramètres réels des entrées et des sorties. L'ordre d'énumération des paramètres réels dans l'appel d’un bloc fonction est important. EN et ENO ne peuvent pas être utilisés avec ce type d'appel. Appel d'un bloc fonction sans les noms des paramètres formels : Appel du même bloc fonction dans FBD : Dans le cas d'appels informels, il n'est pas nécessaire d'affecter une valeur à tous les paramètres, page 483 formels. Cela ne s'applique pas aux variables VAR_IN_OUT, aux paramètres d'entrée avec des longueurs dynamiques et aux sorties de type ANY. Une variable doit toujours être affectée. Il s'agit d'une extension de la norme CEI 61131-3 et doit donc être activée de manière explicite. Un champ de paramètre vide permet d'omettre un paramètre. Appel avec un champ de paramètre vide : MY_COUNT (var1, , 100 + value, out, current) ; 488 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel du même bloc fonction dans FBD : Si les paramètres formels sont omis à la fin, aucun champ de paramètre vide ne doit être utilisé. MY_COUNT (var1, reset) ; Appel du même bloc fonction dans FBD : Appel d'un bloc fonction sans entrées Même si le bloc fonction ne dispose pas d'entrées ou si les entrées ne sont pas à paramétrer, vous devez appeler le bloc fonction avant de pouvoir utiliser ses sorties. Faute de quoi, le système transmettra les valeurs initiales des sorties, c'est-à-dire « 0 ». Par exemple : Appel du bloc fonction dans ST : MY_CLOCK () ;MY_COUNT (CU:=MY_CLOCK.CLK1, R:=reset, PV:=100, Q=>out, CV=>current) ; Appel du même bloc fonction dans FBD : 35006145.25 489 Langages de programmation et structure Texte structuré (ST) Appel multiple d'une instance de bloc fonction Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois, à l'exception des instances d'EFB de communication qui ne peuvent être appelées qu'une seule fois. L'appel multiple d'une même instance de DFB/bloc fonction est, par exemple, utile dans les cas suivants : • Si le bloc fonction/DFB n'a aucune valeur interne ou s'il n'est pas nécessaire pour un traitement ultérieur. Dans ce cas, l'appel multiple de la même instance de DFB/bloc fonction permet d'économiser de l'espace mémoire, car le code du bloc fonction/DFB n'est chargé qu'une seule fois. Le bloc fonction/DFB est, pour ainsi dire, traité comme une « fonction ». • Si le bloc fonction/DFB a une valeur interne censée influencer différents segments du programme, la valeur d'un compteur, par exemple, doit être augmentée en différents endroits du programme. Dans ce cas, l'appel multiple de la même instance de bloc fonction/DFB permet de ne pas sauvegarder les résultats intermédiaires en vue d'un traitement ultérieur à un autre endroit du programme. EN et ENO Pour tous les blocs fonction/DFB, une entrée EN et une sortie ENO peuvent être configurées. Au cas où la valeur d'EN est égale à « 0 », lorsque le bloc fonction/DFB est appelé, les algorithmes définis par ce dernier ne sont pas exécutés et ENO est réglé sur « 0 ». Au cas où la valeur d'EN est égale à « 1 », lorsque le bloc fonction/DFB est appelé, les algorithmes définis par ce dernier sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est mis à « 0 ». Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Si ENO est mis à « 0 » (du fait de EN = 0 ou d'une erreur d'exécution), les sorties du bloc fonction/DFB conservent l'état qu'elles avaient au dernier cycle exécuté correctement. Le comportement aux sorties des blocs fonction/DFB est le même, que les blocs fonction/ DFB aient été appelés sans EN/ENO ou avec EN = 1. Si EN/ENO doivent être utilisés, l'appel du bloc fonction doit être exécuté sous forme d'appel formel. L'affectation de variables à ENO doit être effectuée avec l'opérateur =>. MY_COUNT (EN:=1, CU:=var1, R:=reset, PV:=100 + value, ENO=>error, Q=>out, CV=>current) ; 490 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel du même bloc fonction dans FBD : VAR_IN_OUT-Variable Très souvent, on utilise des blocs fonction pour lire une variable au niveau de l'entrée (variables d'entrée), traiter celle-ci, et sortir à nouveau les valeurs modifiées de la même variable (variables de sortie). Ce cas exceptionnel d'une variable d'entrée/de sortie est également appelé variable VAR_IN_OUT. Il convient de noter les particularités suivantes lors de l'utilisation de blocs fonction/DFB avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • il est interdit d'affecter des valeurs littérales ou des constantes aux entrées VAR_IN_ OUT. • aucune valeur ne doit être affectée aux sorties VAR_IN_OUT. • les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Appel d'un bloc fonction avec une variable VAR_IN_OUT dans ST : MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5); Appel du même bloc fonction dans FBD : Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Par conséquent, les appels de blocs fonction suivants ne sont pas valides : Appel non valide, exemple 1 : 35006145.25 491 Langages de programmation et structure InOutFB.inout := V1; Texte structuré (ST) Affectation des variables V1 à un paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée, car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel d'un bloc fonction. Appel non valide, exemple 2 : V1 := InOutFB.inout; Affectation d'un paramètre VAR_IN_OUT à la variable V1. Erreur : l'opération ne peut pas être exécutée, car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel d'un bloc fonction. Les appels de blocs fonction suivants sont en revanche valides : Appel valide, exemple 1 : InOutFB (inout:=V1); Appel d'un bloc fonction avec un paramètre VAR_IN_OUT et affectation formelle des paramètres réels au sein de l'appel de bloc fonction. Appel valide, exemple 2 : InOutFB (V1); Appel d'un bloc fonction avec un paramètre VAR_IN_OUT et affectation informelle des paramètres réels au sein de l'appel de bloc fonction. Procédures Procédure Les procédures sont disponibles sous forme de bibliothèques. La logique des procédures est créée dans le langage de programmation C et ne peut pas être modifiée dans l’éditeur ST. Comme les fonctions, les procédures n'ont pas d'états internes. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque exécution de la procédure. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Contrairement aux fonctions, les procédures ne livrent aucune valeur de renvoi et prennent en charge les variables VAR_IN_OUT. Les procédures sont un complément de la norme CEI 61131-3 et doivent être activées de manière explicite. 492 35006145.25 Texte structuré (ST) Langages de programmation et structure Paramètres Pour importer des valeurs dans une procédure ou exporter des valeurs d'une procédure, on a besoin d'« entrées » et de « sorties ». Ces entrées et ces sorties sont appelées « paramètres formels ». Les états actuels du processus sont transmis aux paramètres formels. Ce sont les paramètres réels. On peut utiliser comme paramètre réel des entrées de procédure : • variable, • adresse, • valeur littérale. • Expression ST On peut utiliser comme paramètre réel des sorties de procédure : • variable, • adresse. Le type des données du paramètre réel doit correspondre au type des données du paramètre formel. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel. De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés. Il s'agit d'une extension de la norme CEI 61131-3, qui doit être activée de manière explicite. Exemple : Autorisé : AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2); Non autorisé : AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (Dans ce cas AND_INT doit être utilisé.) AND_ARRAY_WORD (ArrayInt, ...); (Dans ce cas, un changement de type explicite doit être effectué via INT_ARR_TO_WORD_ ARR (...);. Il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Pour connaître les types de paramètre formel pour lesquels cela est cependant impératif, veuillez vous reporter au tableau. 35006145.25 493 Langages de programmation et structure Texte structuré (ST) Type de paramètre EDT STRING ARRAY ANY_ARRAY IODDT STRUCT FB ANY Entrée - - + + + + + + VAR_IN_OUT + + + + + + / + Sortie - - - - - - / + + paramètre réel impératif - paramètre réel non impératif / non applicable Si aucune valeur n’est affectée à un paramètre formel, la valeur initiale est utilisée pendant l’exécution du bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée. Remarques sur la programmation Veuillez tenir compte des remarques qui suivent sur la programmation : • Les procédures ne sont exécutées que lorsque l'entrée EN = 1 ou lorsque l'entrée EN est désactivée (voir aussi EN et ENO, page 496). • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT, page 497. • Il existe deux façons d'appeler une procédure : ◦ appel formel, page 494 (appel avec les noms des paramètres formels) Des variables peuvent ainsi être affectées aux sorties via l'opérateur => ◦ appel informel, page 495 (appel sans les noms des paramètres formels) Appel formel Pour l'appel formel (avec les noms des paramètres formels), les procédures sont appelées via une instruction qui comprend le nom de la procédure suivi d'une liste entre parenthèses des affectations des paramètres réels aux paramètres formels. L'affectation des paramètres formels des entrées s'effectue via l'affectation := et l'affectation des paramètres formels des sorties via l'affectation =>. L’ordre d’énumération des paramètres formels d'entrées et de sorties n'est pas important. Il est possible d'utiliser EN et ENO avec ce type d'appel. 494 35006145.25 Texte structuré (ST) Langages de programmation et structure Appel d'une procédure avec les noms des paramètres formels : Appel de la même procédure dans FBD : Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Paramètres, page 493). PROC (IN1:=var1, OUT1=>result1, OUT2=>result2); Appel de la même procédure dans FBD : Appel informel Pour l'appel informel (sans les noms des paramètres formels), les procédures sont appelées via une instruction qui comprend le nom de la procédure suivi d'une liste entre parenthèses des paramètres réels des entrées et des sorties. L’ordre d’énumération des paramètres réels dans l’appel d’une procédure est important. EN et ENO ne peuvent pas être utilisés avec ce type d'appel. Appel d'une procédure sans les noms des paramètres formels : 35006145.25 495 Langages de programmation et structure Texte structuré (ST) Appel de la même procédure dans FBD : Même lors d'un appel informel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Paramètres, page 493). Il s'agit d'une extension de la norme CEI 61131-3, qui doit être activée de manière explicite. Un champ de paramètre vide permet d'omettre un paramètre. Appel avec un champ de paramètre vide : PROC (var1, , result1, result2) ; Appel de la même procédure dans FBD : Si les paramètres formels sont omis à la fin, aucun champ de paramètre vide ne doit être utilisé. PROC (var1, var2, result1) ; Appel de la même procédure dans FBD : EN et ENO Pour toutes les procédures, une entrée EN et une sortie ENO peuvent être configurées. Si la valeur d’EN est égale à « 0 », lorsque la procédure est appelée, les algorithmes définis par cette dernière ne sont pas exécutés et ENO est mis sur « 0 ». Si la valeur d’EN est égale à « 1 », lorsque la procédure est appelée, les algorithmes définis par la procédure sont exécutés. Après l’exécution exempte d’erreur de ces algorithmes, la valeur d’ENO est mise sur « 1 ». Si une erreur se produit durant l’exécution de ces algorithmes, ENO est mis sur « 0 ». Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). 496 35006145.25 Texte structuré (ST) Langages de programmation et structure Si ENO est mis sur « 0 » (en raison de EN=0 ou d'une erreur d'exécution), les sorties de la procédure sont mises sur « 0 ». Le comportement de la procédure à la sortie ne dépend pas du fait que la procédure ait été appelée sans EN ou avec EN=1. Si EN/ENO doivent être utilisés, l'appel de la procédure doit être exécuté comme un appel formel. L'affectation d'une variable à ENO doit être effectuée avec l'opérateur =>. PROC (EN:=1, IN1:=var1, IN2:=var2, ENO=>error, OUT1=>result1, OUT2= >result2) ; Appel de la même procédure dans FBD : Variable VAR_IN_OUT Très souvent, on utilise des procédures pour lire une variable au niveau de l’entrée (variables d’entrée), traiter celle-ci, et sortir à nouveau les valeurs modifiées de la même variable (variables de sortie). Ce cas particulier d'une variable d'entrée/de sortie est également appelé variable VAR_IN_OUT. Il convient de noter les particularités suivantes dans le cas de l’utilisation de procédures avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • il est interdit d’affecter des valeurs littérales ou des constantes aux entrées VAR_IN_ OUT. • aucune valeur ne doit être affectée aux sorties VAR_IN_OUT. • les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel de procédure. Appel d'une procédure avec une variable VAR_IN_OUT dans ST : PROC2 (IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) ; Appel de la même procédure dans FBD : 35006145.25 497 Langages de programmation et structure Texte structuré (ST) Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel de procédure. Les appels de procédure suivants sont par conséquent invalides : Appel non valide, exemple 1 : InOutProc.inout := V1; Affectation des variables V1 à un paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée, car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel de procédure. Appel non valide, exemple 2 : V1 := InOutProc.inout; Affectation d'un paramètre VAR_IN_OUT à la variable V1. Erreur : l'opération ne peut pas être exécutée, car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel de procédure. Les appels de procédure suivants sont en revanche valides : Appel valide, exemple 1 : InOutProc (inout:=V1); Appel d'une procédure avec un paramètre VAR_IN_OUT et affectation formelle des paramètres réels au sein de l'appel de procédure. Appel valide, exemple 2 : InOutProc (V1); 498 Appel d'une procédure avec un paramètre VAR_IN_OUT et affectation informelle des paramètres réels au sein de l'appel de procédure. 35006145.25 Langages de programmation et structure Blocs fonction utilisateur (DFB) Contenu de cette partie Présentation de Blocs Fonction Utilisateur (DFB) ..................... 500 Description des Blocs Fonction Utilisateur (DFB)...................... 505 Instances de blocs fonction utilisateur (DFB) ............................ 516 Utilisation des DFB à partir de différents langages de programmation ...................................................................... 522 DFB de diagnostic utilisateur .................................................. 540 Conversion de type implicite dans Control Expert ..................... 542 Dans cette partie Cette partie présente : • les blocs fonctions utilisateur (DFB), • la structure interne des DFB, • les DFB de diagnostic, • les types et instances des DFB, • les appels d'instances à partir de différents langages. 35006145.25 499 Langages de programmation et structure Présentation de Blocs Fonction Utilisateur (DFB) Présentation de Blocs Fonction Utilisateur (DFB) Contenu de ce chapitre Présentation des blocs fonctions utilisateur (DFB) .................... 500 Mise en œuvre d'un bloc fonction dérivé (DFB) ........................ 502 Objet de ce chapitre Ce chapitre présente les blocs fonction utilisateur (DFB), et les différentes étapes de mise en oeuvre. Présentation des blocs fonctions utilisateur (DFB) Introduction Le logiciel Control Expert permet de créer des blocs fonction utilisateur DFB en utilisant les langages d'automatisation. Un DFB est un bloc de programme que vous écrivez pour répondre aux besoins spécifiques de votre application. Il comprend les éléments suivants : • une ou plusieurs sections écrites en langage à contacts (LD), en liste d’instructions (IL), en littéral structuré (ST) ou en langage à blocs fonctionnels (FBD), • des paramètres d'entrée/de sortie, • des variables internes publiques ou privées. Les blocs fonction vous permettent de structurer et d’optimiser votre application. Vous pouvez les utiliser dès qu’une séquence de programme est répétée plusieurs fois dans votre application ou pour figer une programmation standard (par exemple, l’algorithme de commande d'un moteur incluant la prise en compte des sécurités locales). L’export puis l’import de ces blocs fonction permet leur utilisation par un groupe de programmeurs travaillant sur une même application ou dans des applications différentes. Avantages de l'utilisation des DFB L'utilisation d'un bloc fonction DFB dans une application vous permet : • 500 de simplifier la conception et la saisie du programme, 35006145.25 Présentation de Blocs Fonction Utilisateur (DFB) Langages de programmation et structure • d'améliorer la lisibilité du programme, • de faciliter la mise au point de l'application (toutes les variables manipulées par le bloc fonction sont identifiées sur son interface), • de diminuer le volume de code généré (le code correspondant au DFB est chargé une seule fois : quel que soit le nombre d'appels au DFB dans le programme, seules les données correspondant aux instances sont générées). Comparaison avec un sous-programme Par rapport à un sous programme, l'utilisation d'un DFB permet : • de paramétrer plus facilement le traitement, • d'utiliser des variables internes propres au DFB, et donc indépendantes de l'application, • de tester son fonctionnement indépendamment de l'application. De plus, les langages LD et FBD permettent de visualiser de manière graphique les DFB, ce qui facilite la conception et la mise au point de votre programme. DFB créés avec des versions antérieures du logiciel Les DFB créés avec PL7 et Concept doivent être au préalable convertis à l’aide des convertisseurs inclus dans le produit avant d’être utilisés dans l’application. Domaine d'utilisation Le tableau ci-après décrit le domaine d'utilisation des DFB. Fonction Domaine Automates pour lesquels les DFB sont utilisables. Premium\Atrium et Quantum Logiciel de création des DFB Control Expert Logiciels avec lesquels les DFB sont utilisables. Control Expert Langage de programmation pour la création du code des DFB. IL, ST, LD ou FBD (1) Langage de programmation avec lesquels les DFB sont utilisables. IL, ST, LD ou FBD (1) 35006145.25 501 Langages de programmation et structure Présentation de Blocs Fonction Utilisateur (DFB) (1) IL : Instruction List (liste d'instructions) ; ST : Structured Text (littéral structuré) ; LD : Ladder Diagram (schéma à contacts) ; FBD : Functional Block Diagram (langage à blocs fonction). Mise en œuvre d'un bloc fonction dérivé (DFB) Procédure de mise en œuvre La procédure de mise en œuvre du bloc fonction DFB comporte trois étapes : Etape Action 1 Création du modèle de DFB (appelé type de DFB). 2 Création d'une copie de ce bloc fonction, appelée instance, à chaque fois que le DFB est utilisé dans l'application. 3 Utilisation des instances DFB dans votre programme d'application. Création du type de DFB Cette opération consiste à concevoir un modèle du DFB que vous souhaitez utiliser dans votre application. A cet effet, vous utilisez l'éditeur de DFB pour définir et coder tous les éléments qui constituent le DFB : • Description du bloc fonction : nom, type (DFB), activation des diagnostics, commentaire. • Structure du bloc fonction : paramètres, variables, sections de code. NOTE: Si vous utilisez un DFB qui est déjà dans la bibliothèque définie par l'utilisateur et que vous le modifiez, le nouveau type modifié sera utilisé pour toutes les instances supplémentaires dans le projet ouvert. La bibliothèque définie par l'utilisateur reste quant à elle inchangée. 502 35006145.25 Présentation de Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Description d'un type DFB Le diagramme suivant propose une représentation graphique d'un modèle DFB. Le bloc fonction comprend les éléments suivants : • Nom : nom du type DFB (32 caractères maximum). Ce nom doit être unique dans les bibliothèques, les caractères utilisés autorisés dépendent du choix fait dans la zone Identificateurs de l’onglet Extensions de langage dans les Options du projet (voir EcoStruxure™ Control Expert, Modes de fonctionnement) : • Entrées : paramètres d'entrée (hors paramètres d'E/S). • Sorties : paramètres de sortie (hors paramètres d'E/S). • Entrées/Sorties : paramètres d'E/S. • Variables publiques : variables internes accessibles par le programme d'application. • Variables privées variables internes imbriquées ou DFB, inaccessibles par le programme d'application. • Sections : sections de code du DFB en langage LD, IL, ST ou FBD. • Commentaire (1024 caractères maximum). Les caractères de mise en forme (retour chariot, tabulation, etc.) ne sont pas autorisés. Pour chaque type de DFB, un fichier descriptif est également accessible via une boîte de dialogue : taille du DFB, nombre de paramètres et de variables, numéro de version, date de la dernière modification, niveau de protection, etc. Aide en ligne pour les types de DFB Il est possible de lier un fichier d'aide HTML à chaque DFB dans la bibliothèque définie par l'utilisateur. Ce fichier doit : • avoir un nom identique à celui du DFB associé, 35006145.25 503 Langages de programmation et structure • Présentation de Blocs Fonction Utilisateur (DFB) se trouver dans le répertoire \Schneider Electric\FFBLibset\CustomLib\MyCustomFam \Langue (où Langue a pour valeur Eng, Fre, Ger, Ita, Spa ou Chs en fonction de la langue souhaitée). Création d'une instance de DFB Une fois le type de DFB créé, vous pouvez définir une instance de ce DFB via l'éditeur de variables ou lorsque la fonction est appelée dans l'éditeur de programmes. Utilisation des instances de DFB Une instance de DFB est utilisée comme suit • en tant que bloc fonction standard dans un langage à contacts (LD) ou à blocs fonction (FBD), • en tant que fonction élémentaire dans un langage littéral structuré (ST) ou liste d'instructions (IL). Une instance de DFB peut être utilisée dans toutes les tâches du programme d'application, sauf les tâches événementielles et les transitions de diagramme fonctionnel en séquence (SFC). Stockage Les types DFB créés par l'utilisateur peuvent être stockés (voir EcoStruxure™ Control Expert, Modes de fonctionnement) dans la bibliothèque de fonctions et de blocs fonctions. 504 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) Contenu de ce chapitre Définition des données internes de blocs fonction dérivés (DFB).................................................................................... 505 Paramètres des DFB.............................................................. 508 Variables DFB ....................................................................... 512 Section de code DFB ............................................................. 513 Objet de ce chapitre Ce chapitre présente les différents éléments qui constituent les blocs fonction utilisateur. Définition des données internes de blocs fonction dérivés (DFB) Vue d'ensemble Il existe deux types de données internes DFB : • les paramètres : entrées, sorties ou entrées/sorties, • les variables publiques ou privées. Les données internes du bloc fonction dérivé sont définies à l'aide de symboles (ces données ne peuvent pas être désignées comme des adresses). Eléments à définir pour chaque paramètre Lors de la création du bloc fonction, les éléments suivants doivent être définis pour chaque paramètre : • Nom : nom du type DFB (32 caractères maximum). Ce nom doit être unique dans les bibliothèques, les caractères utilisés autorisés dépendent du choix fait dans la zone Identificateurs de l'onglet Extensions de langage des options du projet (voir EcoStruxure™ Control Expert, Modes de fonctionnement): • un type d'objet (BOOL, INT, REAL, etc.). 35006145.25 505 Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) • Commentaire de 1 024 caractères maximum (facultatif). Les caractères de mise en forme (retour chariot, tabulation, etc.) sont interdits), • une valeur initiale. • Attribut Lecture/Ecriture : détermine si la variable peut être écrite lors de l'exécution (R : lecture seule - R/W : lecture/écriture). Cet attribut ne doit être défini que pour les variables publiques. • Attribut de sauvegarde : détermine si la variable peut être enregistrée. Types d'objets Les types d'objets disponibles pour les paramètres DFB appartiennent aux familles suivantes : • Famille de données élémentaires : EDT. Cette famille comprend les types d'objets suivants : Booléen (BOOL, EBOOL), Entier (INT, DINT, etc.), Réel (REAL), Chaîne de caractères (STRING), Chaîne de bits (BYTE, WORD, etc.), etc. • Famille de données dérivées : DDT. Cette famille comprend les types d'objets tableau (ARRAY) et structure (utilisateur ou IODDT). • Famille de données génériques : ANY_ARRAY_xxx. • Famille de bloc fonction : FB. Cette famille comprend les types d'objets EFB et DFB. Objets autorisés pour les différents paramètres Pour de meilleures performances, le mode d'adressage des paramètres DFB doit être transféré par adresse pour les familles d'objet suivantes : • entrées, • entrées/sorties, • sorties. Le mode d'adressage d'un élément d'un bloc fonction est lié au type de l'élément. Les modes d'adressage sont transmis par : • Valeur (VAL) • Entrée de table de réaffectation (RTE) • Adresse logique : RTE+décalage (L-ADR) • Adresse logique et nombre d'éléments (L-ADR-LG) • Structure de voie E/S (IOCHS) Pour chacun des paramètres DFB, les familles d'objets suivantes peuvent être utilisées avec les modes d'adressage associés : 506 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Famille d'objets EDT STRING Anonyme ou tableau DDT DDT (1) IODDT GDT : ANY_ ARRAY_x FB ANY... entrées, VAL L-ADRLG L-ADR-LG L-ADR Non L-ADR-LG Non L-ADR-LG Entrées/ sorties (2) L-ADR L-ADRLG L-ADR-LG L-ADR IOCHS, page 525 L-ADR-LG Non L-ADR-LG Sorties VAL VAL L-ADR-LG VAL Non L-ADR-LG Non L-ADR-LG Variables publiques VAL VAL VAL VAL Non Non Non Non Variables privées VAL VAL VAL VAL Non Non RTE Non Légende : (1) Famille de données dérivées, à l'exception des types de données dérivées d'E/S (IODDT). (2) Sauf les variables statiques de type EBOOL, sur les automates Quantum. ATTENTION COMPORTEMENT INATTENDU DE L'APPLICATION - INDEX DE TABLEAU Prenez en compte le décalage de l'index pour les variables ARRAY dotées d'une valeur non nulle pour l'entrée ANY_ARRAY_x de l'index de début (le décalage correspond à la valeur de l'index de début). Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels. 35006145.25 507 Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) Paramètres des DFB Illustration Cette illustration présente quelques exemples de paramètres de DFB Description des paramètres Ce tableau décrit le rôle de chaque paramètre Paramètre Nombre maximal Rôle Entrées 32 (1) Ces paramètres permettent de transférer les valeurs du programme d'application vers le programme interne du DFB. Ils sont accessibles en lecture par le DFB, mais ne sont pas accessibles par le programme d'application. Sorties 32 (2) Ces paramètres permettent de transférer les valeurs du DFB vers le programme d'application. Ils sont accessibles en lecture par le programme d'application, sauf pour les paramètres de type ARRAY. Entrées/ Sorties 32 Ces paramètres permettent de transférer des données du programme d'application vers le DFB, lequel peut ensuite les modifier et les renvoyer au programme d'application. Ces paramètres ne sont pas accessibles par le programme d'application. Légende : (1) Nombre d'entrées + Nombre d'entrées/sorties inférieur ou égal à 32 (2) Nombre de sorties + Nombre d'entrées/sorties inférieur ou égal à 32 508 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure NOTE: L'IODDT associé aux équipements CANopen pour Modicon M340 ne peut pas être utilisé comme paramètre d'E/S de DFB. Au cours de la phase d'analyse/génération d'un projet, le message "This IODDT cannot be used as a DFB parameter (Cet IODDT ne peut pas être utilisé comme paramètre de DFB)" informe l'utilisateur de ces limites. Paramètres accessibles par le programme d'application Les seuls paramètres accessibles par le programme d'application en dehors de l’appel sont les paramètres de sorties. Pour cela, le programme doit utiliser la syntaxe Nom_DFB.Nom_ paramètre Nom_DFB représente le nom de l'instance de DFB utilisée (32 caractères au maximum). Nom_paramètre représente le nom du paramètre de sortie (32 caractères au maximum). Exemple : Control.Accel indique la sortie Accel de l'instance de DFB nommée Control Paramètres EN et ENO EN est un paramètre d'entrée et ENO est un paramètre de sortie. Tous les deux sont de type BOOL et peuvent être ou ne pas être utilisés (facultatif) dans la définition d'un type de DFB. Dans le cas où l'utilisateur souhaite les utiliser, l'éditeur les positionne automatiquement : EN est le premier paramètre d'entrée et ENO le premier paramètre de sortie. Exemple d’implémentation des paramètres EN\ENO. 35006145.25 509 Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) Si le paramètre d’entrée EN d’une instance reçoit la valeur 0 (FALSE), alors : • les sections constituant le code du DFB ne sont pas exécutées (cela est géré par le système), • le paramètre de sortie ENO est défini sur 0 (FALSE) par le système. Si le paramètre d’entrée EN d’une instance reçoit la valeur 1 (TRUE), alors : • les sections constituant le code du DFB sont exécutées (cela est géré par le système), • le paramètre de sortie ENO est défini sur 1 (TRUE) par le système. Si une erreur est détectée (erreur de traitement par exemple) par l'instance du DFB, l'utilisateur peut s'il le souhaite définir le paramètre de sortie ENO sur 0 (FALSE). Dans ce cas : • soit les paramètres de sortie sont figés dans l’état qui était le leur lors du traitement précédant jusqu’à la disparition du défaut, • soit l'utilisateur prévoit dans le code du DFB un forçage des sorties dans l'état qu'il souhaite jusqu'à la disparition du défaut. Variable VAR_IN_OUT Très souvent, on utilise des blocs fonction pour lire une variable au niveau de l’entrée (variables d’entrée), traiter celle-ci, et sortir les valeurs modifiées de la même variable (variables de sortie). Ce type particulier de variable d'entrée/de sortie est également appelé variable VAR_IN_OUT. Il convient de noter les particularités suivantes lors de l'utilisation de blocs fonction/DFB avec des variables VAR_IN_OUT : • une variable doit être affectée à toutes les entrées VAR_IN_OUT. • il est interdit d'affecter des valeurs littérales ou des constantes aux entrées VAR_IN_ OUT. • aucune valeur ne doit être affectée aux sorties VAR_IN_OUT. • Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Appel d'un bloc fonction avec une variable VAR_IN_OUT en IL : CAL MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) 510 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Appel du même bloc fonction dans FBD : Les variables VAR_IN_OUT ne peuvent pas être utilisées en dehors de l'appel du bloc fonction. Par conséquent, les appels de blocs fonction suivants ne sont pas valides : Appel non valide, exemple 1 : LD V1 Chargement de la variable V1 dans l'accumulateur CAL InOutFB Appel d'un bloc fonction avec un paramètre VAR_IN_OUT. L'accumulateur contient désormais une référence à un paramètre VAR_IN_OUT. AND V2 Opération ET sur le contenu de l'accumulateur et la variable V2. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT (contenu de l'accumulateur) en dehors de l'appel d'un bloc fonction. Appel non valide, exemple 2 : LD V1 Chargement de la variable V1 dans l'accumulateur AND InOutFB.inout Opération ET sur le contenu de l'accumulateur et une référence à un paramètre VAR_IN_OUT. Erreur : l'opération ne peut pas être exécutée car il n'est pas possible d'accéder au paramètre VAR_IN_OUT en dehors de l'appel du bloc fonction. Les appels de blocs fonction suivants sont en revanche valides : Appel valide, exemple 1 : CAL InOutFB (IN1:=V1,inout: =V2 Appel d'un bloc fonction avec le paramètre VAR_IN_OUT et affectation du paramètre réel dans l'appel de bloc fonction. Appel valide, exemple 2 : 35006145.25 511 Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) LD V1 Chargement de la variable V1 dans l'accumulateur ST InOutFB.IN1 Affectation du contenu de l'accumulateur au paramètre IN1 du bloc fonction IN1. CAL InOutFB(inout:=V2) Appel du bloc fonction avec affectation du paramètre réel (V2) au paramètre VAR_IN_OUT. Variables DFB Description des variables Le tableau ci-dessous décrit le rôle de chaque type de variable. Variable Nombre maximal Rôle Public illimité Ces variables internes du DFB peuvent être utilisées par le DFB, par le programme d'application et par l'utilisateur en mode réglage. Privé illimité Ces variables internes du DFB peuvent être utilisées uniquement par ce bloc fonction et ne sont par conséquent pas accessibles par le programme d'application, mais ces types de variables sont accessibles via l'éditeur de données et le tableau d'animation. Ces variables sont généralement des variables nécessaires à la programmation du bloc, mais sans intérêt pour l'utilisateur (résultat d'un calcul intermédiaire, par exemple). NOTE: les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via l'éditeur de données et la table d'animation. Variables accessibles par le programme d'application Les seules variables accessibles par le programme d'application sont les variables publiques. Pour cela, vous devez utiliser dans le programme la syntaxe suivante : Nom_ DFB.Nom_variable Nom_DFB représente le nom de l'instance de DFB utilisée (32 caractères au maximum). Nom_variable représente le nom de la variable publique (8 caractères au maximum). Exemple : Control.Gain indique la variable publique Gain de l'instance de DFB appelée Control 512 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Enregistrement des variables publiques Le réglage sur 1 du bit système %S94 provoque l'enregistrement des variables publiques que vous avez modifiées par programme ou par réglage, en lieu et place des valeurs initiales de ces variables (définies dans les instances de DFB). Le remplacement n'est possible que si l'attribut de sauvegarde est correctement défini pour la variable. AVIS ECHEC DU CHARGEMENT DE L'APPLICATION Le bit %S94 ne doit pas être réglé sur 1 lors d'un chargement. Si le bit %S94 est réglé sur 1, le chargement risque d'être impossible. Le non-respect de ces instructions peut provoquer des dommages matériels. Section de code DFB Généralités La ou les sections de code définissent le traitement que doit effectuer le DFB, en fonction des paramètres déclarés. Un DFB peut contenir un nombre illimité de sections de code. Langages de programmation Pour programmer des sections de DFB, vous pouvez utiliser les langages suivants: • Liste d'instructions (IL) • Littéral structuré (ST) • Schéma à contacts (LD) • Langage à blocs fonctionnels (FBD) 35006145.25 513 Langages de programmation et structure Description des Blocs Fonction Utilisateur (DFB) Définition d'une section Une section est définie par : • un nom symbolique qui identifie la section (32 caractères au maximum), • une condition de validation qui définit l'exécution de la section, • un commentaire (256 caractères au maximum), • un attribut de protection (pas de protection, section protégée en écriture, section protégée en lecture/écriture). Règles de programmation Lorsqu’elle est exécutée, une section de DFB ne peut utiliser que les paramètres que vous avez définis pour le bloc fonction (paramètres d’entrée, de sortie, d’entrée/sorties et variables internes). Par voie de conséquence, un bloc fonction DFB ne peut utiliser les variables globales de l’application, ni les objets d'entrée/sortie, à l’exception des bits et mots système (%Si, %SWi et %SDi). Une section de DFB a les droits d’accès maximum (lecture et écriture) sur ses paramètres. 514 35006145.25 Description des Blocs Fonction Utilisateur (DFB) Langages de programmation et structure Exemple de code Le programme suivant fournit un exemple de code ST. 35006145.25 515 Langages de programmation et structure Instances de blocs fonction utilisateur (DFB) Instances de blocs fonction utilisateur (DFB) Contenu de ce chapitre Création d'une instance de DFB.............................................. 516 Exécution d'une instance de DFB............................................ 517 Exemple de programmation pour un bloc fonction dérivé (DFB).................................................................................... 518 Objet de ce chapitre Ce chapitre présente la création d'une instance DFB et son exécution. Création d'une instance de DFB Instance de DFB Une instance de DFB est une copie du modèle de DFB (type de DFB) : • elle exploite le code du type de DFB (le code n'est pas dupliqué) ; • elle crée une zone de données spécifique à cette instance, qui est la recopie des paramètres et des variables du type de DFB. Cette zone est située dans l'espace des données de l'application. Vous devez repérer chaque instance de DFB que vous créez, par un nom de 32 caractères au maximum. Les caractères utilisés autorisés dépendent du choix fait dans la zone Identificateurs de l'onglet Extensions de langage des options du projet (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Le premier caractère doit être une lettre. Les mots clefs et les symboles sont interdits. Création d'une instance A partir d'un type de DFB, vous pouvez créer autant d'instances que nécessaire, la seule limitation étant la taille mémoire de l'automate. 516 35006145.25 Instances de blocs fonction utilisateur (DFB) Langages de programmation et structure Valeurs initiales Les valeurs initiales des paramètres et variables publiques, que vous avez définies lors de la création du type de DFB, peuvent être modifiées pour chaque instance du DFB. Les paramètres des DFB n'ont pas tous une valeur initiale. Modification des valeurs initiales des éléments dans les instances de DFB EDT (sauf type String) Type String EDT Structure DDT FB ANY_ ARRAY IODDT ANY_... Entrées Oui Non Non Non - Non - Non Entrée/sortie Non Non Non Non - Non Non Non Sorties Oui Oui Non Oui - - - Non Variables publiques Oui Oui Oui Oui - - - - Variables privées Oui Oui Oui Oui Non - - - Modification des valeurs initiales des éléments dans le type de DFB Entrées Entrée/sortie EDT (sauf type String) Type String EDT Structure DDT FB ANY_ARRAY IODDT ANY_... Oui Non Non Non - Non - Non Non - Non Non Non - - Non Non Non Non Sorties Oui Oui Non Oui - Variables publiques Oui Oui Oui Oui - - - - Variables privées Oui Oui Oui Oui Non - - - Exécution d'une instance de DFB Fonctionnement Une instance de DFB s'exécute de la manière suivante. 35006145.25 517 Langages de programmation et structure Instances de blocs fonction utilisateur (DFB) Etape Action 1 Chargement des valeurs dans les paramètres d'entrée et d'entrée/sortie. Toute entrée sans affectation prend à l'initialisation (ou sur reprise à froid) la valeur initiale définie dans le type de DFB. Elle garde ensuite la dernière valeur qui lui a été affectée. 2 Exécution du programme interne du DFB. 3 Ecriture des paramètres de sortie. NOTE: Les variables internes des DFB ne sont pas réinitialisées lors de l'utilisation de la commande Générer le projet en ligne après une modification d'entrée. Pour réinitialiser toutes les variables internes, utilisez la commande Regénérer tout le projet. Mise au point des DFB Le logiciel Control Expert propose plusieurs outils de mise au point des DFB : • table d'animation : tous les paramètres, variables publiques et privées sont affichés et animés en temps réel (possibilité de modifier et de forcer les objets) • point d'arrêt, pas à pas et diagnostics de programme • écrans d'exploitation : pour la mise au point unitaire Exemple de programmation pour un bloc fonction dérivé (DFB) Généralités Cet exemple de programmation d'un compteur à l'aide d'un DFB est fourni à titre didactique. 518 35006145.25 Instances de blocs fonction utilisateur (DFB) Langages de programmation et structure Caractéristiques du type de DFB Le type de DFB utilisé pour créer le compteur est le suivant. Les éléments du type de DFB Cpt_parts sont les suivants. Eléments Description Nom du type de DFB Cpt_parts Paramètres d'entrée • Reset : remise à zéro du compteur (type EBOOL) • Presel : valeur de présélection du compteur (type DINT) • Count : entrée de comptage croissant (type EBOOL) Paramètres de sortie Done : sortie de valeur de présélection atteinte (type BOOL) Variable interne publique V_cour : valeur actuelle du compteur (type DINT) Fonctionnement du compteur Le fonctionnement du compteur doit être le suivant. Etape 35006145.25 Description 1 Le DFB compte les fronts montants sur l'entrée Count. 2 Le nombre de fronts comptés est mémorisé par la variable V_cour. Cette variable est remise à zéro par un front montant sur l’entrée Reset. 3 Lorsque le nombre de fronts comptés est égal à la valeur de présélection, la sortie Done prend la valeur 1. Cette variable est remise à zéro par un front montant sur l’entrée Reset. 519 Langages de programmation et structure Instances de blocs fonction utilisateur (DFB) Programme interne du DFB Le programme interne du type de DFB Cpt_parts est défini en langage ST de la manière suivante. Exemple d'utilisation Supposons que votre application nécessite de compter 3 types de pièces (par exemple, des boulons, des écrous et des vis). Vous pouvez utiliser 3 fois le type de DFB Cpt_parts (3 instances) pour réaliser ces différents comptages. Le nombre de pièces à approvisionner pour chaque type est défini respectivement dans les mots %MD10, %MD12 et %MD14. Lorsque le nombre de pièces est atteint, le compteur envoie une commande à une sortie (%Q1.2.1, %Q1.2.2 ou %Q1.2.3) qui arrête alors le système d’approvisionnement pour les pièces concernées. 520 35006145.25 Instances de blocs fonction utilisateur (DFB) Langages de programmation et structure Le programme d'application est saisi en langage à contacts (LD) de la manière suivante. Les trois DFB (instances) Cpt_bolts, Cpt_nuts et Cpt_screws sont utilisés pour compter les différentes pièces. 35006145.25 521 Langages de programmation et structure Utilisation des DFB à partir de différents langages de programmation Utilisation des DFB à partir de différents langages de programmation Contenu de ce chapitre Règles d'utilisation des blocs fonction dérivés dans un programme............................................................................ 522 Utilisation des IODDT dans un DFB......................................... 525 Utilisation d'un DFB dans un programme en langage LD ........................................................................................ 529 Utilisation d'un DFB dans un programme en langage ST ........................................................................................ 530 Utilisation d'un DFB dans un programme IL (liste d'instructions) ........................................................................ 533 Utilisation d'un DFB dans un programme en langage FBD ...................................................................................... 538 Objet de ce chapitre Ce chapitre présente l'appel des instances de DFB à partir des différents langages de programmation. Règles d'utilisation des blocs fonction dérivés dans un programme Généralités Les instances de bloc fonction dérivé (DFB) peuvent être utilisées dans tous les langages [liste d'instructions (IL), littéral structuré (ST), schéma à contacts (LD) et langage en blocs fonctionnels (FBD)], ainsi que dans toutes les tâches du programme d'application (sections, sous-programmes, etc.), à l'exception des transitions du programme SFC. Règles générales d'utilisation Lorsque vous utilisez un bloc fonction dérivé, vous devez respecter les consignes suivantes, quel que soit le langage utilisé : 522 35006145.25 Utilisation des DFB à partir de différents langages de programmation • • Langages de programmation et structure Certains paramètres d'entrée, de sortie ou d'entrée/de sortie n'ont pas besoin d'être définis. Par contre, les paramètres suivants doivent obligatoirement être affectés : ◦ paramètres d'entrée/de sortie, ◦ paramètres de sortie de type données génériques (ANY_INT, ANY_ARRAY, ...). Les paramètres suivants sont facultatifs : ◦ paramètres d'entrée de type données génériques (ANY_INT, ANY_ARRAY, etc.), ◦ paramètres d'entrée de type STRING. • Les paramètres d'entrée non définis conservent la valeur du précédent appel ou la valeur d'initialisation correspondante, si le bloc n'a jamais été appelé. • Tous les objets affectés aux paramètres d'entrée, de sortie et d'entrée/de sortie doivent être du même type que ceux définis lors de la création du type bloc fonction dérivé. Par exemple, si le type INT est défini pour le paramètre d'entrée « vitesse », vous ne pouvez pas affecter le type DINT ni REAL. Seuls les types BOOL et EBOOL peuvent être combinés pour les paramètres d'entrée et de sortie (pas pour les paramètres d'entrée/de sortie). Exemple : le paramètre d'entrée « Validation » peut être défini comme BOOL et associé à un bit interne %Mi de type EBOOL. Toutefois, le paramètre d'entrée possède des propriétés de type BOOL dans le code interne du type bloc fonction dérivé (il ne gère pas les fronts). Affectation des paramètres Le tableau ci-dessous résume les possibilités d'affectation des paramètres dans les différents langages de programmation. Paramètre Type Affectation du paramètre (1) Affectation Entrées EDT (2) Défini, valeur, objet ou expression Facultative (3) BOOL Défini, valeur, objet ou expression Facultative DDT Défini, valeur ou objet Facultative DDT d'équipement Défini ou objet Obligatoire ANY_… Défini ou objet Facultative ANY_ARRAY Défini ou objet Facultative EDT Défini ou objet Obligatoire DDT Défini ou objet Obligatoire DDT d'équipement Défini ou objet Obligatoire Entrées/sorties 35006145.25 523 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Paramètre Sorties Type Affectation du paramètre (1) Affectation IODDT Défini ou objet Obligatoire ANY_… Défini ou objet Obligatoire ANY_ARRAY Défini ou objet Obligatoire EDT Défini ou objet Facultative DDT Défini ou objet Facultative ANY_… Défini ou objet Obligatoire ANY_ARRAY Défini ou objet Obligatoire (1) Défini en langage schéma à contacts (LD) ou langage en blocs fonctionnels (FBD). Valeur ou objet en langage littéral structuré (ST) ou liste d'instructions (IL). (2) Sauf paramètres de type BOOL (3) Sauf paramètres de type STRING, qui sont obligatoires Règles d'utilisation des blocs fonction dérivés avec des tableaux AVERTISSEMENT COMPORTEMENT INATTENDU DE L'EQUIPEMENT Vérifiez la taille des tableaux lors de la copie des tableaux source vers les tableaux cible avec des blocs fonction dérivés. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Lorsque vous utilisez des tableaux dynamiques, il est obligatoire de vérifier que la taille des tableaux est identique. Dans un cas spécifique, avec des tableaux dynamiques en sortie ou en entrée/sortie, un dépassement peut entraîner une exécution incorrecte du programme et arrêter le contrôleur. Ce comportement se produit si les conditions ci-dessous sont remplies simultanément : • 524 Un bloc fonction dérivé avec au moins un paramètre de sortie ou d'entrée/de sortie de type de tableau dynamique (ANY_ARRAY_XXX) est utilisé. 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure • Dans le codage d'un bloc fonction dérivé, une fonction ou un bloc fonction (FFB de type FIFO, LIFO, MOVE, MVX, T2T, SAH ou SEL) est utilisé(e). Notez que la fonction ou le bloc fonction a besoin de deux paramètres de type ANY avec au moins un paramètre défini en sortie. • Le paramètre DFB du tableau dynamique est utilisé en écriture pendant l'appel du FFB (sur le paramètre de type ANY). Pour les autres paramètres ANY, un tableau de taille fixe est utilisé. • La taille du tableau de taille fixe est supérieure à la taille du tableau dynamique calculée pour stocker le résultat. Exemple de vérification de la taille des tableaux L'exemple ci-dessous indique comment vérifier la taille des tableaux à l'aide de la fonction LENGTH_ARWORD dans un bloc fonction dérivé. Dans cet exemple, Table_1 est un tableau de taille fixe, Table_2 est un tableau dynamique de type ANY_ARRAY_WORD. Ce programme vérifie la taille de chaque tableau. Les fonctions LENGTH_ARWORD calculent la taille de chaque tableau afin de conditionner l'exécution de la fonction MOVE. Utilisation des IODDT dans un DFB Aperçu Les tableaux suivants présentent les différents IODDT pour les automates Modicon M340, ModiconM580, Premium et Quantum qui peuvent être utilisés dans un DFB (exclusivement en tant que paramètres d'entrée/sortie, page 506). 35006145.25 525 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure IOODT utilisable dans un DFB Le tableau suivant présente les IODDT des différentes applications pour automates Modicon, M340, Modicon, M580, Premium et Quantum qui peuvent être utilisés dans un DFB : Modicon M340 Modicon M580 Premium Quantum T_DIS_IN_GEN Non Non Non Non T_DIS_IN_STD Non Non Non Non T_DIS_EVT Non Non Non Non T_DIS_OUT_GEN Non Non Non Non T_DIS_OUT_STD Non Non Non Non T_DIS_OUT_REFLEX Non Non Non Non T_ANA_IN_GEN Non Non Non Non T_ANA_IN_STD Non Non Non Non T_ANA_IN_CTRL Non Oui(1.) Oui Non T_ANA_IN_EVT Non Oui(1.) Oui Non T_ANA_OUT_GEN Non Non Non Non T_ANA_OUT_STD Non Non Non Non T_ANA_OUT_STDX Non Non Oui Non T_ANA_IN_BMX Oui Oui Non Non T_ANA_IN_T_BMX Oui Oui Non Non T_ANA_OUT_BMX Oui Oui Non Non T_ANA_IN_VE Non Non Non Non T_ANA_IN_VWE Non Non Non Non T_ANA_BI_VWE Non Non Non Non T_ANA_BI_IN_VWE Non Non Non Non T_COUNT_ACQ Non Oui(1.) Oui Non T_COUNT_HIGH_SPEED Non Oui(1.) Oui Non Familles d'IODDT Application TOR Application analogique Application de comptage 526 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Familles d'IODDT Modicon M340 Modicon M580 Premium Quantum T_COUNT_STD Non Oui(1.) Oui Non T_SIGN_CPT_BMX Oui Oui Non Non T_UNSIGN_CPT_BMX Oui Oui Non Non T_CNT_105 Non Non Non Non T_CCY_GROUP0 Non Non Non Non T_CCY_GROUP1_2_3 Non Non Non Non T_AXIS_AUTO Non Non Oui Non T_AXIS_STD Non Non Oui Non T_INTERPO_STD Non Non Oui Non T_STEPPER_STD Non Non Oui Non T_CSY_CMD Non Non Oui Non T_CSY_TRF Non Non Oui Non T_CSY_RING Non Non Oui Non T_CSY_IND Non Non Oui Non T_CSY_FOLLOW Non Non Oui Non T_CSY_COORD Non Non Oui Non T_CSY_CAM Non Non Oui Non T_COM_STS_GEN Oui Oui Oui Non T_COM_UTW_M Non Non Oui Non T_COM_UTW_S Non Non Oui Non T_COM_MB Non Non Oui Non T_COM_CHAR Non Non Oui Non T_COM_FPW Non Non Oui Non T_COM_MBP Non Non Oui Non T_COM_JNET Non Non Oui Non Application de came électronique Application de commande d'axes Application Sercos Application de communication 35006145.25 527 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Familles d'IODDT Modicon M340 Modicon M580 Premium Quantum T_COM_ASI Non Non Oui Non T_COM_ETY_1X0 Non Non Oui Non T_COM_ETY_210 Non Non Oui Non T_COM_IBS_128 Non Non Oui Non T_COM_IBS_242 Non Non Oui Non T_COM_PBY Non Non Oui Non T_COM_CPP100 Non Non Oui Non T_COM_ETYX103 Non Non Oui Non T_COM_ETHCOPRO Non Non Oui Non T_COM_MB_BMX Oui Oui Non Non T_COM_CHAR_BMX Oui Oui Non Non T_COM_CO_BMX Oui Oui Non Non T_COM_ETH_BMX Oui Oui Non Non T_PROC_PLOOP Non Non Oui Non T_PROC_3SING_LOOP Non Non Oui Non T_PROC_CASC_LOOP Non Non Oui Non T_PROC_SPP Non Non Oui Non T_PROC_CONST_LOOP Non Non Oui Non Non Oui(1.) Oui Non Non Non Non Non Application de réglage Application de pesage T_WEIGHING_ISPY101 Toutes applications confondues T_GEN_MOD 1. Module Premium sur rack extensible uniquement 528 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Utilisation d'un DFB dans un programme en langage LD Principe En langage à contacts LD, il y a deux possibilités pour appeler un bloc fonction DFB : • via un appel textuel dans un bloc opération dans lequel la syntaxe et les contraintes sur les paramètres sont identiques à celles du langage littéral structuré ST • via un appel graphique Les entrées des blocs fonction peuvent être câblées ou affectées d’une valeur, d’un objet ou d’une expression. Dans tous les cas, le type de l’élément extérieur (valeur, évaluation de l’expression...) doit être identique à celui du paramètre d’entrée. Un bloc DFB doit avoir au moins une entrée booléenne câblée et une sortie (si nécessaire). Pour cela, vous pouvez utiliser les paramètres d'entrée EN et le paramètre de sortie ENO (voir la description de ces paramètres ci-après). Vous devez obligatoirement câbler ou affecter les entrées de type ANY_ARRAY, les sorties de type données génériques (ANY_...) et les entrées/sorties d’un bloc DFB. Représentation graphique d'un bloc DFB L'illustration suivante présente un exemple simple de programmation d'un DFB. 35006145.25 529 Langages de programmation et structure Utilisation des DFB à partir de différents langages de programmation Eléments du bloc DFB Le tableau ci-après répertorie les différents éléments du bloc DFB repérés dans l'illustration précédente. Etiquette Elément 1 Nom du DFB (instance) 2 Nom du type de DFB 3 Entrée affectée par une expression 4 Entrée affectée par une valeur 5 Entrée câblée 6 Entrée affectée par un objet (adresse ou symbole) 7 Paramètres d'entrée 8 Paramètres de sortie 9 Paramètres d'entrées/sorties Utilisation des paramètres EN\ENO Voir Paramètres EN et ENO, page 509 Utilisation d'un DFB dans un programme en langage ST Principe Dans le langage littéral structuré (ST), un bloc fonction utilisateur est invoqué par un appel de DFB : nom de l'instance de DFB suivi d'une liste d'arguments. A l’intérieur de la liste, matérialisée par des parenthèses, les arguments sont séparés par des virgules. L'appel du DFB peut être de deux types : • appel formel, lorsque les arguments sont des affectations (paramètre = valeur). Dans ce cas, l’ordre de saisie des arguments dans la liste est sans importance. Vous pouvez utiliser le paramètre d'entrée EN et le paramètre de sortie ENO pour commander l'exécution du bloc fonction. 530 35006145.25 Utilisation des DFB à partir de différents langages de programmation • Langages de programmation et structure appel informel, lorsque les arguments sont des valeurs (expression, objet ou valeur immédiate). Dans ce cas, l'ordre de saisie des arguments dans la liste doit respecter l'ordre des paramètres d'entrée du DFB, y compris pour les entrées non affectées (l'argument est un champ vide). L’utilisation des paramètres EN et ENO n’est pas possible. Nom_DFB (argument 1,argument 2,....,argument n) NOTE: Les entrées de type ANY_ARRAY, les sorties de type données génériques (ANY_...) et les entrées/sorties d'un DFB doivent être affectées. Utilisation des paramètres EN\ENO Voir Paramètres EN et ENO, page 509 Exemple de DFB L'exemple simple suivant permet de comprendre les différents appels d'un DFB en langage littéral structuré. Il s'agit de l'instance Cpt_1 du type de DFB Cpt_parts. Appel formel du DFB L'appel formel du DFB Cpt_1 est effectué à l'aide de la syntaxe suivante : Cpt_1 (Reset:=Clear, Presel:=P_Select, Count:=100, Done=>%Q1.2.1); 35006145.25 531 Langages de programmation et structure Utilisation des DFB à partir de différents langages de programmation Dans le cas où les paramètres d’entrée affectés par une valeur (expression, objet ou valeur immédiate) sont saisis dans la liste des arguments, la syntaxe est : Cpt_1 (Reset:=Clear, Presel:=P_Select, Count:=100); ... %Q1.2.1:=Cpt_1.Done; Eléments de la séquence Le tableau suivant liste les différents éléments de la phrase de programme lors d'un appel formel du DFB. Elément Signification Cpt_1 Nom de l'instance de DFB Reset, Presel, Count Paramètres d'entrée := Symbole d’affectation d’une entrée Clear Objet d’affectation d’une entrée (symbole) 100 Valeur d’affectation d’une entrée Done Paramètre de sortie => Symbole d’affectation d’une sortie %Q1.2.1 Objet d’affectation d’une sortie (adresse) ; Symbole de fin de phrase , Symbole de séparation des arguments Appel informel du DFB L'appel informel du DFB Cpt_1 est effectué à l'aide de la syntaxe suivante : Cpt_1 (Clear, %MD10, , 100); ... %Q1.2.1:=Cpt_1.Done; 532 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Eléments de la séquence Le tableau suivant liste les différents éléments de la phrase de programme lors d'un appel formel du DFB. Elément Signification Cpt_1 Nom de l'instance de DFB Clear, %MD10, ,100 Objet ou valeur d’affectation des entrées. Les entrées non affectées sont représentées par un champ vide ; Symbole de fin de phrase , Symbole de séparation des arguments Utilisation d'un DFB dans un programme IL (liste d'instructions) Principe Dans le langage de programmation IL, l'appel d'un bloc fonction utilisateur s'effectue à l'aide d'une instruction CAL suivie du nom de l'instance de DFB comme opérande et d'une liste d'arguments (facultative). A l’intérieur de la liste, matérialisée par des parenthèses, les arguments sont séparés par des virgules. Il existe 3 possibilités pour appeler un DFB en langage IL : • L'instruction CAL nom_DFB est suivie d'une liste d'arguments qui sont des affectations (paramètre = valeur). Dans ce cas, l’ordre de saisie des arguments dans la liste est sans importance. Vous pouvez utiliser le paramètre d'entrée EN pour contrôler l'exécution du bloc fonction. • L'instruction CAL nom_DFB est suivie d'une liste d'arguments qui sont des valeurs (expression, objet ou valeur immédiate). Dans ce cas, l’ordre de saisi des arguments dans la liste doit respecter l’ordre des paramètres d’entrée du DFB, y compris pour les entrées qui ne sont pas affectées (l’argument est un champ vide). L’utilisation des paramètres EN et ENO n’est pas possible. 35006145.25 533 Langages de programmation et structure • Utilisation des DFB à partir de différents langages de programmation L'instruction CAL nom_DFB n'est pas suivie d'une liste d'arguments. Dans ce cas, cette instruction doit être précédée par l'affectation des paramètres d'entrée, via le chargement (Load) en registre de la valeur puis l'affectation (Store) au paramètre d'entrée. L’ordre d’affectation des paramètres (LD/ST) n’a pas d’importance ; toutefois, vous devez affecter tous les paramètres d’entrée qui le nécessitent avant d’exécuter la commande CAL. L’utilisation des paramètres EN et ENO n’est pas possible. CAL Nom_DFB (argument 1, argument 2, ..., argument n) ou LD Valeur 1 ST Paramètre 1 ... LD Valeur n ST Paramètre n CAL Nom_DFB NOTE: Les entrées de type ANY_ARRAY, les sorties de type données génériques (ANY_...) et les entrées/sorties d'un DFB doivent être affectées. Utilisation des paramètres EN\ENO Voir Paramètres EN et ENO, page 509. 534 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Exemple de DFB L'exemple suivant permet de comprendre les différents appels d'un DFB en langage IL. Il s'agit de l'instance Cpt_1 du type de DFB Cpt_parts. Appel du DFB lorsque les arguments sont des affectations Lorsque les arguments sont des affectations, l'appel du DFB Cpt_1 s'effectue suivant la syntaxe : CAL Cpt_1 (Reset:=Clear, Presel:=%MD10, Count:=100, Done=>%Q1.2.1) Dans le cas où les paramètres d’entrée affectés par une valeur (expression, objet ou valeur immédiate) sont saisis dans la liste des arguments, la syntaxe est : CAL Cpt_1 (Raz:=Clear, Presel:=%MD10, Count:=100) ... LD Cpt_1.Done ST %Q1.2.1 Afin de rendre plus lisible votre programme d'application, vous pouvez saisir un retour à la ligne après les virgules de séparation des arguments. La phrase présente alors la syntaxe suivante : CAL Cpt_1( Reset:=Clear, 35006145.25 535 Langages de programmation et structure Utilisation des DFB à partir de différents langages de programmation Presel:=%MD10, Count:=100, Done=>%Q1.2.1) Eléments du programme d'appel du DFB Le tableau suivant répertorie les différents éléments du programme d'appel du DFB. Elément Signification CAL Instruction d'appel du DFB Cpt_1 Nom de l'instance de DFB Reset, Presel, Count Paramètres d'entrée := Symbole d’affectation d’une entrée Clear, %MD10, 100 Objet ou valeur d’affectation des entrées Done Paramètre de sortie => Symbole d’affectation d’une sortie %Q1.2.1 Objet d’affectation d’une sortie , Symbole de séparation des arguments Appel du DFB lorsque les arguments sont des valeurs Lorsque les arguments sont des valeurs, l'appel du DFB Cpt_1 s'effectue à l'aide de la syntaxe suivante : CAL Cpt_1 (Clear, %MD10,, 100) ... LD Cpt_1.Done ST %Q1.2.1 Eléments du programme d'appel du DFB Le tableau suivant répertorie les différents éléments du programme d'appel du DFB. 536 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Elément Signification CAL Instruction d'appel du DFB Cpt_1 Nom de l'instance de DFB Clear, %MD10, 100 Objet ou valeur d’affectation des entrées , Symbole de séparation des arguments Appel d'un DFB sans argument Lorsqu'il n'y a pas d'argument, l'appel du DFB Cpt_1 s'effectue à l'aide de la syntaxe suivante : LD Clear ST Cpt_1.Reset LD %MD10 ST Cpt_1.Presel LD 100 ST Cpt_1.Count CAL Cpt_1( ... LD Cpt_1.Done ST %Q1.2.1 Eléments du programme d'appel du DFB Le tableau suivant répertorie les différents éléments du programme d'appel du DFB. Elément Signification LD Clear Instruction de chargement de la valeur Clear dans un registre ST Cpt_1.Reset Instruction d’affectation du contenu du registre au paramètre d’entrée Cpt_ 1.Reset CAL Cpt_1( Instruction d'appel du DFB Cpt_1 35006145.25 537 Langages de programmation et structure Utilisation des DFB à partir de différents langages de programmation Utilisation d'un DFB dans un programme en langage FBD Principe En langage FBD (diagramme de blocs fonction), les blocs fonction utilisateur sont représentés de la même manière qu'en langage à contacts (LD) et appelés de manière graphique. Les entrées des blocs fonction utilisateur peuvent être câblées ou affectées d’une valeur immédiate, d’un objet ou d’une expression. Dans tous les cas, le type de l’élément extérieur doit être identique à celui du paramètre d’entrée. Vous ne pouvez affecter qu’un seul objet (lien vers un autre bloc avec la même variable) à une entrée du DFB. En revanche, plusieurs objets peuvent être connectés à une même sortie. Un bloc DFB doit avoir au moins une entrée booléenne câblée et une sortie (si nécessaire). Pour cela, vous pouvez utiliser un paramètre d’entrée EN et un paramètre de sortie ENO. Vous devez obligatoirement câbler ou affecter les entrées de type ANY_ARRAY, les sorties de type données génériques (ANY_...) et les entrées/sorties d’un bloc DFB. Représentation graphique d'un bloc DFB L'illustration suivante présente un exemple simple de programmation d'un DFB. 538 35006145.25 Utilisation des DFB à partir de différents langages de programmation Langages de programmation et structure Eléments du bloc DFB Le tableau ci-après répertorie les différents éléments du bloc DFB repérés dans l'illustration précédente. Etiquette Elément 1 Nom du DFB (instance) 2 Nom du type de DFB 3 Entrée affectée par un objet (symbole) 4 Entrée affectée par une valeur 5 Entrée câblée 6 Paramètres d'entrée 7 Paramètre de sortie 8 Sortie affectée par un objet (adresse) Utilisation des paramètres EN\ENO Voir Paramètres EN et ENO, page 509. 35006145.25 539 Langages de programmation et structure DFB de diagnostic utilisateur DFB de diagnostic utilisateur Contenu de ce chapitre Présentation des DFB de diagnostic utilisateur......................... 540 Objet de ce chapitre Ce chapitre décrit comment créer et utiliser les blocs fonction de Diagnostic Utilisateur (voir EcoStruxure™ Control Expert, Diagnostic, Bibliothèque de blocs) sur les automates Premium, Atrium et Quantum. Présentation des DFB de diagnostic utilisateur Généralités Le logiciel Control Expert vous permet de créer vos propres DFB de diagnostic (voir EcoStruxure™ Control Expert, Modes de fonctionnement). Ces DFB de diagnostic sont des DFB standard que vous aurez au préalable configurés avec la propriété Diagnostic et dans lesquels vous aurez utilisé les deux fonctions suivantes : • REGDFB (voir EcoStruxure™ Control Expert, Diagnostic, Bibliothèque de blocs) pour l'enregistrement de la datation d'alarme • DEREG (voir EcoStruxure™ Control Expert, Diagnostic, Bibliothèque de blocs) pour annuler l'enregistrement de l'alarme NOTE: Il est fortement recommandé de ne programmer une instance de DFB de diagnostic que lorsque vous êtes dans l'application. Ces DFB vous permettent de surveiller le processus. Ils vont consigner automatiquement les informations choisies dans le Visualiseur. Vous pouvez ainsi surveiller des changements d'état ou des variations dans le processus. Avantages Les principaux avantages de ce service sont les suivants : • 540 Le diagnostic est intégré au projet et peut donc être conçu au moment du développement et ainsi répondre au mieux aux besoins de l'utilisateur. 35006145.25 DFB de diagnostic utilisateur Langages de programmation et structure • Le système de datation et d'enregistrement des erreurs s'effectue à la source (dans l'automate), de sorte que les informations représentent exactement l'état du processus. • Vous pouvez connecter plusieurs afficheurs (Control Expert, Magelis, Factory Cast) qui transcriront à l'exploitant l'état exact du processus. Chaque afficheur est indépendant, et toute action effectuée sur l'un (un acquittement, par exemple) est automatiquement visualisé sur les autres. 35006145.25 541 Langages de programmation et structure Conversion de type implicite dans Control Expert Conversion de type implicite dans Control Expert Contenu de ce chapitre Conversion de type implicite dans Control Expert ..................... 542 Différences de Control Expert par rapport aux recommandations IEC............................................................ 544 Présentation Ce chapitre décrit la conversion de type implicite dans Control Expert. Conversion de type implicite dans Control Expert Introduction Control Expert fournit un ensemble de conversions de type implicites qui sont facultatives. L'option Permettre la conversion de type implicite dans les options du projet (voir EcoStruxure™ Control Expert - Modes de fonctionnement) permet d'effectuer les conversions de types de manière implicite, sans faire appel aux fonctions de conversion type à type explicites qui étaient utilisées auparavant. Règles de la conversion de type implicite Après une conversion implicite, le bit système %S18 (voir EcoStruxure™ Control Expert Bits et mots système - Manuel de référence) est défini sur 1 pour indiquer un effet secondaire possible : • perte de précision • non-concordance de plages • comportement inattendu lié à l'implémentation Le test formel de la valeur du bit système %S18 incombe au programmeur, l'application doit gérer le comportement de la partie fonctionnement. 542 35006145.25 Conversion de type implicite dans Control Expert Langages de programmation et structure AVIS FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT Vérifiez le bit système %S18 (via l'application) après une conversion implicite. Le non-respect de ces instructions peut provoquer des dommages matériels. Règles de la conversion implicite de type INT UDINT UINT DWORD WORD BYTE BOOL > . > . > . > . > . > . > Très faible DINT Très haute Type de données source REAL Priorité Type de données cible REAL x I I I I E E E E DINT I x I I I I I I E INT I(IEC) I(IEC) x I I I I I E UDINT I I I x I I I I E UINT I(IEC) I(IEC) I I(IEC) x I I I E DWORD I I I I I x I I E WORD I I I I I I(IEC) x I E BYTE I I I I I I(IEC) I(IEC) x E BOOL I I I I I I(IEC) I(IEC) I(IEC) x x : Aucune conversion de type de données n'est nécessaire. I : Conversions implicites disponibles dans Control Expert en plus des recommandations de l'IEC. Si le résultat de la conversion ne correspond pas au Type de données, la conversion implicite est effectuée et le bit système %S18 est défini. I(IEC) : Conversions implicites de données dans Control Expert conformes aux recommandations IEC ; les conversions explicites de type sont autorisées. E : Les conversions explicites de type de données sont nécessaires. 35006145.25 543 Langages de programmation et structure Conversion de type implicite dans Control Expert Différences de Control Expert par rapport aux recommandations IEC Introduction D'après les recommandations de l'IEC, le type de données de la variable du résultat n'influence pas le type de données de l'expression du résultat et le type de données de l'expression est converti dans le type de données du résultat. Exemple : i_DINT := REAL1+REAL2; Equivalent en utilisant une conversion de type explicite : e_DINT := REAL_TO_DINT(REAL1+REAL2); NOTE: La conversion de type implicite n'est pas disponible pour les langages de programmation SFC et LL984. Différences dans Control Expert Control Expert présente les exceptions suivantes par rapport aux recommandations de l'IEC : 1. Si le type de données de la variable de résultat d'une affectation est supérieur au type de l'expression de résultat, les paramètres de l'expression de résultat sont convertis dans le type de paramètre de sortie pour éviter un dépassement de capacité. Exemple : i_DINT := INT1 + INT2; Equivalent en utilisant une conversion de type explicite : e_DINT := INT_TO_DINT(INT1) + INT_TO_DINT(INT2); 2. Control Expert utilise la conversion de type implicite pour les fonctions génériques, de sorte que le type de données de la variable de résultat a une influence sur le type de données de l'expression de résultat (la fonction générique). Exemple : i_DINT := ADD (IN1 := INT1, IN2 := INT2); Equivalent en utilisant une conversion de type explicite : e_DINT := ADD (IN1 := INT_TO_DINT(INT1), IN2 := INT_TO_DINT(INT2)); 544 35006145.25 Conversion de type implicite dans Control Expert Langages de programmation et structure Les paramètres de sortie génériques des blocs fonction n'ont pas d'influence sur le type de données de l'expression de résultat. Les conversions de type des paramètres d'entrée sont exécutées avant l'appel du corps du FFB, tandis que les conversions de type des paramètres de sortie sont exécutées après cet appel. Contrairement aux conversions de type explicites, les conversions de type implicites ne sont exécutées que lorsque le corps du FFB est appelé. Exemple : SAH_0 (IN := BYTE1, CLK := BOOL1, PV := WORD1, OUT => i_DINT ); Les trois lignes suivantes sont nécessaires pour obtenir un résultat équivalent en utilisant une conversion de type explicite : word_tmp := DINT_TO_WORD(e_DINT); SAH_0 (IN := BYTE_TO_WORD(BYTE1), CLK := BOOL1, PV := WORD1, OUT => _word_ tmp); e_DINT := WORD_TO_DINT(word_tmp); Les règles de conversion de type implicite s'appliquent uniquement aux constantes typées. Control Expert traite initialement les constantes non typées (valeurs littérales) comme des constantes DINT. Exemples : i_INT := 5 / 6 * 5.52; Equivalent en utilisant une conversion de type explicite : e_INT := REAL_TO_INT(DINT_TO_REAL(5) / DINT_TO_REAL(6) * 5.52); i_BOOL := (65535 < INT1) = (BYTE1 = 255); Equivalent en utilisant une conversion de type explicite : e_BOOL := (65535 < INT_TO_DINT(INT1)) = (BYTE_TO_DINT(BYTE1) = 255); Control Expert prend en charge la conversion de type implicite à l'intérieur d'expressions. Exemples : i_INT := BYTE1 = DINT1; Equivalent en utilisant une conversion de type explicite : e_INT := BOOL_TO_INT(BYTE_TO_DINT(BYTE1) = DINT1); i_WORD := BYTE1 = (REAL1 > DINT1 ); Equivalent en utilisant une conversion de type explicite : 35006145.25 545 Langages de programmation et structure Conversion de type implicite dans Control Expert e_WORD := BOOL_TO_WORD(BYTE1 = BOOL_TO_BYTE((REAL1 > DINT_TO_REAL (DINT1)))); i_REAL := WORD1 OR BYTE1 AND (100000 + 5); Equivalent en utilisant une conversion de type explicite : e_REAL:= DINT_TO_REAL(WORD_TO_DINT(WORD1) OR (BYTE_TO_DINT(BYTE1) AND (100000 + 5))); 546 35006145.25 Langages de programmation et structure Annexes Contenu de cette partie Conformité CEI ...................................................................... 548 Objet de ce chapitre L’annexe contient des informations complémentaires. 35006145.25 547 Langages de programmation et structure Conformité CEI Conformité CEI Contenu de ce chapitre Informations générales relatives à la norme CEI 611313........................................................................................... 548 Tableaux de conformité CEI .................................................... 550 Extensions de la norme CEI 61131-3....................................... 571 Syntaxe des langages textuels................................................ 573 Vue d'ensemble Ce chapitre contient les tableaux de conformité associés à la norme CEI 61131-3. Informations générales relatives à la norme CEI 61131-3 Vue d'ensemble Cette section contient des informations générales relatives à la norme CEI 61131-3 et à ses exigences de conformité. Informations générales relatives à la conformité IEC 61131-3 Présentation La norme IEC 61131-3 (voir sous-alinéa 1.4) définit la syntaxe et la sémantique d'une gamme unifiée de langages de programmation destinés aux automates programmables. Parmi ces langages figurent deux langages textuels, à savoir IL (Instruction List - Liste d'instructions) et ST (Structured Text - Littéral structuré), et deux langages graphiques, à savoir LD (Ladder Diagram - Langage à contacts) et FBD (Function Block Diagram Langage en blocs fonctionnels). Cette norme définit également les éléments du langage SFC (Sequential Function Chart Diagramme fonctionnel en séquence) qui permettent de structurer l'organisation interne des programmes et blocs fonction des automates programmables. Des éléments de 548 35006145.25 Conformité CEI Langages de programmation et structure configuration permettent également de prendre en charge l'installation des programmes dans les systèmes d'automates programmables. NOTE: Control Expert utilise les acronymes anglais des langages de programmation. Par ailleurs, des fonctionnalités sont définies pour faciliter la communication entre les automates programmables et les autres composants des systèmes automatisés. Conformité de Control Expert à la norme IEC 61131-3 La version actuelle du système de programmation Control Expert prend en charge un sousensemble conforme d'éléments de langage définis dans la norme. Signification du terme "conformité" dans ce contexte : • Conformément à la norme, l'installateur d'un système de programmation IEC peut choisir ou retirer des fonctionnalités de langage spécifiques, voire des langages complets, dans les tables des fonctionnalités qui font partie intégrante des spécifications. Un système dit conforme doit juste mettre en œuvre les fonctionnalités choisies en respectant les exigences de la norme. • En outre, l'installateur peut utiliser les éléments de langage de programmation définis dans un environnement de programmation interactif. La norme stipule clairement qu'elle ne couvre pas la définition de tels environnements. De ce fait, l'installateur dispose d'un certain degré de liberté et peut proposer des procédures de traitement et de présentation optimisées pour des éléments de langage spécifiques, dans l'intérêt de l'utilisateur. • Control Expert laisse ainsi une certaine liberté à l'utilisateur qui peut créer des "projets" pour traiter de manière combinée les éléments de langage "Configuration" et "Ressource" de la norme IEC. Cette souplesse s'applique également aux mécanismes fournis pour la gestion des déclarations de variables ou des instanciations de blocs fonction. Tableaux de conformité aux normes CEI Conformément à la norme, les fonctionnalités prises en charge et les autres informations de mise en œuvre spécifiques sont fournies dans la déclaration de conformité et les tableaux associés (voir sections suivantes). 35006145.25 549 Langages de programmation et structure Conformité CEI Tableaux de conformité CEI Vue d'ensemble Ce système respecte les exigences de la norme CEI 61131-3 en matière de langages et fonctionnalités (voir tableaux ci-après). Eléments communs Eléments communs Tableau de conformité IEC des éléments communs : N° de tableau N° de fonctionnalité Description de la fonctionnalité 1 2 Caractères en minuscules 3a Signe nombre (#) 4a Signe dollar ($) 5a Barre verticale (|) 1 Caractères en majuscules et nombres 2 Caractères en minuscules et majuscules, nombres, caractères de soulignement intégrés 3 Caractères en minuscules et majuscules, nombres, caractères de soulignement de début ou intégrés 3 1 Commentaires 3a 1 Directives pragma 4 1 Valeurs littérales entières 2 Valeurs littérales réelles 3 Valeurs littérales réelles avec exposants 4 Valeurs littérales en base 2 5 Valeurs littérales en base 8 6 Valeurs littérales en base 16 7 Valeurs booléennes 0 et 1 8 Valeurs booléennes FALSE et TRUE 2 550 35006145.25 Conformité CEI N° de tableau 5 6 7 8 10 35006145.25 Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 9 Valeurs littérales typées 1 Chaînes de caractères sur un octet 3 Valeurs littérales de chaîne typées sur un octet 2 Signe dollar 3 Apostrophe 4 Retour à la ligne 5 Nouvelle ligne 6 Saut de page 7 Retour chariot 8 Onglet 9 Guillemets 1a Valeurs littérales de durée sans soulignement : préfixe court 1b préfixe long 2a Valeurs littérales de durée avec soulignement : préfixe court 2b préfixe long 1 Valeurs littérales de date (préfixe long) 2 Valeurs littérales de date (préfixe court) 3 Valeurs littérales d'heure (préfixe long) 4 Valeurs littérales d'heure (préfixe court) 5 Valeurs littérales de date et heure (préfixe long) 5 Valeurs littérales de date et heure (préfixe court) 1 Type de données BOOL 3 Type de données INT 4 Type de données DINT 7 Type de données UINT 8 Type de données UDINT 10 Type de données REAL 12 Type de données TIME 13 Type de données DATE 551 Langages de programmation et structure N° de tableau 12 14 15 17 18 552 Conformité CEI N° de fonctionnalité Description de la fonctionnalité 14 Type de données TIME_OF_DAY ou TOD 15 Type de données DATE_AND_TIME ou DT 16 Type de données STRING 17 Type de données BYTE 18 Type de données WORD 19 Type de données DWORD 4 Types de données des tableaux (arrays) 5 Types de données structurées 4 Initialisation de types de données tableau 6 Initialisation de types de données structurées dérivées 1 Emplacement d'entrée 2 Emplacement de sortie 3 Emplacement mémoire 4 Taille d'un bit (préfixe X) 5 Taille d'un bit (pas de préfixe) 7 Taille d'un mot (16 bits) 8 Taille d'un mot double (32 bits) 9 Taille d'un mot long (quad - 64 bits) 3 Déclaration des emplacements des variables symboliques (Remarque 5, page 559) 4 Affectation d'emplacement de tableau (Remarque 5, page 559) 5 Affectation automatique en mémoire des variables symboliques 6 Déclaration de tableau (Remarque 11, page 562) 7 Déclaration de tableau mémorisée (Remarque 11, page 562) 8 Déclaration de variables structurées 1 Initialisation de variables directement représentées (Remarque 11, page 562) 3 Affectation d'emplacement et de valeur initiale aux variables symboliques 4 Affectation et initialisation d'emplacements de tableau 5 Initialisation de variables symboliques 35006145.25 Conformité CEI N° de tableau 19 19a 20 20a 21 22 23 35006145.25 Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 6 Initialisation de tableau (Remarque 11, page 562) 7 Déclaration et initialisation de tableau mémorisées (Remarque 11, page 562) 8 Initialisation de variables structurées 9 Initialisation de constantes 10 Initialisation d'instances de bloc fonction 1 Entrée inversée 2 Sortie inversée 1 Appel formel de fonction/bloc fonction 2 Appel informel de fonction/bloc fonction 1 Utilisation de EN et ENO en langage LD 2 Utilisation sans EN et ENO en langage FBD 1 Déclaration de variables d'E/S (texte) 2 Déclaration de variables d'E/S (graphique) 3 Liaison graphique de variable d'E/S à différentes variables (graphique) 1 Fonctions surchargées 2 Fonctions typées 1 *_TO_** (Remarque 1, page 558) 2 TRUNC (Remarque 2, page 559) 3 *_BCD_TO_** (Remarque 3, page 559) 4 **_TO_BCD_* (Remarque 3, page 559) 1 Fonction ABS 2 Fonction SQRT 3 Fonction LN 4 Fonction LOG 5 Fonction EXP 6 Fonction SIN 7 Fonction COS 8 Fonction TAN 9 Fonction ASIN 10 Fonction ACOS 553 Langages de programmation et structure N° de tableau 24 25 26 27 28 29 554 Conformité CEI N° de fonctionnalité Description de la fonctionnalité 11 Fonction ATAN 12 Fonction ADD 13 Fonction MUL 14 Fonction SUB 15 Fonction DIV 16 Fonction MOD 17 Fonction EXPT 18 Fonction MOVE 1 Fonction SHL 2 Fonction SHR 3 Fonction ROR 4 Fonction ROL 5 Fonction AND 6 Fonction OR 7 Fonction XOR 8 Fonction NOT 1 Fonction SEL 2a Fonction MAX 2b Fonction MIN 3 Fonction LIMIT 4 Fonction MUX 5 Fonction GT 6 Fonction GE 7 Fonction EQ 8 Fonction LE 9 Fonction LT 10 Fonction NE 1 Fonction LEN (Remarque 4, page 559) 2 Fonction LEFT (Remarque 4, page 559) 3 Fonction RIGHT (Remarque 4, page 559) 4 Fonction MID (Remarque 4, page 559) 35006145.25 Conformité CEI N° de tableau 30 33 34 35006145.25 Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 6 Fonction INSERT (Remarque 4, page 559) 7 Fonction DELETE (Remarque 4, page 559) 8 Fonction REPLACE (Remarque 4, page 559) 9 Fonction FIND (Remarque 4, page 559) 1a Fonction ADD (Remarque 6, page 561) 1b Fonction ADD_TIME 2b Fonction ADD_TOD_TIME 3b Fonction ADD_DT_TIME 4a Fonction SUB (Remarque 6, page 561) 4b Fonction SUB_TIME 5b Fonction SUB_DATE_DATE 6b Fonction SUB_TOD_TIME 7b Fonction SUB_TOD_TOD 8b Fonction SUB_DT_TIME 9b Fonction SUB_DT_DT 10a Fonction MUL (Remarque 6, page 561) 10b Fonction MULTIME 11a Fonction DIV (Remarque 6, page 561) 11b Fonction DIVTIME 1a Qualificatif RETAIN pour variables internes (Remarque 11, page 562) 2a Qualificatif RETAIN pour variables de sortie (Remarque 11, page 562) 2b Qualificatif RETAIN pour variables d'entrée (Remarque 11, page 562) 3a Qualificatif RETAIN pour blocs fonction internes (Remarque 11, page 562) 4a Déclaration VAR_IN_OUT (texte) 4b Déclaration VAR_IN_OUT et utilisation (graphique) 4c Déclaration VAR_IN_OUT avec affectation à différentes variables (graphique) 1 Bloc fonction bistable (réglage dominant) 2 Bloc fonction bistable (réarmement dominant) 555 Langages de programmation et structure N° de tableau N° de fonctionnalité Description de la fonctionnalité 35 1 Détecteur front montant 2 Détecteur front descendant 1a Bloc fonction CTU (compteur croissant) 1b Bloc fonction CTU_DINT 1d Bloc fonction CTU_UDINT 2a Bloc fonction CTD (compteur décroissant) 2b Bloc fonction CTD_DINT 2d Bloc fonction CTD_UDINT 3a Bloc fonction CTUD (compteur/décompteur) 3b Bloc fonction CTUD_DINT 3d Bloc fonction CTUD_UDINT 1 Bloc fonction TP (impulsion) 2a Bloc fonction TON (temporisation d'activation) 3a Bloc fonction TOF (temporisation de désactivation) 39 19 Utilisation de variables directement représentées 40 1 Etape et étape initiale (forme graphique avec liaisons directes) 3a Indicateur d'étape (forme générale) 4 Temps écoulé pour l'étape (forme générale) 7 Utilisation du nom de transition 7a Condition de transition associée via le nom de transition dans le langage LD 7b Condition de transition associée via le nom de transition dans le langage FBD 7c Condition de transition associée via le nom de transition dans le langage IL 7d Condition de transition associée via le nom de transition dans le langage ST 1 Toute variable booléenne déclarée dans un bloc VAR ou VAR_OUTPUT (ou leurs équivalents graphiques) peut être une action 2l Déclaration graphique d'action dans le langage LD 2f Déclaration graphique d'action dans le langage FBD 3s Déclaration textuelle d'action dans le langage ST 36 37 41 42 556 Conformité CEI 35006145.25 Conformité CEI N° de tableau Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 3i Déclaration textuelle d'action dans le langage IL 1 Bloc d'action adjacent (physiquement ou logiquement) à l'étape (Remarque 7, page 561) 2 Blocs d'action concaténés adjacents (physiquement ou logiquement) à l'étape (Remarque 8, page 561) 1 Qualificatif d'action dans bloc d'action pris en charge 2 Nom d'action dans bloc d'action pris en charge 1 None - aucun qualificatif 2 Qualificatif N 3 Qualificatif R 4 Qualificatif S 5 Qualificatif L 6 Qualificatif D 7 Qualificatif P 9 Qualificatif DS 11 Qualificatif P1 12 Qualificatif P0 45a 2 Contrôle d'action sans "cycle final" 46 1 Séquence unique 2a Divergence de la sélection de séquence : priorité de gauche à droite des évaluations de transition 3 Convergence de sélection de séquence 4 Séquences simultanées - divergence et convergence 5a Séquence ignorée : priorité de gauche à droite des évaluations de transition 6a Boucle de séquence : priorité de gauche à droite des évaluations de transition 1 Construction CONFIGURATION...END_CONFIGURATION (Remarque 12, page 562) 5a Construction TASK périodique 5b Construction TASK non périodique 6a Construction WITH pour association PROGRAM à TASK (Remarque 9, page 561) 43 44 45 49 35006145.25 557 Langages de programmation et structure N° de tableau 50 Conformité CEI N° de fonctionnalité Description de la fonctionnalité 6c Déclaration PROGRAM sans association de TASK (Remarque 10, page 561) 5a Planification non préemptive (Remarque 13, page 562) 5b Planification préemptive (Remarque 14, page 562) Remarque 1 Liste des fonctions de conversion de type : • BOOL_TO_BYTE, BOOL_TO_DINT, BOOL_TO_INT, BOOL_TO_REAL, BOOL_TO_TIME, BOOL_TO_UDINT, BOOL_TO_UINT, BOOL_TO_WORD, BOOL_TO_DWORD • BYTE_TO_BOOL, BYTE_TO_DINT, BYTE_TO_INT, BYTE_TO_REAL, BYTE_TO_TIME, BYTE_TO_UDINT, BYTE_TO_UINT, BYTE_TO_WORD, BYTE_TO_DWORD, BYTE_TO_ BIT • DINT_TO_BOOL, DINT_TO_BYTE, DINT_TO_INT, DINT_TO_REAL, DINT_TO_TIME, DINT_TO_UDINT, DINT_TO_UINT, DINT_TO_WORD, DINT_TO_DWORD, DINT_TO_ DBCD, DINT_TO_STRING • INT_TO_BOOL, INT_TO_BYTE, INT_TO_DINT, INT_TO_REAL, INT_TO_TIME, INT_ TO_UDINT, INT_TO_UINT, INT_TO_WORD, INT_TO_BCD, INT_TO_DBCD, INT_TO_ DWORD, INT_TO_STRING • REAL_TO_BOOL, REAL_TO_BYTE, REAL_TO_DINT, REAL_TO_INT, REAL_TO_TIME, REAL_TO_UDINT, REAL_TO_UINT, REAL_TO_WORD, REAL_TO_DWORD, REAL_TO_ STRING • TIME_TO_BOOL, TIME_TO_BYTE, TIME_TO_DINT, TIME_TO_INT, TIME_TO_REAL, TIME_TO_UDINT, TIME_TO_UINT, TIME_TO_WORD, TIME_TO_DWORD, TIME_TO_ STRING • UDINT_TO_BOOL, UDINT_TO_BYTE, UDINT_TO_DINT, UDINT_TO_INT, UDINT_TO_ REAL, UDINT_TO_TIME, UDINT_TO_UINT, UDINT_TO_WORD, UDINT_TO_DWORD • UINT_TO_BOOL, UINT_TO_BYTE, UINT_TO_DINT, UINT_TO_INT, UINT_TO_REAL, UINT_TO_TIME, UINT_TO_UDINT, UINT_TO_WORD, UINT_TO_DWORD, • WORD_TO_BOOL, WORD_TO_BYTE, WORD_TO_DINT, WORD_TO_INT, WORD_TO_REAL, WORD_TO_TIME, WORD_TO_UDINT, WORD_TO_UINT, WORD_TO_BIT, WORD_TO_ DWORD • DWORD_TO_BOOL, DWORD_TO_BYTE, DWORD_TO_DINT, DWORD_TO_INT, DWORD_TO_ REAL, DWORD_TO_TIME, DWORD_TO_UDINT, DWORD_TO_UINT, DWORD_TO_BIT, Les effets de chaque conversion sont décrits dans l'aide fournie avec la bibliothèque de base. 558 35006145.25 Conformité CEI Langages de programmation et structure Remarque 2 Liste de types pour la fonction de troncature (TRUNC) : • REAL_TRUNC_DINT, REAL_TRUNC_INT, REAL_TRUNC_UDINT, REAL_TRUNC_UINT Les effets de chaque conversion sont décrits dans l'aide fournie avec la bibliothèque de base. Remarque 3 Liste de types pour la fonction de conversion BCD : • BCD_TO_INT, DBCD_TO_INT, DBCD_TO_DINT Liste de types pour la fonction de conversion BCD : • INT_TO_BCD, INT_TO_DBCD, DINT_TO_DBCD Les effets de chaque conversion sont décrits dans l'aide fournie avec la bibliothèque de base. Remarque 4 Liste de types pour les fonctions de chaîne : • LEN_INT, LEFT_INT, RIGHT_INT, MID_INT, INSERT_INT, DELETE_INT, REPLACE_INT, FIND_INT Remarque 5 Une variable peut être affectée à une variable directement représentée en cas d'identité stricte des types. Cela signifie qu'une variable de type INT ne peut être associée qu'à une variable directement représentée de type INT. Il existe une exception à cette règle : pour les variables mémoire mot interne (%MW<i>), mot linéaire (%IW<i>) et mot constant (%KW<i>), tout type de variable déclaré est autorisé. Mappages autorisés : 35006145.25 559 Langages de programmation et structure Bit interne Conformité CEI Syntaxe Type de données Types de variable autorisés %M<i> ou %MX<i> EBOOL EBOOL ARRAY [..] OF EBOOL Mot interne %MW<i> INT Tous les types sont autorisés à l'exception de : • EBOOL • ARRAY [..] OF EBOOL Mot double interne %MD<i> DINT Pas de mappage, car chevauchement entre %MW<i>, %MD<i> et %MF<i>. Réel interne %MF<i> REAL Pas de mappage, car chevauchement entre %MW<i>, %MD<i> et %MF<i>. Mot constant %KW<i> INT Tous les types sont autorisés à l'exception de : Mot double constant %KD<i> DINT • EBOOL • ARRAY [..] OF EBOOL Pas de mappage, car chevauchement entre %KW<i>, %KD<i> et %KF<i>. Les variables de cette sorte n'existent que sur les automates Premium. Réel constant %KF<i> REAL Pas de mappage, car chevauchement entre %KW<i>, %KD<i> et %KF<i>. Les variables de cette sorte n'existent que sur les automates Premium. Bit système %S<i> ou %SX<i> EBOOL EBOOL Mot système %SW<i> INT INT Mot double système %SD<i> DINT DINT Bit linéaire %I<i> EBOOL EBOOL ARRAY [..] OF EBOOL Les variables de cette sorte n'existent que sur les automates Quantum. Mot linéaire 560 %IW<i> INT Tous les types sont autorisés à l'exception de : • EBOOL • ARRAY [..] OF EBOOL 35006145.25 Conformité CEI Langages de programmation et structure Syntaxe Type de données Types de variable autorisés Les variables de cette sorte n'existent que sur les automates Quantum. Mot commun %NWi.j.k INT INT Variables topologiques %I..., %Q..., ... ... Type identique (Sur certains modules d'E/S numériques, il est possible de mapper des tableaux EBOOL sur des objets %IX<topo> et % QX<topo>.) Bits extraits %MWi.j, ... BOOL BOOL Remarque 6 Opérateurs "+" (pour ADD), "-" (pour SUB), "*" (pour MUL) ou "/" (pour DIV) uniquement en langage ST. Remarque 7 Cette fonctionnalité apparaît uniquement dans la "vue étendue" du diagramme. Remarque 8 Cette fonctionnalité apparaît dans la "vue étendue" du diagramme, non pas sous la forme de blocs concaténés, mais sous la forme d'une liste déroulante de noms d'action avec qualificatifs associés à l'intérieur d'un même symbole de bloc. Remarque 9 Il existe uniquement un mappage un-à-un de l'instance de programme à la tâche. Le format textuel est remplacé par une boîte de dialogue de propriétés. Remarque 10 Le format textuel est remplacé par une boîte de dialogue de propriétés. 35006145.25 561 Langages de programmation et structure Conformité CEI Remarque 11 Toutes les variables sont mémorisées (qualificatif RETAIN implicitement admis dans les déclarations de variables). Remarque 12 Le format textuel est remplacé par la représentation du navigateur de projet. Remarque 13 L'utilisateur peut obtenir un comportement non préemptif à l'aide de l'instruction Mask-IT. MASKEVT (masquage global des événements) et UNMASKEVT (démasquage global des événements) sont disponibles dans les fonctions système de la bibliothèque. Remarque 14 Par défaut, le système multitâche est préemptif. Eléments de langage IL Eléments de langage IL Tableau de conformité CEI des éléments de langage IL : 562 N° de tableau N° de fonctionnalité Description de la fonctionnalité 51b 1 Expression entre parenthèses commençant par un opérateur explicite 51b 2 Expression entre parenthèses (forme courte) 52 1 Opérateur LD (avec modificateur "N") 2 Opérateur ST (avec modificateur "N") 3 Opérateur S, R 4 Opérateur AND (avec modificateurs "(", "N") 6 Opérateur OR (avec modificateurs "(", "N") 7 Opérateur XOR (avec modificateurs "(", "N") 35006145.25 Conformité CEI N° de tableau 53 Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 7a Opérateur NOT 8 Opérateur ADD (avec modificateur "(") 9 Opérateur SUB (avec modificateur "(") 10 Opérateur MUL (avec modificateur "(") 11 Opérateur DIV (avec modificateur "(") 11a Opérateur MOD (avec modificateur "(") 12 Opérateur GT (avec modificateur "(") 13 Opérateur GE (avec modificateur "(") 14 Opérateur EQ (avec modificateur "(") 15 Opérateur NE (avec modificateur "(") 16 Opérateur LE (avec modificateur "(") 17 Opérateur LT (avec modificateur "(") 18 Opérateur JMP (avec modificateurs "C", "N") 19 Opérateur CAL (avec modificateurs "C", "N") 20 Opérateur RET (avec modificateurs "C", "N") (Remarque, page 563) 21 ) (opération d'évaluation différée) 1a CAL pour bloc fonction avec liste d'arguments informelle 1b CAL pour bloc fonction avec liste d'arguments formelle 2 CAL pour bloc fonction avec chargement/stockage d'arguments 4 Appel de fonction avec liste d'arguments formelle 5 Appel de fonction avec liste d'arguments informelle Remarque Dans bloc DFB uniquement. 35006145.25 563 Langages de programmation et structure Conformité CEI Eléments de langage ST Eléments de langage ST Tableau de conformité CEI des éléments de langage ST : N° de tableau N° de fonctionnalité Description de la fonctionnalité 55 1 Mise entre parenthèses (expression) 2 Evaluation de fonction : Nomfonction(listeArguments) 3 Elévation à une puissance : ** 4 Négation : - 5 Complément : NOT 6 Multiplication : * 7 Division : / 8 Modulo : MOD 9 Addition : + 10 Soustraction : - 11 Comparaison : <, >, <=, >= 12 Egalité : = 13 Inégalité : <> 14 Booléen ET : & 15 Booléen ET : AND 16 Booléen OU exclusif : XOR 17 Booléen OU : OR 1 Affectation 2 Appel de bloc fonction et utilisation sortie bloc fonction 3 Instruction RETURN (Remarque, page 565) 4 Instruction IF 5 Instruction CASE 6 Instruction FOR 7 Instruction WHILE 8 Instruction REPEAT 9 Instruction EXIT 56 564 35006145.25 Conformité CEI N° de tableau Langages de programmation et structure N° de fonctionnalité Description de la fonctionnalité 10 Instruction vide Remarque Dans bloc DFB uniquement. Eléments graphiques communs Eléments graphiques communs Tableau de conformité CEI des éléments graphiques communs : N° de tableau N° de fonctionnalité Description de la fonctionnalité 57 2 Lignes horizontales : graphique ou semi-graphique 4 Lignes verticales : graphique ou semi-graphique 6 Connexion horizontale/verticale : graphique ou semi-graphique 8 Franchissements de lignes sans connexion : graphique ou semi-graphique 10 Coins connectés et non connectés : graphique ou semi-graphique 12 Blocs avec lignes de connexion : graphique ou semi-graphique 1 Saut inconditionnel : langage FBD 2 Saut inconditionnel : langage LD 3 Saut conditionnel : langage FBD 4 Saut conditionnel : langage LD 5 Retour conditionnel : langage LD (Remarque, page 566) 6 Retour conditionnel : langage FBD (Remarque, page 566) 7 Retour inconditionnel depuis fonction ou bloc fonction (Remarque, page 566) 8 Retour inconditionnel : langage LD (Remarque, page 566) 58 35006145.25 565 Langages de programmation et structure Conformité CEI Remarque Dans bloc DFB uniquement. Eléments de langage LD Eléments de langage LD Tableau de conformité CEI des éléments de langage LD : N° de tableau N° de fonctionnalité Description de la fonctionnalité 59 1 Barre d'alimentation gauche 2 Barre d'alimentation droite 1 Liaison horizontale 2 Liaison verticale 1 Contact à fermeture (barre verticale) (Remarque, page 566) 3 Contact à ouverture (barre verticale) (Remarque, page 566) 5 Contact de détection de transition positive (barre verticale) (Remarque, page 566) 7 Contact de détection de transition négative (barre verticale) (Remarque, page 566) 1 Bobine 2 Bobine inverse 3 Bobine SET (mémorisation) 4 Bobine RESET (déclenchement) 8 Bobine de détection de transition positive 9 Bobine de détection de transition négative 60 61 62 Remarque Représentation graphique seulement. 566 35006145.25 Conformité CEI Langages de programmation et structure Paramètres dépendants de la mise en œuvre Paramètres dépendants de la mise en œuvre Tableau de conformité CEI des paramètres dépendants de la mise en œuvre : Paramètres Limites et comportement Longueur maximum des identificateurs 32 caractères Longueur maximum des commentaires Dans Control Expert : 1024 caractères par objet d'éditeur. Importation : limitée par les contraintes XML ou l'utilisation de chaînes UDB dans la couche persistante. Syntaxe et sémantique des directives pragma Unity Pro V1.0 prend uniquement en charge 1 directive pragma, utilisée pour le convertisseur hérité : { ConvError (' texte erreur'); } toute autre construction pragma est ignorée (un message d'avertissement est fourni) NOTE: Unity Pro est l’ancien nom de Control Expert pour les versions 13.1 et antérieures. Syntaxe et sémantique pour l'utilisation du caractère guillemet lorsqu'une application particulière prend en charge la fonctionnalité n° 4 du tableau 5, mais pas la fonctionnalité n ° 2. (la fonctionnalité n° 2 du tableau 5 est prise en charge) Plage de valeurs et précision de la représentation pour les variables de type TIME, DATE, TIME_OF_DAY et DATE_AND_ TIME pour TIME : t#0ms .. t#4294967295ms (=t#49D_17H_2M_47S_295MS) pour DATE: D#1990-01-01 .. D#2099-12-31 pour TOD: TOD#00:00:00 .. TOD#23:59:59 Précision de la représentation des secondes pour les types TIME, TIME_OF_DAY et DATE_ AND_TIME TIME : précision d'1 ms Nombre maximum de valeurs énumérées Non applicable Nombre maximum d'indices de tableau 6 Taille de tableau maximum 64 Ko Nombre maximum d'éléments de structure pas de limite Taille de structure maximum pas de limite Plage maximum de valeurs d'indice plage DINT 35006145.25 TIME_OF_DAY : précision d'1 s 567 Langages de programmation et structure Conformité CEI Paramètres Limites et comportement Nombre maximum de niveaux dans structures imbriquées 10 Longueur maximum par défaut des variables STRING et WSTRING 16 caractères Longueur maximum autorisée des variables STRING et WSTRING 64 Ko Nombre maximum de niveaux hiérarchiques Premium : affectation physique (5 niveaux) Affectation logique ou physique Quantum : affectation logique (1 niveau) Nombre maximum d'entrées pour les fonctions extensibles Le nombre maximum de paramètres d'entrée (paramètres d'E/ S inclus) est égal à 32. Le nombre maximum de paramètres de sortie (paramètres d'E/S inclus) est aussi égal à 32. Le nombre maximum de paramètres d'entrée pour les fonctions extensibles est donc égal à (32 - nombre de paramètres d'entrée - nombre de paramètres d'E/S). Le nombre maximum de paramètres de sortie pour les fonctions extensibles est donc égal à (32 - nombre de paramètres de sortie - nombre de paramètres d'E/S). Effets des conversions de type de données sur la précision Reportez-vous à l'aide en ligne. Conditions d'erreur lors des conversions de type de données Les conditions d'erreur sont décrites dans l'aide en ligne. Globalement, %S18 est activé pour les erreurs de dépassement détectées. ENO est également activé. Le résultat dépend de la fonction utilisée. Précision des fonctions numériques Traitement ou émulation de virgule flottante INTEL Effets des conversions entre des types de données temporelles et d'autres types de données non définis dans le tableau 30 Reportez-vous à l'aide en ligne. Nombre maximum d'indications et instanciations de blocs fonction Seulement limité par la taille maximum d'une section. Affectation de variables d'entrée pour blocs fonction lorsqu'EN est sur FALSE Pas d'affectation Pvmin, Pvmax de compteurs Compteurs base INT : • Pvmin=-32768 (0x8000) • Pvmax=32767 (0x7FFF) Compteurs base UINT : • Pvmin=0 (0x0) • Pvmax=65535 (0xFFFF) Compteurs base DINT : • Pvmin= -2147483648 (0x80000000) • Pvmax=2147483647 (0x7FFFFFFF) Compteurs base UDINT : 568 35006145.25 Conformité CEI Paramètres Langages de programmation et structure Limites et comportement • Pvmin=0 (0x0) • Pvmax=4294967295 (0xFFFFFFFF) Effet du changement de la valeur d'une entrée PT pendant une opération de temporisation Les nouvelles valeurs PT sont immédiatement prises en compte, même lorsqu'une opération de temporisation est en cours. Limites liées à la taille des programmes Dépend du type d'automate et de la mémoire Précision au niveau du temps écoulé associé à une étape 10 ms Nombre maximum d'étapes par SFC 1 024 étapes par section SFC Nombre maximum de transitions par SFC et par étape Limité par la zone disponible pour la saisie des étapes/ transitions et par le nombre maximum d'étapes par section SFC (1 024 étapes). 32 transitions par étape. Limité par la zone disponible pour la saisie des branches Divergence en OU/Divergence en ET, 32 lignes maximum. Nombre maximum de blocs action par étape 20 Accès à l'équivalent fonctionnel des sorties Q ou A Non applicable Temps de franchissement d'une transition Dépendant de la transition toujours < 100 micro-secondes Profondeur maximum des constructions de divergence/convergence 32 Contenu des bibliothèques RESOURCE Non applicable Effet de l'utilisation de l'accès READ_WRITE sur les sorties de blocs fonction Non applicable Nombre maximum de tâches Dépend du type d'automate. Nombre maximum sur l'automate le plus puissant : 9 tâches Résolution d'intervalle de tâche 10 ms Longueur maximum des expressions Presque sans limite Longueur maximum des instructions Presque sans limite Nombre maximum de sélections CASE Presque sans limite Valeur de la variable de contrôle après exécution d'une boucle FOR Non défini Limites liées à la topologie du réseau Aucune restriction Ordre d'évaluation des boucles de retour Le bloc connecté à la variable de retour est exécuté en premier. 35006145.25 569 Langages de programmation et structure Conformité CEI Conditions d'erreur Conditions d'erreur Tableau de conformité CEI des conditions d'erreur : 570 Conditions d'erreur Traitement (Remarque, page 571) Commentaires imbriqués 2) erreur signalée pendant la programmation La valeur d'une variable dépasse la sous-plage définie 4) erreur signalée pendant l'exécution Configuration manquante d'une indication d'adresse incomplète (notation "*") Non applicable Tentative, par une unité organisationnelle du programme, de modification d'une variable déclarée en tant que CONSTANTE 2) erreur signalée pendant la programmation Utilisation incorrecte, dans des fonctions, de variables externes ou directement représentées Non applicable Une variable VAR_IN_OUT n'est pas "correctement affectée" 2) erreur signalée pendant la programmation Erreurs de conversion de type 4) erreur signalée pendant l'exécution Le résultat numérique dépasse la plage définie pour le type de données 4) erreur signalée pendant l'exécution Division par zéro 4) erreur signalée pendant l'exécution Types de données mixtes en entrée pour une fonction de sélection 2) erreur signalée pendant la programmation Le résultat dépasse la plage définie pour le type de données 4) erreur signalée pendant l'exécution Aucune valeur définie pour une variable d'E/S 2) erreur signalée pendant la programmation Zéro ou plus d'une étape initiale dans le réseau SFC 3) erreur signalée pendant l'analyse/le chargement/la liaison Le programme utilisateur tente de modifier l'état ou l'heure d'une étape 2) erreur signalée pendant la programmation Effets de bord pendant l'évaluation d'une condition de transition 3) erreur signalée pendant l'analyse/le chargement/la liaison Erreur de conflit au niveau du contrôle des actions 3) erreur signalée pendant l'analyse/le chargement/la liaison Transitions sans ordre de priorité simultanément vraies dans une divergence de sélection Non applicable SFC non fiable ou inaccessible 3) erreur signalée pendant l'analyse/le chargement/la liaison 35006145.25 Conformité CEI Langages de programmation et structure Conditions d'erreur Traitement (Remarque, page 571) Conflit de type de données dans VAR_ACCESS Non applicable Une tâche ne parvient pas à être ordonnancée ou délai d'exécution impossible à respecter 4) erreur signalée pendant l'exécution Le résultat numérique dépasse la plage définie pour le type de données 4) erreur signalée pendant l'exécution Les types de données du résultat courant et de l'opérande sont différents 2) erreur signalée pendant la programmation Division par zéro 4) erreur signalée pendant l'exécution Le résultat numérique dépasse la plage définie pour le type de données 4) erreur signalée pendant l'exécution Type de données incorrect pour l'opération 4) erreur signalée pendant l'exécution Retour de fonction sans valeur affectée Non applicable Echec de fin de l'itération 4) erreur signalée pendant l'exécution Le même identificateur est utilisé comme libellé de connecteur et nom d'élément Non applicable Variable de retour non initialisée 1) erreur non signalée Remarque Identifications pour le traitement des conditions d'erreur (conformément à la norme CEI 61131-3, sous-alinéa 1.5.1, d) : • 1) erreur non signalée • 2) erreur signalée pendant la programmation • 3) erreur signalée pendant l'analyse/le chargement/la liaison • 4) erreur signalée pendant l'exécution Extensions de la norme CEI 61131-3 Vue d'ensemble Cette section décrit les extensions de la norme CEI 61131-3. 35006145.25 571 Langages de programmation et structure Conformité CEI Extensions de la norme IEC 61131-3, 2e édition Présentation En plus des fonctions normalisées par l'IEC, répertoriées dans les Tableaux de conformité IEC, page 550, l'environnement de programmation Control Expert a hérité d'un certain nombre de fonctionnalités de l'environnement PL7. Ces extensions sont fournies de façon facultative ; il est possible de les sélectionner dans la boîte de dialogue d'options correspondante. Une description détaillée de la boîte de dialogue et des fonctions est fournie dans la rubrique Données et langages (voir EcoStruxure™ Control Expert, Modes de fonctionnement) de l'aide en ligne. Une autre extension héritée des environnements de programmation PL7 et Concept ne figure pas dans la boîte de dialogue d'options : Control Expert fournit la structure de section dans tous les langages de programmation, ce qui permet de subdiviser une unité d'organisation de programme (un POU). Cette structure donne la possibilité de mélanger plusieurs langages (sections FBD et sections SFC, par exemple) dans le corps d'un POU. Utilisée de façon appropriée, cette fonction constitue une extension de la syntaxe CEI. Un corps de POU ne doit contenir qu'une seule section. Les sections ou unités de programme ne créent pas de portée de nom distincte, le POU constituant la portée de nom de tous les éléments du langage. Objectif des sections ou unités de programme Les sections ou unités de programme ont différents objectifs : 572 • Les sections ou unités de programme permettent de diviser des corps de POU volumineux selon les différents aspects fonctionnels : l'utilisateur a la possibilité de diviser le corps du POU en parties ayant une fonctionnalité propre. La liste des sections constitue un sommaire de fonctions pour un corps de POU volumineux par ailleurs non structuré. • Les sections ou unités de programme permettent de diviser des corps de POU volumineux en fonction des différents aspects graphiques : l'utilisateur a la possibilité de concevoir les structures d'un corps de POU volumineux en fonction de la représentation graphique souhaitée. Selon ce qu'il recherche, il peut créer des sections graphiques plus ou moins grandes. • La division des corps de POU volumineux permet d'effectuer de rapides changements en ligne : dans Control Expert, la section ou l'unité de programme constitue l'unité du changement en ligne. Si un corps de POU est modifié en différents emplacements pendant l'exécution, toutes les sections affectées par la modification sont automatiquement chargées sur requête explicite. 35006145.25 Conformité CEI Langages de programmation et structure • Les sections ou unités de programme permettent de réorganiser l'ordre d'exécution de parties spécifiques portant une étiquette : le nom de la section tient lieu d'étiquette pour la partie du corps qu'elle contient, et le classement de ces étiquettes permet de gérer l'ordre d'exécution de ces différentes parties. • Les sections ou unités de programme permettent d'utiliser parallèlement différents langages dans un même POU : cette fonction constitue une extension majeure de la syntaxe CEI, qui permet l'utilisation d'un seul langage CEI dans le corps d'un POU. Les différents langages utilisés dans un corps conforme doivent être gérés à l'aide de SFC (chaque transition et chaque action peuvent être formulées dans un langage propre). Syntaxe des langages textuels Vue d'ensemble Cette section décrit la syntaxe des langages textuels. Syntaxe des langages textuels Description L'environnement de programmation Control Expert ne prend pas encore en charge l'importation et l'exportation de fichiers texte conformes à la syntaxe complète des langages textuels, telle qu'elle est définie dans l'Annexe B de la norme IEC 61131-3, deuxième édition. En revanche, la syntaxe textuelle des langages IL et ST, telle qu'elle est définie dans l'Annexe B.2 et B.3 de la norme IEC 61131-3, deuxième édition (productions associées de manière directe et indirecte à l'Annexe B.1 incluses), est prise en charge dans les sections en langage textuel. Les productions de syntaxe de l'Annexe B de la norme IEC 61131-3 deuxième édition qui appartiennent à des fonctionnalités non prises en charge par Control Expert selon les tableaux de conformité, page 550 ne sont pas mises en œuvre. 35006145.25 573 Langages de programmation et structure Glossaire A ANY: Une hiérarchie existe entre les différents types de données. Dans les DFB, il est parfois possible de déclarer les variables pouvant contenir plusieurs types de valeurs. On utilise alors les types ANY_xxx. Le diagramme suivant montre la structure ordonnée hiérarchiquement: 35006145.25 575 Langages de programmation et structure ARRAY: Un ARRAY est un tableau d'éléments de même type. La syntaxe est la suivante : ARRAY [<terminals>] OF <Type> Exemple : ARRAY [1..2] OF BOOL est un tableau à une dimension composé de deux éléments de type BOOL. ARRAY [1..10, 1..20] OF INT est un tableau à deux dimensions composé de 10x20 éléments de type INT. B BOOL: BOOL est l'abréviation du type booléen. Il s'agit de l'élément de données de base en informatique. Une variable de type BOOL a pour valeur 0 (FALSE) ou 1 (TRUE). Un bit extrait de mot est de type BOOL, par exemple %MW10.4. BYTE: Lorsque 8 bits sont regroupés, on parle alors de BYTE (octet). La saisie d'un BYTE s'effectue soit en mode binaire, soit en base 8. Le type BYTE est codé sur un format 8 bits qui, au format hexadécimal, va de 16#00 à 16#FF. C CHAINE: Une variable de type STRING est une chaîne de caractères ASCII. La longueur maximale d'une chaîne de caractères est de 65 534 caractères. 576 35006145.25 Langages de programmation et structure convention de nommage (identificateur): Un identificateur est une suite de lettres, de chiffres et de traits de soulignement commençant par une lettre ou un trait de soulignement (par exemple, le nom d'un type de bloc fonction, d'une instance, d'une variable ou d'une section). Si vous sélectionnez l'option Etendu dans la boîte de dialogue Outils > Options du projet... > Variables, les lettres des jeux de caractères nationaux (par exemple, ö, ü, é, õ) sont utilisables. Les traits de soulignement ont une importance dans les identificateurs ; par exemple, A_BCD et AB_CD sont interprétés comme des identificateurs différents. Les traits de soulignement ne sont pas autorisés comme derniers caractères. Les identificateurs ne peuvent pas contenir d'espace. Ils ne distinguent pas les majuscules des minuscules. Par exemple, ABCD et abcd sont interprétés comme un seul et même identificateur. Selon la norme IEC 61131-3, les identificateurs ne doivent pas commencer par des chiffres. Néanmoins, vous pouvez les utiliser si vous activez la case à cocher Chiffres non significatifs autorisés dans la boîte de dialogue Outils > Options du projet > Variables. Selon la norme CEI 61131-3, les identificateurs ne peuvent pas commencer par un trait de soulignement ni contenir plusieurs traits de soulignement consécutifs. Toutefois, vous pouvez les utiliser si vous sélectionnez l'option Etendu dans la boîte de dialogue Outils > Options du projet... > Variables > Jeu de caractères. Les identificateurs ne peuvent pas être des mots clés. D DATE: Le type DATE codé en BCD sur un format de 32 bits contient les informations suivantes : • l'année codée dans un champ de 16 bits ; • le mois codé dans un champ de 8 bits ; • le jour codé dans un champ de 8 bits. Le type DATE est entré comme suit : D#<Année>-<Mois>-<Jour>. Ce tableau donne les butées inférieure/supérieure de chaque champ : Champ Limites Commentaire Année [1990,2099] Année Mois [01,12] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Jour [01,31] Pour les mois 01/03/05/07/08/10/12 [01,30] Pour les mois 04/06/09/11 [01,29] Pour le mois 02 (années bissextiles) 35006145.25 577 Langages de programmation et structure Champ Limites Commentaire [01,28] Pour le mois 02 (années non bissextiles) DDT: DDT est l'acronyme de « Derived Data Type » (type de données dérivées). Un type de données dérivées est un ensemble d'éléments de même type (ARRAY) ou de types différents (structure). DFB: DFB est l'acronyme de « Derived Function Block » (bloc fonction dérivé). Les types DFB sont des blocs fonction programmables par l'utilisateur en langage ST, IL, LD ou FBD. L'utilisation de ces types DFB dans une application permet : • de simplifier la conception et la saisie du programme ; • d'accroître la lisibilité du programme ; • de faciliter sa mise au point ; • de diminuer le volume du code généré. DINT: DINT est l'abréviation du format Double INTeger (entier double) (codé sur 32 bits). Les limites inférieure et supérieure sont les suivantes : -(2 puissance 31) et (2 puissance 31) - 1. Exemple : -2147483648, 2147483647, 16#FFFFFFFF. 578 35006145.25 Langages de programmation et structure DT: DT est l'acronyme de « Date and Time » (date et heure). Le type DT, codé en BCD sur un format de 64 bits, contient les informations suivantes : • l’année codée dans un champ de 16 bits ; • le mois codé dans un champ de 8 bits ; • le jour codé dans un champ de 8 bits ; • l'heure codée dans un champ de 8 bits ; • les minutes codées dans un champ de 8 bits ; • les secondes codées dans un champ de 8 bits. NOTE: Les 8 bits les moins significatifs sont inutilisés. La saisie du type DT est la suivante : DT#<Année>-<Mois>-<Jour>-<Heure>:<Minutes>:<Secondes> Ce tableau donne les limites inférieure/supérieure de chaque champ : Champ Limites Commentaire Année [1990,2099] Année Mois [01,12] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Jour [01,31] Pour les mois 01/03/05/07/08/10/12 [01,30] Pour les mois 04/06/09/11 [01,29] Pour le mois 02 (années bissextiles) [01,28] Pour le mois 02 (années non bissextiles) Heure [00,23] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Minute [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Seconde [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. 35006145.25 579 Langages de programmation et structure DWORD: DWORD est l'abréviation de « Double Word » (mot double). Le type DWORD est codé sur un format de 32 bits. Ce tableau donne les limites inférieure/supérieure des bases qui peuvent être utilisées : Base Limite inférieure Limite supérieure Hexadécimale 16#0 16#FFFFFFFF Octale 8#0 8#37777777777 Binaire 2#0 2#11111111111111111111111111111111 Exemples de représentation : Contenu des données Représentation dans l'une des bases 00000000000010101101110011011110 16#ADCDE 00000000000000010000000000000000 8#200000 00000000000010101011110011011110 2#10101011110011011110 E EBOOL: EBOOL est l'abréviation du type Extended BOOLean (booléen étendu). Une variable de type EBOOL présente une valeur (0 (FALSE) ou 1 (TRUE), mais également des fronts montants ou descendants et des fonctions de forçage. Une variable de type EBOOL occupe un octet en mémoire. L'octet se compose comme suit : • un bit pour la valeur ; • un bit pour le bit d'historique (chaque fois que l'objet d'état change, la valeur est copiée dans le bit d'historique) ; • un bit pour le forçage (égal à 0 si l'objet n'est pas forcé, égal à 1 si le bit est forcé). La valeur par défaut de chaque bit est 0 (FALSE). 580 35006145.25 Langages de programmation et structure EDT: EDT est l'acronyme de « Elementary Data Type » (type de données de base). Types disponibles : • BOOL, • EBOOL, • WORD, • DWORD, • INT, • DINT, • UINT, • UDINT, • REAL, • DATE, • TOD, • DT. EFB: Abréviation de « Elementary Function Block » (bloc fonction élémentaire). Il s'agit d'un bloc, utilisé dans un programme, qui réalise une fonction logicielle prédéfinie. Les EFB présentent des états et des paramètres internes. Même si les entrées sont identiques, les valeurs des sorties peuvent différer. Par exemple, un compteur comporte une sortie qui indique que la valeur de présélection est atteinte. Cette sortie est mise à 1 lorsque la valeur en cours est égale à la valeur de présélection. Exécution cyclique: La tâche maître est exécutée soit de manière cyclique, soit de manière périodique. L'exécution cyclique consiste à enchaîner les cycles les uns après les autres sans temps d'attente entre eux. Exécution périodique: La tâche maître est exécutée soit de manière cyclique, soit de manière périodique. En mode périodique, vous déterminez une durée précise (période) pendant laquelle la tâche maître doit être exécutée. Si l'exécution est réalisée dans les délais, un temps d'attente a lieu avant le cycle suivant. Si le temps d'exécution est plus long, un système de contrôle signale ce dépassement. En cas de dépassement trop important, l'automate est arrêté. 35006145.25 581 Langages de programmation et structure I Instancier: Instancier un objet consiste à allouer un espace en mémoire dont la taille dépend du type de l'objet à instancier. Lorsqu'un objet est instancié, cela prouve qu'il existe et qu'il peut être manipulé par le programme. INT: INT est l'abréviation du format INTeger (entier) simple (codé sur 16 bits). Les limites inférieure et supérieure sont les suivantes : -(2 puissance 31) et (2 puissance 31) - 1. Exemple : -32768, 32767, 2#1111110001001001, 16#9FA4. IODDT: IODDT est l'acronyme de « Input/Output Derived Data Type » (type de données dérivées d'E/S). Le terme IODDT désigne un type de données structuré représentant un module ou une voie d'un module automate. Chaque module expert possède ses propres IODDT. J jeton unique: Mode de fonctionnement d'un graphe SFC pour lequel une seule étape peut être active à la fois. M Mot clé: Combinaison de caractères unique employée en tant qu'élément syntaxique d'un langage de programmation (voir la définition en annexe B de la norme CEI 61131-3. Tous les mots clés utilisés dans Control Expert et mentionnés dans cette norme sont répertoriés dans l'annexe C de la norme CEI 61131-3. Ils ne peuvent pas servir d'identificateurs (noms de variables, sections, types DFB, etc.) dans votre programme). Multijeton: Mode de fonctionnement d'un SFC. En mode multijeton, le SFC peut posséder plusieurs étapes actives simultanément. 582 35006145.25 Langages de programmation et structure O Objet d'E/S: Un objet d'E/S est un objet langage implicite ou explicite pour un module fonction expert ou un équipement d'E/S sur un bus de terrain. Ce sont les types suivants : %Ch, %I, %IW, % ID, %IF, %Q, %QW, % QD, QF, %KW, %KD, %KF, %MW, %MD, et %MF. L'adresse topologique des objets dépend de la position du module sur le rack ou de la position de l'équipement sur le bus. Pour les automates Premium/Atrium, les instances de type double de données localisées (%MD<i>, %KD<i>) ou flottantes (%MF<i>, %KF<i>) doivent être localisées par un type entier (%MW<i>, %KW<i>). Seuls les objets d'E/S permettent de localiser des instances de type (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) en utilisant leur adresse topologique (par exemple :%MD0.6.0.11, %MF0.6.0.31). Pour les contrôleurs Modicon M340, les instances de type double de données localisées (% MD<i>, %KD<i>) ou flottantes (%MF<i>, %KF<i>) ne sont pas disponibles. Objets SFC: Un objet SFC est une structure de données représentant les propriétés d'état d'une action ou d'une transition d'un graphe séquentiel. P Program Unit: Une unité de programme est une portion de programme associée à des variables locales et publiques propres. Les unités de programme permettent de dupliquer et d'organiser un programme à l'aide de variables locales et publiques. Les unités de programme sont compatibles avec le programme POU (Program Organization Unit), tel que défini par la norme IEC1131-3. 35006145.25 583 Langages de programmation et structure R REAL: Le type REAL (réel) est un type codé sur 32 bits. Les plages de valeurs possibles sont illustrées en gris dans la figure suivante : Lorsque le résultat d'un calcul est : • entre -1.175494e-38 et 1.175494e-38 on le considère comme unDEN ; • inférieur à -3.4028234e+38, le symbole -INF (pour moins infini) s'affiche ; • supérieur à +3.4028234e+38, le symbole INF (pour plus infini) s'affiche ; • indéfini (racine carrée d'un nombre négatif), le symbole NAN ou NAN s'affiche. NOTE: La norme CEI 559 définit deux classes de NAN : NAN silencieux (QNAN) et NaN de signalement (SNaN). Le QNAN est un NAN avec le bit de fraction de poids fort, tandis que le SNAN est un NAN sans bit de fraction de poids fort (bit numéro 22). Les QNAN peuvent être propagés par le biais de la plupart des opérations arithmétiques sans indication d'une exception. SNAN généralement signalent une exception d'opération non valide chaque fois qu'elles apparaissent comme des opérandes dans des opérations arithmétiques (Voir %SW17 et %S18). NOTE: lorsqu'un DEN (nombre non normalisé) est utilisé en tant qu'opérande, le résultat n'est pas significatif. S Section: Module programmable appartenant à une tâche pouvant être écrit dans le langage choisi par le programmeur (FBD, LD, ST, IL ou SFC). Une tâche peut être composée de plusieurs sections, l'ordre d'exécution des sections au sein de la tâche correspondant à l'ordre dans lequel elles sont créées. Cet ordre peut être modifié. sous-programme: Module de programme appartenant à une tâche (MAST, FAST, AUX) qui peut être écrit dans le langage choisi par le programmeur (FBD, LD, ST ou IL). Un sous-programme ne peut être appelé que par une section ou un autre sous-programme appartenant à la tâche dans laquelle il est déclaré. 584 35006145.25 Langages de programmation et structure Structure: Vue dans le navigateur de projet qui représente la structure du projet. T Tâche FAST: Tâche déclenchée de façon périodique (réglage de la période dans la configuration du processeur) utilisée pour exécuter une portion d'application de priorité supérieure à la tâche MAST (maître). Tâche MAST: Tâche principale du programme. Elle est obligatoire et est utilisée pour effectuer le traitement séquentiel de l'automate. Tâches auxiliaires: Tâches périodiques optionnelles utilisées pour les processus qui ne nécessitent pas de traitement rapide : mesure, régulation, aide au diagnostic, etc. TIME: Le type TIME exprime une durée en millisecondes. Codé sur 32 bits, ce type permet d'obtenir des durées de 0 à (2 puissance 32)-1 millisecondes. 35006145.25 585 Langages de programmation et structure TOD: TOD est l'abréviation de « Time Of Day » (heure du jour). Le type TOD, codé en BCD sur un format de 32 bits, contient les informations suivantes : • l'heure codée dans un champ de 8 bits ; • les minutes codées dans un champ de 8 bits ; • les secondes codées dans un champ de 8 bits. NOTE: Les 8 bits les moins significatifs sont inutilisés. Le type d'heure du jour est entré comme suit :TOD#<Heures>:<Minutes>:<Secondes> Ce tableau donne les limites inférieure/supérieure de chaque champ : Champ Limites Commentaire Heure [00,23] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Minute [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Seconde [00,59] Le 0 de gauche est toujours affiché ; il peut être omis lors de la saisie. Exemple : TOD#23:59:45. Traitement événementiel: Le traitement événementiel 1 est une section de programme déclenchée par un événement. Les instructions programmées dans cette section sont exécutées lorsqu'un événement logiciel (temporisation) ou matériel (module métier) est reçu par le processeur. Les traitements événementiels sont prioritaires par rapport aux autres tâches et sont exécutés dès la détection de l'événement. Le traitement événementiel EVT0 est prioritaire entre tous. Les autres ont le même niveau de priorité. NOTE: Pour M340, les événements E/S ayant le même niveau de priorité sont stockés dans un tampon FIFO et sont traités dans l'ordre dans lequel ils ont été reçus. Tous les temporisateurs ont le même niveau de priorité. Lorsque plusieurs temporisateurs prennent fin simultanément, le plus petit numéro de temporisateur est traité en premier. Le mot système %SW48 compte les événements d'E/S et le télégramme traité. NOTE: TELEGRAM est disponible uniquement pour PREMIUM (pas sur Quantum ni sur M340) 586 35006145.25 Langages de programmation et structure U UDINT: UDINT est l'abréviation du format Unsigned Double INTeger (entier double non signé) (codé sur 32 bits). Les butées inférieure et supérieure sont les suivantes : 0 à (2 puissance 32) - 1. Exemple : 0, 4294967295, 2#11111111111111111111111111111111, 8#37777777777, 16#FFFFFFFF. UINT: UINT est l'abréviation du format Unsigned INTeger (entier non signé) (codé sur 16 bits). Les butées inférieure et supérieure sont les suivantes : 0 à (2 puissance 16) - 1. Exemple : 0, 65535, 2#1111111111111111, 8#177777, 16#FFFF. W WORD: Le type WORD est codé sur 16 bits et est utilisé pour effectuer des traitements sur des chaînes de bits. Ce tableau donne les limites inférieure/supérieure des bases qui peuvent être utilisées : Base Limite inférieure Limite supérieure Hexadécimale 16#0 16#FFFF Octale 8#0 8#177777 Binaire 2#0 2#1111111111111111 Exemples de représentation Contenu des données Représentation dans l'une des bases 0000000011010011 16#D3 1010101010101010 8#125252 0000000011010011 2#11010011 35006145.25 587 Langages de programmation et structure Index D D A ADD IL......................................................... 417 adressage entrée/sortie ......................................... 252 instances de données ........................... 252 alignement DDT..................................................... 215 AND IL......................................................... 415 ST ....................................................... 461 ANY_ARRAY ........................................... 233 ANY_BOOL ............................................. 182 ARRAY.................................................... 208 B bits forcés................................................ 182 bloc fonction dérivé (DFB)......................... 499 représentation ...................................... 226 bloc fonction élémentaire (EFB) .........225–226 blocs fonction dérivés (DFB) représentation ...................................... 502 BOOL...................................................... 182 BYTE ...................................................... 206 C CAL ........................................................ 421 CASE...OF...END_CASE ST ....................................................... 468 chiens de garde monotâche ........................................... 109 multitâche ............................................ 115 comparaison IL......................................................... 412 LD ....................................................... 319 ST ....................................................... 457 compatibilité types de données ................................. 237 Conformité CEI ........................................ 548 conversion de type implicite ...................... 542 35006145.25 SFC ..................................................... 362 DATE ...................................................... 193 DDT ........................................................ 208 alignement ........................................... 215 DDT d'équipement nom d'instance ..................................... 222 déclaration de référence ........................... 240 démarrage à chaud .................................. 148 démarrage à froid..............................148, 157 démarrage automatique en mode RUN...... 148 DFB représentation ...................................... 502 DFB de diagnostic.................................... 540 DINT ....................................................... 188 DIV IL......................................................... 418 DS SFC ..................................................... 362 DT .......................................................... 195 DWORD .................................................. 206 E EBOOL ................................................... 182 EDT ........................................................ 180 EFB ........................................................ 225 ELSE ...................................................... 466 ELSIF...THEN .......................................... 467 EN/ENO FBD ..................................................... 282 IL.......................................... 431, 441, 449 LD ....................................................... 314 ST ........................................ 482, 490, 496 entrée/sortie adressage ............................................ 252 EQ IL......................................................... 419 étiquettes ST ....................................................... 475 événement TIMER ................................................. 121 EXIT ....................................................... 473 589 Langages de programmation et structure F L FBD langage.........................................272, 274 structure............................................... 272 fonctions disponibles pour les différents types d’automate ......................................86 FOR...TO...BY...DO...END_FOR ST ....................................................... 469 L G GDT........................................................ 233 GE IL......................................................... 419 GT IL......................................................... 419 H HALT....................................................... 170 I IF...THEN...END_IF ST ....................................................... 465 IL (Instruction List) structure............................................... 404 IN_OUT FBD ..................................................... 284 IL..................................................442, 449 LD ....................................................... 317 ST ................................................491, 497 instance DDT d'équipement nom ..................................................... 222 instances de données............................... 245 INT ......................................................... 188 SFC ..................................................... 362 LD langage.........................................300, 306 structure............................................... 300 LE IL......................................................... 420 libellés FBD ..................................................... 286 IL......................................................... 423 LD ....................................................... 319 liste d'instructions (IL) langage.......................... 404, 426, 432, 444 opérateurs............................................ 412 LT ........................................................... 420 M MOD IL......................................................... 418 ST ....................................................... 459 Modicon M340 RAM d'état ........................................... 134 structures de mémoire........................... 134 MUL IL......................................................... 417 N NE IL......................................................... 419 nom instance DDT d'équipement................... 222 Instance DDT d'équipement .................. 222 NOT IL......................................................... 416 J O JMP FBD ..................................................... 286 IL..................................................422–423 LD ....................................................... 319 SFC ..................................................... 373 ST ....................................................... 475 opérateurs LD IL......................................................... 300 opération ................................................. 319 OR IL......................................................... 415 ST ....................................................... 462 590 35006145.25 Langages de programmation et structure P P SFC ..................................................... 362 P0 SFC ..................................................... 362 P1 SFC ..................................................... 362 Program Unit .............................................98 structure .................................................. 208 structure de données de voie .............219, 221 structures de mémoire Modicon M340...................................... 134 structures mémoire .................................. 130 SUB IL......................................................... 417 T R R IL......................................................... 414 LD ....................................................... 304 SFC ..................................................... 362 RAM d'état Modicon M340...................................... 134 RAM d'état des Modicon M340 mode RUN ........................................... 158 mode STOP ......................................... 158 REEL ...................................................... 197 REPEAT...UNTIL...END_REPEAT ............. 472 RETURN FBD ..................................................... 286 IL......................................................... 422 LD ....................................................... 319 ST ....................................................... 474 S S IL......................................................... 414 LD ....................................................... 304 SFC ..................................................... 362 scrutation finale........................................ 362 sections................................................... 100 SFC langage.........................................345, 359 structure............................................... 345 SFCCHART_STATE................................. 348 SFCSTEP_STATE ................................... 353 SFCSTEP_TIMES ................................... 352 sous-programmes .............................100, 103 ST (Structured Text) structure............................................... 452 STRING .................................................. 202 35006145.25 tâches ................................................. 92, 95 cycliques.............................................. 106 périodiques .......................................... 107 texte structuré (ST) instructions........................................... 462 langage.......................... 452, 477, 483, 492 opérateurs............................................ 457 TIME ....................................................... 190 TIMER événement ........................................... 121 TOD ........................................................ 194 traitement événementiel ........................... 111 type de données Reference ............................................ 240 type de données Reference ...................... 240 types de données..................................... 180 types de données dérivés (DDT) ........ 208, 211 types de données dérivés d'équipement (DDDT).................................................. 208 types de données élémentaires (EDT) ....... 180 U UDINT..................................................... 188 UINT ....................................................... 188 Unité de programme...................................98 V variables privées DFB ..................................................... 512 FBD ............................... 280, 313, 434, 485 variables publiques DFB ..................................................... 512 FBD ..................................................... 280 IL......................................................... 434 591 Langages de programmation et structure LD ....................................................... 312 ST ....................................................... 485 virgule flottante ........................................ 197 W WHILE...DO...END_WHILE ST ....................................................... 471 WORD .................................................... 206 X XOR IL......................................................... 416 ST ....................................................... 462 592 35006145.25 Schneider Electric 35 rue Joseph Monier 92500 Rueil Malmaison France + 33 (0) 1 41 29 70 00 www.se.com Les normes, spécifications et conceptions pouvant changer de temps à autre, veuillez demander la confirmation des informations figurant dans cette publication. © 2021 Schneider Electric. Tous droits réservés. 35006145.25