Ablaufspracheneditor

So sieht ein in AS geschriebener Baustein im TwinCAT PLC Control-Editor aus:
Ablaufspracheneditor 1:

Alle Editoren für Bausteine bestehen aus einem Deklarationsteil und einem Rumpf. Diese sind getrennt durch einen Bildschirmteiler.

Der Ablaufspracheneditor ist ein graphischer Editor. Die wichtigsten Befehle finden Sie im Kontextmenü (rechte Maustaste). Tooltips zeigen sowohl im Offline- als auch im Online Modus und gezoomtem Status die vollständigen Namen bzw. Ausdrücke von Schritten, Transitionen, Sprüngen, Sprungmarken, Qualifiern oder assoziierten Aktionen.

Für Informationen über die Ablaufsprache, siehe Kapitel Ablaufsprache(AS).

Der Editor für die Ablaufsprache muss auf die Besonderheiten von AS eingehen. Dazu dienen die folgenden Menüpunkte:

Blöcke markieren im AS

Ein markierter Block ist eine Menge von AS-Elementen, die von einem gepunkteten Rechteck umgeben sind. (Im Beispiel oben etwa ist der Schritt Schalt1 markiert.)

Man kann ein Element (einen Schritt, eine Transition oder einen Sprung) auswählen, indem man den Mauszeiger auf dieses Element setzt, und die linke Maustaste drückt, oder indem man die Pfeiltasten benützt. Um eine Menge von mehreren Elementen zu markieren, drücken Sie zusätzlich zu einem bereits markierten Block die <Umschalttaste>, und wählen das Element in der linken oder rechten unteren Ecke der Menge aus. Die sich ergebende Auswahl ist die kleinste zusammenhängende Menge von Elementen, die diese beiden Elemente beinhaltet.

Beachten Sie, dass alle Befehle nur dann ausgeführt werden können, wenn sie nicht den Sprachkonventionen widersprechen.

'Einfügen''Schritt-Transition (davor)' Kurzform: <Strg>+<T>

Dieser Befehl fügt im AS-Editor einen Schritt gefolgt von einer Transition vor dem markierten Block ein.

'Einfügen''Schritt-Transition (danach)' Kurzform: <Strg>+<E>

Dieser Befehl fügt im AS-Editor einen Schritt gefolgt von einer Transition nach der ersten Transition im markierten Block ein.

'Einfügen' 'Alternativzweig (rechts)' Kurzform: <Strg>+<A>

Dieser Befehl fügt im AS-Editor eine Alternativverzweigung als rechte Verzweigung des markierten Blocks ein. Der markierte Block muss hierfür mit einer Transition beginnen und enden. Der neue Zweig besteht dann aus einer Transition.

'Einfügen' 'Alternativzweig (links)'

Dieser Befehl fügt im AS-Editor eine Alternativverzweigung als linke Verzweigung des markierten Blocks ein. Der markierte Block muss hierfür mit einer Transition beginnen und enden. Der neue Zweig besteht dann aus einer Transition.

'Einfügen' 'Parallelzweig (rechts)' Kurzform: <Strg>+<L>

Dieser Befehl fügt im AS-Editor eine parallele Verzweigung als rechte Verzweigung des markierten Blocks ein. Der markierte Block muss hierfür mit einem Schritt beginnen und enden. Der neue Zweig besteht dann aus einem Schritt. Um Sprünge auf die entstandene Parallelverzweigung zu ermöglichen, muss sie mit einer Sprungmarke versehen werden.

'Einfügen' 'Parallelzweig (links)'

Dieser Befehl fügt im AS-Editor eine parallele Verzweigung als linke Verzweigung des markierten Blocks ein. Der markierte Block muss hierfür mit einem Schritt beginnen und enden. Der neue Zweig besteht dann aus einem Schritt. Um Sprünge auf die entstandene Parallelverzweigung zu ermöglichen, muss sie mit einer Sprungmarke (siehe 'Extras' 'Marke zu Parallelzweig hinzufügen') versehen werden.

'Einfügen' 'Sprung' Kurzform: <Strg>+<U>

Dieser Befehl fügt im AS-Editor einen Sprung am Ende des Zweigs ein, zu dem der markierte Block gehört. Die Verzweigung muss hierfür eine Alternativverzweigung sein. Zu einem eingefügten Sprung kann anschließend der eingetragene Text 'Step' selektiert und durch den Schrittnamen, zu dem gesprungen werden soll, ersetzt werden.

'Einfügen' 'Transition-Sprung'

Dieser Befehl fügt im AS-Editor eine Transition gefolgt von einem Sprung am Ende der ausgewählten Verzweigung ein. Die Verzweigung muss hierfür eine parallele Verzweigung sein.

Zu einem eingefügten Sprung kann anschließend der eingetragene Text 'Step' selektiert und durch den Schrittnamen bzw. die Sprungmarke einer Parallelverzweigungen, zu dem/der gesprungen werden soll, ersetzt werden.

'Einfügen' 'Eingangsaktion hinzufügen'

Mit diesem Befehl können Sie zu einem Schritt eine Eingangsaktion hinzufügen. Eine Eingangsaktion wird nur einmal ausgeführt, gleich nachdem der Schritt aktiv geworden ist. Die Eingangsaktion kann in einer beliebigen Sprache implementiert werden.

Ein Schritt mit Eingangsaktion wird durch ein 'E' in der linken unteren Ecke gekennzeichnet.

'Einfügen' 'Ausgangsaktion hinzufügen'

Mit diesem Befehl können Sie einem Schritt eine Ausgangsaktion hinzufügen. Eine Ausgangsaktion wird nur einmal ausgeführt, bevor der Schritt deaktiviert wird. Die Ausgangsaktion kann in einer beliebigen Sprache implementiert werden.

Ein Schritt mit Ausgangsaktion wird durch ein 'X' in der rechten unteren Ecke gekennzeichnet.

'Extras' 'Paralellzweig einfügen (rechts)'

Dieser Befehl fügt den Inhalt der Zwischenablage als rechte Parallelverzweigung des markierten Blocks ein. Dafür muss der markierte Block mit einem Schritt beginnen und enden. Der Inhalt der Zwischenablage muss ebenfalls ein AS-Block sein, der mit einem Schritt beginnt und endet.

'Extras' 'Marke zu Parallelzweig hinzufügen'

Um eine neu eingefügte Parallelverzweigung mit einer Sprungmarke zu versehen, muss die vor der Parallelverzweigung liegende Transition markiert werden und der Befehl 'Marke zu Parallelzweig hinzufügen' ausgeführt werden. Daraufhin wird die Parallelverzweigung mit einem Standardnamen "Parallel" und einer angehängten laufenden Nummer versehen, die nach den Regeln für Bezeichnernamen editiert werden können. Im nachfolgenden Beispiel wurde "Parallel" durch "Par_1_2" ersetzt und der Sprung nach Transition "Ende" auf diese Sprungmarke gelenkt.

Ablaufspracheneditor 2:

Sprungmarke löschen

Eine Sprungmarke wird durch Löschen des Sprungmarken-Textes gelöscht.
'Extras' 'Einfügen danach'

Dieser Befehl fügt den AS-Block in der Zwischenablage nach dem ersten Schritt bzw. der ersten Transition des markierten Blocks ein (normales Kopieren fügt ihn vor dem markierten Block ein). Das wird nur dann ausgeführt, wenn die resultierende AS-Struktur nach den Sprachnormen korrekt ist.

'Extras' 'Zoom Aktion/Transition' Kurzform: <Alt>+<Eingabetaste>

Die Aktion des ersten Schritts des markierten Blocks bzw. der Transitionsrumpf der ersten Transition des markierten Blocks wird in der jeweiligen Sprache, in der er geschrieben ist, in den Editor geladen. Wenn die Aktion oder der Transitionsrumpf leer ist, dann muss die Sprache ausgewählt werden, in der er geschrieben werden soll.

'Extras' 'Lösche Aktion/Transition'

Mit diesem Befehl können Sie die Aktionen des ersten Schritts des markierten Blocks bzw. der Transitionsrumpf der ersten Transition des markierten Blocks löschen.

Ist bei einem Schritt nur entweder die Aktion, die Eingangsaktion oder die Ausgangsaktion implementiert, so wird diese mit dem Befehl gelöscht. Andernfalls erscheint ein Dialog, in dem gewählt werden kann, welche Aktion bzw. Aktionen gelöscht werden sollen.

Steht der Cursor in einer Aktion eines IEC-Schritts, wird nur diese Assoziation gelöscht. Ist ein IEC-Schritt mit einer asoziierten Aktion selektiert, so wird diese Assoziation gelöscht. Bei einem IEC-Schritt mit mehreren Aktionen erscheint ein Dialog zur Auswahl.

'Extras' 'Schritt Attribute'

Mit diesem Befehl öffnen Sie einen Dialog, in dem Sie Attribute zu dem markierten Schritt editieren können.

Ablaufspracheneditor 3:

Dialog zum Editieren von Schrittattributen

Sie können drei verschiedene Einträge im Schrittattribute-Dialog vornehmen. Unter Minimale Zeit geben Sie die Zeitdauer ein, die die Abarbeitung dieses Schritts mindestens dauern soll. Unter Maximale Zeit geben Sie die Zeitdauer ein, die die Abarbeitung des Schrittes höchstens dauern soll. Beachten Sie, dass die Einträge vom Typ TIME sind , d.h. verwenden Sie eine TIME-Konstante (z.B. T#3s) oder eine Variable vom Typ TIME.

Unter Kommentar können Sie einen Kommentar zum Schritt eingeben. Im Dialog 'Ablaufsprachen Optionen', den Sie über 'Extras' 'Optionen' öffnen, können Sie dann einstellen, ob im AS-Editor die Kommentare oder die Zeiteinstellung zu Ihren Schritten dargestellt werden soll. Rechts neben dem Schritt erscheint dann entweder der Kommentar oder die Zeiteinstellungen.

Bei Überschreiten der Maximalzeit werden AS-Flags gesetzt, die der Benutzer abfragen kann.

Ablaufspracheneditor 4:

Im Beispiel ist ein Schritt dargestellt, dessen Ausführung mindestens zwei und höchstens zehn Sekunden dauern soll. Im Online Modus wird zusätzlich zu diesen beiden Zeiten angezeigt, wie lange der Schritt bereits aktiv ist.

AS-Flags

Wenn im AS ein Schritt länger aktiv ist, als in seinen Attributen angegeben, dann werden einige spezielle Flags gesetzt. Darüber hinaus gibt es weitere Variablen, die Sie definieren können, um den Ablauf in der Ablaufsprache zu steuern. Um die Flags zu benutzen, müssen Sie sie global oder lokal, als Aus- oder Eingabevariable deklarieren.

SFCEnableLimit: Diese spezielle Variable ist vom Typ BOOL. Wenn sie TRUE ist, werden Zeitüberschreitungen bei den Schritten in SFCError registriert. Ansonsten werden Zeitüberschreitungen ignoriert.

SFCInit: Wenn diese boolsche Variable TRUE ist, dann wird die Ablaufsprache auf den Init-Schritt zurückgesetzt. Die anderen AS-Flags werden ebenfalls zurückgesetzt (Initialisierung). Solange die Variable TRUE ist, bleibt der Init-Schritt gesetzt (aktiv), wird aber nicht ausgeführt. Erst wenn SFCInit wieder auf FALSE gesetzt wird, wird der Baustein normal weiterbearbeitet.

SFCReset: Diese Variable vom Typ BOOL verhält sich ähnlich wie SFCInit. Im Unterschied zu dieser wird allerdings nach der Initialisierung der Initschritt weiter abgearbeitet. Dies könnte beispielsweise dazu benützt werden, um im Initschritt das SFCReset-Flag gleich wieder auf FALSE zu setzen

SFCQuitError: Solange diese boolsche Variable TRUE ist, wird die Abarbeitung des AS-Diagramms angehalten, eine eventuelle Zeitüberschreitung in der Variablen SFCError wird dabei zurückgesetzt. Wenn die Variable wieder auf FALSE gesetzt wird, werden alle bisherigen Zeiten in den aktiven Schritten zurückgesetzt.

SFCPause: Solange diese boolsche Variable TRUE ist, wird die Abarbeitung des AS-Diagramms angehalten.

SFCTrans: Diese boolsche Variable wird TRUE, wenn eine Transition schaltet.

SFCError: Diese boolsche Variable wird TRUE, wenn in einem AS-Diagramm eine Zeitüberschreitung aufgetreten ist. Wenn im Programm nach der ersten Zeitüberschreitung eine weitere auftritt, wird diese nicht mehr registriert, wenn die Variable SFCError vorher nicht wieder zurückgesetzt wurde.

SFCErrorStep: Diese Variable ist vom Typ STRING. Wird durch SFCError eine Zeitüberschreitung registriert, wird in dieser Variable der Name des Schritts gespeichert, der die Zeitüberschreitung verursacht hat.

SFCErrorPOU: Diese Variable vom Typ STRING erhält im Falle einer Zeitüberschreitung den Namen des Bausteins, in dem die Zeitüberschreitung aufgetreten ist.

SFCCurrentStep: Diese Variable ist vom Typ STRING. In dieser Variablen wird der Name des Schritts gespeichert, der aktiv ist, unabhängig von der Zeitüberwachung. Bei einer Parallelverzweigung wird der Schritt im äußersten rechten Zweig gespeichert.
Wenn einmal eine Zeitüberschreitung aufgetreten ist, und die Variable SFCError nicht wieder zurückgesetzt wurde, wird keine weitere Zeitüberschreitung registriert.

SFCErrorAnalyzation: Diese Variable vom Typ STRING gibt den Transitionsausdruck bzw. jede Variable eines zusammengesetzten Ausdrucks aus, welche zu einem FALSE der Transition führt und damit zu einer Zeitüberschreitung im vorangehenden Schritt. Voraussetzung dafür ist die Deklaration des Flags SFCError, das die Zeitüberschreitung registriert. SFCErrorAnalyzation greift auf eine Funktion AppendErrorString der Bibliothek TcSystem.Lib zurück. Der Ausgabestring trennt mehrere Komponenten durch das Zeichen "|".

SFCTip, SFCTipMode: Diese Variablen vom Typ BOOL erlauben den Tipp-Betrieb des SFC. Wenn dieser durch SFCTipMode=TRUE eingeschaltet ist, kann nur zum nächsten Schritt weitergeschaltet werden, indem SFCTip auf TRUE gesetzt wird. Solange SFCTipMode auf FALSE gesetzt ist, kann zusätzlich auch über die Transitionen weitergeschaltet werden.

'Extras' 'Zeitenüberblick'

Mit diesem Befehl öffnen Sie ein Fenster, in dem Sie die Zeiteinstellungen Ihrer AS-Schritte editieren können:

Ablaufspracheneditor 5:

Zeitgrenzenübersicht zu einem AS-Baustein

In der Zeitgrenzenübersicht werden alle Schritte Ihres AS-Bausteins dargestellt. Wenn Sie zu einem Schritt eine Zeitbegrenzung angegeben haben, dann wird diese rechts vom Schritt angezeigt (zuerst die Untergrenze, dann die Obergrenze). Außerdem können Sie die Zeitbegrenzungen editieren. Klicken Sie dazu in der Übersicht auf den gewünschten Schritt. Der Schrittname wird dann unten im Fenster angezeigt, gehen Sie in das Feld Minimale Zeit oder Maximale Zeit, und geben Sie dort die gewünschte Zeitbegrenzung ein.

Beachten Sie, dass die Einträge vom Typ TIME sind, d.h. verwenden Sie eine TIME-Konstante (z.B. T#3s) oder eine Variable vom Typ TIME. Wenn Sie das Fenster mit OK schließen, werden alle Veränderungen abgespeichert.

Im Beispiel haben die Schritte 2 und 6 eine Zeitbegrenzung. Schalt1 dauert mindestens zwei und höchstens zehn Sekunden. Schalt2 dauert mindestens sieben und höchstens acht Sekunden.

'Extras' 'Optionen'

Mit diesem Befehl öffnen Sie einen Dialog, in dem Sie verschiedene Optionen zu Ihrem AS-Baustein einstellen können.

Ablaufspracheneditor 6:

Im AS-Optionen-Dialog können Sie fünf Einträge vornehmen. Unter Schritthöhe können Sie eingeben, wie viele Zeilen ein AS-Schritt in Ihrem AS-Editor hoch sein soll. 4 ist hier die Standardeinstellung. Unter Schrittbreite können Sie eingeben wie viele Spalten ein Schritt breit sein soll. 6 ist hier die Standardeinstellung. Die Kommentarbreite definiert die Anzahl der Spalten, die dargestellt werden, wenn Sie den Kommentar beim Schritt mit anzeigen lassen.

Unter Anzeige beim Schritt können Sie einstellen, welche der Eingaben, die Sie unter 'Extras' 'Schritt Attribute' gemacht haben, angezeigt werden sollen. Sie können Nichts anzeigen lassen, den Kommentar oder die Zeitüberwachung.

'Extras' 'Aktion assoziieren'

Mit diesem Befehl können Aktionen und boolsche Variablen zu IEC-Schritten assoziiert werden. Rechts neben den IEC-Schritt wird ein weiteres zweigeteiltes Kästchen für die Assoziation einer Aktion angehängt. Vorbelegt ist es im linken Feld mit dem Qualifier 'N' und dem Namen 'Action'. Beide Vorbelegungen können geändert werden. Dazu können Sie die Eingabehilfe benutzen.

Neue Aktionen für IEC-Schritte werden im Object Organizer zu einem AS-Baustein mit dem Befehl 'Projekt' 'Aktion hinzufügen' angelegt.

'Extras' 'IEC-Schritte benutzen'

Ist dieser Befehl aktiviert (erkennbar am Haken vor dem Menüpunkt und am gedrückten Symbol in der Funktionsleiste), werden beim Einfügen von Schritt-Transitionen und Parallelzweigen statt den vereinfachten Schritten IEC-Schritte eingefügt.

Ist diese Option gewählt, wird beim Anlegen eines AS-Bausteins der Init-Schritt als IEC-Schritt angelegt.

Die Ablaufsprache im Online Modus

Beim Ablaufspracheneditor werden im Onlinebetrieb die aktuell aktiven Schritte als blaue Schritte angezeigt. Wenn Sie es unter 'Extras' 'Optionen' eingestellt haben, dann wird neben den Schritten die Zeitüberwachung dargestellt. Unter den von Ihnen eingegebenen Unter- und Obergrenzen erscheint eine dritte Zeitangabe von der Sie ablesen können, wie lange der Schritt bereits aktiv ist.

Ablaufspracheneditor 7:

Im Bild ist der abgebildete Schritt bereits seit 8 Sekunden und 410 Millisekunden aktiv. Er muss aber mindestens 7 Minuten aktiv sein, bevor der Schritt verlassen wird.

Mit 'Online' 'Breakpoint an/aus' kann ein Breakpoint auf einen Schritt gesetzt werden, außerdem in einer Aktion an den für die verwendete Sprache zugelassenen Stellen. Die Bearbeitung hält dann vor Ausführung dieses Schrittes bzw. Programmstelle der Aktion an. Schritte bzw. Programmstellen, auf die ein Breakpoint gesetzt ist, sind hellblau markiert.

Sind in einer Parallelverzweigung mehrere Schritte aktiv, so wird der aktive Schritt, dessen Aktion als nächstes bearbeitet wird, rot dargestellt.
Wurden IEC-Schritte verwendet, werden alle aktiven Aktionen im Onlinebetrieb blau dargestellt.

Auch in AS wird ein schrittweises Steppen unterstützt:

Mit dem Befehl 'Online' 'Einzelschritt über' wird stets zum nächsten Schritt gesteppt, dessen Aktion ausgeführt wird. Ist die aktuelle Position

Mit 'Online' 'Einzelschritt in' kann zusätzlich in Aktionen hineingesteppt werden. Soll in eine Eingangs-, Ausgangs- oder IEC-Aktion gesprungen werden, muss dort ein Breakpoint gesetzt sein. Innerhalb der Aktionen stehen dem Anwender alle Debugging-Funktionalitäten des entsprechenden Editors zur Verfügung.

Wenn Sie den Mauszeiger im Deklarationseditor eine kurze Zeit über einer Variablen halten, wird der Typ, die Adresse und der Kommentar der Variablen in einem Tooltip angezeigt

Ablaufspracheneditor 8:

Ablaufsprache im Online Modus mit einem aktiven Schritt (Schalt1) und einem Breakpoint (Step10)

VORSICHT

Undefinierter Zustand

Wenn Sie einen Schritt umbenennen und Online Change durchführen während genau dieser Schritt aktiv ist, stoppt das Programm in undefiniertem Zustand.

Abarbeitungsreihenfolge der Elemente einer Schrittkette:

  1. Zunächst werden alle Action Control Block Flags der IEC-Aktionen zurückgesetzt, die in dieser Schrittkette verwendet werden. (Nicht jedoch die Flags von IEC-Aktionen, die innerhalb von Aktionen aufgerufen werden).
  2. Für alle Schritte wird in der Reihenfolge, die sie in der Schrittkette einnehmen (von oben nach unten und von links nach rechts) überprüft, ob die Bedingung für die Ausführung der Ausgangsaktion gegeben ist und gegebenenfalls diese ausgeführt.
  3. Für alle Schritte wird in der Reihenfolge, die sie in der Schrittkette einnehmen, überprüft, ob die Bedingung für die Eingangsaktion gegeben ist und gegebenenfalls diese ausgeführt.
  4. Für alle Schritte wird in der Reihenfolge, die sie in der Schrittkette einnehmen, folgendes durchgeführt:
    • Gegebenenfalls wird die abgelaufene Zeit in die dazugehörige Schrittvariable kopiert.
    • Gegebenenfalls wird eine Zeitüberschreitung überprüft und die AS-Error-Flags werden entsprechend bedient.
    • Bei Nicht-IEC-Schritten wird nun die dazugehörige Aktion ausgeführt.
  5. Die IEC-Aktionen, die in der Schrittkette verwendet werden, werden in alphabetischer Reihenfolge ausgeführt. Dabei wird in zwei Durchläufen durch die Liste der Aktionen gegangen. Im ersten Durchlauf werden alle im aktuellen Zyklus deaktivierten IEC-Aktionen ausgeführt. Im zweiten Durchlauf werden alle im aktuellen Zyklus aktiven IEC-Aktionen ausgeführt.
  6. Die Transitionen werden ausgewertet: Wenn der Schritt im aktuellen Zyklus aktiv war und die nachfolgende Transition TRUE liefert (und eventuell die minimal aktive Zeit bereits abgelaufen ist), dann wird der nachfolgende Schritt aktiviert.

Folgendes ist zur Implementierung von Aktionen zu beachten:

Es kann vorkommen, dass eine Aktion in einem Zyklus mehrfach ausgeführt wird, weil sie in mehreren Schrittketten assoziiert ist. (beispielsweise könnte ein SFC zwei IEC-Aktionen A und B besitzen, die beide in SFC implementiert sind, und die beide die IEC-Aktion C aufrufen, dann können im selben Zyklus die IEC-Aktionen A und B aktiv sein und in beiden IEC-Aktionen kann wiederum die IEC-Aktion C aktiv sein, dann würde C zweimal aufgerufen).

Wird dieselbe IEC-Aktion gleichzeitig in verschiedenen Ebenen eines SFC verwendet, könnte dies durch die oben beschriebene Abarbeitungsreihenfolge zu unerwünschten Effekten führen. Deshalb wird in diesem Fall eine Fehlermeldung ausgegeben.

Möglicherweise kann dies bei der Bearbeitung von Projekten, die mit älteren Versionen von TwinCAT PLC Control erstellt wurden, auftreten.

Ablaufspracheneditor 9:

Beim Monitoring von Ausdrücken (z.B. A AND B) in Transitionen wird nur der "Gesamtwert" der Transition dargestellt.