Geplant für Release 0.4
FBD ist für Release 0.4 geplant und wird derzeit noch nicht übersetzt. Für lauffähige Programme nutzen Sie heute Strukturierten Text (ST). Siehe auch die Roadmap.Überblick
Das Function Block Diagram (FBD) ist eine der drei grafischen IEC-61131-3- Sprachen, die ForgeIEC Studio unterstützt. Ein FBD-Programm besteht aus Funktions- und Funktionsblock-Aufrufen, die über explizite Drahtverbindungen (Wires) miteinander und mit Eingangs- bzw. Ausgangsvariablen verschaltet werden. Im Gegensatz zum Ladder Diagram gibt es im FBD keine Strom-Schienen — jede Verbindung ist ein einzelner Draht, der einen Output-Pin mit einem oder mehreren Input-Pins koppelt.
Editor-Layout
Der FBD-Editor ist ein dreiteiliges Widget:
+---------------------------------------------+
| Toolbar (Select | Wire | Block | Var | ...) |
+--------------------------------+------------+
| | |
| QGraphicsView | Variablen |
| Grid + Zoom + Pan | -tabelle |
| | (rechts) |
| | |
+--------------------------------+------------+
- Toolbar oben: Werkzeugumschaltung (Select, Wire, Block einfügen, In-/Out-Variable einfügen, Kommentar, Zoom).
- QGraphicsView: Die eigentliche Zeichenfläche mit Hintergrund-Grid (10 px fein, 50 px Major) und Maus-Pan (Mittlere Maustaste). Mausrad zoomt um den Cursor.
- Variablentabelle rechts: Andockbar, zeigt die lokalen Variablen der POU. Drag-and-Drop aus der Tabelle erzeugt ein In-/Out-Variable-Item im Editor.
Werkzeuge
| Tool | Wirkung |
|---|---|
| Select | Auswahl, Verschieben, Löschen von Items. |
| Wire | Klick auf einen Output-Port, dann Klick auf einen Input-Port — Verbindung wird angelegt. |
| Block einfügen | Funktion oder Funktionsblock aus der Library platzieren. Die Pin-Liste (Inputs links, Outputs rechts) wird automatisch aus der Library-Definition übernommen. |
| InVar / OutVar einfügen | Eingangs- oder Ausgangsvariable als Item platzieren. Der Name wird über ein Eingabefeld gesetzt und kann eine GVL-, Anvil- oder Bellows-qualifizierte Variable sein. |
| Kommentar | Freitext-Notiz ohne Semantik. |
Blocks und Pins
Ein Block-Item stellt einen Aufruf einer Funktion (ADD, SEL, …) oder
eines Funktionsblocks (TON, CTU, …) dar. Das Item zeigt im Header den
Typ-Namen, darunter den Instanz-Namen (nur bei FBs), und auf den Seitenrändern
die Ports:
+---- TON -----+
| tonA |
IN --| IN Q|-- timeUp
PT --| PT ET|-- elapsed
+--------------+
Inputs liegen immer links, Outputs immer rechts. Negierte Pins werden mit einem kleinen Kreis am Port markiert.
Library-Drag
Aus dem Library-Panel kann jeder Standard- oder User-Block per Drag-and-Drop
direkt in den Editor gezogen werden. Beim Loslassen wird die Pin-Liste der
Library-Definition entnommen, und bei Funktionsblöcken erzeugt der Editor
automatisch eine VAR-Instanz in der lokalen Variablen-Sektion.
Round-Trip zu ST
Beim Compile übersetzt der ForgeIEC-Compiler den FBD-Body in Structured Text. Topologische Sortierung der Blöcke nach Datenfluss bestimmt die Ausführungsreihenfolge. Damit gilt: jeder FBD-Body ist semantisch gleichwertig zu einem ST-Body, und die Wahl der Sprache ist eine reine Lesbarkeitsfrage.
Beispiel — Einschaltverzögerung mit TON
Eine TON (on-delay timer) verzögert ein Eingangssignal um eine
einstellbare Zeit. In FBD würden Sie
- eine InVariable
startan denIN-Pin derTON-Instanz drahten, - eine InVariable mit Wert
T#5san denPT-Pin, - den
Q-Output mit einer OutVariablelampeverbinden.
In ST sieht das so aus:
PROGRAM PLC_PRG
VAR
start AT %IX0.0 : BOOL;
lampe AT %QX0.0 : BOOL;
tmr : TON;
END_VAR
tmr(IN := start, PT := T#5s);
lampe := tmr.Q;
END_PROGRAM
Genau diese Form generiert der Compiler aus dem FBD-Diagramm — die
Variablen-Instanz tmr ist die Block-Box, und die beiden Wires sind die
beiden :=-Zuweisungen.
Verwandte Themen
- Library — Welche Blöcke stehen im Block-Picker zur Verfügung.
- Variables Panel — Variablendeklaration und Adress-Pool.
- Ladder Diagram — Strompfad-orientierte Schwester-Sprache.