Programmieren in CFC

Sie können im CFC-Editor Programmierbausteine miteinander verdrahten und anschauliche Blockschaltbilder erstellen.

Der Editor unterstützt Sie folgendermaßen:

Anlegen einer POU in der Implementierungssprache Continous Function Chart (CFC)

1. Selektieren Sie im Projektmappen-Explorer im SPS-Projektbaum einen Ordner.
2. Wählen Sie im Kontextmenü den Befehl Hinzufügen > POU...
Der Dialog POU hinzufügen öffnet sich.
3. Geben Sie einen Namen ein und wählen Sie die Implementierungssprache Continuous Function Chart (CFC).
4. Klicken Sie auf Öffnen.
TwinCAT fügt die POU zum SPS-Projektbaum hinzu und öffnet sie im Editor.

Elemente einfügen und mit Verbindungslinien verschalten

1. Platzieren Sie ein Element Baustein und ein Element Ausgang im Editor. Ziehen Sie dazu die Elemente aus der Ansicht Werkezugkasten mit der Maus in den Editor.
2. Klicken Sie auf den Ausgang des Elements Baustein.
Der Ausgang wird mit einem roten Quadrat gekennzeichnet.
3. Ziehen Sie mit gedrückter Maustaste eine Verbindungslinie vom Ausgang des Elements Baustein zum Eingang des Elements Ausgang.
Beim Erreichen des Eingangspins ändert der Cursor sein Symbol.
4. Lassen Sie die Maustaste los.
Der Ausgangspin des Bausteins ist mit dem Eingangspin des Ausgangs verdrahtet.
Programmieren in CFC 1:

Alternativ können Sie auch die beiden Pins mit gedrückter [Strg]-Taste selektieren und den Befehl Selektierte Anschlüsse verbinden im Menü CFC oder im Kontextmenü auswählen.

Instanzen aufrufen

1. Erstellen Sie ein neues Projekt und fügen Sie ein Standard-SPS-Projekt hinzu
2. Erstellen Sie den Funktionsbaustein FB_Sample in der Implementierungssprache ST mit Eingängen und Ausgängen:
FUNCTION_BLOCK FB_Sample
VAR_INPUT
    nIn1 : INT;
    nIn2 : INT;
    sIn1 : STRING := ‘Name’;
    bIn1 : BOOL;
END_VAR
VAR_OUTPUT
    nOut : INT;
    sOut : STRING;
    bOut : BOOL;
END_VAR
VAR
END_VAR
nOut := nIn1 + nIn2;

sResult := sIn1;

IF bIn1 THEN
bOut := TRUE;
END_IF
3. Erstellen Sie das Programm PRG_First in der Implementierungssprache ST .
4. Instanziieren Sie Funktionsbausteine und deklarieren Sie Variablen:
PROGRAM PRG_First 
VAR
    nCounter  : INT;
    fbSample1 : FB_Sample;
    fbSample2 : FB_Sample;
    nResult   : INT;
    sResult   : STRING;
    bResult   : BOOL;
END_VAR
5. Ziehen Sie ein Element Baustein aus der Ansicht Werkzeugkasten in den Editor.
6. Klicken Sie auf das Feld ??? und geben Sie ADD ein.
Der Bausteintyp ist ADD. Der Baustein fungiert als Addierer.
7. Klicken Sie im Deklarationseditor auf die Zeilennummer 3.
Die Deklarationszeile von nCounter ist selektiert.
8. Klicken Sie in die Selektion und ziehen Sie die selektierte Variable in die Implementierung. Fokussieren Sie dort einen Eingang des Bausteins ADD.
Ein Eingang wurde erzeugt, deklariert und mit dem Baustein verbunden.
9. Klicken Sie nochmals in die Selektion und ziehen Sie die Variable zum Ausgang des Bausteins ADD.
Ein Ausgang wurde erzeugt, deklariert und mit dem Baustein verbunden.
10. Ziehen Sie aus der Ansicht Werkzeugkasten ein Element Eingang in die Implementierung.
11. Klicken Sie auf dessen Feld ??? und geben Sie 1 ein.
12. Verbinden Sie den Eingang 1 mit einem Eingang am Baustein ADD.
Ein Netzwerk ist programmiert. Zur Laufzeit zählt das Netzwerk die Zyklen und speichert das Ergebnis in nCounter.
Programmieren in CFC 2:
13. Klicken Sie im Deklarationseditor auf die Zeilennummer 4.
Die Zeile mit fbSample1 ist selektiert.
14. Klicken Sie in die Selektion und ziehen Sie die selektierte Instanz in die Implementierung.
Die Instanz erscheint als Baustein im Editor. Typ, Name und die Bausteinpins werden entsprechend angezeigt.
Programmieren in CFC 3:
15. Ziehen Sie die Instanz fbSample2 in den Editor. Verschalten Sie die Instanzen untereinander und mit Eingängen und Ausgängen.
Beispiel:
Programmieren in CFC 4:

Ein Programm in ST mit gleicher Funktionalität könnte folgendermaßen aussehen:

PROGRAM PRG_First_ST 
VAR
    nCounter  : INT;
    fbSample1 : FB_Sample;
    fbSample2 : FB_Sample;
    nResult   : INT;
    sResult   : STRING;
    bResult   : BOOL;
END_VAR
nCounter := nCounter + 1;
fbSample1(nIn1 := 16, nIn2 := 32, sIn1 := ‘First’, xItem := TRUE, nIn3 := 2, nOut => fbSample2.nIn1, bOut => fbSample2.bIn1);
fbSample2(nIn2 := fbSample1.nOut, sIn1 := ‘Second’, nIn3 := 2, nOut => nResult, sOut => sResult, bOut => bResult);

Verbindungsmarken erzeugen

Sie haben einen CFC-Programmierbaustein mit verbundenen Elementen.
1. Selektieren Sie eine Verbindungslinie zwischen zwei Elementen.
Die Verbindungslinie wird markiert, der Eingang oder der Ausgang der Elemente wird mit einem roten Quadrat markiert Programmieren in CFC 5:.
Programmieren in CFC 6:
2. Wählen Sie im Kontextmenü oder im Menü CFC den Befehl Verbindungsmarke.
Die Verbindung wird aufgetrennt und durch eine Verbindungsmarke - Quelle und eine Verbindungsmarke - Ziel ersetzt. Der Name der Marken wird automatisch erzeugt.
Programmieren in CFC 7:
3. Klicken Sie in die Verbindungsmarke-Quelle.
Der Name kann editiert werden.
4. Geben Sie einen Namen für die Quellverbindungsmarke ein.
Quellverbindungsmarke und Zielverbindungsmarke haben den gleichen Namen.
Programmieren in CFC 8:

Siehe auch:

Kollisionen lösen und Verbindungslinien durch Kontrollpunkte fixieren

Das nachfolgende Beispiel zeigt Ihnen die Verwendung des Befehls Alle Verbindungen routen, sowie die Verwendung von Kontrollpunkten.

1. Platzieren Sie die Elemente Eingang und Ausgang und verbinden Sie die Elemente.
Programmieren in CFC 9:
2. Platzieren Sie zwei Elemente Baustein auf der Linie.
Die Verbindungslinie und die Bausteine werden wegen der Kollision rot gezeichnet.
Programmieren in CFC 10:
3. Wählen Sie im Menü CFC > Routing den Befehl Alle Verbindungen routen.
Die Kollision wird gelöst.
Programmieren in CFC 11:
4. Verändern Sie schrittweise die Verbindungslinien.
Programmieren in CFC 12:
Die Verbindungslinie wurde manuell verändert und ist nun für das Autorouting gesperrt. Dies wird durch ein Schloss am Verbindungsende angezeigt.
Programmieren in CFC 13:
5. Selektieren Sie die Verbindungslinie und wählen Sie den Befehl Kontrollpunkt erzeugen im Menü CFC > Routing. Alternativ können Sie einen Kontrollpunkt aus der Ansicht Werkzeugkasten auf eine Linie ziehen.
Auf der Verbindungslinie wird ein Kontrollpunkt erzeugt. An dem Kontrollpunkt ist die Verbindungslinie fixiert.
Programmieren in CFC 14:
6. Verändern Sie die Verbindung gemäß nachfolgendem Beispiel.
Programmieren in CFC 15:
Durch den Kontrollpunkt können Sie die Verbindungslinie individuell verändern. Sie können beliebig viele Kontrollpunkte setzen.
7. Entfernen Sie den Kontrollpunkt mit dem Befehl Kontrollpunkt entfernen im Menü CFC > Routing.
8. Lösen Sie die Verbindung mit dem Befehl Verbindung lösen oder durch einen Mausklick auf das Schloss-Symbol.
9. Selektieren Sie die Verbindungslinie und wählen Sie den Befehl Alle Verbindungen routen.
Die Verbindungslinie wird automatisch wie unter Schritt 3 dargestellt gezeichnet.
Programmieren in CFC 16:
Programmieren in CFC 17:

Verbindungen innerhalb einer Gruppe werden nicht automatisch geroutet.

Siehe auch:

Darstellung eines Bausteins reduzieren

Voraussetzung: Ein CFC-Programmierbaustein ist geöffnet. Im Editor werden dessen Bausteine mit allen deklarierten Anschlüssen angezeigt.

1. Selektieren Sie einen Baustein, dessen Anschlüsse teilweise unverbunden sind.
Beispiel: FB_Sample

Programmieren in CFC 18:
Der Baustein benötigt Platz für alle Anschlüsse.
2. Wählen Sie im Menü CFC > Routing den Befehl Nicht verbundene Anschlüsse entfernen.
Der Baustein benötigt weniger Platz und wird nun nur mit den funktional relevanten Anschlüssen dargestellt.

Programmieren in CFC 19: