Ablaufsprache (AS)
Die Ablaufsprache ist eine graphisch orientierte Sprache, die es ermöglicht, die zeitliche Abfolge verschiedener Aktionen innerhalb eines Programms zu beschreiben.
Beispiel für ein Netzwerk in der Ablaufsprache:
Schritt
Ein in Ablaufsprache geschriebener Baustein besteht aus einer Folge von Schritten, die über gerichtete Verbindungen (Transitionen) miteinander verbunden sind.
Es gibt zwei Arten von Schritten:
- Die vereinfachte Form besteht aus einer Aktion und einem Flag, das anzeigt, ob der Schritt aktiv ist. Ist zu einem Schritt die Aktion implementiert, so erscheint ein kleines Dreieck in der rechten oberen Ecke des Schrittes.
- Ein IEC-Schritt besteht aus einem Flag und einer oder mehreren zugewiesenen Aktionen oder boolschen Variablen. Die assoziierten Aktionen erscheinen rechts vom Schritt.
Aktion
Eine Aktion kann eine Folge von Instruktionen in AWL oder in ST, eine Menge von Netzwerken in FUP oder in KOP oder wieder eine Ablaufstruktur (AS) enthalten. Bei den vereinfachten Schritten ist eine Aktion immer mit ihrem Schritt verbunden. Um eine Aktion zu editieren, führen Sie auf dem Schritt, zu dem die Aktion gehört, einen doppelten Mausklick aus, oder markieren Sie den Schritt und führen den Menübefehl‚ Extras''Zoom Aktion/Transition' aus. Zusätzlich sind eine Ein- und/oder Ausgangsaktion pro Schritt möglich.
Aktionen von IEC-Schritten hängen im Object Organizer direkt unter ihrem AS-Baustein und werden mit Doppelklick oder Drücken der <Eingabetaste> in ihren Editor geladen. Neue Aktionen können mit ‚Projekt''Aktion hinzufügen' erzeugt werden.
Eingangs- bzw. Ausgangsaktion
Einem Schritt kann zusätzlich zur Schritt-Aktion eine Eingangsaktion und eine Ausgangsaktion hinzugefügt werden. Eine Eingangsaktion wird nur einmal ausgeführt, gleich nachdem der Schritt aktiv geworden ist. Eine Ausgangsaktion wird nur einmal ausgeführt, bevor der Schritt deaktiviert wird. Ein Schritt mit Eingangsaktion wird durch ein 'E' in der linken unteren Ecke gekennzeichnet, die Ausgangsaktion durch ein 'X' in der rechten unteren Ecke. Die Ein- und Ausgangsaktion kann in einer beliebigen Sprache implementiert werden. Um eine Ein- bzw. Ausgangsaktion zu editieren, führen Sie auf die entsprechende Ecke im Schritt, einen doppelten Mausklick aus.
Beispiel eines Schrittes mit Ein- und Ausgangsaktion:
Transition/Transitionsbedingung
Zwischen den Schritten liegen sogenannte Transitionen.
Eine Transitionsbedingung muss den Wert TRUE oder FALSE haben. Somit kann sie aus einer Boolschen Variablen, Boolschen Adresse oder einer Boolschen Konstante bestehen.
Sie kann auch eine Folge von Instruktionen mit einem Boolschen Ergebnis in ST-Syntax (z.B. (i <= 100) AND b) oder einer beliebigen Sprache enthalten (siehe 'Extras' 'Zoom Aktion/Transition').
Aber eine Transition darf keine Programme, Funktionsblöcke oder Zuweisungen enthalten!
Neben Transitionen kann auch der Tipp-Modus benutzt werden, um zum nächsten Schritt weiterzuschalten, siehe SFCtip und SFCtipmode.
Aktiver Schritt
Nach dem Aufruf des AS-Bausteins wird zunächst die zum Initialschritt (doppelt umrandet) gehörende Aktion ausgeführt. Ein Schritt, dessen Aktion ausgeführt wird, heißt aktiv. Falls der Schritt aktiv ist, wird die zugehörige Aktion einmal pro Zyklus ausgeführt. Im Online Modus werden aktive Schritte blau dargestellt.
In einem Steuerungszyklus werden alle Aktionen ausgeführt, die zu aktiven Schritten gehören. Danach werden die jeweils nachfolgenden Schritte der aktiven Schritte aktiv, wenn die Transitionsbedingungen der nachfolgenden Schritte TRUE sind. Die jetzt aktiven Schritte werden erst im nächsten Zyklus ausgeführt.
Enthält der aktive Schritt eine Ausgangsaktion, wird auch diese erst im nächsten Zyklus ausgeführt, vorausgesetzt, die darauffolgende Transition ist TRUE.
IEC- Schritte
Neben den vereinfachten Schritten stehen die normkonformen IEC-Schritte in AS zur Verfügung. Um IEC-Schritte verwenden zu können, müssen Sie in Ihr Projekt die Bibliothek TcSystem.Lib einbinden.
Einem IEC-Schritt können beliebig viele Aktionen zugewiesen werden. IEC-Aktionen sind nicht wie bei den vereinfachten Schritten als Eingangs- Schritt- oder Ausgangsaktion fest einem Schritt zugeordnet, sondern liegen getrennt von den Schritten vor und können innerhalb ihres Bausteins mehrfach verwendet werden. Dazu müssen sie mit dem Befehl 'Extras''Aktion assoziieren' zu den gewünschten Schritten assoziiert werden.
Neben Aktionen können auch boolsche Variablen zu Schritten zugewiesen werden.
Über sogenannte Bestimmungszeichen (Qualifier) wird die Aktivierung und Deaktivierung der Aktionen und boolschen Variablen gesteuert. Zeitliche Verzögerungen sind dabei möglich. Da eine Aktion immer noch aktiv sein kann, wenn bereits der nächste Schritt abgearbeitet wird, z.B. durch Bestimmungszeichen S (Set), kann man Nebenläufigkeiten erreichen.
Eine assoziierte boolsche Variable wird bei jedem Aufruf des AS-Bausteines gesetzt oder zurückgesetzt. Das heißt, ihr wird jedes mal entweder der Wert TRUE oder FALSE neu zugewiesen.
Die assoziierten Aktionen zu einem IEC-Schritt werden rechts vom Schritt in einem zweigeteilten Kästchen dargestellt. Das linke Feld enthält den Qualifier, evtl. mit Zeitkonstanten und das rechte den Aktionsnamen.
Beispiel für einen IEC-Schritt mit zwei Aktionen:
Zur leichteren Verfolgung der Vorgänge werden alle aktiven Aktionen im Onlinebetrieb, wie die aktiven Schritte blau dargestellt. Nach jedem Zyklus wird überprüft, welche Aktionen aktiv sind.
Beachten Sie hierzu auch die Einschränkung bei der Verwendung von Zeit-Qualifiern bei mehrmals verwendeten Aktionen im gleichen Zyklus !
Wird eine Aktion deaktiviert, so wird sie noch einmal ausgeführt. Das heißt, dass jede Aktion mindestens zweimal ausgeführt wird (auch eine Aktion mit Qualifier P). Bei einem Aufruf werden zuerst die deaktivierten Aktionen in alphabetischer Reihenfolge abgearbeitet und dann alle aktiven Aktionen wiederum in alphabetischer Reihenfolge.
Ob es sich bei einem neu eingefügten Schritt um einen IEC-Schritt handelt, ist abhängig davon, ob der Menübefehl ‚Extras''IEC-Schritte benutzen' angewählt ist.
Im Object Organizer hängen die Aktionen direkt unter ihrem jeweiligen AS-Baustein. Neue Aktionen können mit ‚Projekt''Aktion hinzufügen' erzeugt werden.
Zum Assoziieren der Aktionen zu IEC-Schritte stehen folgende Qualifier (Bestimmungszeichen) zur Verfügung.
N | Non-stored | die Aktion ist solange aktiv wie der Schritt |
R | overriding Reset | die Aktion wird deaktiviert |
S | Set (Stored) | die Aktion wird aktiviert und bleibt bis zu einem Reset aktiv |
L | time Limited | die Aktion wird für eine bestimmte Zeit aktiviert |
D | time Delayed | die Aktion wird nach einer bestimmten Zeit aktiv, sofern der Schritt noch aktiv ist |
P | Pulse | die Aktion wird genau einmal ausgeführt, wenn der Schritt aktiv wird |
SD | Stored and time Delayed | die Aktion wird nach einer bestimmten Zeit aktiviert und bleibt bis zu einem Reset aktiv |
DS | Delayed and Stored | die Aktion wird nach einer bestimmten Zeit aktiviert, sofern der Schritt noch aktiv ist und bleibt bis zu einem Reset aktiv |
SL | Stored and time Limited | die Aktion ist wird eine bestimmte Zeit aktiviert |
Wird dieselbe Aktion in zwei unmittelbar aufeinanderfolgenden Schritten mit Qualifiern benutzt, die den zeitlichen Ablauf beeinflussen, kann bei der zweiten Verwendung der Zeit-Qualifier nicht mehr wirksam werden. Um dies zu umgehen, muss ein Zwischenschritt eingefügt werden, so dass in dem dann zusätzlich zu durchlaufenden Zyklus der Aktionszustand erneut initialisiert werden kann
Impilizite Variablen in AS
In der AS gibt es implizit deklarierte Variablen, die verwendet werden können. Zu jedem Schritt gehört ein Flag, welches den Zustand des Schritts speichert. Das Schritt-Flag (aktiver oder inaktiver Zustand des Schritts) heißt <StepName>.x bei IEC-Schritten bzw. nur <StepName> bei den vereinfachten Schritten. Diese boolsche Variable hat den Wert TRUE, wenn der zugehörige Schritt aktiv ist, und FALSE, wenn er inaktiv ist. Sie kann in jeder Aktion und Transition des AS-Bausteins benutzt werden.
Ob eine IEC-Aktion aktiv ist oder nicht, kann man abfragen mit der Variablen <AktionsName>.x.
Bei den IEC-Schritten kann mit den impliziten Variablen <StepName>.t die aktive Zeitdauer der Schritte abgefragt werden.
Auf die impliziten Variablen kann auch von anderen Programmen aus zugegriffen werden. Beispiel: boolvar1:=sfc.step1.x; Dabei ist step1.x die implizite boolsche Variable, die den Zustand von IEC-Schritt step1 im Baustein sfc1 darstellt.
Alternativzweig
Zwei oder mehr Zweige in AS können als Alternativverzweigungen definiert werden. Jeder Alternativzweig muss mit einer Transition beginnen und enden. Alternativverzweigungen können Parallelverzweigungen und weitere Alternativverzweigungen beinhalten. Eine Alternativverzweigung beginnt an einer horizontalen Linie (Alternativanfang) und endet an einer horizontalen Linie (Alternativende) oder mit einem Sprung.
Wenn der Schritt, der der Alternativanfangslinie vorangeht, aktiv ist, dann wird die erste Transition jeder Alternativverzweigung von links nach rechts ausgewertet. Die erste Transition von links, deren Transitionsbedingung den Wert TRUE hat, wird geöffnet und die nachfolgenden Schritte werden aktiviert (siehe aktiver Schritt).
Parallelzweig
Zwei oder mehr Verzweigungen in AS können als Parallelverzweigungen definiert werden. Jeder Parallelzweig muss mit einem Schritt beginnen und enden. Parallelverzweigungen können Alternativverzweigungen oder weitere Parallelverzweigungen beinhalten. Eine Parallelverzweigung beginnt bei einer doppelten Linie (Parallelanfang) und endet bei einer doppelten Linie (Parallelende) oder bei einem Sprung.
Wenn der der Parallelanfangs-Linie vorangehende Schritt aktiv ist, und die Transitionsbedingung nach diesem Schritt den Wert TRUE hat, dann werden die ersten Schritte aller Parallelverzweigungen aktiv (siehe aktiver Schritt). Diese Zweige werden nun alle parallel zueinander abgearbeitet. Der Schritt nach der Parallelende-Linie wird aktiv, wenn alle vorangehenden Schritte aktiv sind, und die Transitionsbedingung vor diesem Schritt den Wert TRUE liefert.
Sprung
Ein Sprung ist eine Verbindung zu dem Schritt, dessen Name unter dem Sprungsymbol angegeben ist. Sprünge werden benötigt, weil es nicht erlaubt ist, nach oben führende oder sich überkreuzende Verbindungen zu schaffen.