XOR-Leiterlogik mit drei Schaltern: Das korrekte Odd-Parity-Design
Ein korrigierter Leitfaden zur XOR-Leiterlogik mit drei Schaltern für SLC-500- und Logix-Plattformen, einschließlich ungerader Parität, Zwischenspeicherung i...
Drei rastende Schalter, die einen Ausgang steuern, werden oft als Übung in der Kontaktplanprogrammierung dargestellt, doch die eigentliche technische Frage ist präziser: Soll der Ausgang eingeschaltet sein, wenn eine ungerade Anzahl von Eingängen wahr ist, oder soll das Betätigen eines beliebigen Schalters den vorherigen Zustand des Ausgangs einfach umkehren? Das sind unterschiedliche Anforderungen. Die erste ist eine kombinatorische XOR-Funktion beziehungsweise ungerade Parität. Die zweite erfordert Zustandsspeicherung und Flankenerkennung.
Bei drei rastenden Wahlschaltern lautet die übliche Spezifikation ungerade Parität: Die Lampe ist bei einem oder drei geschlossenen Schaltern eingeschaltet und bei null oder zwei geschlossenen Schaltern ausgeschaltet. Wenn diese Anforderung vor dem Zeichnen der Kontakte schriftlich festgehalten wird, lässt sich verhindern, dass eine plausibel aussehende Zeile die falsche boolesche Funktion implementiert.
Ein XOR mit drei Eingängen ist wahr, wenn die Anzahl der wahren Eingänge ungerade ist; es ist nicht dasselbe wie ein gespeicherter Umschaltbefehl.
Mit den acht Eingangszuständen beginnen
Die erwartete Ausgangsfolge für die Eingänge S1, S2 und S3 lautet 0, 1, 1, 0, 1, 0, 0, 1, wenn die binären Eingangszustände von 000 bis 111 fortschreiten. In einfachen Worten: Ein geschlossener Schalter schaltet den Ausgang ein, zwei geschlossene Schalter schalten ihn aus, und alle drei geschlossenen Schalter schalten ihn wieder ein.
Gerade der letzte Zustand führt bei vielen Erklärungen zu Fehlern. Ein XOR mit drei Eingängen ist eine Funktion mit ungerader Parität, daher muss 111 ein wahres Ergebnis liefern. Eine Implementierung, die nur „genau ein Eingang ist wahr“ erkennt, ist kein XOR; sie schließt den Zustand mit drei wahren Eingängen absichtlich aus. Umgekehrt ergibt die ODER-Verknüpfung der drei paarweisen XOR-Ausdrücke eine andere Funktion: Sie ist wahr, sobald die Eingänge nicht alle gleich sind. Das schließt auch die Zustände mit zwei wahren Eingängen ein und erfüllt daher ebenfalls nicht die erforderliche Wahrheitstabelle.
Am sichersten ist es bei der Inbetriebnahme, die Wahrheitstabelle als Abnahmetest zu verwenden. Beurteilen Sie das Programm nicht anhand von nur zwei oder drei bequemen Schalterstellungen.
Zwei-Eingangs-XOR-Stufen kaskadieren
XOR ist assoziativ, sodass der Ausdruck (S1 XOR S2) XOR S3 verwendet werden kann. In einem SLC-500-Programm kann ein internes Bit das Ergebnis der ersten Stufe speichern. Eine zweite Zeile verknüpft dieses Bit anschließend mit S3. Dadurch hat jede Zeile einen kleinen, überprüfbaren Zweck, und der Online-Zustand lässt sich leichter diagnostizieren.
Bei einer Kontaktimplementierung verwendet jede Zwei-Eingangs-XOR-Stufe zwei parallele Pfade: Der erste Pfad prüft Eingang A als wahr und Eingang B als falsch; der zweite prüft A als falsch und B als wahr. Beide Pfade führen zu einer Spule zusammen. Dasselbe Muster wird mit dem Zwischenbit und dem dritten Eingang wiederholt.
Das Zwischenbit macht das Ergebnis von S1 XOR S2 sichtbar, bevor die zweite Stufe es mit S3 verknüpft.
Beispiel für einen Adressplan
In einem typischen RSLogix-500-Trainingsprojekt könnten S1, S2 und S3 den Adressen I:1/0, I:1/1 und I:1/2 entsprechen. Die erste Zeile schreibt B3:0/0 als Zwischenergebnis, und die zweite schreibt O:2/0 als Lampenbefehl. Diese Adressen dienen nur als Beispiele; die tatsächliche Zuordnung muss sich nach der installierten E/A-Konfiguration richten.
Die Zwischenadresse sollte genau einen Schreiber haben. Wird B3:0/0 an anderer Stelle wiederverwendet oder später im Programm eine weitere Ausgangsanweisung für O:2/0 platziert, kann ein korrektes Ergebnis während desselben Zyklus überschrieben werden. Prüfen Sie die Querverweise beider Adressen, bevor Sie das XOR-Muster infrage stellen.
Ein XOR auf Wortebene ist nicht automatisch eine boolesche Abkürzung
Der Befehlssatz des SLC 500 enthält einen XOR-Befehl für bitweises exklusives ODER zwischen Operanden auf Wortebene. Das SLC 500 Instruction Set Reference Manual von Rockwell Automation dokumentiert die unterstützten Operanden und Zielbereiche. Dieser Befehl ist für Masken und gepackte Statuswörter nützlich, macht jedoch nicht überflüssig, festzulegen, welche Eingangsbits an einer einzelnen Paritätsentscheidung beteiligt sind.
Bei drei diskreten Eingängen ist eine kaskadierte Kontaktlogik für das Wartungspersonal meist verständlicher. Eine Implementierung auf Wortebene kann sinnvoll sein, wenn ein Programm bereits viele Statusbits bündelt und diese ausdrücklich zu einem Paritätsergebnis reduziert. Der Reduktionsschritt muss jedoch weiterhin sichtbar und getestet sein.
Parität nicht mit einer Umschaltfunktion verwechseln
Eine Beleuchtungsanordnung mit drei rastenden Wechselschaltern ändert ihren Ausgang immer dann, wenn ein physischer Schalter seine Stellung ändert. In rein booleschen Begriffen kann der Ausgang zu jedem Zeitpunkt durch die Parität der drei Schalterstellungen dargestellt werden. Eine gespeicherte Zustandsinformation ist nicht erforderlich, weil die Schalterstellungen den Zustand selbst halten.
Momentane Drucktaster sind etwas anderes. Wenn das Drücken eines beliebigen von drei Tastern eine Lampe umschalten soll, muss die SPS eine steigende Flanke erkennen und ein gespeichertes Befehlsbit pro gültiger Betätigung einmal invertieren. Wird XOR direkt auf drei momentane Eingänge angewendet, beschreibt dies nur, welche Taster während dieses Zyklus gedrückt sind; der vorherige Lampenzustand wird dadurch nicht gespeichert.
Reale Drucktaster können außerdem prellen. Ein Umschaltdesign benötigt daher eine Eingangskonditionierung, einen Impulsmerker, eine eindeutige Zuständigkeit für das gespeicherte Bit und einen definierten Startzustand. Für verwandte Muster zur Zyklusverarbeitung und Datenhandhabung zeigt der Leitfaden zur Verwendung eines SLC-Timerwerts zum Setzen eines anderen Timers, warum Datenbewegungen und die Reihenfolge der Zeilen ausdrücklich festgelegt werden sollten.
Die Logik als Funktion in Betrieb nehmen, nicht als Bild
Testen Sie zunächst das Zwei-Eingangs-Zwischenbit allein. Es muss für 01 und 10 wahr und für 00 und 11 falsch sein. Testen Sie anschließend den endgültigen Ausgang über alle acht Zustände mit drei Eingängen. Protokollieren Sie den beobachteten Zustand, statt sich ausschließlich auf die grüne Hervorhebung der Zeile zu verlassen, da Forcierungen, doppelte Spulen und die Aktualisierung der Online-Anzeige die tatsächliche Zuständigkeit für den Ausgang verschleiern können.
Prüfen Sie anschließend das Verhalten beim Einschalten, Übergänge zwischen Programm- und Betriebsmodus, Eingangssubstitutionen sowie die Reaktion auf einen ausgefallenen oder getrennten Feldstromkreis. XOR kann Abweichungen erkennen, ist jedoch für sich genommen keine Sicherheitsdiagnose. Wenn die Schalter an einer Schutzfunktion beteiligt sind, benötigt das Design sicherheitsgeeignete Eingänge, Diskrepanzüberwachung, Fehlererkennung und eine für die Maschine angemessene Risikobeurteilung.
Hardware- und Migrationsoptionen für ältere und aktuelle Steuerungen können über die Kollektion für SPS- und PAC-Systeme geprüft werden. Vor der Anpassung dieses Beispiels müssen jedoch Prozessorfamilie, E/A-Spannung, Adressierung und Programmverantwortung bestätigt werden.
Warum die Version mit dem internen Bit leichter zu warten ist
Eine einzige erweiterte Zeile kann die ungerade Parität mit drei Eingängen direkt ausdrücken, erfordert jedoch vier parallele Kombinationen und wird schwieriger zu prüfen, sobald weitere Bedingungen hinzukommen. Die Kaskadierung von Zwei-Eingangs-Stufen macht die boolesche Absicht deutlich, bietet einen Diagnosepunkt und lässt sich sauber zwischen RSLogix-500-Adressen und benannten BOOL-Tags in Logix Designer abbilden.
Redaktionelle Einschätzung: Die beste Kontaktplanlösung ist diejenige, deren Wahrheitstabelle, Speicherverhalten und Reaktion auf Fehler bei einer Übergabe an das Wartungspersonal erklärt werden können. Ein internes Bit ist kein verschwendeter Speicher, wenn es verhindert, dass der nächste Techniker ungerade Parität, „genau eins“-Logik und einen gespeicherten Umschaltvorgang für dieselbe Funktion hält.
Häufig gestellte Fragen
Soll der Ausgang eingeschaltet sein, wenn alle drei Schalter geschlossen sind?
Ja, wenn die Anforderung ein XOR mit drei Eingängen oder ungerade Parität lautet. Drei wahre Eingänge ergeben eine ungerade Anzahl, daher ist der Ausgang wahr. Wenn 111 falsch sein muss, lautet die erforderliche Funktion „genau ein Eingang ist wahr“, nicht XOR.
Kann der XOR-Befehl des SLC 500 die beiden Kontaktplanstufen ersetzen?
Er führt ein bitweises XOR auf Operanden auf Wortebene aus. Er kann Bestandteil einer Lösung mit gepackten Bits sein, aber drei einzelne Eingangsbits müssen weiterhin so angeordnet und reduziert werden, dass das Zielbit die erforderliche Parität darstellt. Bei einer kleinen diskreten Schaltung sind zwei Kontaktstufen im Allgemeinen verständlicher.
Verursacht das Zwischenbit eine Verzögerung von einem Zyklus?
Nicht, wenn die Zeile, die das Zwischenbit schreibt, vor der Zeile ausgeführt wird, die es in derselben Routine und Aufgabe liest. Die zweite Zeile sieht den zuvor in diesem Zyklus geschriebenen Wert. Die Programmausführungsreihenfolge muss dokumentiert und kontrolliert bleiben.
Was ändert sich, wenn die Feldgeräte momentane Drucktaster sind?
Eine Umschaltung mit momentanen Drucktastern erfordert Flankenerkennung und einen gespeicherten Ausgangszustand. Eine kombinatorische XOR-Funktion allein kann sich nicht merken, ob die Lampe zuvor ein- oder ausgeschaltet war.
Ist XOR für eine sicherheitsgerichtete Abstimmungsschaltung geeignet?
Nicht allein. Ein gewöhnliches XOR wertet nur boolesche Zustände aus. Sicherheitsanwendungen erfordern eine validierte Sicherheitsarchitektur, ausreichende Diagnosedeckung, eine Diskrepanzzeitüberwachung, geeignete Hardware und eine Verifikation anhand der geltenden Risikobeurteilung.