Mini Défi #1 : Trop de logique tue la logique Résolu
🔧 Objectif :
Simplifier un code ST encombrant sans modifier son comportement.
🔍 Énoncé :
Le code suivant fonctionne parfaitement, mais il est lourd et difficile à maintenir. Sa mission est simple : activer un moteur si les conditions sont réunies.
🤔 Peux-tu proposer une version plus lisible, plus concise, mais au comportement identique ?
✅ Poste ta version en réponse.
🧠 Bonus : Explique pourquoi ta solution est meilleure.
Réponses
Seb17
Bonjour,
Moteur := NOT erreur AND Start AND NOT Reset;
Il faut faire attention à la gestion des Start et Reset dans pareil cas. Car si Reset fait seulement 1 front de 0 à 1 puis repasse à 0, le moteur se coupe puis se remet en marche aussitôt si jamais le Start est maintenu à 1. L'exemple ci dessus part du principe que le Reset se maintient tout le temps de la demande d'arrêt.
Les instructions conditionnelles telle que le IF sont souvent utilisées par les automs mais peuvent souvent se résumer à une simple équation booléene.
Bonne journée à tous
SebastienLL
None
MOTEUR := START AND NOT ( RESET OR ERREUR);
D'abord je mets la condition du passage à 1, puis ensuite rajoute après AND NOT les variables qui empêche le passage à 1 de la sortie
Koala097
Yoyo
Ce sera faux, mais je me lance.. je suis plus serein sur du ladder !
Alors :
IF NOT erreur then :
Moteur := true
ELSE
Moteur := false
End If ;
En vu de mes faibles connaissances.. je ne comprends pas pourquoi on rajouterait encore " ELSE et moteur false et encore un End If; " ?
Merci pour ce petit défi, cela me permet de voir que je dois apprendre ce language !
Merci au Maître du jeu ! 🙏
grapesFR
None
Cette solution est optimisée en logique combinatoire et permets de gérer l'activation et la désactivation de la sortie moteur en une seule ligne.
Cela évite les copier - mal collés sur la gestion de l'activation et de la désactivation.
Bonne soirée / journée à tous
HunterAutomation
if start and not reset and not erreur then
moteur := true ;
Else
moteur := false ;
end-if ,

Maitre du Jeu
"One who knows nothing can understand nothing" - Master Xehanort
Merci à toutes celles et ceux qui ont proposé une version allégée de ce code ST un peu... lourd 😅
Correction :
➡️ Cette ligne évalue une seule expression booléenne :
- start doit être vrai
- reset doit être faux
- erreur doit être faux
💡 Si toutes ces conditions sont réunies, alors moteur est activé. Sinon, il est désactivé.
C’est exactement le même comportement, mais exprimé de manière plus directe.