Mini Défi 11 : Séquence avec interruption et reprise sécurisée Résolu

05/08/2025 Apprentissage PLC > Exercices et projets d'entraînement

🔧 Contexte :

Tu dois automatiser une ligne de convoyage en 3 étapes :

  1. Chargement de la pièce par vérin

  2. Transport sur le convoyeur (surveillance du temps de max. pour atteindre la station de déchargement)

  3. Déchargement à la station suivante

Mais attention…
💥 Une alarme de sécurité (capot ouvert, arrêt d’urgence…) peut survenir à tout moment.

 

🎯 Objectifs à atteindre :

  • Construire une séquence par état (type Grafcet/FSM)

  • Si une alarme est déclenchée :

    • Interrompre immédiatement le cycle

    • Geler l’étape en cours

    • Rester en erreur jusqu’au reset manuel

    • Reprendre la séquence exactement là où elle s’était arrêtée

 

 

🔁 Bonus :

  • Ne pas réinitialiser les temporisations partiellement écoulées

  • Ajouter une variable d’état système : etat_machine = [Actif, En Pause, En Alarme]

  • Ajouter un compteur de cycles complétés

 

📌 Ce défi est représentatif d’un comportement industriel critique.

Réponses

05/08/2025 14:21

Que voulez-vous dire par tempo pour l'étape du convoyeur ? 🤔

05/08/2025 15:50

L'étape de transport par le convoyeur est couplé à une temporisation qui vérifie le temps maximum avant arrivée à la station de déchargement.

J'ai mis à jour l'énoncé (Merci de votre retour).

18/08/2025 18:19

(* Gestion de la séurité *)

alarme:= Arret_urgence  or Capot_ouvert;


(* Gestion de reset desséurité *)

if ResetBtn  then 
alarme:=false ;
Seqsaved:= seq ; end_if; 

CASE seq OF

0:(* debut de chargement *)
 Chargement := FALSE;
 Transport := FALSE;
   Dechargement := false;
 Etat_Systeme[0]:= false;
 Etat_Systeme[1]:= false;
 Etat_Systeme[2]:= false;

 

 if SensorCharg and not alarme then seq:=1;
Chargement := TRUE;
     Etat_Systeme[0]:=TRUE; end_if; 

1:(* transport *)
 
TransportOut := TRUE and not alarme ;
TON_0 (IN := TransportOut, PT :=T#10s);
Transport := TRUE;
  if TON_0.Q then  seq:=2;  Etat_Systeme[1]:=TRUE; end_if; 
  

2:(* déchargement et gestions desgele d'étape et de reprise *)

if Not alarme and   SensorDecharge  then 
   Dechargement := false;
   Etat_Systeme[1] := TRUE;
   TON_0(IN := FALSE);
    seq := Seqsaved; 

 end_if;


if  not alarme and   SensorDecharge  then 
   TransportOut := FALSE;
   Dechargement := False;
   Etat_Systeme[2] := TRUE;
   TON_0(IN := FALSE);
    seq := 0; 
end_if;
END_CASE;

18/08/2025 18:20

02/09/2025 06:15

Correction : Séquence avec interruption et reprise sécurisée

🎯 Objectif rappelé :

Piloter une séquence industrielle composée de 3 étapes :

  1. Chargement (vérin)

  2. Transport (tempo)

  3. Déchargement
    💥 En cas d’alarme, la séquence doit être gelée immédiatement, avec :

  • Mémorisation de l’étape en cours

  • Reprise exactement là où elle s'était arrêtée

  • Attente d’un reset manuel

🧠 Solution proposée

 

✅ Ce que la solution couvre :

  • Séquence à états clairs

  • ✅ Arrêt d'urgence géré sans perdre le contexte

  • ✅ Tempo non redémarrée à zéro

  • ✅ Variables de suivi (cycle_actif, cycle_en_pause)

  • Reprise contrôlée via reset_alarme

  • ✅ Compteur de cycles terminés