Schneider Electric EcoStruxure™ Control Expert - Langages de Manuel utilisateur

Ajouter à Mes manuels
594 Des pages
Schneider Electric EcoStruxure™ Control Expert - Langages de Manuel utilisateur | Fixfr
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

Manuels associés