Skip to main content

Im CFC-Editor programmieren

Anmerkung

Sie bestimmen die Implementierungssprache verbindlich beim Erzeugen des Programmierbausteins. Ein Wechsel zwischen den Implementierungssprachen Continuous Function Chart (CFC) und Continuous Function Chart (CFC) - seitenorientiert ist danach nicht möglich.

Elemente einfügen und mit Verbindungslinien verschalten

  1. Platzieren Sie ein Element Baustein und ein Element Ausgang im 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 Bausteinausgang des Elements Baustein zum Bausteineingang des Elements Ausgang.

    Beim Erreichen des Bausteineingangs ändert der Cursor sein Symbol.

  4. Lassen Sie die Maustaste los.

    Der Ausgangspin des Bausteins ist mit dem Eingangspin des Ausgangs verdrahtet.

    _cds_img_prg_simple.png

Alternativ können Sie die beiden Pins mit gedrückter Strg-Taste selektieren und den Befehl Selektierte Anschlüsse verbinden auswählen.

Instanzen aufrufen

  1. Erstellen Sie ein neues Projekt mit der Standardvorlage und geben Sie beispielsweise den Namen First ein.

    Das Projekt First.project ist erstellt.

  2. Erweitern Sie die Applikation mit dem Funktionsbaustein FB_DoIt in der Implementierungssprache ST mit Eingängen und Ausgängen.

    Beispiel:

    FUNCTION_BLOCK FB_DoIt
    VAR_INPUT
        iAlfa : INT;
        iBravo: INT;
        sCharlie : STRING := 'Charlie';
        xItem : BOOL;
    END_VAR
    VAR_OUTPUT
        iResult : INT;
        sResult : STRING;
        xResult : BOOL;
    END_VAR
    VAR
    END_VAR
    iResult := iAlfa + iBravo;
    
    IF xItem = TRUE THEN
        xResult := TRUE;
    END_IF
  3. Selektieren Sie die Applikation und wählen Sie im Kontextmenü den Befehl Objekt hinzufügen → POU. Wählen Sie die Implementierungssprache Continous Function Chart (CFC) und den Typ Programm. Geben Sie beispielsweise den Namen PrgFirst ein.

    Bestätigen Sie den Dialog mit OK.

    Das Programm PrgFirst ist erstellt und erscheint im Editor. Noch ist es leer.

  4. Instanzieren Sie Funktionsbausteine und deklarieren Sie Variablen.

    PROGRAM PrgFirst
    VAR
        iCounter: INT;
        fbDoIt_1 : FB_DoIt;
        fbDoIt_2 : FB_DoIt;
        iOut : INT;
        sOut: STRING;
        xOut: BOOL;
    END_VAR
  5. Ziehen Sie ein Element Baustein von der Ansicht Werkzeuge in den Editor.

  6. Klicken Sie auf das Feld ??? und geben Sie als Bausteinnamen ADD ein.

    Der Bausteintyp ist ADD. Der Baustein fungiert als Addierer.

  7. Klicken Sie im Deklarationseditor auf die Zeilennummer 3.

    Die Deklarationszeile von iCounter ist selektiert.

  8. Klicken Sie in die Selektion und ziehen Sie die selektierte Variable in die Implementierung und 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 von der Ansicht Werkzeuge ein Element Eingang in die Implementierung. Klicken Sie auf dessen Feld ??? und geben Sie 1 ein.

  11. Verbinden Sie den Eingang 1 mit einem Eingang am Baustein ADD.

    Ein Netzwerk ist programmiert. Zur Laufzeit zählt das Netzwerk die Buszyklen und speichert das Ergebnis in iCounter.

    cfc_img_first_network_add.png
  12. Klicken Sie im Deklarationseditor auf die Zeilennummer 5.

    Die Zeile ist selektiert.

  13. 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.

    cfc_img_first_network_doit.png
  14. Ziehen Sie die Instanz fbDoIt_2 in den Editor. Verschalten Sie die Instanzen untereinander und mit Eingängen und Ausgängen.

    Beispiel:

    cfc_img_first_network_add_doit1_doit2.png

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

    PROGRAM PrgFirstInSt
    VAR
        iCounter: INT;
    
        fbDoIt_1 : FB_DoIt;
        fbDoIt_2 : FB_DoIt;
    
        iOut : INT;
        sOut: STRING;
        xOut: BOOL;
    END_VAR
    iCounter := iCounter + 1;
    fbDoIt_1(iAlfa := 16, iBravo := 32, sCharlie := 'First', xItem := TRUE, iDelta := 2, iResult => fbDoIt_2.iAlfa, xResult => fbDoIt_2.xItem);
    fbDoIt_2(iBravo := fbDoIt_1.iResult, sCharlie := 'Second', iDelta := 2, iResult => iOut , sResult=> sOut, xResult => xOut);

Verbindungsmarken erzeugen

Voraussetzung: Sie haben einen CFC-Programmierbaustein mit verbundenen Elementen.

  1. Selektieren Sie eine Verbindungslinie zwischen zwei Elementen.

    Die Verbindungslinie wird selektiert dargestellt. Die Enden der Verbindungslinie sind mit roten Quadraten markiert cfc_icon_selected_input.png.

  2. Wählen Sie den Befehl CFC → Verbindungsmarke.

    Die Verbindung wird aufgetrennt und durch eine Verbindungsmarke - Quelle und eine Verbindungsmarke - Ziel ersetzt. Der Name der Marken wird automatisch erzeugt.

    cfc_img_prg_simple_with_connection_mark.png
  3. Klicken Sie in die Quellverbindungsmarke.

    Der Name kann editiert werden.

  4. Geben Sie als Name SimpleMark für die Quellverbindungsmarke.

    Quellverbindungsmarke und Zielverbindungsmarke haben den gleichen Namen.

    cfc_img_prg_simple_with_named_connection_mark.png

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. Verbinden Sie die Elemente.

    cfc_img_prg_simple2_control_point.png
  2. Platzieren Sie 2 Elemente des Typs Baustein auf der Linie.

    Die Verbindungslinie und die Bausteine werden wegen der Kollision rot gezeichnet.

    cfc_img_prg_simple2_red_linie.png
  3. Führen Sie den Befehl CFC → Routing → Alle Verbindungen routen aus.

    Die Kollision wird gelöst.

    cfc_img_prg_simple2_routed_line.png
  4. Verändern Sie schrittweise die Verbindungslinien.

    cfc_img_prg_simple2_manual_routed_line.png

    Die Verbindungslinie wurde manuell verändert und ist nun für ein Autorouting gesperrt. Dies wird durch ein Schloss-Symbol am Verbindungsende angezeigt.

    _cds_img_prg_simple2_locked_routed_line.png
  5. Selektieren Sie die Verbindungslinie und wählen Sie den Befehl CFC → Routing → Kontrollpunkt erzeugen.

    Auf der Verbindungslinie wird ein Kontrollpunkt erzeugt. An dem Kontrollpunkt ist die Verbindungslinie fixiert.

    cfc_img_prg_simple2_locked_routed_line_with_control.png

    Alternativ können Sie einen Kontrollpunkt aus der Ansicht Werkzeuge auf eine Linie ziehen.

  6. Verändern Sie die Verbindungslinie gemäß nachfolgendem Beispiel.

    cfc_img_prg_simple2_changed_line_with_control.png

    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 Kontextbefehl CFC → Routing → Kontrollpunkt entfernen.

  8. Lösen 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 geroutet.

    _cds_img_prg_simple2_locked_routed_line.png

Wichtig

Verbindungen innerhalb einer Gruppe werden nicht automatisch geroutet.

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_DoIt_1

    cfc_img_box_with_unconnected_pins.png

    Der Baustein benötigt Platz für alle Anschlüsse.

  2. Wählen Sie den Befehl CFC → Pins → Nicht verbundene Anschlüsse entfernen.

    Der Baustein benötigt weniger Platz und wird nun nur mit den funktional relevanten Anschlüssen dargestellt.

    cfc_img_box_without_unconnected_pins.png