CASE: SPS-Begriff einfach erklärt
Zahlen und DatenWie eine Fernbedienung: Drück 1 und du bekommst Programm 1, drück 3 und du bekommst Programm 3. CASE schaut sich eine Zahl an und führt nur den Teil des Codes aus, der dazu passt.
Wählt einen Codeabschnitt anhand eines Werts, etwa einer Zustandsnummer. Nur der passende Abschnitt läuft in diesem CASE-Aufruf.
CASE an einer echten Maschine
CASE wählt anhand einer Zahl einen Abschnitt Textcode, der laufen soll. Man schreibt CASE State OF, dann folgen nummerierte Zweige, und END_CASE schließt ab. Nur der passende Zweig läuft.
Das ist der übliche Weg, einen Zustandsautomaten in SCL oder Strukturiertem Text zu schreiben, weil die Logik jedes Zustands an einer Stelle bleibt. Eine Kette aus IF und ELSIF kann dasselbe, wird aber mit mehr Zuständen schwerer zu lesen.
Ein Zweig kann mehrere Zahlen auflisten, damit zwei Zustände denselben Code teilen. Ein ELSE-Zweig kann einen Wert abfangen, den kein Zweig erwartet.
CASE: ein durchgerechnetes Beispiel
Eine Charge speichert ihre Position in einem Tag namens State. Steht State auf 10, führt CASE den Chargenzweig aus. Geht der Zustand weiter auf 30, läuft nur der Zweig Held, und dieser Zweig hält die Anlage angehalten.
CASE: ein häufiger Fehler
Einen Ausgang nur in einem Zweig schreiben. Ein Zweig, der nicht läuft, lässt seine Tags, wie sie waren. Ein Befehl, der in einem Zustand gesetzt wird, bleibt also im nächsten an, außer etwas löscht ihn.
Immer noch unsicher? Frag in der Umkleide.