Programmieren in CFC
Sie können im CFC-Editor Programmierbausteine miteinander verdrahten und anschauliche Blockschaltbilder erstellen.
Der Editor unterstützt Sie folgendermaßen:
- Programmieren mit Elementen und Verbindungslinien
- Ziehen von Instanzen und Variablen in den Editierbereich
- Autorouting der Verbindungslinien
- Automatisches Verknüpfen
- Fixieren von Verbindungslinien durch Kontrollpunkte
- Kollisionserkennung
- Eingabeunterstützung bei Verbindungsmarken
- Forcen und Schreiben von Werten im Onlinebetrieb
- Verschieben der Selektion mittels Pfeiltasten
- Reduzierte Darstellung eines Bausteins ohne unverbundene Anschlüsse
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.
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
. - 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.
- 15. Ziehen Sie die Instanz fbSample2 in den Editor. Verschalten Sie die Instanzen untereinander und mit Eingängen und Ausgängen.
- Beispiel:
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 .
- 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.
- 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.
Siehe auch:
- Dokumentation TC3 User Interface: Befehl Verbindungsmarke
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.
- 2. Platzieren Sie zwei Elemente Baustein auf der Linie.
- Die Verbindungslinie und die Bausteine werden wegen der Kollision rot gezeichnet.
- 3. Wählen Sie im Menü CFC > Routing den Befehl Alle Verbindungen routen.
- Die Kollision wird gelöst.
- 4. Verändern Sie schrittweise die Verbindungslinien.
- Die Verbindungslinie wurde manuell verändert und ist nun für das Autorouting gesperrt. Dies wird durch ein Schloss am Verbindungsende angezeigt.
- 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.
- 6. Verändern Sie die Verbindung gemäß nachfolgendem Beispiel.
- 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.
Verbindungen innerhalb einer Gruppe werden nicht automatisch geroutet. |
Siehe auch:
- Dokumentation TC3 User Interface: Befehl Alle Verbindungen routen
- Dokumentation TC3 User Interface: Befehl Kontrollpunkt entfernen
- Dokumentation TC3 User Interface: Befehl Verbindung lösen
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
- 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.