Ressource

Explorer par catégories

Retour

Freelances

Freelances

Entreprise

Entreprise

Actualité

Actualité

7 min de lecture

Guide de programmation en langage ST

Rédigé par Antoine
le 6 Déc, 2024

Introduction au langage ST

Le langage ST fait partie des cinq langages standardisés par la norme IEC 61131-3.

Il combine la puissance d’un langage de programmation textuel avec une grande simplicité en terme de syntaxe. Cette approche te permet de créer des programmes complexes tout en gardant un code clair et maintenable. La programmation ST t’offre une flexibilité que tu ne trouveras pas dans les langages graphiques comme le Ladder ou le FBD.

 

De mon point de vue la programmation en langage ST est la meilleure manière de programmer un automate industriel, la courbe d’apprentissage est certes un peu plus raide que sur des langages graphiques mais les fonctionnalité sont beaucoup moins restrictive.

 

Syntaxe de base et structure du code

La structure de base de ton programme ST commence par PROGRAM et se termine par END_PROGRAM. Chaque instruction se termine par un point-virgule (;). Tu peux ajouter des commentaires entre (* et *) pour documenter ton code.

  • La déclaration de ton programme : PROGRAM : Nom_programme ;
  • La déclaration de tes variables : Nom_variable : TYPE_VARIABLE ;
  • L’écriture de tes commentaires : (* mon commentaire *)  OU  //mon commentaire

Exemple réalisé sur codesys :

 

Les Types de variable en langages ST

Ces fameuse variable que l’on doit déclarer en amont de notre programme il en existe une multitude, on te présente donc cette diversité de types de variables dans les tableaux ci-dessous :

 

Types de données booléennes

Type Description Exemple
BOOL Booléen (valeur logique) TRUE/FALSE

 

Types de données numériques entiers

Type Description Exemple
SINT Entier signé sur 8 bits -128 à 127
INT Entier signé sur 16 bits -32768 à 32767
DINT Entier signé sur 32 bits -2 147 483 648 à 2 147 483 647
LINT Entier signé sur 64 bits Très grand nombre
USINT Entier non signé sur 8 bits 0 à 255
UINT Entier non signé sur 16 bits 0 à 65535
UDINT Entier non signé sur 32 bits 0 à 4 294 967 295
ULINT Entier non signé sur 64 bits Très grand nombre

 

Types de données numériques en virgule flottante

Type Description Exemple
REAL Nombre décimal en simple précision (32 bits) -3.402e38 à 3.402e38
LREAL Nombre décimal en double précision (64 bits) Très grande plage de valeurs

 

Types de données temporelles

Type Description Exemple
TIME Durée ou intervalle T#5s, T#1h30m
DATE Date DATE#2024-12-06
TIME_OF_DAY / TOD Heure du jour TOD#12:30:15
DATE_AND_TIME / DT Date et heure DT#2024-12-06-12:30:15

 

Types de données bit et mot

Type Description Exemple
BYTE Octet de 8 bits 0x00 à 0xFF
WORD Mot de 16 bits 0x0000 à 0xFFFF
DWORD Double mot de 32 bits 0x00000000 à 0xFFFFFFFF
LWORD Long mot de 64 bits Très grand nombre

 

Choisis les types de données appropriés pour économiser la mémoire. Par exemple, utilise SINT au lieu de DINT pour les petites valeurs.

 

Structures d’un code en langages ST

Les structures de contrôle te permettent de créer des programmes ST plus sophistiqués. Voici comment les maîtriser efficacement.

Opérateurs et expressions

Catégorie Opérateurs Exemple en ST
Opérateurs arithmétiques +-*/, :=, MOD
Result := A + B;
Remainder := A MOD B;
Opérateurs logiques ANDORNOTXOR
IF (A > 5) AND (B < 10) THEN
Output := TRUE;
END_IF;
Opérateurs de comparaison =<><><=>=
IF A = B THEN
Equal := TRUE;
ELSE
Equal := FALSE;
END_IF;

Boucles et conditions

Structure Description Exemple de code en ST
IF Exécution conditionnelle.
IF x > 5 THEN
y := y + 1;
ELSE
y := 0;
END_IF;
FOR Nombre d’itérations connu à l’avance.
FOR i := 1 TO 10 DO
Sum := Sum + i;
END_FOR;
WHILE Répétition tant qu’une condition est vraie.
WHILE x < 10 DO
x := x + 2;
END_WHILE;
REPEAT Exécution au moins une fois.
REPEAT
x := x – 1;
UNTIL x = 0 END_REPEAT;

 

La fonction que j’utilise très souvent est la fonction CASE avec ca tu peux créer un code avec des étapes et transition comme dans un grafcet. Ca se présente comme ça :

 

CASE Step OF
0: (* Étape 0 *)
Output := FALSE; (* Action : désactiver la sortie *)
IF Condition1 THEN
Step := 1; (* Transition vers l’étape 1 *)
END_IF;

1: (* Étape 1 *)
Output := TRUE; (* Action : activer la sortie *)
IF Condition2 THEN
Step := 2; (* Transition vers l’étape 2 *)
END_IF;

2: (* Étape 2 *)
Output := FALSE; (* Action : désactiver la sortie *)
IF Condition3 THEN
Step := 0; (* Transition vers l’étape 0 *)
END_IF;
END_CASE;

 

Optimisation et bonnes pratiques du langages ST

L’optimisation de tes programmes ST peut faire une grande différence dans leurs performances. Voici comment maximiser l’efficacité de ton code.

Standards de codage

Adopter de bonnes pratiques permet de rendre ton code plus lisible et maintenable :

  • Commente ton code pour faciliter sa reprise par d’autres développeurs.
  • Structure tes programmes en blocs logiques bien définis.
  • Utilise des noms de variables explicites pour éviter les ambiguïtés.

Gestion de la mémoire

Une gestion efficace de la mémoire est essentielle en langage ST. Voici quelques principes à appliquer 

Allocation de mémoire

  • Réutilise les variables temporaires quand c’est possible.
  • Libère les ressources après leur utilisation.
  • Évite les variables globales inutiles, qui peuvent consommer de la mémoire inutilement.

Optimisation des données

  • Surveille la zone mémoire utilisée et ajuste le paramétrage du processeur en fonction des besoins.

Calculs complexes

Pour les calculs complexes :

  • Divise les opérations en étapes distinctes.
    Cette approche facilite le débogage et améliore la performance globale du programme.

Notre avis sur la programmation en langage ST

Le langage Structured Text (ST) se démarque par sa flexibilité, qui en fait le plus polyvalent des langages d’automates. Grâce à sa syntaxe inspirée des langages de programmation traditionnels, il permet une grande liberté dans l’écriture des programmes, notamment pour gérer des algorithmes complexes, des calculs précis ou encore des structures conditionnelles avancées.

Comparé à des langages plus graphiques comme Ladder ou FBD (Function Block Diagram), ST offre un contrôle bien plus fin et une facilité de maintenance pour des projets de grande envergure.

Contenu

Besoin d’assistance en automatisme industriel

$

Vous allez aussi aimer