Skip to main content

Automatische Ausführungsreihenfolge nach Datenfluss

Die Ausführungsreihenfolge in Programmierbausteinen ist in textbasierenden und netzwerkbasierenden Editoren eindeutig festgelegt. Im CFC-Editor können Sie die Elemente aber frei positionieren und somit ist die Ausführungsreihenfolge zunächst nicht eindeutig. Die Ausführungsreihenfolge wird deshalb von CODESYS anhand des Datenflusses, und bei mehreren Netzwerken anhand der topologischen Position der Elemente festgelegt. Die oberen Elemente und Netzwerke werden vor den unteren, und die linken vor den rechten einsortiert. Die Ausführungsreihenfolge ist dadurch eindeutig und bewirkt, dass der Programmierbaustein zeit- und zyklusoptimiert abgearbeitet wird.

Im Chart können Sie die aktuelle Ausführungsreihenfolge temporär einblenden lassen. Wenn Sie Netzwerke mit Rückkopplungen programmieren, können Sie ein Element in der Rückkopplungsschleife als Startpunkt festlegen.

Sie können die Abfolge der Abarbeitung in einem CFC-Objekt auch explizit bearbeiten. Dafür schalten Sie die voreingestellte Eigenschaft Automatischer Datenfluss-Modus des CFC-Objekts um und aktivieren die Eigenschaft Expliziter Ausführungsreihenfolge-Modus. In diesem Modus haben Sie die Möglichkeit die Ausführungsreihenfolge mit Menübefehlen zu bearbeiten.

Vor CODESYS V3.5 SP15 mussten Sie bei jedem Programmierbaustein die Ausführungsreihenfolge explizit festlegen. Es gab keine Modusumschaltung.

Datenfluss

Der Datenfluss beschreibt, welche Daten wann und wie in welchen Programmierobjekten in chronologischer Reihenfolge geschrieben oder gelesen werden sollen. Ein Programmierbaustein kann beliebig viele Datenflüsse verarbeiten, die auch unabhängig voneinander ausgeführt werden können.

Ausführungsreihenfolge anzeigen lassen

Die Ausführungsreihenfolge eines CFC-Objekts wird standardmäßig automatisch ermittelt. Dabei ist die Eigenschaft Automatischer Datenfluss-Modus aktiviert. Sie können sich die automatisch ermittelte Ausführungsreihenfolge im CFC-Editor kurzzeitig einblenden lassen.

  1. Erstellen Sie ein neues Projekt mit der Vorlage Standardprojekt und geben Sie beispielsweise den Namen Miminal ein.

  2. Erweitern Sie die Applikation mit dem Funktionsbaustein FB_DOIt in der Implementierungssprache ST mit Eingängen und Ausgängen folgendermaßen.

    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. Erstellen Sie wie folgt den Funktionsbaustein ExecuteCFC in der Implementierungssprache CFC.

    PROGRAM ExecuteCFC
    VAR
        fb_DoIt_0: FB_DoIt;
        fb_DoIt_1: FB_DoIt;
        iFinal_1: INT;
        iFinal_0: INT;
        xFinal: BOOL;
    END_VAR

    Neu erstellte Programmierobjekte in CFC haben den automatischen Datenfluss-Modus aktiviert. Die Ausführungsreihenfolge des Programmierobjekts wird intern optimal festgelegt.

    cfc_img_fb_executecfc.png
  4. Wählen Sie den Befehl CFC → Ausführungsreihenfolge → Ausführungsreihenfolge anzeigen.

    Die Ausführungsreihenfolge des Objekts ist eingeblendet. Die Bausteine und Ausgänge sind entsprechend nummeriert und geben die zeitliche Abfolge der Abarbeitung wieder. Sobald Sie erneut in den CFC-Editor klicken, wird die Nummerierung ausgeblendet.

    cfc_img_displaying_execution_order.png

Ausführungsreihenfolge für Netzwerke mit Rückkopplungen festlegen

  1. Erstellen Sie ein CFC-Programm, das eine Rückkopplung enthält.

    Der Programmierbaustein PrgPositiveFeedback zählt.

    PROGRAM PrgPositiveFeedback
    VAR
        iResult: INT;
    END_VAR
    cfc_img_prg_positive_feedback.png
  2. Selektieren Sie ein Element innerhalb der Rückkopplung.

    Das selektierte Element ist rot hervorgehoben.

  3. Wählen Sie den Befehl CFC → Ausführungsreihenfolge → Startpunkt der Rückkopplung setzen.

    cfc_img_prg_positive_feedback_with_start.png

    Zur Laufzeit wird dieser Baustein als erster abgearbeitet. Der Startbaustein der Rückkopplung ist festgelegt und mit dem Symbol cfc_icon_start_of_feedback.png dekoriert. Die Ausführungsreichenfolge ist neu sortiert und das selektierte Element erhält die 0 (allgemein die niedrigste Nummer in der Rückkopplung).

  4. Selektieren Sie den Startbaustein nochmals.

  5. Wählen Sie den Befehl CFC → Ausführungsreihenfolge → Startpunkt der Rückkopplung setzen.

    Der Baustein ist als Startbaustein abgewählt.

    cfc_img_prg_positive_feedback.png

    Die Ausführungsreihenfolge ist intern festgelegt.

  6. Wählen Sie den Befehl CFC → Ausführungsreihenfolge → Ausführungsreihenfolge anzeigen.

    cfc_img_positive_feedback_numbered.png

    Die Ausführungsreihenfolge nach Datenfluss wird angezeigt.

Ausführungsreihenfolge explizit festlegen

Sie können die automatisch festgelegte Ausführungsreihenfolge eines CFC-Objekts explizit ändern, wenn Sie für das Objekt die Option Expliziter Ausführungsreihenfolge-Modus aktiviert haben.

  1. Öffnen Sie das Kontextmenü eines CFC-Objekts in der Ansicht Geräte oder in der Ansicht POUs und wählen Sie den Befehl Eigenschaften. Wählen Sie im Dialog Eigenschaften die Registerkarte CFC-Ausführungsreihenfolge.

    Die Auswahlliste Ausführungsreihenfolge zeigt den gerade aktivierten Modus an.

  2. Wählen Sie bei der Auswahlliste Ausführungsreihenfolge die Option Expliziter Ausführungsreihenfolge-Modus und bestätigen Sie den Dialog mit OK.

    Der Explizite Ausführungsreihenfolge-Modus ist aktiviert. Im CFC-Editor sind die Netzwerke nummeriert und im Menü CFC → Ausführungsreihenfolge stehen Befehle ür die Bearbeitung der Ausführungsreihenfolge zur Verfügung.

  3. Öffnen Sie ein CFC-Objekt.

  4. Selektieren Sie ein nummeriertes Element und wählen Sie den Befehl CFC → Ausführungsreihenfolge → An den Anfang.

    Die Ausführungsreihenfolge ist neu sortiert und das selektierte Element hat die Nummer 0.

Tipp

Die automatisch festgelegte Ausführungsreihenfolge nach Datenfluss bewirkt eine zeit- und zyklusoptimierte Ausführung des Programmierbausteins. Sie benötigen somit während des Entwicklungsprozesses keine Information über die intern verwaltete Ausführungsreihenfolge.

Im Modus Expliziter Ausführungsreihenfolge-Modus passen Sie die Ausführungsreihenfolge in Eigenverantwortung an und müssen die Konsequenzen und Effekte selbst beurteilen. Auch deshalb wird die Ausführungsreihenfolge ständig eingeblendet.