Logique en échelle XOR à trois interrupteurs : la conception correcte à parité impaire
Guide corrigé de la logique en échelle XOR à trois interrupteurs pour les plateformes SLC 500 et Logix, couvrant la parité impaire, le transfert intermédiair...
Trois interrupteurs à position maintenue commandant une seule sortie sont souvent présentés comme un exercice de logique à contacts, mais la véritable question d’ingénierie est plus précise : la sortie doit-elle être active lorsqu’un nombre impair d’entrées sont vraies, ou le fait d’actionner n’importe quel interrupteur doit-il simplement inverser l’état précédent de la sortie ? Il s’agit de deux exigences différentes. La première correspond à un OU exclusif (XOR) combinatoire, ou à une parité impaire. La seconde nécessite une mémoire d’état et une détection de front.
Pour trois interrupteurs sélecteurs à position maintenue, la spécification habituelle est la parité impaire : la lampe est allumée lorsque un ou trois interrupteurs sont fermés, et éteinte lorsque zéro ou deux le sont. Écrire cette exigence avant de dessiner les contacts évite qu’un barreau d’apparence plausible n’implémente la mauvaise fonction booléenne.
Un XOR à trois entrées est vrai lorsque le nombre d’entrées vraies est impair ; il ne correspond pas à une commande de basculement mémorisée.
Commencer par les huit états d’entrée
La séquence de sortie attendue pour les entrées S1, S2 et S3 est 0, 1, 1, 0, 1, 0, 0, 1 lorsque les états binaires d’entrée progressent de 000 à 111. En termes simples, un interrupteur fermé active la sortie, deux interrupteurs fermés la désactivent, et trois interrupteurs fermés la réactivent.
C’est ce dernier état qui est à l’origine de nombreuses erreurs. Le XOR à trois entrées est une fonction de parité impaire : 111 doit donc produire un résultat vrai. Une implémentation qui ne reconnaît que le cas « exactement une entrée est vraie » n’est pas un XOR ; elle exclut volontairement l’état où les trois entrées sont vraies. À l’inverse, la mise en OU des trois expressions XOR par paires produit une fonction différente : elle est vraie lorsque les entrées ne sont pas toutes égales, ce qui inclut les états à deux entrées vraies et échoue donc également à respecter la table de vérité requise.
La pratique de mise en service la plus sûre consiste à utiliser la table de vérité comme test d’acceptation. Ne jugez pas le programme à partir de seulement deux ou trois positions pratiques des interrupteurs.
Mettre en cascade deux étages XOR à deux entrées
Le XOR est associatif, ce qui permet d’écrire l’expression (S1 XOR S2) XOR S3. Dans un programme SLC 500, un bit interne peut stocker le résultat du premier étage. Un second barreau combine ensuite ce bit avec S3. Chaque barreau conserve ainsi une fonction limitée et vérifiable, ce qui facilite le diagnostic de l’état en ligne.
Pour une implémentation avec contacts, chaque étage XOR à deux entrées utilise deux chemins parallèles : le premier vérifie que l’entrée A est vraie et l’entrée B fausse ; le second vérifie que A est fausse et B vraie. Les deux chemins se rejoignent sur une seule bobine. Répétez le même schéma avec le bit intermédiaire et la troisième entrée.
Le bit intermédiaire expose le résultat de S1 XOR S2 avant que le second étage ne le combine avec S3.
Exemple de plan d’adressage
Dans un projet de formation RSLogix 500 classique, S1, S2 et S3 peuvent correspondre à I:1/0, I:1/1 et I:1/2. Le premier barreau écrit B3:0/0 comme résultat intermédiaire, et le second écrit O:2/0 comme commande de la lampe. Ces adresses sont fournies à titre d’exemple uniquement ; la configuration réelle des E/S installées doit déterminer le mappage définitif.
L’adresse intermédiaire ne doit avoir qu’un seul écrivain. Réutiliser B3:0/0 ailleurs ou placer une autre instruction de sortie pour O:2/0 plus loin dans le programme peut écraser un résultat correct au cours du même cycle. Effectuez un renvoi croisé sur ces deux adresses avant de mettre en cause le schéma XOR.
Un XOR au niveau des mots n’est pas automatiquement un raccourci booléen
Le jeu d’instructions SLC 500 comprend une instruction XOR pour effectuer un OU exclusif bit à bit entre des opérandes de type mot. Le manuel de référence du jeu d’instructions SLC 500 de Rockwell Automation documente les opérandes et destinations pris en charge. Cette instruction est utile pour les masques et les mots d’état regroupés, mais elle ne dispense pas de définir quels bits d’entrée participent à une seule décision de parité.
Pour trois entrées discrètes, une logique à contacts en cascade est généralement plus claire pour le personnel de maintenance. Une implémentation au niveau des mots peut se justifier lorsqu’un programme regroupe déjà de nombreux bits d’état et les réduit explicitement à un résultat de parité, mais l’étape de réduction doit rester visible et être testée.
Ne pas confondre parité et fonction de basculement
Un montage d’éclairage à trois interrupteurs à position maintenue modifie sa sortie chaque fois qu’un interrupteur physique change de position. En termes booléens purs, la sortie à un instant donné peut être représentée par la parité des trois positions des interrupteurs. Aucune mémoire d’état n’est nécessaire, car les positions des interrupteurs contiennent elles-mêmes l’état.
Les boutons-poussoirs momentanés sont différents. Si l’appui sur l’un des trois boutons doit faire basculer une lampe, l’API doit détecter un front montant et inverser une bit de commande rémanent une seule fois par appui valide. Appliquer directement un XOR aux trois entrées momentanées indique seulement quels boutons sont enfoncés pendant ce cycle ; cela ne mémorise pas l’état précédent de la lampe.
Les véritables boutons-poussoirs peuvent également rebondir. Une conception à basculement nécessite donc un conditionnement des entrées, une impulsion unique, la gestion exclusive du bit rémanent et un état de démarrage défini. Pour des modèles connexes concernant les cycles et la gestion des données, le guide sur l’utilisation de la valeur d’un temporisateur SLC pour régler un autre temporisateur montre pourquoi le transfert des données et l’ordre des barreaux doivent être explicites.
Mettre la logique en service comme une fonction, pas comme une image
Commencez par tester séparément le bit intermédiaire à deux entrées. Il doit être vrai pour 01 et 10, et faux pour 00 et 11. Testez ensuite la sortie finale avec les huit états d’entrée possibles. Notez l’état observé au lieu de vous fier uniquement à la surbrillance verte du barreau, car les forçages, les bobines en double et l’actualisation de l’affichage en ligne peuvent masquer la véritable gestion de la sortie.
Vérifiez ensuite le comportement à la mise sous tension, les transitions entre les modes programme, la substitution des entrées et la réaction à un circuit de terrain défaillant ou déconnecté. La logique XOR peut détecter un désaccord, mais elle ne constitue pas à elle seule un diagnostic de sécurité. Si les interrupteurs participent à une fonction de protection, la conception nécessite des entrées homologuées de sécurité, une surveillance de discordance, une détection des défauts et une évaluation des risques adaptée à la machine.
Les options matérielles et de migration pour les contrôleurs anciens et actuels peuvent être consultées dans la collection de systèmes PLC et PAC, mais la famille du processeur, la tension des E/S, l’adressage et la gestion du programme doivent être confirmés avant d’adapter cet exemple.
Pourquoi la version avec bit interne est plus facile à maintenir
Un seul barreau développé peut exprimer directement la parité impaire à trois entrées, mais il nécessite quatre combinaisons parallèles et devient plus difficile à inspecter lorsque d’autres conditions sont ajoutées. La mise en cascade de deux étages à deux entrées rend l’intention booléenne évidente, fournit un point de contrôle diagnostique et établit une correspondance claire entre les adresses RSLogix 500 et les balises BOOL nommées dans Logix Designer.
Point de vue éditorial : la meilleure solution en logique à contacts est celle dont la table de vérité, le comportement mémoire et la réaction aux défaillances peuvent être expliqués lors d’un transfert de maintenance. Un bit interne n’est pas de la mémoire gaspillée lorsqu’il empêche le prochain ingénieur de confondre la parité impaire, la logique « exactement une » et un basculement mémorisé avec une seule et même fonction.
Foire aux questions
La sortie doit-elle être active lorsque les trois interrupteurs sont fermés ?
Oui, si l’exigence est un XOR à trois entrées ou une parité impaire. Trois entrées vraies représentent un nombre impair ; la sortie est donc vraie. Si 111 doit être faux, la fonction requise est « exactement une », et non un XOR.
L’instruction XOR du SLC 500 peut-elle remplacer les deux étages en logique à contacts ?
Elle effectue un XOR bit à bit sur des opérandes de type mot. Elle peut faire partie d’une solution à bits regroupés, mais les trois bits d’entrée individuels doivent toujours être organisés et réduits afin que le bit de destination représente la parité requise. Pour un petit circuit discret, deux étages à contacts sont généralement plus clairs.
Le bit intermédiaire ajoute-t-il un cycle de retard ?
Non, si le barreau qui écrit le bit intermédiaire s’exécute avant celui qui le lit dans la même routine et la même tâche. Le second barreau voit la valeur écrite plus tôt au cours du cycle. L’ordre du programme doit rester documenté et maîtrisé.
Qu’est-ce qui change si les appareils de terrain sont des boutons-poussoirs momentanés ?
Un basculement commandé par bouton momentané nécessite une détection de front et la mémorisation de l’état de sortie. Un XOR combinatoire seul ne peut pas mémoriser si la lampe était précédemment allumée ou éteinte.
Le XOR convient-il à un circuit de vote de sécurité ?
Pas à lui seul. Un XOR ordinaire évalue uniquement des états booléens. Les applications de sécurité nécessitent une architecture de sécurité validée, une couverture diagnostique, une temporisation de discordance, du matériel approprié et une vérification par rapport à l’évaluation des risques applicable.