Funktionsplaneditor
So sieht ein in FUP geschriebener Baustein unter dem entsprechenden TwinCAT PLC Control-Editor aus:
Editor für Funktionsplan
Der Funktionsplaneditor ist ein graphischer Editor. Er arbeitet mit einer Liste von Netzwerken, wobei jedes Netzwerk eine Struktur enthält, die jeweils einen logischen bzw. arithmetischen Ausdruck, den Aufruf eines Funktionsblocks, einer Funktion, eines Programms, einen Sprung oder eine Return-Anweisung darstellt. Die wichtigsten Befehle finden Sie im Kontextmenü (rechte Maustaste).
Cursorpositionen im FUP
Jeder Text ist eine mögliche Cursorposition. Der selektierte Text ist blau hinterlegt und kann nun geändert werden. Ansonsten ist die aktuelle Cursorposition durch ein gepunktetes Rechteck gekennzeichnet. Es folgt eine Aufzählung aller möglichen Cursorpositionen mit einem Beispiel:
1) Jedes Textfeld (mögliche Cursorpositionen schwarz umrahmt):
2) Jeder Eingang:
3) Jeder Operator, Funktion oder Funktionsbaustein:
4) Ausgänge, wenn danach eine Zuweisung oder ein Sprung kommt:
5) Das Linienkreuz über einer Zuweisung, einem Sprung oder einer Return-Anweisung:
6) Hinter dem äußerst rechten Objekt eines jeden Netzwerkes ("letzte Cursorposition", dies ist auch die Cursorposition, wenn ein Netzwerk selektiert wurde):
7) Das Linienkreuz unmittelbar vor einer Zuweisung:
Wie man den Cursor setzt
Der Cursor kann durch Klicken der Maus oder mit Hilfe der Tastatur auf eine bestimmte Position gesetzt werden. Mit den Pfeiltasten wird jeweils zur nächstliegenden Cursorposition in der ausgewählten Richtung gesprungen. Alle Cursorpositionen, einschließlich der Textfelder, können so erreicht werden. Ist die letzte Cursorposition selektiert, so kann mit den Pfeiltasten <nach oben> bzw. <nach unten> die letzte Cursorposition des vorhergehenden bzw. nachfolgenden Netzwerkes selektiert werden. Ein leeres Netzwerk enthält nur drei Fragezeichen "???". Durch Klicken hinter diese wird die letzte Cursorposition selektiert.
'Einfügen' 'Zuweisung' Kurzform: <Strg>+<A>
Dieser Befehl fügt eine Zuweisung ein. Eingefügt wird, je nach selektierter Position, unmittelbar vor dem selektierten Eingang (Cursorposition 2), unmittelbar nach dem selektierten Ausgang (Cursorposition 4), unmittelbar vor dem selektierten Linienkreuz (Cursorposition 5) oder am Ende des Netzwerkes (Cursorposition 6). Zu einer eingefügten Zuweisung kann anschließend der eingetragene Text "???" selektiert und durch die Variable, an die zugewiesen werden soll, ersetzt werden. Dazu können Sie auch die Eingabehilfe verwenden. Um zu einer existierenden Zuweisung eine weitere Zuweisung hinzuzufügen, benutzen Sie den Befehl 'Einfügen' 'Ausgang'.
'Einfügen' 'Sprung' Kurzform: <Strg>+<L>
Dieser Befehl fügt einen Sprung ein. Eingefügt wird, je nach selektierter Position, unmittelbar vor dem selektierten Eingang (Cursorposition 2), unmittelbar nach dem selektierten Ausgang (Cursorposition 4), unmittelbar vor dem selektierten Linienkreuz (Cursorposition 5) oder am Ende des Netzwerkes (Cursorposition 6). Zu einem eingefügten Sprung kann anschließend der eingetragene Text "???" selektiert und durch die Sprungmarke, an die gesprungen werden soll, ersetzt werden.
'Einfügen' 'Return' Kurzform: <Strg>+<R>
Dieser Befehl fügt eine RETURN-Anweisung ein. Eingefügt wird, je nach selektierter Position, unmittelbar vor dem selektierten Eingang (Cursorposition 2), unmittelbar nach dem selektierten Ausgang (Cursorposition 4), unmittelbar vor dem selektierten Linienkreuz (Cursorposition 5) oder am Ende des Netzwerkes (Cursorposition 6).
'Einfügen' 'Baustein' Kurzform: <Strg>+<B>
Mit diesem Befehl können Operatoren, Funktionen, Funktionsblöcke und Programme eingefügt werden. Es wird zunächst stets ein "AND"-Operator eingefügt. Dieser kann durch Selektieren und Überschreiben des Typ-Textes ("AND") in jeden anderen Operator, in jede Funktion, in jeden Funktionsblock und in jedes Programm umgewandelt werden. Mit der Eingabehilfe (<F2>) können Sie den gewünschten Baustein auswählen. Hat der neugewählte Baustein eine andere Mindestanzahl von Eingängen, so werden diese angehängt. Hat der neue Baustein eine kleinere Höchstzahl von Eingängen, so werden die letzten Eingänge gelöscht.
Bei Funktionen und Funktionsblöcken werden die formalen Namen der Ein- und Ausgänge angezeigt.
Bei Funktionsblöcken existiert ein editierbares Instanz-Feld über der Box. Wird durch Ändern des Typ-Textes ein anderer Funktionsblock aufgerufen, der nicht bekannt ist, wird eine Operator-Box mit zwei Eingängen und dem angegeben Typ angezeigt. Ist das Instanz-Feld angewählt, kann über <F2> die Eingabehilfe mit den Kategorien zur Variablenauswahl aufgerufen werden.
Der neue Baustein wird abhängig von der selektierten Position (siehe Cursorpositionen) eingefügt:
- Ist ein Eingang selektiert (Cursorposition 2), so wird der Baustein vor diesem Eingang eingefügt. Der erste Eingang dieses Bausteins wird mit dem Zweig links vom selektierten Eingang verbunden. Der Ausgang des neuen Bausteins wird mit dem selektierten Eingang verbunden.
- Ist ein Ausgang selektiert (Cursorposition 4), dann wird der Baustein nach diesem Ausgang eingefügt. Der erste Eingang des Bausteins wird mit dem selektierten Ausgang verbunden. Der Ausgang des neuen Bausteins wird mit dem Zweig, mit dem der selektierte Ausgang verbunden war, verbunden.
- Ist ein Baustein, eine Funktion oder ein Funktionsblock selektiert (Cursorposition 3), so wird das alte Element durch den neuen Baustein ersetzt. Die Zweige werden, soweit möglich, wie vor der Ersetzung verbunden. Wenn das alte Element mehr Eingänge hatte als das neue, dann werden die unverknüpfbaren Zweige gelöscht. Das gleiche gilt für die Ausgänge.
- Ist ein Sprung oder ein Return selektiert, so wird der Baustein vor diesem Sprung, bzw. Return eingefügt. Der erste Eingang des Bausteins wird mit dem Zweig links des selektierten Elements verbunden. Der Ausgang des Bausteins wird mit dem Zweig rechts des selektierten Elements verbunden.
- Ist die letzte Cursorposition eines Netzwerks selektiert (Cursorposition 6), so wird der Baustein nach dem letzten Element eingefügt. Der erste Eingang des Bausteins wird mit dem Zweig links der selektierten Position verbunden.
Alle Eingänge des Bausteins, die nicht verbunden werden konnten, erhalten den Text "???". Dieser Text muss angeklickt und in die gewünschte Konstante bzw. Variable geändert werden.
Steht rechts von einem eingefügten Baustein ein Ast, so wird dieser dem ersten Bausteinausgang zugeordnet. Ansonsten bleiben die Ausgänge unbelegt.
'Einfügen' 'Eingang' Kurzform: <Strg>+<U>
Dieser Befehl fügt einen Operatoreingang ein. Die Zahl der Eingänge ist bei vielen Operatoren variabel (z.B. ADD kann 2 oder mehr Eingänge haben). Um einen solchen Operator um einen Eingang zu erweitern, muss der Eingang, vor dem ein weiterer eingefügt werden soll (Cursorposition 1), oder der Operator selbst (Cursorposition 3), wenn ein unterster Eingang angefügt werden soll, selektiert werden.
Der eingefügte Eingang ist mit dem Text "???" belegt. Dieser Text muss angeklickt und in die gewünschte Konstante bzw. Variable geändert werden. Dazu können Sie auch die Eingabehilfe verwenden.
'Einfügen' 'Ausgang'
Dieser Befehl fügt zu einer existierenden Zuweisung eine zusätzliche Zuweisung hinzu. Diese Funktionalität dient dem Erstellen sogenannter Zuweisungskämme, d.h. der Zuweisung des aktuell an der Leitung anliegenden Wertes an mehrere Variablen.
Ist das Linienkreuz über einer Zuweisung (Cursorposition 5) bzw. der unmittelbar davor liegende Ausgang selektiert (Cursorposition 4), so wird nach den bereits vorhandenen Zuweisungen eine weitere angefügt.
Ist das Linienkreuz direkt vor einer Zuweisung selektiert (Cursorposition 4), so wird vor dieser Zuweisung eine weitere eingefügt.
Der eingefügte Ausgang ist mit dem Text "???" belegt. Dieser Text muss angeklickt und in die gewünschte Variable geändert werden. Dazu können Sie auch die Eingabehilfe verwenden.
'Extras' 'Negation' Kurzform: <Strg>+<N>
Mit diesem Befehl können Sie Eingänge, Ausgänge, Sprünge oder RETURN-Anweisungen negieren. Das Symbol für die Negation ist ein kleiner Kreis auf einer Verbindung.
Wenn ein Eingang selektiert ist (Cursorposition 2), dann wird dieser Eingang negiert.
Wenn ein Ausgang selektiert ist (Cursorposition 4), dann wird dieser Ausgang negiert.
Wenn ein Sprung oder ein Return markiert ist, dann wird der Eingang dieses Sprungs, bzw. Returns negiert. Eine Negation kann durch erneutes Negieren gelöscht werden.
'Extras' 'Set/Reset' Symbol:
Mit diesem Befehl können Ausgänge als Set bzw. Reset Ausgänge definiert werden. Ein Gatter mit Set Ausgang wird mit [S] und ein Gatter mit Reset Ausgang mit [R] dargestellt.
Set/Reset Ausgänge in FUP
Ein Set Ausgang wird auf TRUE gesetzt, wenn das zugehörige Gatter TRUE liefert. Der Ausgang behält nun diesen Wert, auch wenn das Gatter wieder auf FALSE zurückspringt. Ein Reset Ausgang wird auf FALSE gesetzt, wenn das zugehörige Gatter TRUE liefert. Der Ausgang behält seinen Wert, auch wenn das Gatter wieder auf FALSE zurückspringt. Bei mehrfachen Ausführen des Befehls wechselt der Ausgang zwischen Set-, Reset- und normalen Ausgang.
'Extras' 'Zoom' Kurzform: <Alt>+<Eingabetaste>
Mit diesem Befehl laden Sie einen selektierten Baustein in seinen Editor (Cursorposition 3). Handelt es sich um einen Baustein aus einer Bibliothek, so wird der Bibliotheksverwalter aufgerufen und der entsprechende Baustein angezeigt.
'Extras' 'Instanz öffnen'
Dieser Befehl entspricht dem Befehl 'Projekt' 'Instanz öffnen'.
Ausschneiden, Kopieren, Einfügen und Löschen in FUP
Die Befehle zum 'Ausschneiden', 'Kopieren', 'Einfügen' oder 'Löschen', befinden sich unter dem Menüpunkt 'Bearbeiten'.
Ist ein Linienkreuz selektiert (Cursorposition 5), so werden die darunter liegenden Zuweisungen, Sprünge oder RETURN-Anweisungen ausgeschnitten, gelöscht oder kopiert.
Ist ein Operator, eine Funktion oder ein Funktionsbaustein selektiert (Cursorposition 3), so werden das selektierte Objekt selbst, sowie alle an den Eingängen anliegenden Äste mit Ausnahme des ersten Astes ausgeschnitten, gelöscht oder kopiert. Ansonsten wird der gesamte vor der Cursorposition liegende Ast ausgeschnitten, gelöscht oder kopiert.
Nach dem Kopieren oder Ausschneiden liegt der gelöschte bzw. kopierte Teil in der Zwischenablage und kann nun beliebig oft eingefügt werden. Dazu muss zunächst die Einfügeposition ausgewählt werden.
Gültige Einfügepositionen sind Eingänge und Ausgänge. Wenn in die Zwischenablage ein Operator, eine Funktion oder ein Funktionsbaustein geladen wurde (zur Erinnerung: in diesem Fall liegen alle anliegenden Zweige außer dem ersten, mit in der Zwischenablage), wird der erste Eingang mit dem Ast vor der Einfügeposition verbunden.
Andernfalls wird der gesamte vor der Einfügeposition liegende Ast durch den Inhalt der Zwischenablage ersetzt. In jedem Fall wird das letzte eingefügte Element mit dem rechts von der Einfügeposition liegenden Ast verbunden.
Durch Ausschneiden und Einfügen lässt sich nun folgendes Problem lösen: In der Mitte eines Netzwerks wird ein neuer Operator eingefügt. Der rechts vom Operator liegende Ast ist nun mit dem ersten Eingang verbunden, muss aber mit dem 2. Eingang verbunden sein. Man selektiert nun den ersten Eingang und führt ein 'Bearbeiten' 'Ausschneiden' aus. Anschließend selektiert man den zweiten Eingang und führt ein 'Bearbeiten' 'Einfügen' aus. Somit hängt der Ast nun am 2. Eingang.
Der Funktionsplan im Online Modus
Im Funktionsplan können Breakpoints nur auf Netzwerke gesetzt werden. Wenn ein Breakpoint auf ein Netzwerk gesetzt wurde, dann wird das Netzwerknummernfeld blau dargestellt. Die Bearbeitung stoppt dann vor dem Netzwerk, auf dem der Breakpoint steht. In diesem Fall wird das Netzwerknummernfeld rot. Beim Steppen (Einzelschritt) wird von Netzwerk zu Netzwerk gesprungen.
Zu jeder Variablen, wird der aktuelle Wert dargestellt.
Ausnahme: Wenn der Eingang eines Funktionsblocks ein Ausdruck ist, wird nur die erste Variable des Ausdrucks gemonitort
Ein Doppelklick auf eine Variable öffnet den Dialog zum Schreiben einer Variablen. Hier ist es möglich, den aktuellen Wert der Variablen zu ändern. Bei boolschen Variablen erscheint kein Dialog, sie werden getoggelt. Der neue Wert wird rot und bleibt unverändert. Wenn der Befehl 'Online''Werte schreiben' gegeben wird, dann werden alle Variablen auf die gewählten Werte gesetzt und wieder schwarz dargestellt. Die Ablaufkontrolle starten Sie mit dem Menübefehl 'Online' 'Ablaufkontrolle'. Mit ihr können Sie die aktuellen Werte, die in den Netzwerken über die Verbindungslinien transportiert werden, einsehen. Wenn die Verbindungslinien keine boolschen Werte transportieren, dann wird der Wert in einem eigens eingefügten Feld angezeigt. Wenn die Linien boolsche Werte transportieren, dann werden sie, für den Fall, dass sie TRUE transportieren, blau eingefärbt. So kann der Informationsfluss während des Steuerungslaufs mitverfolgt werden.
Wenn Sie den Mauszeiger eine kurze Zeit über einer Variablen halten, wird der Typ, die Adresse und der Kommentar der Variablen in einem Tooltip angezeigt.