+1 500 000 produits offerts

6000 colis expédiés chaque jour

+300 000 clients de 150 pays

Quick Buy Favoris
Panier

Langages de programmation des automates programmables

Date de publication: 14-03-2025 🕒 7 min de lecture

Les automates programmables (PLC) sont couramment utilisés dans l'industrie partout où il est nécessaire de contrôler des paramètres et de gérer des processus. Le développement de l'électronique embarquée a fait de ces appareils des dispositifs aux paramètres exigeants, résistants aux perturbations EMI et aux conditions environnementales, tout en étant conviviaux. Contrairement à autrefois, les environnements de développement de programmes sont très similaires et la plupart d'entre eux permettent de trouver une méthode d'exécution de programme qui nous convient. Alors, comment programme-t-on un automate PLC?

Les langages de programmation des automates programmables (PLC) sont devenus l'objet de la norme IEC 61131 publiée en 2013. La partie 3 de cette norme contient des recommandations concernant les langages et méthodes de programmation des automates PLC. Outre les types de données, les variables, la configuration et sa description, les unités d'organisation du programme et les principes de programmation orientée objet, cinq langages de programmation de base pour les automates PLC sont énumérés et les exigences relatives à leur fonctionnalité sont définies. En raison de cette norme, les langages de programmation de base utilisés par les programmeurs de PLC sont devenus :

Échelle LD (LAD)

Le langage à contacts LD (ou LAD) est le plus populaire et disponible dans tous les environnements de création de programmes pour PLC. C'est un langage graphique, mais il utilise des symboles simples, donc dans les anciennes solutions, on utilisait une semi-graphique créée à l'aide de caractères ASCII standard. Ces caractères étaient également faciles à afficher sur l'écran du PLC, ce qui permettait de créer des programmes plus simples ad hoc, sans utiliser d'ordinateur PC. Dans ce langage, on crée un schéma de programme à l'aide de symboles similaires à ceux utilisés dans les schémas électriques – bobines et contacts. Les contacts peuvent être normalement ouverts (NO) ou normalement fermés (NC), et les bobines peuvent avoir différentes fonctionnalités, telles que la mise en marche, la remise à zéro ou la négation. On peut également y intégrer des fonctions et des blocs fonctionnels entiers, tels que des temporisateurs, des compteurs ou des bascules. Le langage à contacts est compréhensible même pour un programmeur inexpérimenté.

Figure 1. Fragment de programme en langage à contacts LD (LAD)

Diagramme de blocs fonctionnels FBD

Une autre méthode de programmation très intuitive, surtout pour ceux qui connaissent la technique numérique, est le diagramme de blocs fonctionnels FBD. Un exemple de fragment de "code" réalisé avec FBD est montré sur la figure 2. Les différentes entrées, sorties et opérations sont représentées par des blocs fonctionnels et des portes, qui réalisent non seulement des fonctions logiques, mais sont également capables de traiter des signaux selon un algorithme donné. Parmi les blocs fonctionnels, on trouve des régulateurs PID, une large gamme de générateurs de signaux, des compteurs et d'autres. Certains environnements de programmation permettent également de définir ses propres blocs avec la fonctionnalité requise. FBD est un langage graphique. Les différents blocs sont disposés sur le schéma et reliés entre eux, ce qui rappelle le dessin de circuits logiques. Certains environnements de programmation permettent non seulement de connecter les entrées/sorties, mais aussi de créer des bus et des références transmettant une série de paramètres (sur la figure 2, les bus sont représentés par des lignes épaisses – ici, ils transmettent des constantes et des variables multibits).

Figure 2. Exemple de fragment de programme réalisé avec FBD

Langage textuel structuré ST

Le langage textuel structuré ST est un langage de haut niveau, rappelant autrefois le très populaire langage Pascal. Il permet des opérations plus complexes, dont l'écriture n'est pas limitée par un enchevêtrement de lignes à l'écran et leur exécution comme dans le cas de FBD, ce qui nécessite souvent un grand écran avec une bonne résolution. La programmation en ST ressemble à la création de code dans des langages de programmation traditionnels pour les ordinateurs PC. Des instructions complexes sont prises en charge, telles que les boucles repeat…until, do…while, les instructions conditionnelles if…then…else, case ainsi que les fonctions mathématiques sqrt(), sin(). Ce qui est important, c'est que, indépendamment du fabricant du matériel ou de l'environnement, les fonctions du langage ST leur sont communes et ont été définies dans la norme IEC 61131. Étant donné que la norme mentionnée permet de combiner les langages qu'elle énumère, le langage ST peut également être utilisé pour créer des "insertions" ou des blocs FBD non standard.

Listing 1. Exemple de fonction réalisée en langage ST 
//=======================================================================
// Function Block Timed Counter :  Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
    VAR_INPUT
        //Signal de déclenchement pour commencer le comptage chronométré
        Execute     : BOOL := FALSE;
        //Entrer le temps de cycle (secondes) entre les comptages 
        Time_Increment  : REAL := 1.25;
        //Nombre de cycles de comptage souhaités
        Count_Cycles    : INT  := 20;
    END_VAR

VAR_OUTPUT
        //Bit unique indiquant que le cycle de minuterie est terminé
        Timer_Done_Bit  : BOOL := FALSE;
        //Bit de sortie indiquant que le comptage est terminé
        Count_Complete  : BOOL := FALSE;
        //Valeur accumulée du compteur
        Current_Count   : INT  := 0;
END_VAR

VAR
        //FB de minuterie de la bibliothèque de commandes
        CycleTimer      : TON;
        //FB de compteur de la bibliothèque de commandes
        CycleCounter    : CTU;
        //Temps converti en secondes en MS
        TimerPreset : TIME;
    END_VAR

    // Début de la programmation du bloc fonctionnel
    TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;

    CycleTimer(
        in := Execute AND NOT CycleTimer.Q,
        pt := TimerPreset);

        Timer_Done_Bit := CycleTimer.Q;

        CycleCounter(
        cu := CycleTimer.Q,
        r := NOT Execute,
        pv := Count_Cycles);

        Current_Count := CycleCounter.cv;
        Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK

Schéma de fonction séquentielle SFC

Le schéma de fonction séquentielle est un autre des langages de programmation graphiques. Son prototype était le langage GRAFCET inspiré des réseaux de Petri binaires. Il permet de décrire une séquence d'étapes (actions) qui doivent être exécutées dans un ordre strictement défini. Il est particulièrement utile pour créer des programmes pour la gestion de processus nécessitant une synchronisation ou des processus pouvant être divisés en étapes. Les principaux composants d'un programme en SFC sont : les étapes (étapes) associées à des actions, les transitions associées à des conditions logiques, les connexions directes entre les étapes et les transitions.

Souvent, le langage SFC est combiné avec une autre méthode de programmation, par exemple l'échelle LD. SFC est par nature un langage de programmation concurrent, dans lequel plusieurs POU (Program Organization Units), c'est-à-dire des unités contrôlant le flux, peuvent être actives en même temps. Certains environnements permettent également de créer des macro-actions, c'est-à-dire des actions à l'intérieur d'un POU qui affectent l'état d'un autre POU. De cette manière, un POU peut décider des étapes actives entreprises par un autre POU.

Figure 3. Exemple de fragment de programme en langage SFC

Liste d'instructions IL

La liste d'instructions est déjà considérée comme une méthode de programmation obsolète. Ce langage ressemble un peu à l'assembleur, mais malgré son implémentation pour différents automates PLC équipés de différents processeurs, le langage IL est indépendant du type de processeur utilisé. Comme l'assembleur, il se compose d'instructions très simples, et des opérations plus complexes nécessitent l'utilisation de plusieurs d'entre elles. Le contrôle de l'exécution du programme se fait à l'aide d'instructions de saut et d'appel de sous-programmes.

De nombreux fabricants d'automates, malgré la conformité totale de leur matériel et logiciel avec la norme IEC 61131-3, offrent des appels/blocs fonctionnels supplémentaires, spécifiques à un fournisseur donné et adaptés au matériel qu'il propose, tels que la lecture ou l'écriture vers les entrées/sorties. Par exemple, le langage IL destiné aux automates PLC de la société Siemens a été nommé "Statement List" ou "STL" en anglais et "Anweisungs-Liste" ou "AWL" en allemand. Le nom allemand a également été transféré aux versions nationales de l'environnement d'exécution en italien et en espagnol. L'utilisateur du package Simatic peut choisir entre des mnémoniques allemands et internationaux pour représenter les instructions. Par exemple, "A" signifie "AND" ou "U" signifie "UND", "I" signifie "Entrée" ou "E" signifie "Eingang", etc.

Listing 2. Exemple de fragment de programme en langage IL
        LD      Speed
        GT      2000
        JMPCN       VOLTS_OK
        LD      Volts
VOLTS_OK    LD      1
        ST      %Q75

Quel est le meilleur langage? Cela dépend…

Le but de ce texte n'est pas d'enseigner la programmation des automates PLC, mais de signaler certaines possibilités et options à choisir. Chaque programmeur de PLC devrait choisir la méthode qui sera la plus adéquate à ses besoins, ou les combiner en fonction de l'application. Par exemple, le diagramme FBD plaira probablement aux utilisateurs qui connaissent et comprennent les circuits logiques, tandis que l'échelle LD sera utile pour programmer des séquences de contrôle plus simples. En revanche, ST et SFC seront utiles pour programmer des processus complexes, bien que, par exemple, le langage ST ait été implémenté dans le micro-automate PLC Easy de la société Eaton, et celui-ci sera plutôt utile pour réaliser des fonctions de contrôle et de gestion plus simples et moins exigeantes. D'un autre côté, il n'y a pas de recommandations indiquant quel langage peut être utilisé pour quoi, lequel est adapté à quoi. Avec plus ou moins d'effort, en utilisant chacune des méthodes discutées, on peut créer le logiciel approprié. La meilleure option semble être de combiner les langages en fonction des besoins et pour obtenir la plus grande lisibilité de l'application.

Transfer Multisort Elektronik (TME) est l’un des plus grands distributeurs mondiaux de composants électroniques, de pièces électrotechniques, d’équipements d’atelier et d’automatisation industrielle. Le catalogue comprend plus de 1 500 000 de produits provenant de 1 300 fabricants leaders. Les centres logistiques modernes de TME à Łódź et Rzgów (Pologne), avec une superficie totale de plus de 40 000 m², expédient près de 6 000 colis par jour à des clients dans plus de 150 pays.

TME investit également dans le développement des connaissances et compétences des jeunes ingénieurs et passionnés d’électronique grâce au projet TME Education et soutient la communauté technologique en organisant la série d’événements TechMasterEvent, promouvant l’innovation et l’échange d’expériences.

rightColumnPicture rightColumnPicture

VOIR AUSSI