IEC 61131-3 · Programmation

Programmation en Texte Structuré (ST)

Le Texte Structuré est le langage IEC 61131-3 le plus puissant. Il ressemble à Pascal ou C et est idéal pour la logique complexe, les mathématiques et les algorithmes.

1
2

📺 Video Lesson

Watch the video first, then work through the interactive exercises below. Each section builds on the previous one.

⚡ Why Structured Text?

ST is one of five languages defined in IEC 61131-3. Unlike Ladder Logic (graphical) or Instruction List (assembly-like), ST is a high-level textual language — making it ideal for complex calculations, state machines, and reusable function blocks.

LADDER LOGIC

I1 Q1 Sensor_OK Motor_Run

STRUCTURED TEXT

IF Sensor_OK AND NOT E_Stop THEN
  Motor_Run := TRUE;
END_IF;

Both do the same thing — ST is more readable for complex logic.

Variables & Types de Données

En ST, chaque variable doit être déclarée avec un type. Les types les plus courants sont BOOL, INT, DINT, REAL, STRING et TIME.

Structured Text
VAR
  vitesse_moteur : REAL := 0.0;
  en_marche      : BOOL := FALSE;
  nb_cycles      : DINT := 0;
END_VAR

Common Data Types

TypeSizeRange / ExampleUse case
BOOL1 bitTRUE / FALSEDigital signals, flags
INT16 bit-32768 to 32767Counters, small values
DINT32 bit±2.1 billionLarge counters, positions
REAL32 bit3.14, -0.001Speeds, temperatures, ratios
STRINGvariable'Conveyor A'Labels, messages
TIME32 bitT#500ms, T#2sTimers, delays
Exercise 1

Déclarez une variable "temperature" de type REAL avec une valeur initiale de 20.0

Utilisez le bloc VAR...END_VAR avec l'opérateur := pour l'initialisation.

IF / ELSIF / ELSE

La logique conditionnelle en ST suit une syntaxe claire et lisible. Terminez toujours votre bloc IF par END_IF.

Structured Text
IF capteur_ok AND vitesse > 0.0 THEN
  sortie := TRUE;
ELSIF arret_urgence THEN
  sortie := FALSE;
ELSE
  sortie := dernier_etat;
END_IF;

↑ Live state machine — click a state to simulate the IF logic

Exercise 2

Écrivez une instruction IF qui met "alarme" à TRUE si "temperature" dépasse 80.0

Utilisez l'opérateur > et n'oubliez pas END_IF;

🎯 Quick Quiz

Test your knowledge before moving on.

Q1. What keyword ends an IF block in ST?

Q2. Which data type would you use for a motor speed of 1450.5 RPM?

Q3. What does the := operator do in ST?