PROJET RLI — Langage Ladder sous UNITY PRO
PROJET RLI
Automate M340 & Variateur ATV312
Langage Ladder sous UNITY PRO
1. Qu'est-ce que le langage Ladder ?
Le langage Ladder (schéma à contacts) est un langage de programmation graphique pour
automates programmables (PLC). Il est standardisé par la norme IEC 61131-3 et imite
visuellement les schémas électriques traditionnels.
Une ligne Ladder s'appelle un rung (échelon). Elle se lit de gauche à droite :
• Côté gauche : les conditions (contacts)
• Côté droit : les actions (bobines ou blocs fonctionnels)
Principe de base
• Si toutes les conditions (contacts) d'un rung sont vraies → la bobine s'active
• Chaque rung est évalué cycliquement par l'automate (cycle scan)
• Le programme est exécuté de haut en bas, rung par rung
2. Les types de données
Les types de données définissent la nature et la taille de l'information stockée dans une
variable.
Type Taille Plage de valeurs Usage typique
BOOL 1 bit 0 ou 1 Contacts, bobines,
états
INT 16 bits -32 768 à +32 767 Compteurs, vitesses
DINT 32 bits ±2 147 483 647 Grandes valeurs
REAL 32 bits Décimaux Calculs précis,
températures
WORD 16 bits 0 à 65 535 Registres Modbus
TIME 32 bits Durée Temporisations
STRING Variable Texte Messages, libellés
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
Adressage mémoire sous UNITY PRO
Chaque variable peut être adressée directement dans la mémoire de l'automate M340 :
Adresse Type Description
%M0 BOOL Bit mémoire interne (0 ou 1)
%MW0 WORD / INT Mot mémoire 16 bits
%MD0 DINT Double mot mémoire 32 bits
%MF0 REAL Mot flottant (décimal)
%I0.x BOOL Entrée physique de l'automate
%Q0.x BOOL Sortie physique de l'automate
3. Variables statiques vs dynamiques
Variables STATIQUES Variables DYNAMIQUES
Valeur conservée après coupure Valeur perdue à chaque redémarrage
d'alimentation Stockées en RAM temporaire
Stockées en mémoire non-volatile (FLASH) Variables locales de blocs fonctionnels
Adresse fixe : %MW10, %M0... Usage : calculs temporaires, variables
Usage : compteurs, consignes, états intermédiaires
machine
Règle simple
• Si la valeur doit survivre à un arrêt/redémarrage → utiliser une variable STATIQUE
• Si la valeur est temporaire (calcul intermédiaire) → utiliser une variable DYNAMIQUE
Déclaration de variables dans UNITY PRO
Dans UNITY PRO, les variables se déclarent via l'Éditeur de données :
• Aller dans le menu Variables & FB instances
• Renseigner : Nom, Type, Adresse (%MW0...), Commentaire
Exemple de table de variables pour le projet ATV312 :
Nom Type Adresse Commentaire
Demarrage BOOL %M0 Bouton Start
Arret BOOL %M1 Bouton Stop
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
Nom Type Adresse Commentaire
Consigne_Vitesse INT %MW10 Vitesse cible (tr/min)
Vitesse_Actuelle INT %MW20 Vitesse lue depuis ATV312
Alarme_Survitesse BOOL %M5 Défaut vitesse excessive
Consigne_Modbus INT %MW30 Valeur convertie pour Modbus
4. Les contacts et bobines (base du Ladder)
4.1 Les contacts (conditions)
Symbole Nom Rôle
--[ ]-- Contact Normalement Ouvert Passant si la variable = 1 (vraie)
(NO)
--[/]-- Contact Normalement Fermé Passant si la variable = 0 (fausse)
(NF)
--[P]-- Front montant (Rising Edge) Passant 1 seul cycle lors du passage
0→1
--[N]-- Front descendant (Falling Passant 1 seul cycle lors du passage
Edge) 1→0
4.2 Les bobines (actions)
Symbole Nom Rôle
--( )-- Bobine normale Active la sortie si conditions vraies, désactive
sinon
--(/)-- Bobine inversée Désactive si conditions vraies, active sinon
--(S)-- Set (mémorisation) Met à 1 et RESTE à 1 même si conditions
deviennent fausses
--(R)-- Reset Remet à 0 la variable
(démémorisation)
4.3 Exemple de rung
|---[Demarrage]---[/Arret]---(S: Moteur_ON)---|
Lecture : Si Demarrage=1 ET Arret=0 → Moteur_ON est mis à 1 (et reste à 1)
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
5. Les temporisations
Les temporisations sont des blocs fonctionnels utilisés pour gérer des délais dans le
programme Ladder.
5.1 TON — Retard à l'enclenchement
La sortie Q passe à 1 seulement après que le délai PT soit écoulé, à condition que IN reste
à 1.
Broche Direction Description
IN Entrée Signal de déclenchement (doit rester à 1)
PT Entrée Durée du retard (ex : t#5s, t#500ms)
Q Sortie Passe à 1 après que PT soit écoulé
ET Sortie Temps écoulé depuis l'activation de IN
Chronogramme TON
• IN : ___████████████████
• Q : __________█████████ (Q monte après PT)
• ←─PT─→
Exemple concret : Le moteur démarre 5 secondes après l'appui sur le bouton de démarrage.
5.2 TOFF — Retard au déclenchement
La sortie Q reste active encore PT secondes après que IN soit passé à 0.
Chronogramme TOFF
• IN : ___████████████_____
• Q : ___██████████████___ (Q reste actif après IN=0)
• ←─PT─→
Exemple concret : Le ventilateur de refroidissement continue à tourner 10 secondes après
l'arrêt du moteur.
5.3 TP — Impulsion de durée fixe
Génère une impulsion de durée exactement PT, indépendamment de ce qui se passe sur IN
après le déclenchement.
Chronogramme TP
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
• IN : ___█__________________
• Q : ___█████████__________ (impulsion de durée PT exacte)
• ←────PT────→
Exemple concret : Envoyer une commande de démarrage pendant exactement 2 secondes.
Tableau comparatif des temporisations
Bloc Déclenchement Arrêt Usage typique
TON Après délai PT Dès que IN = 0 Démarrage différé
TOFF Dès que IN = 1 Après délai PT Arrêt différé (ventilation)
TP Dès que IN = 1 Après délai PT fixe Commande
impulsionnelle
6. Les blocs de calcul
6.1 Operate — Opération arithmétique
Le bloc Operate permet d'effectuer un calcul mathématique et de stocker le résultat dans
une variable.
Syntaxe :
Operate : %MW30 := %MW10 + %MW20
Opérateur Fonction Exemple
+ Addition %MW30 := %MW10 + 500
- Soustraction %MW30 := %MW10 - 100
* Multiplication %MW30 := %MW10 * 10
/ Division %MW30 := %MW10 / 2
MOD Modulo (reste) %MW30 := %MW10 MOD 100
Exemple concret (projet ATV312) : Convertir la consigne de vitesse en valeur Modbus (le
variateur attend une valeur × 10) :
Operate : %MW30 := %MW10 * 10
Consigne_Modbus := Consigne_Vitesse × 10
6.2 Compare — Comparaison de valeurs
Le bloc Compare évalue une condition et active une bobine si la condition est vraie.
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
Compare : %MW20 > 1500
Opérateur Signification Exemple
> Supérieur à %MW20 > 1500
< Inférieur à %MW20 < 500
= Égal à %MW20 = 1000
>= Supérieur ou égal %MW20 >= 800
<= Inférieur ou égal %MW20 <= 1200
<> Différent de %MW20 <> 0
Exemple concret : Si la vitesse actuelle dépasse 1500 tr/min → déclencher l'alarme :
|---[Compare: %MW20 > 1500]---(S: Alarme_Survitesse)---|
7. Les blocs de communication Modbus
Ces blocs permettent à l'automate M340 de communiquer avec le variateur ATV312 via le
protocole Modbus RTU/TCP.
7.1 ADDM — Définition de l'adresse Modbus
Avant toute communication, il faut définir l'adresse de l'esclave Modbus. Ce bloc retourne
une adresse formatée utilisée par Read_Var et Write_Var.
ADDM('0.1.0{1}')
Champ Signification Valeur exemple
0 Numéro de rack 0 (rack principal)
1 Numéro de module 1 (module communication)
0 Numéro de voie 0 (voie série)
{1} Adresse de l'esclave 1 (ATV312 adresse 1)
7.2 Read_Var — Lecture d'un registre
L'automate M340 lit la valeur d'un registre dans le variateur ATV312. Utilisé pour récupérer
la vitesse actuelle, les états, les défauts...
Paramètre Rôle Exemple
ADR Adresse Modbus de l'esclave ADDM('0.1.0{1}')
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
Paramètre Rôle Exemple
OBJ Type d'objet Modbus 'MW' (registre holding)
NUM Numéro du registre à lire 8604 (vitesse ATV312)
NB Nombre de registres à lire 1
GEST Tableau de gestion (erreurs, %MW100:4
état)
RECP Variable qui reçoit la valeur %MW20
lue
Registre important ATV312
• %MW8604 = registre contenant la vitesse actuelle du moteur
• Valeur retournée en 1/10 de tr/min (ex : 15000 = 1500 tr/min)
7.3 Write_Var — Écriture dans un registre
L'automate M340 envoie une commande ou une consigne au variateur ATV312. Utilisé pour
démarrer, arrêter, changer la vitesse...
Paramètre Rôle Exemple
ADR Adresse Modbus de l'esclave ADDM('0.1.0{1}')
OBJ Type d'objet Modbus 'MW' (registre holding)
NUM Numéro du registre cible 8502 (mot de commande)
NB Nombre de registres à écrire 1
GEST Tableau de gestion (erreurs, %MW100:4
état)
EMIS Variable contenant la valeur à %MW30
envoyer
Registres importants ATV312
• %MW8502 = mot de commande (CMD Word) : démarrer / arrêter le variateur
• %MW8501 = registre de consigne de vitesse (Speed Reference)
8. Exemple complet — Contrôle ATV312 depuis M340
Objectif du programme
• Appui sur START → envoi de la consigne de vitesse → démarrage du variateur
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
• Lecture en continu de la vitesse actuelle depuis l'ATV312
• Déclenchement d'une alarme si la vitesse dépasse 1500 tr/min
• Arrêt complet sur appui STOP
Table des variables utilisées
Nom Type Adresse Rôle
START BOOL %I0.0 Bouton démarrage (entrée
physique)
STOP BOOL %I0.1 Bouton arrêt (entrée physique)
Demarrage BOOL %M0 Mémorisation état démarré
Consigne_RPM INT %MW10 Consigne vitesse (tr/min)
Consigne_Modbus INT %MW30 Consigne convertie pour
ATV312
Vitesse_Actuelle INT %MW20 Vitesse lue depuis ATV312
Alarme BOOL %M5 Alarme survitesse
Programme Ladder — Rungs
Rung 1 — Mémorisation du démarrage (circuit de maintien)
|---[START]---[/STOP]---(S: Demarrage)---|
|---[STOP]---(R: Demarrage)---|
Explication : Appui sur START mémorise l'état Demarrage=1. Appui sur STOP le remet à 0.
Rung 2 — Calcul de la consigne Modbus
|---[Demarrage]---[Operate: %MW30 := %MW10 * 10]---|
Explication : Convertit la consigne en valeur Modbus (le variateur ATV312 attend la vitesse
× 10).
Rung 3 — Envoi de la consigne au variateur (Write_Var)
|---[Demarrage]---[Write_Var ADR:=ADDM('0.1.0{1}'), NUM:=8501,
EMIS:=%MW30]---|
Explication : Envoie la consigne de vitesse dans le registre 8501 du variateur ATV312.
Rung 4 — Lecture de la vitesse actuelle (Read_Var)
|---[Demarrage]---[Read_Var ADR:=ADDM('0.1.0{1}'), NUM:=8604, RECP:=
%MW20]---|
Explication : Lit en continu la vitesse réelle du moteur et la stocke dans %MW20.
Rung 5 — Alarme survitesse (Compare)
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
|---[Compare: %MW20 > 1500]---(S: Alarme)---|
Explication : Si la vitesse dépasse 1500 tr/min → l'alarme est déclenchée et mémorisée.
Rung 6 — Arrêt du variateur
|---[STOP]---[Write_Var ADR:=ADDM('0.1.0{1}'), NUM:=8502,
EMIS:=0]---|
Explication : Envoie la valeur 0 dans le mot de commande pour arrêter le variateur.
Schéma fonctionnel du programme
BOUTON START
↓
Mémorisation (Set %M0)
↓
Operate → Calcul consigne Modbus (%MW30 := %MW10 × 10)
↓
Write_Var → Envoi consigne vers ATV312 (registre 8501)
↓
Read_Var ← Lecture vitesse réelle depuis ATV312 (registre 8604)
↓
Compare → Si vitesse > 1500 tr/min → Alarme
9. Résumé — Points clés à retenir
Concept Définition courte
Rung Ligne du programme Ladder (condition → action)
Contact NO --[ ]-- Passant si variable = 1
Contact NF --[/]-- Passant si variable = 0
Bobine Set (S) Met à 1 et mémorise (reste à 1)
Bobine Reset (R) Remet à 0
TON Retard à l'enclenchement (délai avant activation)
TOFF Retard au déclenchement (délai avant désactivation)
TP Impulsion de durée fixe
Operate Calcul arithmétique entre variables
Compare Comparaison de deux valeurs
ADDM Définit l'adresse de l'esclave Modbus
Read_Var Lit un registre dans le variateur ATV312
Write_Var Écrit une commande dans le variateur ATV312
Langage Ladder — UNITY PRO
PROJET RLI — Langage Ladder sous UNITY PRO
Concept Définition courte
Variable statique Valeur conservée après coupure d'alimentation
Variable dynamique Valeur perdue au redémarrage
Langage Ladder — UNITY PRO