2.
Les types de données
2.1 Types élémentaires
Unity Pro respecte scrupuleusement la norme IEC 61131-3 concernant les types de données. Les types
élémentaires sont les briques de base de toute programmation :
Type Taille Plage / Description Exemple d'usage
BOOL 1 bit TRUE / FALSE (0 ou 1) État capteur, bobine
BYTE 8 bits 0 à 255 Octet de données
WORD 16 bits 0 à 65535 Registre 16 bits
DWORD 32 bits 0 à 4294967295 Registre 32 bits
INT 16 bits -32768 à +32767 Compteur, consigne
UINT 16 bits 0 à 65535 Valeur non signée
DINT 32 bits -2147483648 à +2147483647 Grand entier
UDINT 32 bits 0 à 4294967295 Grand entier non signé
REAL 32 bits ±1.175E-38 à ±3.403E+38 Température, vitesse
TIME 32 bits T#0ms à T#49d17h2m47s295ms Temporisation
DATE 16 bits D#1984-01-01 à D#2163-12-31 Date calendaire
STRING Variable Chaîne de 1 à 255 chars Messages, codes
2.2 Types dérivés (DDT / EDT)
Les types dérivés permettent de créer des structures de données personnalisées, visibles dans le navigateur
du projet sous « Types données dérivés » :
• DDT (Derived Data Type) : Structures regroupant plusieurs variables de types différents. Ex : une
structure MOTEUR avec un BOOL état, un REAL vitesse, un INT alarme.
• EDT (Enumerated Data Type) : Type énuméré définissant un ensemble de valeurs nommées. Ex :
ETAT_MACHINE = (ARRET, DEMARRAGE, EN_MARCHE, DEFAUT).
• Tableaux (Array) : Collection d'éléments du même type. Ex : ARRAY[0..9] OF REAL pour 10 valeurs
de température.
3. Variables statiques
3.1 Définition et caractéristiques
Une variable statique est une variable dont l'adresse mémoire est fixe et réservée à la compilation du projet.
Elle conserve sa valeur entre deux cycles d'exécution et peut être rendue rétentive (conservation en cas de
coupure d'alimentation).
Propriété Description
Adresse mémoire fixe Réservée dès la compilation
Durée de vie Permanente (toute la durée du programme)
Propriété Description
Rétentivité Possible (%M, %MW rétentifs)
Localisation %M, %MW, %I, %Q, %IW, %QW...
Visibilité Globale au projet
Initialisation Valeur initiale définissable
3.2 Adressage mémoire
Adresse Type Description
%M0 … %Mn BOOL Bits mémoire internes
%MW0 … %MWn WORD / INT Mots mémoire internes (16 bits)
%MD0 … %MDn DWORD / DINT Double mots mémoire (32 bits)
%MF0 … %MFn REAL Mots réels (virgule flottante)
%I0.0 … %In.m BOOL Entrées TOR de l'automate
%Q0.0 … %Qn.m BOOL Sorties TOR de l'automate
%IW0.0 WORD Entrée analogique (mot)
%QW0.0 WORD Sortie analogique (mot)
4. Variables dynamiques
4.1 Définition et caractéristiques
Une variable dynamique (ou variable non localisée) est une variable sans adresse physique fixe. Sa
mémoire est gérée dynamiquement par l'OS de l'automate. Elle ne possède pas de référence %M ou %MW
et n'est pas directement accessible depuis un pupitre ou un système SCADA sans mappage préalable.
Propriété Description
Adresse mémoire Non fixe — gérée dynamiquement
Durée de vie Limitée (selon contexte d'exécution)
Rétentivité Impossible (non localisée)
Localisation Aucune adresse physique
Visibilité Globale ou locale selon déclaration
Usage typique Variables internes de calcul, tampons temporaires
4.2 Comparaison statique / dynamique
Critère Variable STATIQUE Variable DYNAMIQUE
Adresse mémoire Fixe (%MW, %M…) Aucune adresse physique
Critère Variable STATIQUE Variable DYNAMIQUE
Durée de vie Permanente Durée de l'exécution
Rétentivité Possible Non
Accès SCADA Direct Mappage nécessaire
Initialisation Valeur initiale 0 ou valeur par défaut
Déclaration Avec adresse dans table Sans adresse dans table
Usage E/S, consignes, état machine Calculs internes, tampons
5. Déclaration de variables statiques
5.1 Dans le navigateur Unity Pro
Pour déclarer des variables statiques, naviguer dans le projet Unity Pro : Variables et instances → Variables
élémentaires. La table de déclaration comporte les colonnes suivantes :
Colonne Rôle Exemple
Nom Identifiant unique de la variable bMoteur_M1
Type Type de données IEC 61131-3 BOOL, INT, REAL…
Adresse Adresse mémoire physique %M0, %MW10, %Q0.1
Val. initiale Valeur au démarrage FALSE, 0, 0.0
Commentaire Description fonctionnelle Etat moteur pompe 1
5.2 Exemples pratiques
Exemple de table de variables statiques pour un système de pompage :
Nom Type Adresse Val. Commentaire
Init.
bCapteur_Niveau_Haut BOOL %I0.0 FALSE Capteur niveau haut cuve
bCapteur_Niveau_Bas BOOL %I0.1 FALSE Capteur niveau bas cuve
bMoteur_Pompe BOOL %Q0.0 FALSE Commande moteur pompe
bAlarme_Defaut BOOL %Q0.3 FALSE Voyant alarme défaut
iVitesse_Consigne INT %MW10 0 Consigne vitesse (tr/min)
iVitesse_Mesure INT %IW0.0 0 Mesure vitesse variateur
rTemperature REAL %MF0 0.0 Température moteur (°C)
tTempo_Demarrage TIME %MW20 T#0s Tempo démarrage moteur
Bonne pratique : Utilisez des noms explicites avec préfixe de type (b pour BOOL, i pour INT, r pour REAL, t pour
TIME) et commentez systématiquement chaque variable pour faciliter la maintenance.
6. Déclaration de variables dynamiques
6.1 Variables non localisées
Les variables dynamiques (non localisées) se déclarent de la même façon que les variables statiques, mais
le champ Adresse est laissé vide. Unity Pro leur attribue automatiquement une zone mémoire.
Nom Type Adresse Val. Commentaire
Init.
bAuxiliaire_Calc BOOL (vide) FALSE Variable auxiliaire calcul
iCompteur_Cycles INT (vide) 0 Compteur de cycles internes
rConsigne_PID REAL (vide) 0.0 Consigne calculée PID
rEcart_Regulation REAL (vide) 0.0 Écart mesure/consigne
bEtat_Sequence BOOL (vide) FALSE Drapeau séquence interne
iEtape_Grafcet INT (vide) 0 Étape active séquenceur
6.2 Variables locales de blocs fonctions (FB)
Dans les blocs fonctions (FB) et sections de programme (Section LD), des variables locales peuvent être
déclarées dans la section VAR … END_VAR. Ces variables sont strictement locales au bloc et constituent
des variables dynamiques par excellence :
VAR
bLocal_Flag : BOOL := FALSE;
iLocal_Cpt : INT := 0;
rLocal_Calcul : REAL := 0.0;
tLocal_Tempo : TIME := T#0s;
END_VAR
Rappel : Les variables locales ne sont PAS accessibles depuis d'autres sections ou blocs. Pour partager des
données, utilisez des variables globales (statiques ou non localisées) déclarées dans la table des variables.