Speicherfunktionen in SPS: SR- und RS-Flipflops

Bei der Realisierung von Steuerungsaufgaben mit den UND-, ODER- oder XOR-Verknüpfungen hat man das Verhalten, dass der Ausgangsoperand nur solange das Signal 1 liefert, solange der Zustand der Eingangsoperanden gemäß der Schaltungslogik ist. Das bedeutet, wenn sich der Zustand eines Eingangsoperanden ändert, kann sich auch das Signal des Ausgangsoperanden ändern.

Häufig möchte man jedoch den Zustand des Ausgangsoperanden beibehalten (speichern), auch wenn sich im Nachhinein die Eingangsoperanden ändern. Insbesondere in Verbindung mit der Flankenauswertung wird ein "speicherndes Verhalten" des Ausgangsoperanden gebraucht, da bei einer Flankenauswertung lediglich ein kurzzeitiges Signal geliefert wird. Hierfür gibt es bei Speicherprogrammierbaren Steuerungen sogenannte Speicherglieder. Mit den Speicherfunktionen ist es möglich, solch ein kurzzeitiges Signal zu nutzen, um Ausgangsoperanden solange auf 1 zu setzen, bis man diese mit einem anderen Signal zurücksetzt.

Funktionsweise von Speicherfunktionen

Ein kurzzeitiges Signal reicht aus, damit ein Ausgangsoperand über die Speicherfunktion das Signal 1 hat und den Zustand speichert. Das kurzzeitige Signal setzt dabei über den Setzeingang des Speicherglieds diesen auf 1. Es gibt jedoch auch eine Möglichkeit, das Speicherglied wieder auf 0 zu setzen. Das wird über den Rücksetzeingang realisiert.

Dementsprechend haben Speicherglieder einen Setz- und einen Rücksetzeingang. Deshalb nennt man diese auch SR-Glieder oder RS-Glieder. Der Unterschied zwischen SR und RS ist:

  • SR-Glieder sind rücksetzdominant
  • RS-Glieder sind setzdominant
Flipflops

Die Unterscheidung zwischen setz- und rücksetzdominanten Speichergliedern ist deshalb wichtig, da es durchaus vorkommen kann, dass an beiden Eingängen (Setz- und Rücksetzeingang) ein Signal von 1 liegt. In solchen Fällen muss die SPS wissen, was geschehen soll, setzen oder rücksetzen. Bei setzdominanten (RS-Gliedern) Speichergliedern wird gesetzt, bei rücksetzdominanten (SR-Gliedern) wird rückgesetzt.

Warum SR-Flipflops rücksetzdominant und RS-Flipflops setzdominant sind, erkennt man, wenn sich das Programm in AWL anschaut. Bei SR-Flipflops kommt die Anweisung zum Setzen des Speicherglieds zuerst, danach kommt die Anweisung zum Rücksetzen. Da das SPS-Programm von oben nach unten abgearbeitet wird, gilt das, was zuletzt in der Anweisung steht. Und das ist bei SR-Flipflops Rücksetzen. Umgekehrt verhält es sich bei RS-Flipflops. Hier kommt die Anweisung zum Rücksetzen des Speicherglieds zuerst und danach die Anweisung zum Setzen.

Flipflops in AWL

Wichtig: Ob ein SR- oder RS-Glied setz- oder rücksetzdominant ist, ist nicht einheitlich. Gemäß IEC 61131 ist ein SR-Glied setzdominant und ein RS-Glied rücksetzdominant. Hierbei wird zur besseren Unterscheidung eine 1 an den dominanten Eingangsbuchstaben angehängt (S1 oder R1). Bei der S7-300 Reihe wird beispielsweise davon abgewichen (SR-Glied rücksetzdominant, RS-Glied setzdominant, keine 1 am dominanten Eingangsbuchstaben). Da wir uns auf diesen Seiten hauptsächlich auf die S7-Reihe ab 300 beziehen, wird in den vorgestellten Beispielen und Lösungen auch davon ausgegangen! Das Dominanzverhalten der Speicherglieder sollte bei jedem Gerät vorher geprüft bzw. aus der Dokumentation entnommen werden.

Speicherverhalten mit UND-, ODER-Gliedern realisieren

Die Programmiersoftware der meisten Hersteller enthalten bereits fertige SR- und RS-Speicherglieder nach der Programmiernorm IEC 6113-3 als Standardbausteine. Man kann die Speicherglieder in der Darstellungsart FUP oder KOP direkt auswählen und braucht nur die Operanden an den Setz- und Rücksetzeingängen einzutragen bzw. die symbolischen Bezeichnungen gemäß Symboltabelle. Alternativ kann man das Setz- und Rücksetzverhalten von Speichergliedern direkt in AWL programmieren.

Man kann auch ein Speicherverhalten nur mit UND- und ODER-Gliedern realisieren. Um ein rücksetzdominantes Speicherverhalten zu realisieren, benutzt man eine ODER vor UND-Verknüpfung. Für ein setzdominantes Speicherverhalten benutzt man eine UND vor ODER-Verknüpfung. Nachfolgend die Abbildungen für setz- und rücksetzdominantem Speicherverhalten.

Speicherverhalten mit UND- ODER-Glieder

Das Speicherverhalten wird in beiden Beispielen dadurch realisiert, dass man den Ausgang wieder als Eingangsoperanden benutzt. Dadurch wird erreicht, dass der Ausgang dauerhaft ein Signal von 1 hat, nachdem der Eingangsoperand, in diesem Beispiel E0.1, kurzzeitig das Signal 1 hat. Der Ausgangsoperand selbst sorgt dafür, dass er selbst das Signal von 1 hält. Diese Art des Speicherverhaltens nennt man daher auch Selbsthaltung.

Die Dominanz des Setz- oder Rücksetzeingangs realisiert man durch eine UND vor ODER-Verknüpfung oder umgekehrt. Zum rücksetzdominantem Speicherverhalten braucht man eine UND-Verknüpfung mit dem Eingangsoperanden, in diesem Beispiel E0.2, zum Rücksetzen. Solange E0.2 kein Signal von 1 hat, ist die Bedingung für das Speicherverhalten gegeben. Ist E0.2 eine 1, ist die Bedingung nicht mehr gegeben und der Ausgangsoperand erhält das Signal 0. Dadurch hat man ein rücksetzdominantes Verhalten.

Ein setzdominantes Verhalten erreicht man durch eine ODER-Verknüpfung. Wenn E0.2 ein Signal von 1 liefert, würde die Bedingung für die Selbsthaltung nicht gegeben sein. Es sei denn, der Eingangsoperand am ODER-Glied, in diesem Beispiel E0.1, hat das Signal 1. Dadurch, dass dieser mit dem ODER-Glied verknüpft ist, ist die Bedingung zum Setzen des Ausgangsoperanden gegeben, da bei einer ODER-Verknüpfung es ausreicht, wenn nur eine Bedingung zutrifft. Ein setzdominantes Verhalten wäre realisiert.

Trennung der Setz- und Rücksetzanweisung

Die Anweisung zum Setzen oder Rücksetzen eines Operanden muss nicht direkt hintereinander erfolgen. Man kann die Anweisung auch getrennt voneinander, an unterschiedlichen Stellen im Programm, ausführen. Hierfür enthalten die meisten Programmiersoftware eigene Bausteine, die lediglich eine Setz- oder Rücksetzanweisung enthalten. Man kann Setz- und Rücksetzanweisungen auch in AWL an verschiedenen Stellen im Programm eingeben.

Nachteilig bei dieser Variante ist, dass die Übersicht verloren geht, da die Bedingungen zum Setzen und Rücksetzen an unterschiedlichen Stellen im Programm stehen. Der Vorteil ist, dass man den Zustand des VKE nutzen kann und mehrere Setz- oder Rücksetzanweisungen auch hintereinander eingeben kann.

Setz-, Rücksetz- oder Zuweisungsoperationen hintereinander ändern nicht das VKE. Daher kann man diese hintereinander eingeben. Erst bei einer erneuten Abfrageoperation wird das VKE mit der Abfrageoperation verknüpft und neu gebildet. Nachfolgend ein Beispiel, wie man Setz- und Rücksetzbefehle separat für unterschiedliche Ausgangsoperanden hintereinander eingeben kann.

Separates Setzen und Rücksetzen

Direktes Setzen eines Ausgangsoperanden

Wenn man ein SR- oder RS-Glied benutzt, dann erwartet die CPU zwingend einen Operanden zum Setzen bzw. zum Rücksetzen. Hierbei kann ein Ausgangsoperand direkt gesetzt oder rückgesetzt werden. Man kann zum Setzen und Rücksetzen auch einen Merker benutzen und die Zuweisung mit dem Ausgang des SR- oder RS-Glieds verbinden.

Flipsflops mit und ohne Merker

Verriegeln von Speichergliedern

In Steuerungen muss man häufig Speicherglieder verriegeln, damit z.B. ein Speicherglied nur gesetzt werden kann, wenn ein anderes Speicherglied gesetzt ist. Man kann Speicherglieder auch so verriegeln, dass sie nur rückgesetzt werden können, wenn andere Speicherglieder bereits rückgesetzt sind. Ein Beispiel wäre eine Förderbandanlage mit mehreren Förderbändern. Ein Förderband soll nur gesetzt werden, wenn das Förderband davor ebenfalls gesetzt wurde, um Staus zu vermeiden.