GRAFCET-Beispiele

Hier finden Sie GRAFCET-Beispiele, die Ihnen bei der täglichen Arbeit nützlich sein könnten. Schrittketten kann man in GRAFCET sehr leicht erstellen. Diese Beispiele beleuchten auch andere Praxisfälle, wie z.B. einen Handbetrieb. Hier wird deutlich, dass man GRAFCET nicht nur für die Realisierung von Schrittketten sehr gut verwenden kann.

Im Bild sind drei voneinander unabhängige GRAFCETs zu sehen, die jeweils ein Blinklicht erzeugen.

Das Blinklich wird hier über den Eingang I1 eingeschaltet.

Beispiel-Nr Erklärung
1 Ein effizientes Beispiel, wie man in GRAFCET ein Blinklicht kurz programmieren kann. Das Symbol BlinkFlag hat in der Symboliktabelle die Gruppierung Data und dient als Zwischenspeicher
2 Die einfachste Weise, wie man in GRAFCET ein Blinklicht erstellen kann.
3 Hier wird ein Blinktakt, welcher von der SPS geliefert wird, verwendet. Dieses Beispiel funktioniert nur, wenn von der SPS (dem Gerät) ein Blinktakt vorgegeben wird. Das Symbol ClockFromPLC hat die Gruppierung Data in der Symboliktabelle und muss in der SPS beschrieben werden.

Betriebszustände wie Hand, Automatik oder Not-Aus werden im GRAFCET-Plan mit sog. zwangssteuerden Befehlen realisiert. Hierzu werden GRAFCET-Pläne in Gruppen (Rahmen) zusammengefaßt und diese können dann mit den zwangssteuernden Befehlen "aktiviert" und "deaktiviert" werden.

Dieses Beispiel besteht aus 3 Teilen:

  • Haupt GRAFCET: Hier findet die Umschaltung zwischen Hand, Auto, Not-Aus, usw. statt. Es werden hier zwangssteuernde Befehle verwendet (Rechteck mit Doppelrahmen)
  • GRAFCET für Automatik-Betrieb
  • GRAFCET für Hand-Betrieb

Zustände im Haupt-GRAFCET:

Zustand Welcher Schritt ist aktiv?
Not-Aus Schritt 1
Steuerung Aus Schritt 2
Steuerung Ein Schritt 3
Hand Schritt 4
Automatik Schritt 5

Haupt-GRAFCET:

Im Haupt GRAFCET wird zwischen den Betriebszuständen umgeschaltet. Wenn der Automatikbetrieb aktiv ist, wird der Handbetrieb über eine Zwangssteuerung deaktiviert und umgekehrt. Da bei jedem Zustand der Not-Aus-Schalter gedrückt werden kann ist er (S3EmergencyStop) in jedem alternativen Abzweig vertreten.

Automatik-Betrieb:

Der Automatik-Betrieb ist hier eine einfache Schrittkette mit Rückführung.

Hand-Betrieb:

Der Hand-Betrieb ist hier über ständig aktive Initialschritte und einer speichernde Aktion bei Ereignis gelöst. Eine Schrittkette ist hier nicht notwendig.

Möchte man zwei oder mehrere Dinge gleichzeitig innerhalb einer Schrittkette starten, dann verwendet man den Parallelabzweig im GRAFCET Plan.

Alternativ kann man auch einen separaten GRAFCET zeichnen, der einen eigenen Initialschritt hat. Diese Variante wäre dann unabhängig von einer Schrittkette.

Praxisbeispiel:

Zwei Hydraulikzylinder sollen gleichzeitig ausgefahren werden. Sind beide Zylinder vollständig ausgefahren, soll eine Pumpe für 3 Sekunden eingeschaltet werden und gleichzeitig sollen die Zylinder wieder eingefahren werden. Die Geschwindigkeit der beiden Kolbenstangen sind beim Ein- und Ausfahren unterschiedlich schnell. Wenn beide Kolbenstangen wieder eingefahren sind ist die Anlage bereit für den nächsten Vorgang.

Das Einfahren der 2 Zylinderstangen dauert unterschiedlich lange. Das Ausfahren der Kolbenstange muss jeweils zum richtigen Zeitpunkt (wenn vollständig ausgefahren) ausgeschaltet werden. Deshalb kommt hier ein Parallelabzweig zum Einsatz. Eine Synchronisation ist hier nicht notwendig.

Weitere Erklärungen zum Lösungsvorschlag:

  • Der Vorgang wird gestartet, wenn der Start-Taster gedrückt wird. Dabei müssen beide Kolbenstangen eingefahren sein.
  • Nach dem Start werden bei Schritt 11 beide Kolbenstangen ausgefahren.
  • Wenn beide Kolbenstangen ausgefahren sind, werden die Schritte 6, 7 und 8 gleichzeitig aktiviert.
  • Über den Schritt 6 wird die Pumpe eingeschaltet und nach 3 Sekunden wieder ausgeschaltet.
  • Der Schritt 8 schaltet das Ausfahren beider Zylinder ab und gleichzeitig das Einfahren der Kolbenstangen von beiden Zylindern ein.
  • Schritt 7 wird deaktiviert, wenn der Zylinder 1 wieder eingefahren ist
  • Schritt 8 wird deaktiviert, wenn Zylinder 2 wieder eingefahren ist.
  • Nachdem die Zeit abgelaufen ist und wenn beide Kolbenstangen eingefahren sind, wird wieder Schritt 1 aktiviert und die Anlage ist wieder bereit für einen neuen Vorgang.

Warum ist hier ein Parallelabzweig notwendig? Weil die zwei Zylinder mit unterschiedlicher Geschwindigkeit zurückfahren und somit das Abschalten des Zurückfahrens für jeden Zylinder separat gesteuert werden muss.

Ein Zähler kann mit einer Addition in einer Aktion realisiert werden und ein Vergleicher kann innerhalb einer Transition in eckigen Klammern realisiert werden.

Im linken GRAFCET wird der Wert des Symbols Counter hochgezählt, wenn Schritt 2 aktiv ist und wenn eine steigende Flanke von I0 vorliegt. Der Wert des Symbols Counter wird um 1 verringert, wenn der Schritt 2 aktiv ist und eine steigende Flanke von I1 vorliegt.

Nach dem Schritt 2 besteht die Transitionsbedingung aus einem Vergleich. Wenn der Wert von Counter größer als 5 ist, wird Schritt 3 aktiviert. Hinweis: Ein Vergleich muss immer in eckigen Klammern stehen.

Im rechten GRAFCET werden zu jedem Zeitpunkt I2 und I3 ausgewertet. Bei steigender Flanke von I2 wird hochgezählt und bei steigender Flanke von I3 wird heruntergezählt.

Für eine Auswertung eines Wahlschalters werden hier zwei Lösungsmöglichkeiten gezeigt. Das linke Bild zeigt eine Schrittkette mit Alternativ-Verzweigungen und das rechte Bild zeigt 3 unabhängige Initialschritte die jeweils eine Aktion mit Zuweisungsbedingung haben.

Die Schrittkette würde man verwenden, wenn der Wahlschalter verwendet wird, um einen nächsten Schritt zu aktivieren.

Die einzelnen Wahlschalterstellungen (S1,S2,S3) sind gegeneinander verriegelt. Darauf könnte man verzichten, wenn der Wahlschalter sicherstellen würde, dass immer nur 1 Stellung gleichzeitig aktiv sein kann.

Die hier gezeigte Treppenlichfunktion soll so funktionieren: Wird der Taster S1 oder der Taster S2 gedrückt, dann soll eine Lampe eingeschaltet werden. Nach 30 Sekunden soll die Lampe wieder ausgeschaltet werden. So würde eine mögliche Lösung in GRAFCET aussehen:

Wenn man eine zweite Lampe davon unabhängig schalten möchte, dann würde man den gleichen GRAFCET mit anderen Symbolen rechts daneben zeichnen.

Hier ein einfaches Beispiel, wie man eine Stromstoß-Relais-Funktion nachbilden kann. Hier werden die aufsteigenden Flanken von S1 und S2 ausgewertet:

Der Ausgang kann durch Drücken von S1 oder S2 ein- und auch wieder ausgeschalten werden. S1 und S2 würden dann über Taster beeinflusst werden.

Es geht auch noch einfacher (GRAFCET-Studio 1.0.1.5 oder neuer erforderlich):

Ein Handbetrieb besteht üblicherweise nicht aus einer Schrittkette. Wenn der Handbetrieb eingeschaltet ist, sollen bestimmte Ausgänge geschalten werden, wenn bestimmte Tasten gedrückt werden. Dies kann im GRAFCET relativ leicht umgesetzt werden.

Das Rezept für einen Handbetrieb: Man verwendet eine speichernd wirkende Aktion bei Event und verbindet diese mit einem Initialschritt. Damit wird die Aktion immer ausgeführt die die Bedindung für das Event erfüllt ist. Beispiel:

In diesem Beispiel sind drei Initialschritte mit jeweils einer Aktion (speichernde Aktion bei Event) vorhanden. In der Eventdefinition ist immer der Hand-Betrieb (P2ManualOn) in einer UND Verknüpfung enthalten. Damit ist sichergestellt, dass die Aktion auch wirklich nur im Handbetrieb aktiv ist.

Dieses Beispiel ist auch ein Beleg dafür, dass GRAFCET nicht nur für Schrittketten sehr gut eingesetzt werden kann.

Dieses Beispiel zeigt, wie man Konstanten definiert und einen Analogwert ständig normiert.

An dem Initialschritt "8" (ist immer aktiv) sind Aktionen (speichernd wirkend bei Aktivierung) angeschlossen, die 1x geschrieben werden. Hier werden somit Werte in die Symbole "K2", "K1", ... geschrieben. Diese Symbole (Konstanten) werden in der eigentlichen Normierung bei Schritt "7" verwendet. An dem Initialschritt "7" ist eine speichernd wirkende Aktion bei Event angeschlossen. Da bei der Definition des Events eine "1" eingetragen wurde, wird die Aktion bei jedem Zyklus ausgeführt. Der Term in der Aktion wird also immer wieder bearbeitet. Im Symbol "AnalogNormiert" wird immer aktuell der normierte Analogwert abgespeichert.

Hinweis zu "1" als Definition eines Events: Normalerweise macht die Angabe von "1" als Event keinen Sinn. In GRAFCET-Studio hat dies eine besondere Bedeutung. In diesem Falle wird die Aktion bei jedem Grafcet-Zyklus ausgeführt.

Damit die Uhrzeit im GRAFCET ausgewertet werden kann, muss die aktuelle Uhrzeit im SPS-Programm in GRAFCET-Symbole geschrieben werden. In GRAFCET-Studio werden folgende Symbole (Name beliebig) im Bereich Data angelegt: Wichtig ist, dass die Gruppe "Data" ist und dass die Datentypen richtig angelegt sind (hier UInt8 und UInt16).

Hier der GRAFCET um einen Lampe um 10.12.2018 20:10 Uhr einzuschalten und wieder um 10.12.2018 20:15 Uhr auszuschalten:

In diesem GRAFCET wird alle 3 Sekunden die Uhrzeit geprüft um Rechenzeit einzusparen. Wenn man beide Aktionen mit einem Initialschritt verbinden würde, dann würde die Uhrzeit in jedem Zyklus geprüft, was aber unnötig die SPS-CPU belastet.

Im SPS-Programm muss die aktuelle Uhrzeit in die GRAFCET-Symbole geschrieben werden. Dazu verwendet man die bereitgestellten Funktion SetGrafcetSymbolUInt8 und SetGrafcetSymbolUInt16. Diese Funktionen erwarten im ersten Parameter den Offset (siehe Symboltabelle Spalte DB-Adresse) und im zweiten Parameter den Wert der geschrieben werden soll.

Um das Taktmerkerbyte der SPS verwenden zu können muss es in der SPS zuerst über die Hardwarekonfiguration eingeschaltet werden. Mit der bereitgestellten Funktion SetGrafcetSymbolBool kann man nun das gewünschte Bit in das GRAFCET-Symbol geschrieben werden. Hier die Symboldefinition in GRAFCET-Studio:

Im SPS-Programm verwendet man nun die Funktion SetGrafcetSymbolBool:

CALL  "SetGrafcetSymbolBool"
       Offset :=150
       Bit:=0
       Value  :="PLC_TICK"

Der Offset 150 wurde aus der Symboltabelle entnommen (Spalte DB-Adresse).

Um eine Lampe blinken zu lassen, wenn das Symbol I5 true ist, ist dann folgender GRAFCET notwendig:

Zweihandauslösung: Eine Aktion soll ausgeführt werden, wenn der Bediener zwei Taster gleichzeitig (innerhalb 200ms) drückt. Damit soll sichergestellt werden, dass sich beide Hände des Bedieners außerhalb der Gefahrenzone befinden. Nach einigen Überlegungen ist folgende Lösung entstanden:

Die Bedingung "Condition1" ist erfüllt, wenn der Bediener die Taster S1 und S2 gleichzeitig (Toleranz=200ms) drückt. Realisiert wurde dies durch eine Quell- und Schlußtransition. Der Schritt "7" ist für 200ms aktiv, wenn der Taster S1 (Hi-Flanke S1) gedrückt wird. Der Schritt "8" ist für 200ms aktiv, wenn der Taster S2 (Hi-Flanke S2) gedrückt wird. Wenn nun beide Schritte "7" und "8" gleichzeitig aktiv sind, dann ist die Zweihandauslösung erfüllt. X7 und X8 sind in der "Condition1" als UND-Verknüpfung enthalten.

Es soll kontinuierlich der Füllstand eines Behälters überwacht werden. Wenn der Füllstandsmesser '0' liefert, dann soll der Ausgang MinLevel TRUE sein und wenn der Füllstandsmesser '9' liefert dann soll der Ausgang MaxLevel TRUE sein. Die 1. Lösung basiert auf drei Alternativ-Verzweigungen und die 2. Lösung auf Vergleiche innerhalb der Aktionen. Wie man sieht, ist die 2. Variante der Lösung sehr viel kürzer als die 1. Lösung.

1. Lösung:

2. Lösung: