# Automate programmable industriel

Un automate programmable industriel, ou API (en anglais programmable logic controller, PLC), est un système électronique numérique programmable destiné au contrôle de procédés industriels par traitement séquentiel. Il envoie des instructions à des préactionneurs (partie active ou PA côté actionneur) à partir d'entrées (signaux entrant provenant de capteurs) (partie contrôle ou PC côté capteur), de consignes et d’un programme informatique.
Lorsqu'un automate programmable est orienté sur la Sécurité, il est alors appelé automate programmable de sécurité ou APS.

## Présentation

On nomme automate programmable industriel (API) un type particulier d'ordinateurs, robuste et réactif, équipés de prises en entrée et en sortie, utilisés pour automatiser des procédés, notamment pour contrôler / réguler des machines sur une chaine de montage, dans une usine, ou pour contrôler des systèmes de manutention automatique. Là où les systèmes automatisés plus anciens employaient des centaines ou des milliers de relais et de cames, un simple automate suffit. On nomme automaticiens les programmeurs de ces API.

## Constitution

L'API est structuré autour d'un système de calcul ou processeur (en anglais Central Processing Unit, CPU), d'une alimentation par des courants alternatifs (AC) ou continus (DC), et de modules dépendant des besoins du procédé, notamment :
* Des cartes d'entrées - sorties (en anglais Input - Output, I/O) numériques (tout ou rien) pour des signaux à deux états ou analogiques pour des signaux à évolution continue
** Cartes d'entrées pour brancher des capteurs, boutons poussoirs, etc.
** Cartes de sorties pour brancher des actionneurs, voyants, vannes, etc.
* Des modules de communication obéissant à divers protocoles Modbus, Modbus Plus, Profibus, InterBus, DeviceNet, LonWorks, Ethernet, FIPIO, FIPWAY, RS232, RS-485, AS-i, CANopen, pour dialoguer avec d'autres automates, des entrées/sorties déportées, des supervisions ou autres interfaces homme-machine (IHM, en anglais Human Machine Interface, HMI), etc.
* Des modules spécifiques aux métiers, tels que comptage rapide, pesage, etc.
* Des modules d'interface pour la commande de mouvement, dits modules Motion, tels que démarreurs progressifs, variateurs de vitesse, commande d'axes.
* Des modules locaux de dialogue homme-machine tels qu'un pupitre (tactile ou avec clavier), un terminal de maintenance, reliés à l'automate via un réseau industriel propriétaire ou non et affichant des messages ou une représentation du procédé.
D'autres automates, plus anciens, étaient constitués d'une simple mémoire dont l'adresse d'entrée était constituée d'une concaténation de données d'entrée (senseurs, horloge) et de l'état précédent. Beaucoup moins onéreux, ils se prêtaient en revanche mal à une augmentation rapide du nombre d'états. Ils sont restés très utilisés pour des automatisations simples du style système anti-blocage des roues (ABS) ou feux de signalisation aux carrefours.
Par rapport aux ordinateurs, les API se caractérisent par :
* leur robustesse : conçus pour pouvoir travailler en milieu hostile, ils utilisent des circuits durcis et sont prévus pour résister aux vibrations, aux températures des ateliers, etc ;
* leur réactivité aux indications fournies par les capteurs (dispositifs anticollision, alarmes diverses) ;
* leur facilité de maintenance (bien que les ordinateurs industriels atteignent également un très bon degré de fiabilité). Les modules peuvent être changés très facilement et le redémarrage des API est très rapide.
L'absence d'Interface Homme-machine (IHM) permanente pour visualiser l'action et le fonctionnement du programme sur la partie opérative font que les automates sont souvent reliés à un pupitre opérateur, une interface graphique (écran d'affichage ou écran tactile) ou un PC. Dans ce dernier cas, on parle de supervision. Le PC peut d'ailleurs être utilisé seul en regroupant les fonctions de l'API et de la supervision, grâce à l'utilisation d'un softPLC.
En automatisme industriel, on parle aussi beaucoup d'automates de télégestion. Dans ce cas, on vient, via Internet, modifier ou visualiser à distance les données ou le programme des automates de gestion des installations commandées: chaudières collectives, stations d'épuration, etc. Cela se fait par le biais de modem-routeurs souvent associés à un logiciel assurant une liaison sécurisée (VPN).
En général, si API et PC coexistent dans un atelier, les API fonctionnent au plus près des processus physiques et prennent en charge les questions de sécurité, les PC s'occupant plutôt de supervision et des rapports extérieurs. Les PC peuvent ainsi fixer au mieux les consignes aux API, qui donnent les ordres détaillés, traitent les urgences, et rendent compte de l'état des processus.

## Programmation

Les programmes des API sont traités selon un cycle précis, le plus souvent :
* Diagnostic (auto-test) ;
* Acquisition de toutes les entrées (recopie dans une mémoire image) ;
* Traitements du programme ;
* Mise à jour des sorties.
Le temps d'un cycle d'API varie selon la taille du programme, la complexité des calculs, le nombre d'entrées/sorties, la puissance de l'API, et les besoins du procédé piloté. Il varie de une à quelques dizaines de millisecondes et est protégé par un chien de garde, au cas par exemple où l'algorithme exécuterait indéfiniment une même boucle de programme.
Lecture des capteurs et commande des actionneurs sont réalisés par scrutation, la gestion d'interruptions pouvant être victime d'un effet d'avalanche en cas d'incident.

### Différents langages de programmation

Il existe différents langages de programmation définis par la CEI 61131-3 :
* IL (Instruction List), le langage List est très proche du langage assembleur on travaille au plus près du processeur en utilisant l'unité arithmétique et logique, ses registres et ses accumulateurs
* ST (Structured Text), Ce langage structuré ressemble aux langages de haut niveau utilisés pour les ordinateurs
* LD (Ladder Diagram), le langage Ladder (échelle en anglais) ressemble aux schémas électriques et permet de transformer rapidement une ancienne application faite de relais électromécaniques en un programme. Cette façon de programmer exploite une approche visuelle du problème longtemps appréciée en industrie, mais qui s'appuie sur une logique de moins en moins adaptée mais toujours utilisée (2013). On parle également de langage à contacts ou de schéma à contacts pour désigner ce langage Ladder.
* Boîtes fonctionnelles (FBD), le FBD se présente sous forme diagramme : suite de blocs, connectables entre eux, réalisant des opérations, simples ou très sophistiquées.
Dans la programmation d’un automate, il est possible également de choisir de programmer en SFC, dérivé du grafcet. À chaque action élémentaire est associé un programme écrit en IL, ST, LD ou FBD. Le grafcet, très populaire en France, est un outil graphique de définition de l'automatisme séquentiel, en un nombre fini d'étapes, séparées par des conditions de transition. Il utilise une représentation graphique claire, permettant par exemple au réalisateur de montrer au donneur d'ordre comment il a compris le cahier des charges. Langage universel, indépendant (dans un premier temps) de la réalisation pratique, il peut se "câbler" par séquenceurs, être programmé sur automate voire sur ordinateur. De plus, il permet :
* de hiérarchiser les séquences ;
* de coordonner au sein d'un cycle des séquences interdépendantes se déroulant simultanément ;
* d'appliquer des conditions de validité sécurisant le cycle de pilotage ;
* enfin, d'exploiter la méthode GEMMA, méthode sécurisant la gestion des modes de marche et d'arrêt.
Dans le cas des automates programmables logiciels (softplc), il existe également différents langages de programmation non définis par la CEI 61131-3 qui étendent considérablement les possibilités de configuration, par exemple:
* C/C++ : Proview; Pascal : Visual PLC. Grâce à leur flexibilité, ces logiciels sont utilisés sur les chaînes de fabrication automobile et sur les trains de laminoirs.
Toutefois, la popularité de ces langages ne doit pas masquer leurs faiblesses en matière de sécurité des processus.

## Usage
### Exemples

* Un API peut gérer un ou plusieurs ascenseurs.
* Un API doté d'un programme simple peut maintenir un niveau de liquide dans un réservoir entre deux niveaux (un mini et un maxi), en ouvrant et fermant une vanne. Un programme légèrement plus complexe pourrait impliquer une mesure de niveau (comme entrée) et un contrôleur d'écoulement (comme résultat) permettant à l'eau de couler à un taux commandé. Un automatisme industriel typique pourrait commander plusieurs réservoirs dans un processus tel que le traitement des eaux usées. Chaque réservoir pourrait être observé pour une variété de conditions telles que : être ni trop plein ou ni trop vide, avoir le pH dans une certaine fourchette, une température adéquate...
* Un API peut également piloter un réacteur et commander en conséquence entrées de réactifs, de catalyseurs ou de solvants, sorties de produits, réchauffement ou refroidissement, etc.
* Un API peut piloter un chariot automatique.
Les automates sont largement utilisés dans l'industrie, tant manufacturière (fabrication d'objets finis ou de sous-ensembles) que de processus (élaboration de matières premières). On en trouve aussi beaucoup dans la gestion de bâtiments, la logistique et le conditionnement, tel celui des colis de la vente par correspondance. Ils conviennent parfaitement pour tout type d'activité exigeant du réflexe plutôt que des calculs élaborés. Pour des systèmes exigeant une grande sécurité (ferroviaire, machineries d'ascenseur, accès à des machines dangereuses), on utilise des automates de sécurité (APIS) dont l'unité centrale est doublée et les procédures de test renforcées. Pour la gestion des feux de circulation d'un carrefour, ce sont toutefois des automates particuliers et totalement différents, qui sont utilisés et destinés à cette tâche. Il s'agit de contrôleurs de carrefours, qui doivent respecter des normes de sécurité particulières au domaine.

### Avantages et inconvénients

Les API présentent de nombreux intérêts :
* Les éléments qui les composent sont particulièrement robustes (absence de mécanique tournante pour le refroidissement et le stockage des données, matériaux renforcés) leur permettant de fonctionner dans des environnements particulièrement hostiles (poussière environnante, perturbations électromagnétiques, vibrations des supports, variations de température...)
* Ils possèdent des circuits électroniques optimisés pour s'interfacer avec les entrées et les sorties physiques du système, les envois et réceptions de signaux se font très rapidement avec l'environnement. Avec de plus une exécution séquentielle cyclique sans modification de mémoire, ils permettent d'assurer un temps d'exécution minimal, respectant un déterminisme temporel et logique, garantissant un temps réel effectif (le système réagit forcément dans le délai fixé).
En contrepartie, ils sont plus chers que des solutions informatiques classiques à base de microcontrôleurs par exemple mais restent à l'heure actuelle les seules plateformes d'exécution considérées comme fiables en milieu industriel (avec les ordinateurs industriels). Le prix est notamment dépendant du nombre d'entrées/sorties nécessaires, de la mémoire dont on veut disposer pour réaliser le programme, de la présence ou non de modules métier. De plus ils nécessitent la maîtrise de langages spécifiques conformes à la norme CEI 61131-3 qui reprennent dans leur forme la logique d'exécution interne de l'automate. Ces langages apparaissent toutefois à beaucoup d'utilisateurs plus accessibles et plus visuels que les langages informatiques classiques.

### Automate de sécurité

Au-delà des applications classiques, un automate peut avoir des caractéristiques dites « de sécurité ». Elles lui permettent, soit d'avoir une garantie de fonctionnement, même après la ruine d'un élément, soit de garantir un fonctionnement qui générera des actions toujours plus contraignantes en cas de ruine d'un élément, garantissant la sécurité des personnes et des biens.
Ces caractéristiques peuvent porter sur :
* les entrées : les capteurs sont contrôlés en permanence, et ne peuvent indiquer que des états logiques sûrs. Un écrasement du câble créant un court-circuit générant potentiellement un « 1 » permanent n'est pas permis ;
* les sorties : une commande d'un actionneur, ou l'actionneur lui-même peut être contrôlé ou redondé afin de garantir sa mise en service ou son arrêt, même en cas de défaillance d'un élément ;
* l'unité de commande elle-même : elle peut être redondée (doublée, voire triplée) afin de garantir son fonctionnement ;
* son alimentation.

#### Exemples

* Les automates gérant la signalisation tricolore routière : une défaillance d'un élément, ou de la carte CPU provoque automatiquement l'affichage d'un jaune clignotant (agrément SETRA).
* Une carte d'entrée spécialisée pour les capteurs de contrôle d'ouverture de porte d'une machine.

### Nano Automates Embarqués

Une variante à l'automate industriel classique consiste en un automate concentré dans un mini boitier (inférieur à 10 cm), donc simplifié au maximum

### Automate logiciel

Une variante à l'automate programmable matériel consiste en un automate logiciel, donc sans matériel lié à proprement parler, mais réutilisant les mêmes concepts et langages du monde de l'automatisme. Certains langages supplémentaires, plus orientés informatiques et donc moins accessibles à un électricien, peuvent également figurer (comme évoqué ci-dessus).
On parle parfois de SoftPlc. Afin de garantir un traitement dans les temps, la plateforme matérielle utilisée pour exécuter le moteur d'automatisme doit fonctionner sur un Système d'exploitation temps réel.
Il peut également exister des simulateurs d'automates programmables, mais dans ce cas il s'agit juste de pouvoir tester une programmation pour des essais, sans lire de capteurs et piloter de vrais actionneurs. Ce type de logiciel peut s'exécuter sur un système d'exploitation classique non temps-réel.