# Langage Ladder

Ladder Diagram (LD) ou Langage Ladder ou schéma à contacts est un langage graphique très populaire auprès des automaticiens pour programmer les automates programmables industriels. Il ressemble aux schémas électriques, et est facilement compréhensible.
Ladder est le mot anglais pour échelle.

## Origine

L'idée initiale du Ladder est la représentation de fonctions logiques sous la forme de schémas électriques. Cette représentation est originellement matérielle : quand l'automate programmable industriel n'existait pas, les fonctions étaient réalisées par des câblages. Par exemple, pour réaliser un ET logique avec des interrupteurs, il suffit de les mettre en série. Pour réaliser un OU logique, il faut les mettre en parallèle.
Le Ladder a été créé et normalisé dans la norme CEI 61131-3. Il est encore aujourd’hui souvent utilisé dans la programmation des automates programmables industriels, bien qu'ayant tendance à être délaissé en faveur de langages plus évolués, et plus adaptés aux techniques modernes de programmation, tels que le ST par exemple, ou encore le Grafcet, plus adapté à la programmation de séquences.

## Principe

Un programme Ladder se lit de haut en bas et l'évaluation des valeurs se fait de gauche à droite. Les valeurs correspondent en fait, si on le compare à un schéma électrique, à la présence ou non d'un potentiel électrique à chaque nœud de connexion.
En effet, le Ladder est basé sur le principe d’une alimentation en tension représentée par deux traits verticaux reliés horizontalement par des bobines, des contacts et des blocs fonctionnels, d'où le nom 'Ladder' (échelle).
C'est un langage volontairement simple et graphique pour être compréhensible. Cela a permis, dans les années 1990, son utilisation sans formation lourde par les électriciens. Il est aujourd'hui un peu dépassé. La puissance de calcul des CPU actuelles permettent de travailler directement en langage objets avec des notions de classe et d'héritage.

## Les composants du langage

Il existe 3 types d'élément de langage :
* les entrées (ou contact), qui permettent de lire la valeur d'une variable booléenne ;
* les sorties (ou bobines) qui permettent d'écrire la valeur d'une variable booléenne ;
* les blocs fonctionnels qui permettent de réaliser des fonctions avancées.

### Les entrées (ou contacts)

Il existe deux types de contact :
* Le contact normalement ouvert (NO) (en anglais : NO, normally open) :
Ce contact est fermé lorsque la variable booléenne associée (X ici) est vraie, sinon, il est ouvert.
* Le contact normalement fermé (NF) (en anglais : NC, normally closed) :
Ce contact est ouvert lorsque la variable booléenne associée (X ici) est vraie, sinon il est fermé.

### Les sorties (ou bobines)

Il existe, de même que pour les contacts, deux types de bobines :
* la bobine normalement ouverte (NO) (en anglais : NO, normally open) :
Si cette bobine est soumise à un potentiel, c’est-à-dire qu'il existe un circuit fermé reliant cette bobine des deux côtés du potentiel, alors la variable booléenne associée (X ici) est mémorisée à 'vraie', sinon elle est mémorisée à 'fausse'.
* la bobine normalement fermée(NF) (en anglais : NC, normally closed) :
Si cette bobine est soumise à un potentiel, c’est-à-dire qu'il existe un circuit fermé reliant cette bobine des deux côtés du potentiel, alors la variable booléenne associée (X ici) est mémorisée à 'fausse', sinon elle est mémorisée à 'vraie'.

## Réalisation de fonction logique

Comme dit précédemment, les fonctions logiques sont dérivées de leurs réalisations électriques. Donc chaque fonction logique (AND, OR, XOR, NAND, NOR, NOT) a une représentation qui correspond à son équivalent électrique.
C'est-à-dire :
équivaut à X AND Y
équivaut à NOT(X) AND Y
équivaut à X OR Y
Plus complexe :
équivaut à S = X.(Y+Z)

## Exemple de lecture

Dans ce réseau, si A OU B est actionné ET si F n'est pas actionné, la sortie S est active; soit S = (A+B)./F
Le signe "(/F)" signifie l'inversion de l'entrée "F", cela se prononce "F barre" .