Wie wir bei Zählern und Zeitgebern gesehen haben, erzeugen einige SPS-Anweisungen andere digitale Werte als einfache Boolesche (Ein/Aus-)Signale.
Zähler haben Register für den aktuellen Wert (CV) und Zeitgeber haben Register für die verstrichene Zeit (ET), die beide normalerweise ganzzahlige Werte sind.
Viele andere SPS-Anweisungen sind darauf ausgelegt, nicht-Boolesche Werte wie diese zu empfangen und zu manipulieren, um nützliche Steuerfunktionen auszuführen.
Der Standard IEC 61131-3 spezifiziert eine Vielzahl von Anweisungen zum Datenvergleich zum Vergleichen zweier nicht-Boolescher Werte und zum Erzeugen boolescher Ausgaben.
Anweisungen zum Vergleichen von SPS-Daten
Die grundlegenden Vergleichsoperationen „kleiner als“ (<), „größer als“ (>), „kleiner oder gleich“ (≤), „größer oder gleich“ (≥), „gleich“ (=) und „ungleich“ (6=) sind als Reihe von „Box“-Anweisungen im IEC-Standard zu finden:
Der Q-Ausgang für jede Anweisungs-„Box“ wird aktiviert, wenn die ausgewertete Vergleichsfunktion „wahr“ ist und der Aktivierungseingang (EN) aktiv ist.
Wenn der Aktivierungseingang aktiv bleibt, die Vergleichsfunktion jedoch falsch ist, wird der Q-Ausgang deaktiviert. Wenn der Aktivierungseingang deaktiviert wird, behält der Q-Ausgang seinen letzten Zustand bei.
Eine praktische Anwendung für eine Vergleichsfunktion ist die sogenannte alternierende Motorsteuerung, bei der die Laufzeiten zweier redundanter Elektromotoren überwacht werden und die SPS bestimmt, welcher Motor als nächstes eingeschaltet wird, basierend darauf, welcher Motor am wenigsten gelaufen ist:
.In diesem Programm verfolgen zwei remanente Einschaltverzögerungstimer die Gesamtlaufzeit jedes Elektromotors und speichern die Laufzeitwerte in zwei Registern im Speicher der SPS:
Laufzeit Motor A und Laufzeit Motor B. Diese beiden ganzzahligen Werte werden zum Vergleich in das Anweisungsfeld „größer als“ eingegeben.
Wenn Motor A länger gelaufen ist als Motor B, wird Motor B beim nächsten Drücken des „Start“-Schalters zum Starten freigegeben.
Wenn Motor A kürzer oder gleich lange gelaufen ist wie Motor B (das Szenario wird durch die blau hervorgehobenen Statusanzeigen angezeigt), wird Motor A zum Starten freigegeben.
Die beiden in Reihe geschalteten virtuellen Kontakte OUT Motor A und OUT Motor B sorgen dafür, dass der Vergleich der Motorlaufzeiten erst dann erfolgt, wenn beide Motoren gestoppt sind.
Würde der Vergleich kontinuierlich erfolgen, könnte es passieren, dass beide Motoren starten, wenn jemand zufällig den Start-Taster drückt, während ein Motor bereits läuft.