Contrôle du Programme
Flux & Exécution
Maîtrisez le déroulement logique de votre programme. Des sauts conditionnels aux outils de diagnostic en temps réel, optimisez la structure d'exécution de votre automate.
Que sont les opérations de contrôle dans TIA Portal ?
Les opérations de contrôle du programme permettent de modifier l'ordre séquentiel d'exécution des réseaux. Elles sont utilisées pour ignorer des parties du code (Sauts), créer des embranchements complexes (Aiguillages) ou gérer le comportement interne du CPU (Arrêt, Watchdog, Mesure de temps).
Ces instructions sont puissantes mais doivent être utilisées avec précaution, notamment l'instruction WAIT qui bloque le cycle, ou les sauts qui peuvent rendre le programme difficile à débugger s'ils sont trop nombreux. TIA Portal offre également des outils modernes pour intercepter les erreurs localement dans chaque bloc.
Sauts et Flux
Instructions de déroutement du programme
JMP / JMPN — Sauts conditionnels
JMPCe qu'il fait
JMP interrompt l'exécution séquentielle et saute vers une étiquette (LABEL) si le RLO est à 1. JMPN fait de même si le RLO est à 0.
Quand l'utiliser
Ignorer une section de code qui ne doit pas s'exécuter dans un mode spécifique, ou créer des boucles simples en LAD/FBD.
Conseils Pro
La destination du saut (LABEL) doit se trouver dans le même bloc (FC ou FB).
N'utilisez pas de sauts vers l'arrière pour créer des boucles sans condition de sortie, car vous risquez un dépassement du temps de cycle.
En SCL, utilisez plutôt les structures IF...THEN ou CASE...OF.
SWITCH — Aiguillage multi-cas
SWITCHCe qu'il fait
Compare une valeur d'entrée à plusieurs valeurs cibles et saute vers le réseau correspondant au premier cas vérifié. Équivalent graphique du Switch/Case.
Quand l'utiliser
Gestion d'états machine (Grafcet simple), sélection de modes de marche ou aiguillage de pièces selon un code type.
Conseils Pro
Plus propre et lisible qu'une suite de comparateurs == mis en série.
Utilisez l'entrée 'ELSE' pour gérer le cas où aucune valeur ne correspond.
Idéal pour les structures de menus sur IHM.
RET — Retour
RETCe qu'il fait
Force la fin de l'exécution du bloc actuel (FC/FB) et retourne au bloc appelant.
Quand l'utiliser
Arrêt anticipé d'une fonction si une erreur est détectée en début de bloc, ou si une condition de sécurité n'est pas remplie.
Conseils Pro
Utile pour optimiser le temps de cycle en ne traitant pas le reste du code inutilement.
Soyez vigilant : les sorties du bloc non encore traitées garderont leur dernier état.
En SCL, utilisez l'instruction RETURN;
Contrôle du Runtime
Gestion du cycle CPU et mesures de performance
RUNTIME — Mesurer le temps
RUNTIMECe qu'il fait
Mesure le temps d'exécution d'une portion de programme ou du bloc entier en microsecondes (µs).
Quand l'utiliser
Optimisation du code, diagnostic de réseaux trop gourmands, ou calculs de performance machine.
Conseils Pro
Appelez une première fois RUNTIME pour initialiser la mesure, puis une seconde fois pour obtenir le résultat.
Utilisez le type de données LReal pour stocker le résultat de la mesure.
Pratique pour vérifier si une boucle FOR complexe n'approche pas les limites du watchdog.
WAIT — Temporisation fixe
WAITCe qu'il fait
Suspend l'exécution du programme pendant une durée spécifiée en microsecondes. ATTENTION : contrairement à un Timer, WAIT bloque totalement le cycle du CPU.
Quand l'utiliser
Attendre quelques microsecondes pour stabiliser un signal électronique sur une carte d'E/S ultra-rapide.
Conseils Pro
À utiliser avec une extrême modération. Un WAIT trop long déclenchera une erreur Watchdog et arrêtera le PLC.
Ne jamais utiliser pour des temporisations de processus (secondes/minutes) ; utilisez les Timers TON pour cela.
Seulement disponible sur S7-1500.
STP — Arrêt du CPU
STPCe qu'il fait
Force le passage du CPU en mode STOP.
Quand l'utiliser
Condition d'erreur fatale où la machine ne doit plus être pilotée, ou test de diagnostic.
Conseils Pro
L'arrêt est immédiat. Une intervention manuelle (IHM ou commutateur) sera nécessaire pour redémarrer.
Préférez la gestion d'alarmes avec repli sécurisé plutôt que l'arrêt brutal du CPU dans la mesure du possible.
Utile dans les projets de mise en service pour 'breaker' à un endroit précis.
Gestion des Erreurs
Interception locale des défauts d'exécution
GET_ERROR / GET_ERR_ID
Ce qu'ils font
Récupèrent les informations sur la première erreur survenue à l'intérieur d'un bloc (ex: accès à un index de tableau inexistant).
Quand l'utiliser
Rendre vos blocs robustes en interceptant les erreurs de programmation sans arrêter le PLC.
Conseils Pro
GET_ERROR fournit une structure détaillée (ErrorStruct), GET_ERR_ID ne retourne que le numéro de l'erreur.
Placez ces instructions à la fin de vos blocs critiques.
Permet de créer un journal d'erreurs personnalisé.
Sauts vs Structures de contrôle
Quelle méthode utiliser pour dérouter le programme ?
| Vous avez besoin de... | Instruction recommandée | Pourquoi ? |
|---|---|---|
| Saut simple en Ladder | JMP | Ignorer un réseau |
| Choix multiple complexe | SWITCH / CASE | Plus lisible que 10 JMP |
| Mesurer une durée interne | RUNTIME | Optimisation de performance |
| Arrêt immédiat | STP | Erreur critique matérielle |
| Attente très courte | WAIT | Stabilisation électronique |
| Diagnostic local | GET_ERROR | Éviter le STOP du CPU |
Foire Aux Questions
Quelle est la différence entre JMP et JMP_LIST ?
JMP est un saut unique vers une cible. JMP_LIST permet de définir une liste de destinations. En fonction d'un index numérique, le programme saute vers la 1ère, 2ème ou Nième étiquette de la liste.
L'instruction WAIT est-elle dangereuse ?
Oui, si elle est mal utilisée. Elle suspend l'exécution de TOUT le programme utilisateur. Si la somme de vos WAIT et de votre code dépasse le temps de watchdog (souvent 150ms), le CPU passera en STOP.
Comment mesurer le temps de cycle total du PLC ?
Vous n'avez pas besoin de l'instruction RUNTIME pour cela. Vous pouvez lire l'information directement dans les propriétés du CPU en ligne, ou utiliser les variables système de l'OB1.
Où placer les étiquettes LABEL ?
Les LABEL peuvent être placés au début de n'importe quel réseau. En LAD, ils apparaissent au-dessus du rail gauche. Un nom de label doit être unique au sein du bloc.