Table of Contents
Introduction au texte structuré
Le texte structuré (ST) est un langage de programmation de haut niveau défini par la norme CEI 61131-3 pour les contrôleurs logiques programmables (PLC). A l'origine ratifié en 1993 et révisé en 2002 et 2013, la norme a permis de créer un paysage fragmenté de langages PLC propriétaires. Le texte structuré a été conçu pour combler une lacune : tandis que le diagramme Ladder reste intuitif pour les électriciens et la logique simple de relais, ST fournit un environnement textuel axé sur les algorithmes qui ressemble étroitement à des langages comme Pascal, C, ou même à des langages de script modernes.
Dans un système de contrôle industriel typique, un PLC peut gérer des dizaines d'entrées analogiques, effectuer des calculs proportionnels-intégraux-dérivatifs (PID), gérer les données de recette, communiquer sur plusieurs protocoles et exécuter des interlocks de sécurité. Toutes ces tâches peuvent être clairement exprimées dans le texte structuré. Sa syntaxe supporte les variables, les énoncés conditionnels (IF‐THEN‐ELSIF‐ELSE, CASE), l'itération (FOR, WHILE, REPEAT) et les types de données structurées (arrays, structures, dénombrements).
Comme ST fait partie de la norme CEI 61131‐3, il peut être mélangé avec d'autres langues dans le même projet. Un modèle commun est d'écrire le flux de commande principal dans le diagramme de la ladder ou de bloc de fonction et de décharger les calculs complexes à un bloc de fonction écrit dans ST. Cette approche hybride tire parti des forces de chaque langue sans forcer les ingénieurs à créer un paradigme unique.
Avantages du texte structuré dans la programmation moderne de PLC
Lisibilité et entretien
Le texte structuré utilise des mots-clés en anglais clair et une structure de blocs qui reflète les langages de programmation conventionnels. L'identification et les commentaires facilitent le suivi du flux logique. Lorsqu'un nouvel ingénieur hérite d'un grand projet, le code ST est souvent plus autodocumenté qu'un diagramme de Ladder dense.
Pouvoir algorithmique
Les fonctions arithmétiques complexes, trigonométriques, logarithmes et opérations bitwise sont des citoyens de première classe dans ST. Par exemple, la mise en place d'une boucle PID en cascade avec des termes de flux avant ne nécessite qu'une douzaine de lignes de code. Les spécialistes de la taille devraient construire des blocs de fonctions élaborés ou des opérations mathématiques basées sur des échelles qui sont plus difficiles à déboguer.
Modularité et réutilisation du code
Un bloc de fonctions écrit en ST peut être inventorié plusieurs fois, chacun avec ses propres données d'instance. Cette conception modulaire réduit la duplication et accélère le développement pour des tâches répétitives. Par exemple, un bloc de fonctions -commande -moteur générique peut être réutilisé pour chaque moteur d'une usine. Contrairement au copier-coller souvent vu dans les projets Ladder-seulement, ST encourage une approche structurée et orientée objet.
Interopérabilité avec d'autres langues de la CEI
La plupart des environnements de programmation modernes permettent de combiner ST avec Ladder, FBD et SFC. Un ingénieur peut utiliser SFC pour modéliser une machine d'état, mettre en œuvre chaque action d'état en ST et laisser les interlocks de sécurité dans Ladder. Cette flexibilité signifie que ST ne remplace pas d'autres langages mais les complète, laissant ainsi les équipes choisir le meilleur outil pour chaque partie de la stratégie de contrôle.
Débogue et simulation
Le code ST peut être monophasé, surveillé et pointé dans la plupart des environnements de développement. Puisque ST sépare la logique de la cartographie matérielle, vous pouvez simuler de grandes parties d'un programme hors ligne. Cela réduit le temps de mise en service et permet des tests approfondis avant que le PLC ne soit connecté à des équipements en direct.
Texte structuré par rapport aux autres langues CEI 61131-3
Schéma d'échelle (LD)
Diagramme de ladder imite les schémas de relais électriques. Il est excellent pour la logique booléenne simple, les circuits de sécurité et les ingénieurs qui viennent d'un fond électrique. Cependant, avec la complexité croissante, Ladder devient difficile à lire et à corriger. ST est supérieur pour les calculs, la manipulation des données et tout algorithme qui ne se cartographie pas naturellement aux contacts et aux bobines.
Diagramme de bloc de fonction (FBD)
FBD est graphique et fonctionne bien pour la logique orientée signal, comme le contrôle PID ou l'échelle. Mais il peut devenir encombré avec de nombreux blocs et fils. ST peut produire la même fonctionnalité en moins de lignes et est plus facile à la version-contrôle et diff. FBD reste populaire pour les blocs de bibliothèque; ST est souvent utilisé pour implémenter ces blocs en interne.
Tableau de fonction séquentiel (SFC)
SFC excelle dans la représentation de la machine d'État. Il orchestre les étapes et les transitions visuellement. Pourtant, les actions à l'intérieur de chaque étape sont souvent écrites en ST ou en Ladder.
Liste d'instructions (IL)
La liste d'instructions est un langage mnémonique de bas niveau semblable à l'assemblage. Elle est rarement utilisée dans de nouveaux projets parce qu'elle est difficile à lire et à entretenir. ST peut tout faire avec une syntaxe plus claire, donc IL a été déprécié dans de nombreuses chaînes d'outils.
Dans la pratique, la plupart des systèmes IEC 61131‐3 prennent en charge les cinq langues, mais ST est devenu le choix de facto pour les nouveaux algorithmes, les moteurs de communication et les applications à forte intensité de données. La norme IEC 61131‐3 elle-même fournit la définition formelle de la syntaxe et de la sémantique ST.
Syntaxe clé et constructions dans le texte structuré
Variables et types de données
ST prend en charge les types de données standard IEC 61131‐3 : BOOL, INT, DINT, REAL, LREAL, TIME, DATE, STRING et structures définies par l'utilisateur. Les variables peuvent être déclarées au niveau du programme, du bloc de fonction ou de la fonction avec les mots clés VAR, VAR INPUT, VAR OUTPUT, VAR IN OUT et VAR STAT. Par exemple :
VAR Setpoint : REAL := 100.0; processVariable : REAL; gain : REAL := 1.5; output : REAL; END_VAR
Déclarations conditionnelles
Les déclarations de cas sont pratiques pour les décisions à plusieurs niveaux basées sur un nombre entier ou un dénombrement :
CASE mode OF 1: output := Setpoint * gain; 2: output := Setpoint * 2.0; 3: output := 0.0; ELSE output := 0.0; END_CASE
Boucles et itération
Pour les boucles itérer sur une plage; les boucles WHILE et REPEAT fonctionnent jusqu'à ce qu'une condition change. Elles sont essentielles pour le traitement des tableaux, la gestion du tampon ou les axes de synchronisation. Par exemple, en moyenne les 100 derniers échantillons dans un tampon:
sum := 0.0; FOR i := 0 TO 99 DO sum := sum + buffer[i]; END_FOR average := sum / 100.0;
Fonctions et blocs de fonctions
Les blocs de fonctions (FUNCTION BLOCK) ont une mémoire spécifique à l'instance et peuvent avoir plusieurs variables de sortie. Ils sont les principaux éléments de base des programmes ST structurés. Voici un simple bloc de fonction pour un filtre moyen mobile :
FUNCTION_BLOCK MovingAverage VAR_INPUT newValue : REAL; trigger : BOOL; END_VAR VAR_OUTPUT average : REAL; END_VAR VAR buffer : ARRAY[0..99] OF REAL; index : INT := 0; count : INT := 0; END_VAR IF trigger THEN buffer[index] := newValue; index := index + 1; IF index >= 100 THEN index := 0; END_IF IF count < 100 THEN count := count + 1; END_IF average := 0.0; FOR i := 0 TO count-1 DO average := average + buffer[i]; END_FOR average := average / REAL(count); END_IF
Cet exemple montre comment ST gère l'indexation des tableaux, la logique conditionnelle, les boucles et l'arithmétique en point flottant de façon claire et concise. Pour une plongée plus profonde dans la syntaxe, reportez-vous aux ressources PLCopen IEC 61131‐3.
Applications pratiques du texte structuré
Contrôle PID et contrôle avancé des processus
Bien que de nombreux PLC offrent des blocs PID préconstruits, les implémentations personnalisées en ST permettent une liquidation anti-reset, une compensation de flux, une planification des gains et un réglage adaptatif. Par exemple, un bloc de fonction ST unique peut encapsuler un algorithme PID qui fonctionne en millisecondes, avec des sorties à 0-10 V ou 4-20 mA. ST rend également facile la mise en œuvre de stratégies de gestion de cascade ou de ratio sans les connexions spaghetti de FBD.
Contrôle des mouvements et robotique
Les contrôleurs modernes de mouvement exposent souvent les fonctions de camrage, d'engrenage et d'interpolation. ST est le langage de choix pour écrire des profils de came électroniques, effectuer des transformations de coordonnées (p. ex. polaires à cartésiens) et mettre en œuvre des algorithmes de planification de trajectoire.
Exploitation et analyse des données
Les PLC agissent de plus en plus comme des périphériques de bord, recueillant des données de production pour analyse. ST peut écrire des données sur des fichiers sur une carte SD ou envoyer des chaînes formatées sur Ethernet en utilisant TCP/IP ou MQTT. Les ingénieurs peuvent utiliser ST pour calculer des résumés statistiques (moyenne, écart-type, min/max) à la volée, réduisant ainsi le besoin d'un PC séparé.
Conducteurs du protocole de communication
De nombreux PLC utilisent ST pour implémenter des protocoles personnalisés sur série ou Ethernet. Par exemple, un pilote pour un maître MODBUS RTU ou un lecteur de code-barres propriétaire peut être écrit entièrement en ST, donnant un contrôle complet sur le timing et la gestion des erreurs.
Sécurité et manipulation des défauts
Les CPL cotés en sécurité permettent souvent à ST de s'intégrer dans des contextes bien définis. ST est utilisé pour créer des arbres de faille, mettre en œuvre l'exclusion mutuelle pour des ressources partagées et générer une logique d'alarme facile à lire.
Meilleures pratiques pour l'élaboration de textes structurés
Adopter une convention sur la désignation cohérente
Utilisez des noms significatifs pour les variables, les fonctions et les blocs de fonctions. La notation hongroise (p. ex. fSetpoint[ pour un point de consigne REAL, xStart[ pour un signal de démarrage BOOL) est courante dans l'automatisation industrielle.
Commentaire et document assez attentivement
ST prend en charge les commentaires monolignes (//) et les commentaires de blocs (/* */). Ecrivez des commentaires qui expliquent l'intention d'un calcul, les unités d'une variable ou l'hypothèse derrière une branche conditionnelle. Évitez les commentaires évidents comme -incrément compter.
Code de structure avec fonctions et blocs de fonctions
Décomposition du programme en petites unités testables. Chaque bloc de fonction doit avoir une seule responsabilité. Si un bloc dépasse 200 lignes ou a plus de 10 entrées/sorties, envisager de refactoriser. Utilisez VAR IN OUT pour les données que le bloc modifie et séparer clairement les entrées de contrôle des entrées de données.
Initialiser toutes les variables
Les variables non initiales peuvent causer un comportement imprévisible. Toujours attribuer une valeur initiale dans la déclaration (par exemple, counter : INT := 0). Pour les structures complexes, utilisez un bloc de fonction d'initialisation ou définissez des valeurs par défaut dans le bloc VAR.
Essai en simulation d'abord
La plupart des fournisseurs de PLC fournissent des environnements de simulation qui exécutent ST sans matériel réel. Écrire des tests d'unité pour les fonctions critiques – par exemple, vérifier qu'un bloc PID renvoie la sortie attendue pour les entrées connues. Utilisez des pièges d'assertion (p. ex. IF ... THEN EXIT) pour attraper les états invalides pendant les tests.
Contrôle de version et révision de code
Traitez le code ST comme tout autre logiciel : utilisez un système de contrôle de version (Git, SVN) pour suivre les changements. Code examine les erreurs logiques et améliore les connaissances de l'équipe. De nombreux IDE peuvent exporter ST comme texte simple, rendant les comparaisons differentes simples.
Pour obtenir un ensemble de lignes directrices plus détaillé, consultez le PLCopen Software Engineering Guide.
Formation et adoption d'un texte structuré
Bien que ST fasse partie de la norme CEI depuis 1993, de nombreux professionnels de l'automatisation ont été formés principalement sur des langues de Ladder ou spécifiques aux fournisseurs. La courbe d'apprentissage de ST est relativement douce pour toute personne ayant une expérience de programmation de base. Des tutoriels en ligne, l'apprentissage en ligne fourni par les fournisseurs et des cours d'organisations comme la Société internationale d'automatisation (ISA) enseignent la syntaxe ST et les meilleures pratiques.
Les entreprises qui adoptent ST commencent souvent par réécrire un bloc de fonctions complexe unique en ST tout en conservant le reste du projet en Ladder. Avec la confiance croissante, les équipes passent à des sections plus grandes. Au fil du temps, ST devient le langage préféré pour un nouveau développement, avec Ladder retenu uniquement pour des circuits simples de logique booléenne ou de sécurité où la clarté graphique est obligatoire.
La tendance mondiale vers des standards d'automatisation ouverts et la portabilité croisée favorise également ST. Parce que la norme CEI 61131-3 ST est identique sur la plupart des plateformes (avec des différences de dialectes mineures), les ingénieurs peuvent réutiliser leurs compétences lors du changement d'une marque PLC.
L'avenir du texte structuré dans l'automatisation industrielle
Avec l'adoption par les usines des principes de l'Industrie 4.0, les exigences de programmation des PLC augmentent. ST est particulièrement bien placé pour répondre à ces exigences. Sa capacité à travailler avec de grands réseaux, à communiquer via Ethernet et à effectuer des mathématiques complexes en fait le choix naturel pour les tâches de calcul de bord qui mélangent le contrôle et l'analyse des données.
Une autre tendance est la convergence des commandes PLC et PC (p. ex., les PLC soft en temps réel Linux). Ces plateformes exposent souvent ST comme langue principale, avec un accès complet aux ressources du système d'exploitation.
La norme IEC 61499, qui s'appuie sur la norme IEC 61131‐3 pour le contrôle distribué, supporte également une syntaxe textuelle similaire à ST. Comme l'automatisation distribuée (smart sensors, contrôle décentralisé) gagne de la traction, ST servira de colle qui intègre des dispositifs hétérogènes. Enfin, le mouvement open-source en automation produit des compilateurs et des environnements d'exécution pour ST, réduisant la barrière à l'entrée pour les intégrateurs et les amateurs de petite échelle.
En résumé, le texte structuré n'est pas une tendance qui passe. C'est un langage mûr et conforme aux normes qui traite la complexité de l'automatisation moderne tout en restant accessible. Les ingénieurs qui investissent du temps dans la maîtrise de ST se trouveront équipés pour résoudre les problèmes de contrôle les plus difficiles — du mouvement multiaxial à l'optimisation améliorée des processus par l'IA.
Conclusion
La clarté, la puissance de calcul et la structure modulaire de la boîte à outils d'automatisation du texte structuré sont devenues un outil indispensable pour la gestion des logiciels. La logique de contrôle sophistiquée, qui serait peu pratique dans les langages graphiques, est associée à d'autres langages IEC 61131-3. ST offre le meilleur des deux mondes : une conception visuelle intuitive pour le contrôle des séquences de haut niveau et un code précis et durable pour les algorithmes complexes.
Pour les ingénieurs qui sont nouveaux dans la langue, les récompenses de l'apprentissage de ST l'emportent largement sur l'effort initial. Commencez par des tâches simples – réécrire un compteur basé sur la ladder ou un bloc de mise à l'échelle – et prenez progressivement des fonctions plus complexes. Avec la pratique, vous constaterez que ST permet non seulement d'économiser du temps de développement, mais produit également un code qui est plus facile à déboguer, réutiliser et partager entre les équipes.