Mini Défi 13 : Anti-rebond logiciel fiable

23/09/2025 Apprentissage PLC > Exercices et projets d'entraînement

🔧 Contexte :

Tu travailles sur un pupitre de commande dans un atelier de convoyage.
Un bouton poussoir mécanique est utilisé pour activer une fonction importante (changement de mode, validation, etc.).

❗ Mais ce bouton rebondit :
À l’appui, son signal passe de 0 à 1 plusieurs fois en quelques millisecondes, provoquant des comportements imprévisibles (exécution multiple, clignotement…).

Problème :
➡️ Le bouton rebondit lors de l'appui.
➡️ Résultat : un seul appui génère parfois 2, 3, 4 signaux…

 

🎯 Objectif du défi :

Créer une solution logicielle robuste pour filtrer les rebonds et n’autoriser qu’un seul front montant par appui.

 

📜 Données :

  • Entrée numérique : BP (BOOL)

  • Temps de filtrage recommandé : 50 ms

  • Aucun front parasite ne doit être pris en compte

  • Seul un appui net doit être validé

 

✅ Contraintes :

  • Le front rising (0→1) doit être détecté une seule fois par appui

  • L’anti-rebond doit être adaptable à d’autres entrées

  • Pas d’usage de blocs propriétaires de filtrage (genre R_TRIG avec délai interne)

  • Le défi doit être portable entre marques/automates

 

💡 Bonus :

  • Écrire un FB AntiRebond()

  • Ajouter une visualisation etat_bouton (Inactif, En Attente, Validé)

  • Gérer les appuis prolongés ou rebonds inversés

  • Prévoir une protection contre le maintien prolongé

Réponses

28/09/2025 20:16

29/09/2025 00:48

IF BP THEN
    TON_0(IN := TRUE, PT := T#50ms);
ELSE
    TON_0(IN := FALSE);
END_IF;

IF TON_0.Q THEN
    BP_Stable := TRUE;
ELSE
    BP_Stable := FALSE;
END_IF;


BP_OK := BP_Stable AND NOT BP_Old;
BP_Old := BP_Stable;
  BP := TEEST;

 

29/09/2025 21:34
Ce message a été supprimé.
29/09/2025 21:55

Bonjour

je pensais codé comme ça le fb, avec une plc trové en ligne.