LANGAGE LADDER
sous UNITY PRO
Types de données — Variables statiques & dynamiques
Référence technique complète
Langage Ladder sous UNITY PRO Types de données & Variables
1. Présentation du langage Ladder
Le langage Ladder (ou schéma à contacts) est un langage de programmation graphique normalisé CEI
61131-3, destiné aux automates programmables industriels (API/PLC). Sous Unity Pro (logiciel Schneider
Electric), il représente la logique de contrôle sous forme de réseaux électriques avec des contacts et des
bobines, inspiré des schémas de câblage électrique traditionnels.
1.1 Éléments de base du langage Ladder
Symbole Nom Rôle
■| |■ Contact normalement ouvert (NO) Passant si la variable est TRUE
■|/|■ Contact normalement fermé (NF) Passant si la variable est FALSE
■( )■ Bobine Met la variable à TRUE si réseau actif
■(/)■ Bobine inversée Met la variable à FALSE si réseau actif
■[S]■ Bobine SET (mémorisation) Force la variable à TRUE de façon permanente
■[R]■ Bobine RESET (démémorisation) Force la variable à FALSE de façon permanente
Appel de fonctions complexes (temporisateurs,
FB/FBD Bloc fonction
compteurs…)
2. Les types de données
Unity Pro prend en charge l'ensemble des types de données définis par la norme CEI 61131-3. Ils se
répartissent en deux grandes familles : les types élémentaires et les types dérivés (DDT — Derived
Data Types).
2.1 Types élémentaires
2.1.1 Types booléens
Type Taille Plage / Valeurs Description Exemple
TRUE / FALSE (0 ou Booléen standard
BOOL 1 bit Capteur_Present : BOOL
1) CEI
BYTE 8 bits 0 à 255 Octet non signé Octet_Config : BYTE
2.1.2 Types entiers
© Référence technique — Schneider Electric Unity Pro Page 2
Langage Ladder sous UNITY PRO Types de données & Variables
Type Taille Plage Description Usage typique
SINT 8 bits −128 à +127 Entier court signé Petits compteurs locaux
Entier court non
USINT 8 bits 0 à 255 Valeurs de configuration
signé
Entier signé
INT 16 bits −32 768 à +32 767 Compteur de cycles
standard
UINT 16 bits 0 à 65 535 Entier non signé Mesure analogique brute
−2 147 483 648 à +2 147 483
DINT 32 bits Entier long signé Compteur longue durée
647
Entier long non
UDINT 32 bits 0 à 4 294 967 295 Compteur de pulses
signé
Entier très long
LINT 64 bits ±9.2 × 10^18 Calculs haute précision
signé
2.1.3 Types réels (virgule flottante)
Type Taille Précision Plage approx. Usage typique
REAL 32 bits 7 chiffres sig. ±1.18×10■³■ à ±3.4×10³■ Température, pression, vitesse
±2.2×10■³■■ à
LREAL 64 bits 15 chiffres sig. Calculs scientifiques précis
±1.8×10³■■
2.1.4 Types temporels
Type Description Format Exemple
TIME Durée T# T#5s, T#1m30s, T#500ms
DATE Date calendrier D# D#2024-12-31
TIME_OF_DAY Heure du jour TOD# TOD#08:30:00
DATE_AND_TIME Date + heure DT# DT#2024-12-31-23:59:59
2.1.5 Types chaîne de caractères
Type Longueur max. Description Exemple
STRING 255 car. Chaîne ASCII variable 'Moteur_1_ON'
WSTRING 255 car. Chaîne Unicode (UTF-16) W'Arret urgence'
2.1.6 Types bit/mot
© Référence technique — Schneider Electric Unity Pro Page 3
Langage Ladder sous UNITY PRO Types de données & Variables
Type Taille Description Usage typique
BYTE 8 bits Octet brut, accès bit par bit Registre de configuration
WORD 16 bits Mot 16 bits, opérations logiques Registre d'état variateur
DWORD 32 bits Double mot, masques 32 bits Registre étendu
LWORD 64 bits Quadruple mot, 64 bits Horodatage précis
2.2 Types dérivés (DDT — Derived Data Types)
Les types dérivés permettent de construire des structures de données complexes à partir des types
élémentaires. Ils se déclarent dans l'éditeur de types de données de Unity Pro (Projet > Types de
données).
2.2.1 Tableaux (ARRAY)
Un tableau est une collection d'éléments de même type, accessibles par un ou plusieurs indices entiers.
(* Déclaration d'un tableau 1D et d'une matrice 2D *)
MonTableau : ARRAY[0..9] OF INT; (* 10 entiers, indices 0 à 9 *)
Matrice : ARRAY[1..4, 1..4] OF REAL; (* Matrice 4x4 de réels *)
(* Accès aux éléments *)
MonTableau[3] := 42; (* Écriture à l'indice 3 *)
Valeur := Matrice[2, 3]; (* Lecture ligne 2, colonne 3 *)
2.2.2 Structures (STRUCT)
Une structure regroupe des variables de types différents sous un seul nom logique. Elle est idéale pour
modéliser un équipement (moteur, capteur, axe…).
TYPE T_Moteur : (* Définition du type personnalisé *)
STRUCT
Marche : BOOL; (* Commande marche/arrêt *)
Vitesse : REAL; (* Vitesse en tr/min *)
Temperature : REAL; (* Température en ° C *)
Defaut : BOOL; (* Présence d'un défaut *)
CodeAlarme : INT; (* Code alarme actif *)
END_STRUCT
END_TYPE
(* Déclaration et utilisation d'une instance *)
Moteur_1 : T_Moteur;
Moteur_1.Marche := TRUE;
Moteur_1.Vitesse := 1450.0;
IF Moteur_1.Defaut THEN
Moteur_1.CodeAlarme := 5;
END_IF;
2.2.3 Énumérations (ENUM)
© Référence technique — Schneider Electric Unity Pro Page 4
Langage Ladder sous UNITY PRO Types de données & Variables
TYPE T_ModeMoteur : (Arret, Marche, Ralenti, Maintenance);
END_TYPE
Mode_Actuel : T_ModeMoteur := Arret;
Mode_Actuel := Marche; (* Affectation lisible et typée *)
© Référence technique — Schneider Electric Unity Pro Page 5
Langage Ladder sous UNITY PRO Types de données & Variables
3. Variables statiques
Les variables statiques sont des variables dont la valeur est conservée en mémoire d'un cycle
d'exécution à l'autre. Selon la configuration de l'automate, elles peuvent également survivre à un
arrêt/redémarrage (mémoire non volatile ou sauvegardée par batterie).
3.1 Caractéristiques
• Valeur persistante entre les cycles de scrutation (scan)
• Stockées dans la mémoire interne de l'automate (%M, %MW, %MD, %MF)
• Utilisées pour mémoriser des états, des compteurs, des valeurs de production
• Peuvent être rendues rémanentes (conservées après coupure d'alimentation)
• Initialisées à une valeur définie au premier démarrage à froid (cold start)
3.2 Zones mémoire statique
Adresse Type CEI Taille Plage d'indices Description
%M BOOL 1 bit %M0 à %M127999 Bits mémoire internes
%MW0 à
%MW WORD / INT 16 bits Mots mémoire 16 bits
%MW127999
%MD DWORD / DINT 32 bits %MD0 à %MD127998 Doubles mots 32 bits
%MF REAL 32 bits %MF0 à %MF127998 Flottants 32 bits
%ML LWORD / LINT 64 bits %ML0 à %ML127996 Longs mots 64 bits (M580/Quantum)
■ Les %MW et %MD partagent la même zone mémoire (overlapping). %MD0 correspond à {%MW1, %MW0}
(ordre little-endian).
3.3 Exemples d'adresses statiques
%M0 → Bit mémoire (BOOL) : Mémorisation d'un état défaut
%M100 → Bit mémoire (BOOL) : Flag de première exécution
%MW10 → Mot 16 bits (INT) : Compteur de cycles machine
%MW50 → Mot 16 bits (WORD) : Registre de configuration process
%MD20 → Double mot (DINT) : Compteur de pièces longue période
%MF5 → Réel 32 bits (REAL) : Setpoint de température (° C)
%ML2 → Long mot (LINT) : Horodatage 64 bits haute précision
3.4 Variables rémanentes (RETAIN / PERSISTENT)
Les variables rémanentes conservent leur valeur après une coupure secteur. Elles sont stockées dans
une zone mémoire sauvegardée (batterie ou Flash).
© Référence technique — Schneider Electric Unity Pro Page 6
Langage Ladder sous UNITY PRO Types de données & Variables
VAR RETAIN
Nb_Pieces_Total : DINT := 0; (* Conservé après coupure secteur *)
Setpoint_Pression : REAL := 5.5; (* Consigne process conservée *)
END_VAR
VAR PERSISTENT
Num_Serie_Actif : DINT := 0; (* Survie au téléchargement *)
END_VAR
Attribut Démarrage à chaud (warm) Démarrage à froid (cold)
VAR (standard) Valeur conservée Remise à valeur initiale
VAR RETAIN Valeur conservée Valeur conservée
VAR PERSISTENT Valeur conservée Valeur conservée (même après download)
© Référence technique — Schneider Electric Unity Pro Page 7
Langage Ladder sous UNITY PRO Types de données & Variables
4. Variables dynamiques
Les variables dynamiques sont des variables dont la valeur est recalculée ou mise à jour à chaque
cycle de scrutation. Elles reflètent l'état instantané du terrain (capteurs, actionneurs) ou des calculs
intermédiaires au sein du programme.
4.1 Caractéristiques
• Valeur non persistante — actualisée à chaque scan
• Correspondent principalement aux entrées/sorties physiques des modules E/S
• Peuvent aussi désigner des variables locales à un bloc fonction
• L'image des entrées (%I) est lue en début de cycle
• L'image des sorties (%Q) est écrite en fin de cycle
• Remises à zéro ou à leur valeur par défaut en cas d'arrêt du programme
4.2 Entrées physiques (%I)
Adresse Type Description Exemple
%I\[Link] BOOL Entrée TOR (tout ou rien) %I0.4.0 → rack0, mod4, voie0
%IW\[Link] WORD / INT Entrée analogique 16 bits %IW0.2.0 → valeur analogique
DWORD/DIN
%ID\[Link] Entrée 32 bits %ID0.3.0
T
%IF\[Link] REAL Entrée flottante 32 bits %IF0.2.0
4.3 Sorties physiques (%Q)
Adresse Type Description Exemple
%Q\[Link] BOOL Sortie TOR %Q0.5.0 → commande contacteur
%QW\[Link] WORD / INT Sortie analogique 16 bits %QW0.6.0 → consigne variateur
DWORD/DIN
%QD\[Link] Sortie 32 bits %QD0.7.0
T
%QF\[Link] REAL Sortie flottante 32 bits %QF0.6.0
4.4 Variables locales à un bloc fonction
Dans un bloc fonction (FB) ou une section de programme, les variables déclarées dans VAR sont locales
et dynamiques : elles n'existent que pendant l'exécution du bloc et ne sont pas accessibles depuis
l'extérieur.
© Référence technique — Schneider Electric Unity Pro Page 8
Langage Ladder sous UNITY PRO Types de données & Variables
VAR_INPUT
Consigne : REAL; (* Valeur fournie par l'appelant *)
Enable : BOOL; (* Activation du bloc *)
END_VAR
VAR_OUTPUT
Sortie : REAL; (* Résultat fourni à l'appelant *)
Done : BOOL; (* Indicateur de fin de traitement *)
END_VAR
VAR
Calcul_Interim : REAL; (* Variable locale, non visible dehors *)
Compteur_Int : INT; (* Compteur interne au bloc *)
END_VAR
© Référence technique — Schneider Electric Unity Pro Page 9
Langage Ladder sous UNITY PRO Types de données & Variables
5. Déclaration de variables statiques
Sous Unity Pro, les variables statiques symboliques se déclarent dans l'Éditeur de variables accessible
depuis le navigateur de projet (Variables & instances FB).
5.1 Procédure dans l'éditeur Unity Pro
• 1. Dans le navigateur, ouvrir Variables & instances FB
• 2. Sélectionner l'onglet Variables
• 3. Cliquer sur Nouvelle variable (ou appuyer sur Inser)
• 4. Renseigner les champs : Nom, Type, Adresse (optionnel), Valeur initiale, Commentaire
• 5. Valider et régénérer le projet (Construire > Regénérer tout le projet)
5.2 Champs de déclaration
Champ Obligatoire Description Exemple
Nom symbolique unique dans le
Nom Oui Compteur_Pieces
projet
Type Oui Type de donnée CEI 61131-3 DINT
Adresse mémoire directe
Adresse Non %MD10
(optionnel)
Valeur initiale Non Valeur au démarrage à froid 0
Commentaire Non Description textuelle de la variable Compteur de pièces produites
5.3 Exemples de déclarations complètes
(* Exemples de déclarations dans l'éditeur de variables Unity Pro *)
Nom Type Adresse Init. Commentaire
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Compteur_Pieces DINT %MD10 0 Nb total de pièces produites
Setpoint_Temp REAL %MF5 20.0 Consigne de température (° C)
Alarme_Active BOOL %M0 FALSE Présence d'une alarme active
Mode_Production INT %MW100 0 Mode (0=Auto, 1=Manuel, 2=Maint.)
Heure_Depart TIME %MD20 T#0s Heure de départ du cycle
Nom_Machine STRING — '' Identifiant de la machine
5.4 Déclaration en Structured Text (dans un POU)
VAR
(* Variables internes standard *)
Compteur_Locale : INT := 0; (* Compteur local au programme *)
Etat_Precedent : BOOL := FALSE; (* Mémorisation état N-1 *)
END_VAR
© Référence technique — Schneider Electric Unity Pro Page 10
Langage Ladder sous UNITY PRO Types de données & Variables
VAR RETAIN
(* Rémanentes : valeur conservée après coupure secteur *)
Prod_Journaliere : DINT := 0; (* Nb pièces du jour *)
Prod_Totale : DINT := 0; (* Nb pièces total cumulé *)
END_VAR
VAR PERSISTENT
(* Persistantes : survie même au téléchargement *)
Num_Serie_Actif : DINT := 0; (* N° de série en cours *)
END_VAR
VAR CONSTANT
(* Constantes : valeur non modifiable à l'exécution *)
PI : REAL := 3.14159; (* Constante mathématique *)
Vitesse_Max : REAL := 3000.0; (* Vitesse maximale autorisée *)
END_VAR
© Référence technique — Schneider Electric Unity Pro Page 11
Langage Ladder sous UNITY PRO Types de données & Variables
6. Déclaration de variables dynamiques
6.1 Déclaration des entrées/sorties physiques
Les variables dynamiques liées aux E/S physiques sont générées automatiquement lors de la
configuration matérielle. Elles peuvent ensuite recevoir un nom symbolique dans l'éditeur de variables.
• 1. Ouvrir Configuration > Bus de terrain / Rack dans le navigateur
• 2. Ajouter les modules d'entrées-sorties dans les emplacements du rack
• 3. Double-cliquer sur un module pour accéder à ses propriétés E/S
• 4. Dans l'onglet E/S, associer chaque voie à un nom symbolique
• 5. Les adresses %I et %Q sont générées et liées automatiquement
6.2 Exemple de mappage E/S physiques
Adresse physique Nom symbolique Type Description
%I0.1.0 Capteur_Presence BOOL Détecteur inductif cellule 1
%I0.1.1 Fin_Course_Avant BOOL Fin de course vérin avant
%I0.1.2 Bouton_Arret_Urgence BOOL Arrêt d'urgence NF câblé
%IW0.2.0 Pression_Brute INT Capteur pression 4-20mA (0-32767)
%IW0.2.1 Temperature_Brute INT PT100 via module analogique
%Q0.3.0 Contacteur_Moteur BOOL Commande contacteur KM1
%Q0.3.1 Vanne_Ouverture BOOL Commande vanne pneumatique
%QW0.4.0 Consigne_Variateur INT Consigne vitesse 0-10V (0-32767)
6.3 Déclaration dans un bloc fonction (FB)
Les variables locales à un FB sont déclarées directement dans l'en-tête du bloc. Chaque section a un rôle
précis dans l'interface du bloc.
Section Rôle Visibilité Exemple
Entrées du bloc (lecture Accessible depuis
VAR_INPUT Enable : BOOL
seule) l'appelant
Accessible depuis
VAR_OUTPUT Sorties du bloc Done : BOOL
l'appelant
Variables Accessible depuis
VAR_IN_OUT Buffer : ARRAY[0..9] OF INT
bidirectionnelles l'appelant
© Référence technique — Schneider Electric Unity Pro Page 12
Langage Ladder sous UNITY PRO Types de données & Variables
Section Rôle Visibilité Exemple
Variables locales Privée (interne au
VAR Compteur : INT
internes FB)
Variables temporaires
VAR_TEMP Privée (réinitialisée) Temp_Calc : REAL
(un cycle)
Variables rémanentes Privée (survie
VAR RETAIN Total : DINT
du FB coupure)
7. Tableau récapitulatif comparatif
Critère Variable statique Variable dynamique
Persistance Conservée entre les cycles Recalculée à chaque scan
Zone mémoire %M, %MW, %MD, %MF, %ML %I, %Q (E/S physiques) ou VAR locale
Usage typique Compteurs, flags, setpoints Signaux terrain, calculs temporaires
Déclaration Éditeur de variables Unity Pro Config. matérielle ou VAR locale FB
Rétention secteur Possible (RETAIN/PERSISTENT) Non — perdue à l'arrêt
Valeur initiale Définie à la déclaration Lue depuis le terrain (entrées)
Accès global Oui (projet entier) Selon portée (FB local ou global)
Document généré comme référence technique. Se référer à la documentation officielle Unity Pro / EcoStruxure
Control Expert pour les détails spécifiques à votre version logicielle.
© Référence technique — Schneider Electric Unity Pro Page 13