Chaque variable vit dans l'une des trois portées - Globale, Active ou Locale -, qui détermine qui peut la lire, combien de temps elle persiste et où elle se retrouve dans votre code automate exporté.
| Aspect | Globale | Active | Locale |
|---|---|---|---|
| Visibilité | Toutes les séquences du projet | Le fichier séquence propriétaire uniquement | L'étape propriétaire uniquement |
| Persistance (émulation) | Survit aux changements de séquence, réinitialisée par Reset Emulation | Survit dans le fichier, effacée à l'arrêt de l'émulation | Initialisée à l'entrée de l'étape, rejetée à la sortie |
| Mappage automate (typique) | Liste de variables globales / DB | Variable d'instance FB de la séquence | Temporaire ou VAR_TEMP |
| Espace d'adressage | Adresses E/S fixes, mémoire rémanente | Mémoire privée choisie par le fournisseur | Pile / brouillon |
| Usage courant | Signaux E/S, état machine, bits d'alarme | Compteurs de séquence, drapeaux internes | Timers propres à une étape, verrous one-shot |
| Créée via | Éditeur Machine, Add Global Variable | Panneau Variables en mode Active | Propriétés d'étape dans l'éditeur de séquence |
Les variables globales sont visibles depuis toutes les séquences du projet et depuis l'éditeur Machine. C'est l'endroit canonique pour déclarer les E/S machine, les bits d'alarme et tout état partagé.
main.machine et exposées par l'éditeur Machine.| Commande | Effet |
|---|---|
| AutomationView: Set Global View | Bascule le panneau Variables en mode Global |
| AutomationView: List Input Variables | Filtre sur les globales de type entrée |
| AutomationView: List Output Variables | Filtre sur les globales de type sortie |
| AutomationView: Get Variable Value | Lit la valeur courante en émulation |
| AutomationView: Set Variable Value | Force une valeur pendant l'émulation |
| AutomationView: Assign Addresses Automatically | Attribue automatiquement les adresses physiques |
| AutomationView: Validate All Addresses | Détecte les conflits d'adresses |
Les valeurs globales sont conservées pendant toute la session d'émulation et survivent au passage d'une séquence à l'autre. AutomationView: Reset Simulation (Ctrl+Shift+F5) les ramène à leur valeur initiale déclarée.
| Cible | Mappe vers |
|---|---|
| CODESYS | Liste de variables globales (GVL) |
| Siemens TIA | Table de mnémoniques + DB partagé |
| Rockwell Studio 5000 | Tags de portée contrôleur |
| Fanuc | Variables système robot (R[], DI[], DO[]) |
| PLCopen XML | Bloc <globalVars> |
Les variables actives appartiennent au fichier séquence ouvert. Elles sont idéales pour les variables internes - compteurs de cycle, drapeaux de relance, sélecteurs de recette - qui ne doivent pas polluer l'espace de noms global.
.seq aux côtés des étapes et transitions.| Commande | Effet |
|---|---|
| AutomationView: Show Active File Variables | Bascule le panneau Variables en mode Active |
| AutomationView: List All Variables | Liste toutes les variables, toutes portées confondues |
| AutomationView: Delete Variable | Supprime une variable inutilisée du projet |
| AutomationView: Rename Variable | Renommage sûr à l'échelle du projet |
Les valeurs actives persistent pendant l'exécution et se réinitialisent entre deux exécutions. Changer de séquence préserve la valeur tant que le fichier reste chargé.
| Cible | Mappe vers |
|---|---|
| CODESYS | Bloc VAR du bloc fonctionnel représentant la séquence |
| Siemens TIA | Membres du DB d'instance |
| Rockwell Studio 5000 | Tags de portée programme |
| PLCopen XML | <localVars> du POU |
Les variables locales existent pendant la durée de vie d'une seule étape. Elles se réinitialisent à l'entrée de l'étape et disparaissent à sa sortie. Elles servent à porter un état éphémère qui n'a pas de sens en dehors de l'étape.
Les locales sont initialisées à chaque activation de l'étape et rejetées à sa désactivation. Forcer une valeur via Set Variable Value n'affecte que l'activation courante.
| Cible | Mappe vers |
|---|---|
| CODESYS | VAR_TEMP dans la méthode d'action |
| Siemens TIA | Bloc Temp du FB |
| Rockwell Studio 5000 | Tag local de routine (si pris en charge) ou temporaire de portée programme |
| PLCopen XML | <localVars> du corps de l'action |
Si un fournisseur cible ne sait pas représenter nativement les variables locales d'étape, le fournisseur de traduction les promeut en portée active et les renomme avec un préfixe d'étape ; un message de diagnostic en garde la trace.
AutomationView infère le type d'une variable à partir de sa première utilisation lorsqu'aucun type explicite n'est défini :
cycle_count == 5 infère INT.TON(timer_red, T#10s) déclare timer_red comme instance TON.Définissez un type explicite depuis le panneau Variables pour verrouiller le choix. Un type explicite est requis pour tout export où le type inféré serait ambigu (arithmétique mixte REAL/INT, par exemple).
Une locale qui porte le même nom qu'une variable active ou globale masque la variable externe à l'intérieur de son étape. L'éditeur de séquence le signale par un soulignement jaune. Pour le résoudre, renommez l'une des deux.
Vous ne pouvez pas référencer une variable locale depuis une autre étape. Le diagnostic affiche Variable <name> is not in scope. Promouvez-la en portée active à l'aide de AutomationView: Rename Variable combiné à la bascule de portée.
Une globale et une active peuvent pointer sur la même adresse physique si toutes deux sont liées à la même voie. Lancez AutomationView: Validate All Addresses avant l'export pour les détecter.
Les variables inutilisées gonflent les exports. Utilisez AutomationView: Delete Variable (ou Clean Unused Variables depuis l'en-tête du panneau) pour supprimer les variables actives ou locales sans aucune référence.