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

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