Mini Défi #2 : Le compteur fantôme Résolu
🔍 Contexte :
Un opérateur se plaint que le compteur de cycles ne s’incrémente pas correctement à chaque appui sur le bouton.
Parfois il ne compte pas, parfois il compte plusieurs fois pour un seul appui.
Voici l'extrait du programme en Structured Text :
Et sa version en Ladder :
➡️ Mission :
Analyse ce comportement étrange et propose une correction fiable pour que chaque appui soit comptabilisé une seule fois.
💬 Partage ta solution en commentaire, ou propose ta variante !
🧠 Solution officielle révélée jeudi, avec validation d’une réponse et gain d’XP 🔥
💎 N’oublie pas : chaque like sur ta réponse te fait gagner de l’XP, et la meilleure solution est doublée.
Réponses
Technical_Solutions
Simon - Technical Solutions
L'utilisation d'une détection de front montant me semble la solution la plus simple...
Comme ça, fini les comptages multiples !
HunterAutomation
Bonsoit à tous ,
Ma proposition de code suivant le mini cahier de charge.
if re(bouton) then
compteur :=compteur+1;
End_if;
IF RE (RESET) then
compteur :=0;
End_if;
HunterAutomation
(* fonction compteur *)
Je vais rester sur ma deuxieme proposition , je n'avais jamais fais attention en st les fonction (RE et FE ne semble faire le job que je souhaite a la pace on a le R_TRIG)
R_TRIG_4 (CLK := (bouton),
Q => TrigDone);
if TrigDone then
compteur:= compteur + 1 ;
End_IF ;
If reset THEN
compteur:= 0 ;
End_IF ;

Maitre du Jeu
"One who knows nothing can understand nothing" - Master Xehanort
📅 Correction du Mini-Défi
Merci à tous pour vos propositions ! Ce bug est un grand classique en ST (et en Ladder) : un bouton appuyé une seule fois… mais qui fait grimper le compteur plusieurs fois ! 😵💫
👉 Ce code incrémente le compteur à chaque cycle tant que le bouton reste appuyé.
Or un automate peut exécuter des dizaines de cycles par seconde, donc un seul appui peut faire monter le compteur de 3, 5, voire 20 unités selon le matériel.
💡 Solution : utiliser un front montant
Ci-dessous un exemple de gestion d'un front montant sans utiliser de fonction pré-existante.
🔹 bouton_prec
mémorise l’état précédent
🔹 front
ne vaut TRUE qu’un seul cycle, au moment du changement 0 → 1
✅ Résultat : 1 appui = 1 incrément 👍
Et sa version Ladder :
🎯 Le bon réflexe ? Toujours isoler l’événement du signal continu pour éviter les bugs liés au cycle de l’automate.