Die Schrittkettenprogrammierung in FUP ist so etwas wie der Klassiker der Schrittkettenprogrammierung und obwohl ca. 90% der Abläufe in S7-Graph umgesetzt werden, sollte doch jeder SPS Programmierer auch diese Ablaufprogrammierung kennen, da sie doch hin und wieder zum Einsatz kommt.
In etwas älteren Maschinen war die FUP Kette sogar die Standardanwendung, weil der S7-Graph in Kombination mit leistungsschwachen CPUs für Zykluszeit kritische Prozesse schlichtweg ungeeignet war.
Selbst heute ist eine Ablaufkette in FUP bei den S7-1200er Steuerung noch die Regel, da diese nicht über die Programmiersprache S7-Graph verfügt.
Benötigte Vorkenntnisse für diesen Kursteil:
Schrittketten und Ablaufketten verstehen und planen
Grundlagen der FUP Ablaufsteuerung
Jeder Schritt einer Ablaufsteuerung wird mit einem Setze-Rücksetze Glied dargestellt.
Wenn ein geplanter Ablauf aus 10 Schritten, besteht bedeutet das auch, dass wir mit 10 SR Gliedern planen können.
Zudem gibt es 3 goldene Regeln, die du dir unbedingt merken solltest.
Die 3 goldenen Regeln einer FUP Schrittkette
- Es darf immer nur ein Schritt zur selben Zeit aktiv sein
- Ein Schritt wird nur dann aktiv geschalten, wenn der vorangegangene Schritt aktiv ist und die Weiterschaltbedingung zu diesem Schritt gegeben ist
- Deaktiviert wird ein Schritt, wenn der nachfolgende aktiv geschalten wird
Möglicherweise klingen die Regeln komplizierter als sie tatsächlich sind.
Deswegen programmieren wir zusammen ein kleines Beispiel, in dem wir die 3 goldenen Regeln anwenden werden.

Beispiel einer FUP Schrittkette
Aufgabenstellung:
Wie im ersten Teil
Schrittketten und Ablaufketten verstehen und planen, versuchen wir einen Ablauf vom Tür aufmachen, bis ins Bett gehen in einzelne Schritte zu zerlegen und in einem FUP Ablauf zu programmieren.
Schrittketten Bausteine
Im TIA Portal legen wir als Erstes die Bausteine FC Schrittkette, FC Zuweisung und einen Datenbaustein an.
Sollten S7 Timer oder ähnliches benötigt werden, können auch
Funktionsbausteine verwendet werden.
Die Bausteinnummern lasse ich automatisch generieren, da das TIA Portal ohnehin mit dem symbolischen Namen der Bausteine arbeitet.
Der Datenbaustein (nur 1200/1500 CPUs)
Im Datenbaustein wird für jeden geplanten Schritt eine eigene Variable vom Datentyp Bool angelegt.
In unserem Fall ist das einmal der Initialschritt und 6 weitere für die folgenden Steps.
ACHTUNG:
Wird eine CPU der 300/400er Reihe verwendet, dann sind nicht remanente Merker , anstatt eines Datenbausteins zu verwenden.
Dieser Punkt ist sehr wichtig, da bei einem Neustart die Variablen im DB gesetzt bleiben und es so zu unvorhersehbaren Komplikationen kommen kann.
FC Schrittkette
Wie bereits erwähnt, benötigen wir für jeden einzelnen Schritt ein eigenes Setzte-Rücksetze Glied, weshalb wir einmal eins für den Initialschritt sowie 6 weitere für die folgenden Schritte benötigen und mit den Datenbaustein Variablen verschalten.
FC Schrittkette - Schritt 1
Der Initial- und der letzte Schritt sind ein wenig ein Sonderfall, weshalb wir uns zuerst um dem Schritt 1 kümmern und wenn wir an die Regeln von vorhin zurückdenken, wird ein Schritt nur dann aktiv, wenn der vorangegangene Schritt aktiv ist UND die Weiterschaltbedingung erfüllt ist.
Deshalb ziehen wir vor den Setzeingang eine Und Verknüpfung und verschalten diese mit dem Initialstep (vorangegangen Schritt).
Der zweite Operand am Und Gatter ist die Variable „Du stehst vor der Haustüre“
Um die Variablen besser simulieren zu können, habe ich für Weiterschaltbedingungen und Aktionen einen Datenbaustein vorbereitet, aber ob die Variablen echte Ein-/Ausgänge sind oder wie hier Variablen in einem Datenbaustein, macht keinen Unterschied.
Für den Rücksetze Eingang verwenden wir Regel Nummer 3, die besagt, dass der Schritt zurückgesetzt wird, wenn der nächste aktiv wird (Schritt 2).
FC Schrittkette - Schritt 2 - 5
Die weiteren Zwischenschritte werden so wie gerade eben nach den 3 goldenen Regeln eingefügt.
Der letzte Schritt
Der letzte Schritt wird zwar wie die anderen zuvor gesetzt, allerdings gibt es keinen nachfolgenden Schritt, der diesen zurücksetzen könnte, und daher wird hier anstatt des nachfolgenden Steps die letzte Transition verwendet.
Der Initial-Schritt
Ein ähnliches Problem besteht beim Initialstep.
Denn hier gibt es keinen vorangegangenen Schritt.
Aus diesem Grund brauchen wir ein einmaliges Ereignis, das diesen Schritt setzt.
Das kann zum Beispiel Steuerung ein oder Vorwahl Automatik sein.
Wichtig ist nur, dass dieses Ereignis den Schritt nicht ständig setzt.
Abbruchsituationen
Nehmen wir an, dass die Schrittkette schon bis Step 2 durchgelaufen ist und dann erfolgt ein Betriebsartenwechsel, der den Initialstep auch wieder setzt.
In diesem Fall wären 2 Schritte zur selben Zeit aktiv, was bei einer richtigen Anlage zu echten Komplikationen führen kann.
Aufgrund der Vielzahl an Anwendungsmöglichkeiten gibt zwar keine feste Regel, aber ich würde das Ereignis, das den Initalstep setzt, negiert an den Rücksetze Eingang ALLER Schritte verschalten.
FC Zuweisung
Damit haben wir den kompliziertesten Teil erstmal abgeschlossen und können uns um den relativ einfachen Teil der FC Zuweisungen kümmern.
Wie der Name schon sagt, weisen wir hier die Aktionen zum jeweiligen Schritt zu.
Im Step 1 war es „Tür öffnen“
bei Step 2 „hineingehen“ usw…
Warum dafür einen extra Baustein verwenden?
Zurecht fragst du dich wahrscheinlich, warum dafür ein eigener FC verwendet wird, wenn der Ausgang auch im Ablauf FC an die SR-Glieder hinten drangehängt werden kann.
In diesem sehr einfachen Ablauf hättest du recht, aber meistens sind die Aktionen nicht nur einfache Wertzuweisungen, die nur von einem Schritt aus bearbeitet werden.
Es könnte durchaus auch sein, dass eine Aktion von mehreren Schritten ausgesetzt oder rückgesetzt wird und dann neigt der Ablauf dazu, recht schnell unübersichtlich zu werden und das wollen wir auf jeden Fall vermeiden.
Ablaufkette testen
Gleich zu Beginn siehst du, dass die Vorwahl Automatik auf 0 ist und alle Schritte zurückgesetzt werden.
Mit der positiven Flanke von Vorwahl Automatik wird der Initialschritt nun gesetzt.
Ist auch die Variable „du stehst vor der Haustür“ auf 1, wird der Step 1 aktiv und der Initialschritt inaktiv.
Parallel dazu wird im FC Zuweisung dem Ausgang "Tür öffnen" eine 1 zugewiesen, Step 2 steht schon in den Startlöchern und wartet nur noch, dass die Weiterschaltbedingung wahr wird.
In diesem Stil wird die Schrittkette bis zum Ende abgearbeitet und der letzte Schritt hat wie gesagt keinen Folgeschritt mehr. Wenn die Transition "Licht ist aus" dann wahr ist, wird dieser eben zurückgesetzt und die Schrittkette ist beendet.
Möglicherweise ist dir aufgefallen, dass so wie wir das hier programmiert haben, die Regel Nummer 1 verletzt haben, weil genau 1 SPS Zyklus lang beide Schritte gesetzt sind, bevor der vorangegangene zurückgesetzt wird. Und ja, das könnte je nach Aufgabenstellung zu einem Problem werden. Eine Absicherungsmöglichkeit wäre z. B. die Ausgänge im FC Zuweisung gegeneinander zu verriegeln.
Sprünge in einer FUP Ablaufkette
In seltensten Fällen ist es so, dass ein Ablauf nur einmalig durchlaufen wird, also müssen wir zusehen, dass wir irgendwie wieder zu Schritt 1 zurückkommen.
Das machen wir mit einem „Gehe zum Anfang Schritt“.
Dieser wird ganz normal wie jeder andere gesetzt, wenn der vorherige Schritt aktiv und die Transition erfüllt ist.
Der Unterschied ist aber, dass der nachfolgende Schritt nun der Step 1 am Anfang ist.
Für Step 1 wiederum ist der Schritt „Initialstep“ ODER der „Gehe zum Anfang Schritt“ der vorangegangene Schritt.
So einfach wird ein „Sprung“ vom letzten zum ersten Schritt durchgeführt und selbstverständlich kannst du mit dieser Methode auch zwischen Steps springen, wobei ein Ablauf mit Sprüngen schnell unübersichtlich wird.
Alternativ Verzweigung in einer FUP Schrittkette
Im Ursprungsbeispiel hatten wir nach dem Licht einschalten auch noch eine Entscheidung eingefügt, ob du müde bist oder nicht.
Wenn ja, dann soll die Schrittkette wie bisher durchlaufen werden, aber wenn nicht, gehst du auf die Couch, bis du eben müde bist.
So eine Entscheidung nennt sich "Alternativ Verzweigung" und diese programmieren wir nun auch in unseren Ablauf.
Zugegeben sind Alternativ Verzweigungen etwas komplizierter zu verstehen, aber gemeinsam finden wir auch hier eine Lösung.
Aus dem Flussdiagramm erkennen wir, dass es im Datenbaustein einen zusätzlichen Ausgang für „ab auf die Couch“ geben muss.
Auch ergibt sich, dass es Eingänge für „du bist müde“ und für "du bist auf der Couch" geben muss.
Wenn wir uns die Zuweisung und die Schrittkette ansehen, erkennen wir, dass im Step 5, nachdem das Licht an ist, der Ausgang "ins Bett legen" gesetzt wird, aber das soll eben nur geschehen, wenn du auch müde bist
Wenn nicht, dann benötigen wir einen "Alternativschritt", der den Befehl
„ab auf die Couch ausführt“.
Dieser wird dann aktiv, wenn Schritt 4 aktiv ist, das Licht an ist und du nicht müde bist.
Wichtig hierbei ist, dass der Schritt 4 dadurch auch einen alternativen Nachfolgeschritt bekommt, mit dem der Step zurückgesetzt wird
(Regel Nummer 3: deaktiviert wird ein Schritt, wenn der nachfolgende aktiv geschalten wird).
Als nächsten brauchen wir einen weiteren Schritt, der dich "von der Couch ins Bett" bringt, wenn du dann doch mal müde wirst.
Bei der Zuweisung sieht das dann so aus, dass entweder Schritt 5 oder Schritt 5.2 diesen Ausgang setzt.
Damit ist der alternative Zweig abgearbeitet und logischerweise hat der Schritt 6 dadurch auch einen alternativen vorangegangen Schritt (Regel Nummer 2: wird nur dann aktiv geschalten, wenn der vorangegangene Schritt aktiv ist und die Weiterschaltbedingung zu diesem Schritt gegeben ist).
Sollte nun die Variable „du bist müde“ "high" sein, wird die Schrittkette wie bisher durchlaufen.
Ist sie jedoch auf "low", wird der normale Schritt 5 nicht bearbeitet, aber dafür die 2 Alternativen.
Damit haben wir auch den letzten Punkt zur Schrittkettenprogrammierung im FUP abgeschlossen und ich wünsche dir viel Erfolg bei der Umsetzung!
10 Comments
Hallo, kann ich das Beispiel als lauffähiges Programm bekommen?
Viele Grüße
Ralph Wystup
Hallo Ralph,
die Übungen inkl. der Lösungen kannst du dir sehr gerne im letzten Teil des Videokurses downloaden.
mit freundlichen Grüßen
Rene
Guten Tag, können Sie mir sagen, wie man bei Ein und ausschaltverzögerung vorgeht? Setzt man diese vor S und R vom SR?
Vielen dank
Hallo Vinzenz,
je nachdem was Sie machen wollen können Sie das genau so wie Sie gesagt haben umsetzen und eine Einschaltverzögerung vor dem S Befehl dran schreiben.
Wenn Sie mit einer Ausschaltverzögerung zum Beispiel einen Ausgang länger ansteuern möchten dann empfiehlt es sich diesen beim FC Zuweisung zu verschalten.
Wie gesagt kommt es halt darauf an was Sie umsetzen möchten.
Sollten Sie grundlegend noch Fragen zu den Timern haben dann kann ich Ihnen die Lektion „Timer in einer SPS – IEC Timer“ (link) sehr empfehlen oder auch den Kurs
„SPS programmieren lernen – Übungsaufgaben“ (link) indem viele Abläufe mit und ohne Timer programmiert werden.
Ich hoffe, ich konnte Ihre Frage damit beantworten :).
mit freundlichen Grüßen
Rene Kaiser
Guten Tag,
können Sie mir sagen, wie haben Sie Datenbaustein DB mit Eingänge und Äusgänge verwendet E/A, weil bei mir es gibt nur statisk
Danke
Hallo Omar,
du kannst für deine Übung selbstverständlich auch direkt Ein/Ausgänge verwenden.
Diese können im Programm auch ganz leicht gesteuert werden, wenn die Hardwaremodule den Bereich nicht überschreiben.
Wenn du wie ich einen DB nutzen möchtest empfehle ich dir das Video zu den Datenbausteinen anzusehen.
Hier der Link zum Video: SPS Datenbausteine
Ich hoffe ich konnte dir damit weiterhelfen.
mit freundlichen Grüßen
Rene
Hallo Rene,
kannst du mir erklären, wieso du hier SR und nicht RS Bausteine verwendest?
In diesem Fall mag das ja gut funktionieren, weil der Set-Eingang wieder auf 0 gesetzt wird
aber ist es bei komplizierteren Programmen nicht sinnvoller Sicherheitshalber RS Bausteine zu verwenden?
So würde doch vermieden werden, dass bei einem Fehler der sich möglicherweise einschleicht,
das Programm weiterläuft, mehrere Schritte aktiv sind und die goldenen Regeln verletzt.
Ich würde den Reset hier als wichtiger einstufen.
Habe ich einen Denkfehler?
Liebe Grüße
Phil
Hallo Phil,
ob du eine SR oder RS Baustein verwendest, kommt immer ganz auf deine Anwendung an.
Im Großen und Ganzen werden aufgrund der Rücksetzdominanz aber fast immer SR Bausteine verwendet.
Hier habe ich das etwas ausführlicher beschrieben.
Informationen mit SR und RS Bausteinen speichern!
mit freundlichen Grüßen
Rene
Guten Tag. Ich habe eine Frage zum AVERZ_Q , wie kann ich das Verhalten des Ausgangs „AVERZ_Q“ mit einem IEC-Baustein nachbilden?
https://www.sps-tutorial.com/info-sps-grundlagenkurs/
Lektion 2.11 Timer in einer SPS – IEC Timer