engineering

Les 5 langages de programmation API selon la CEI 61131-3

LD, FBD, IL, ST et SFC : ce que définit réellement la CEI 61131-3, comment s'y rattachent les appellations Siemens et quel langage convient à quelle tâche.

David Prybisch
10 min read
Les 5 langages de programmation API selon la CEI 61131-3

1.Ce que régit la CEI 61131-3

La CEI 61131-3 est la norme internationale de programmation des automates programmables. Elle ne définit pas seulement des langages, mais aussi les types de données, les types de blocs (fonction, bloc fonctionnel, programme) et le modèle d'exécution.

L'intérêt pratique : programmer selon la norme produit du code qu'un autre programmeur peut lire et comprendre sur un autre automate. Cela ne le rend pas portable au sens du copier-coller – les dialectes des constructeurs diffèrent trop. Mais les concepts sont identiques, et c'est là l'essentiel en pratique.

2.Noms normatifs et noms Siemens

C'est ici que naît la confusion la plus fréquente – y compris dans des articles techniques. La norme définit cinq langages ; Siemens leur donne ses propres noms :

CEI 61131-3Siemens (TIA Portal / STEP 7)Type
LD – Ladder DiagramKOP – Kontaktplangraphique
FBD – Function Block DiagramFUP – Funktionsplangraphique
IL – Instruction ListAWL – Anweisungslistetextuel
ST – Structured TextSCL – Structured Control Languagetextuel
SFC – Sequential Function ChartGRAPHgraphique (structure séquentielle)

Autre subtilité : le SFC n'est à proprement parler pas un langage de programmation, mais un élément de structuration. À l'intérieur des étapes et des transitions d'un SFC, le code est de nouveau écrit dans l'un des autres langages. En pratique, le SFC est néanmoins compté comme cinquième langage, et la norme le traite dans la même partie.

3.Les cinq langages comparés

LangageForceLimiteEmploi typique
LD (KOP)Intuitif pour qui vient de l'électrotechnique ; métaphore du chemin de courantPeu lisible au-delà d'une cinquantaine de réseaux ; inadapté aux calculsVerrouillages, logique de validation simple, chaînes d'arrêt d'urgence
FBD (FUP)Flux de données visible ; lisible pour la combinatoire et la régulationDevient vite confus sur de grands programmesBoucles de régulation, traitement analogique, conditionnement de signal
IL (AWL)Très proche de la machine, compactDifficile à lire, peu maintenable ; classé obsolète dans la 3e éditionInstallations existantes ; déconseillé en développement neuf
ST (SCL)Boucles, conditions, calculs, blocs de bibliothèque ; versionnable en texteMoins parlant que LD pour la pure logique de verrouillageAlgorithmes, recettes, traitement de données, blocs réutilisables
SFC (GRAPH)Les séquences deviennent une machine d'états visible au lieu de se cacher dans des mémentosSurcoût pour une logique simpleChaînes séquentielles, procédés discontinus, gestion des modes

3.1.LD – schéma à contacts

Le schéma à contacts reproduit la logique du schéma électrique : des contacts en série forment un ET, en parallèle un OU. Pour un personnel de maintenance issu de l'électrotechnique, c'est le langage dont le seuil d'entrée est le plus bas – un avantage inestimable quand quelqu'un sans compétences en programmation doit suivre un verrouillage la nuit.

La limite apparaît avec l'ampleur et le calcul. Un réseau de vingt contacts et trois branches parallèles est plus large que l'écran une fois imprimé, et la mise à l'échelle d'une valeur analogique devient une chaîne de blocs.

3.2.FBD – schéma par blocs fonctionnels

Le FBD représente les signaux sous forme de blocs à entrées et sorties. Là où le LD met en avant le chemin de courant, le FBD met en avant le flux de données – ce qui convient mieux au traitement analogique, aux régulateurs et à tout ce qui transforme des valeurs plutôt que de commuter.

3.3.IL – liste d'instructions

L'IL est le langage le plus proche de la machine, un assembleur pour automate en somme. Dans la troisième édition de la CEI 61131-3 (2013), l'IL a été classé obsolète (deprecated) ; il n'est plus recommandé pour de nouveaux projets.

Il reste pertinent pour une raison : les installations existantes. Reprendre un programme S5 ou S7 Classic, c'est rencontrer régulièrement de l'IL – souvent sans symbolique. Savoir le lire n'est pas de la nostalgie lors des migrations, c'est du métier.

3.4.ST – texte structuré

Le ST est le langage permettant d'exprimer tout ce qui devient fastidieux en graphique : boucles, distinctions de cas, calculs, traitement de chaînes, blocs de bibliothèque génériques.

// Exemple : mise à l'échelle d'une valeur analogique avec contrôle de plage
FUNCTION FC_ScaleAnalog : REAL
VAR_INPUT
  iRaw        : INT;    // valeur brute 0…27648
  rMin, rMax  : REAL;   // plage cible en unité physique
END_VAR

IF iRaw < 0 THEN
  FC_ScaleAnalog := rMin;          // rupture de fil / sous-dépassement
ELSIF iRaw > 27648 THEN
  FC_ScaleAnalog := rMax;          // dépassement
ELSE
  FC_ScaleAnalog := rMin + (rMax - rMin) * INT_TO_REAL(iRaw) / 27648.0;
END_IF;

La même fonctionnalité en LD serait une chaîne de blocs sur plusieurs réseaux, dont l'intention ne se révèle qu'après examen attentif.

Second avantage, souvent sous-estimé : le ST est du texte. Il se versionne donc utilement dans Git, se relit ligne par ligne en revue de code et se cherche avec des outils ordinaires. Les langages graphiques sont stockés en format binaire – un diff n'y montre au mieux que « bloc modifié ».

3.5.SFC – diagramme fonctionnel en séquence

Le SFC représente les séquences en étapes et transitions. Le gain majeur est la visibilité : l'état courant de l'installation se lit directement en ligne, au lieu d'être reconstitué à partir d'une dizaine de mémentos.

Pour les chaînes séquentielles – procédés discontinus, cycles de nettoyage, changements de mode – c'est l'avantage décisif au dépannage. Pour un simple verrouillage, c'est un surcoût.

4.Quel langage pour quoi : une aide à la décision

Aucun langage n'est le meilleur en tout. En pratique, cette répartition a fait ses preuves :

TâcheRecommandation
Verrouillages, validations, logique d'arrêt d'urgenceLD – doit rester lisible la nuit sans programmeur
Traitement analogique, régulationFBD
Algorithmes, calculs, recettesST
Blocs de bibliothèque réutilisablesST – paramétrable et versionnable
Chaînes séquentielles, procédés discontinusSFC
Comprendre et migrer du code existantSavoir lire l'IL – pas en écrire de nouveau

5.Mélanger est permis – et judicieux

Idée reçue répandue : il faudrait choisir un langage. C'est l'inverse. La norme prévoit explicitement que chaque bloc soit écrit dans le langage adapté à sa tâche.

Un projet typique ressemble alors à ceci :

OB1 (Main)                         → LD, uniquement des appels
  ├── FB_ModeControl               → SFC (modes de marche en chaîne d'étapes)
  ├── FB_ConveyorControl           → ST (logique + temporisation)
  │     └── FC_ScaleAnalog         → ST (calcul)
  ├── FC_SafetyInterlocks          → LD (doit être lisible sans outil)
  └── FB_AlarmHandler              → ST (bloc de bibliothèque)

Seul compte que le choix soit justifié et reste cohérent dans le projet. Cinq langages mélangés au hasard valent moins qu'un seul appliqué avec constance.

6.Conclusion

  • La CEI 61131-3 définit cinq langages : LD, FBD, IL, ST et SFC. SCL est le nom Siemens du ST, pas un sixième langage.
  • L'IL est obsolète depuis 2013 – savoir le lire oui, en écrire de nouveau non.
  • Le ST porte l'essentiel d'un projet moderne, parce qu'il autorise calculs, bibliothèques et gestion de versions.
  • Le LD reste pour la logique de sécurité et critique pour la maintenance, car la lisibilité en cas de défaut détermine la durée d'arrêt.
  • Mélanger les langages est conforme à la norme et judicieux – tant que le choix est justifié et cohérent.

7.Pour aller plus loin

Tags

SPS-ProgrammiersprachenIEC 61131-3SCLStructured TextKOPFUPAWLGRAPHSFCTIA PortalSPS-ProgrammierungLadder DiagramS7-1500Legacy-Migration

Des questions sur votre projet d'automatisation ?

En tant qu'ingénieur en automatisation basé à Stadtbredimus, Luxembourg, j'offre des consultations initiales gratuites pour les entreprises de la Grande Région Saar-Lor-Lux.

David Prybisch · API · IHM · Mise en service

Related Articles

Questions fréquentes

Quels sont les 5 langages définis par la CEI 61131-3 ?

LD (schéma à contacts), FBD (schéma par blocs fonctionnels), IL (liste d'instructions), ST (texte structuré) et SFC (diagramme fonctionnel en séquence). Chez Siemens ils s'appellent KOP, FUP, AWL, SCL et GRAPH. Le SFC est à proprement parler un élément de structuration, mais il est communément compté comme cinquième langage.

SCL est-il identique à ST ?

Oui. SCL (Structured Control Language) est l'implémentation Siemens du texte structuré selon la CEI 61131-3. Les listes présentant SCL et ST comme deux langages distincts comptent un langage deux fois — généralement au détriment de l'IL, qui disparaît alors. La norme définit cinq langages, pas six.

Quel langage de programmation API apprendre ?

Le texte structuré (SCL) en premier, car il porte l'essentiel des projets modernes et résout proprement les calculs, les blocs de bibliothèque et la gestion de versions. Le schéma à contacts en second, car les verrouillages et la logique de sécurité y résident et doivent rester lisibles en cas de défaut sans compétences en programmation.

L'IL est-il encore pertinent ?

Pas en développement neuf — la troisième édition de la CEI 61131-3 de 2013 l'a classé obsolète. Il reste pertinent pour les installations existantes : reprendre ou migrer un programme S5 ou S7 Classic, c'est le rencontrer régulièrement, souvent sans symbolique. Savoir le lire est indispensable ; en écrire de nouveau ne l'est plus.

Quand utiliser ST plutôt que LD ?

Pour tout ce qui implique des calculs, des boucles, des distinctions de cas ou des blocs réutilisables. Une mise à l'échelle analogique avec contrôle de plage représente dix lignes lisibles en ST et une chaîne de blocs en LD dont l'intention n'apparaît qu'après examen. À l'inverse, le LD reste préférable pour les verrouillages.

Peut-on mélanger plusieurs langages dans un même projet ?

Oui, la norme le prévoit explicitement : chaque bloc est écrit dans le langage adapté à sa tâche. Typiquement les appels en LD, les chaînes séquentielles en SFC, la logique et les blocs de bibliothèque en ST, et les verrouillages de sécurité en LD. L'essentiel est que le choix soit justifié et cohérent dans le projet.

Pourquoi le ST se versionne-t-il mieux que le LD ?

Parce que le ST est du texte. Les fichiers texte se comparent ligne par ligne dans Git, se commentent en revue de code et se cherchent avec des outils courants. Les langages graphiques sont stockés en binaire — un diff n'y montre au mieux qu'un bloc modifié, sans dire ce qui a changé.

Quelle différence entre SFC et une chaîne d'étapes en LD ?

Fonctionnellement les deux sont réalisables, mais le SFC rend l'état visible : l'étape active se lit directement en ligne. En LD, ce même état se cache dans des mémentos et doit être reconstitué lors du dépannage. Pour les procédés discontinus et les changements de mode, c'est l'avantage décisif au diagnostic.