• marv

Programmieren von Schrittketten

Aktualisiert: 24. Nov. 2021

Eine Ablaufsteuerung oder auch Schrittkette gennannt, ist eine Steuerung, die schrittweise abläuft.


Dieser Ablauf erfolgt zwangsläufig, wobei das Weiterschalten von Schritt A zu Schritt B durch Weiterschaltbedingungen, auch "Transitionen" erfolgt, z. B. ein Ein Lichtschalter im Treppenhaus wird betätigt (Eingang) , das Licht wird geschaltet (Ausgang), nach der Abgelaufenen Zeit schaltet sich das Licht wieder aus.



Schrittkette
Schrittkette


Im Prinzip ist es eine einfach "wenn....., dann..."/ ("if...,else....") Steuerung. Allerdings gehen die tatsächlichen Wirkungsabläufe von Ablaufsteuerung nicht hervor. Man kann nicht erkennen, wie die Steuergrößen dieser Steuerungsart beschaffen sind und in welcher Weise ihre Beeinflussung erfolgt. Daraus lässt sich auch nicht nachvollziehen, wie die „vorgegebenen“ Übergangsbedingungen (Transitionen) zustande kommen.


Neben dem linearen Ablauf, d.h. sofern keine Schleife eingbaut ist, kann der Schritt 2 nicht auf Schritt 1 zurückfallen, von Schritten sind Alternativverzweigungen, Parallelverzweigungen und Schleifen modellierbar. Eigentlich ganz einfach, kann aber unter Umständen sehr komplex werden.


In verschiedenen Steuerung werden diese unterschiedlich genannt, z.B.: bei SIEMENS ist es S7-GRAPH. Das sieht dann im SIMATIC Manager wie folgt aus:



S7-Graph
S7-Graph

Mann kann sehen welcher Schritt gerade aktiv ist und die Weiterschaltbedingungen, dies ist allerdings eine Grafische Darstellung.


Programmiert man die Schrittkette in beispielsweise Funktionsplan sieht das anders aus (TIA-Portal):

Schrittkette TIA-Portal
Schrittkette TIA-Portal

Mit dem sogenannten "SR-Glied" (Set / Reset) kann man einen Schritt "X1" setzen und dieser wird erst zurückgesetzt, wenn der nächste Schritt "X2" aktiv wird.



In der Progammiersprache SCL (Hochsprache), dieses Beispiel funktioniert natürlich auch in allen anderen Hochsprachen wie C, C++, C#, etc. Lediglich ist die Syntax anders.


IF Bedingung1 THEN
  Schritt1;
END_IF;

IF Bedingung2 AND Schritt1 THEN
  Schritt2;
END_IF;

IF Bedingung2 AND Schritt2 THEN
  Anweisung3;
END_IF;





358 Ansichten0 Kommentare

Aktuelle Beiträge

Alle ansehen