Die Ausführungsreihenfolge in Programmierbausteinen ist in textbasierenden und netzwerkbasierenden Editoren eindeutig determiniert. Im CFC-Editor können Sie die Elemente aber frei positionieren und somit ist die Ausführungsreihenfolge zunächst nicht eindeutig. Sie wird deshalb von CODESYS nach dem Datenfluss und bei mehreren Netzwerken nach der topologischen Position der Elemente festgelegt. Die oberen werden vor den unteren und die linken vor den rechten Elementen und Netzwerken einsortiert. Die Ausführungsreihenfolge ist nun eindeutig und bewirkt, dass der Programmierbausteins zeit- und zyklusoptimiert abgearbeitet wird.
Sie können sich im Chart über die zeitliche Abfolge der Elemente informieren und kurzzeitig die Ausführungsreihenfolge einblenden lassen. Wenn Sie Netzwerke mit Rückkopplungen programmieren, können Sie ein Element in der Rückkopplungsschleife als Startpunkt festlegen.
Sie können außerdem die Abfolge der Abarbeitung in einem CFC-Objekt bei Bedarf 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 Development System V3.5 SP15 mussten Sie bei jedem Programmierbaustein die Ausführungsreihenfolge explizit festlegen. Es gab keine Modusumschaltung.
Datenfluss
Die zeitliche Abfolge, welche Daten wann und wie in welchen Programmierobjekten gelesen oder beschrieben werden, wird allgemein als Datenfluss bezeichnet. 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.
-
Erstellen Sieein neues Projekt mit der Vorlage „Standardprojekt“ und geben Sie beispielsweise den Namen
Miminal
ein. -
Erweitern Sie die Applikation mit dem Funktionsbaustein
FB_DOIt
in der Implementierungssprache „ST“ mit Eingängen und Ausgängen.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
-
Erstellen Sie 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.
-
Wählen Sie den Befehl „CFC Ausführungsreihenfolge Ausführungsreihenfolge anzeigen“.
Die Ausführungsreihenfolge des Objekts ist eingeblendet. Die Bausteine und Ausgänge sind dementsprechend nummeriert und geben die zeitliche Abfolge der Abarbeitung wieder. Sobald Sie erneut in den CFC-Editor klicken, wird die Nummerierung ausgeblendet.
Ausführungsreihenfolge für Netzwerke mit Rückkopplungen festlegen
-
Erstellen Sie ein CFC-Programm, das eine Rückkopplung enthält.
Der Programmierbaustein
PrgPositiveFeedback
zählt.PROGRAM PrgPositiveFeedback VAR iResult: INT; END_VAR
-
Selektieren Sie ein Element innerhalb der Rückkopplung.
Das selektierte Element ist rot hervorgehoben.
-
Wählen Sie den Befehl „CFC Ausführungsreihenfolge Startpunkt der Rückkopplung setzen“.
Zur Laufzeit wird dieser Bausstein als erster abgearbeitet. Der Startbaustein der Rückkopplung ist festgelegt und mit dem Symbol
dekoriert. Die Ausführungsreichenfolge ist neu sortiert und das selektierte Element erhält die 0 (allgemein die niedrigste Nummer in der Rückkopplung).
-
Selektieren Sie den Startbaustein nochmals.
-
Wählen Sie den Befehl „CFC Ausführungsreihenfolge Startpunkt der Rückkopplung setzen“.
Der Baustein ist als Startbaustein abgewählt.
Die Ausführungsreihenfolge ist intern festgelegt.
-
Wählen Sie den Befehl „CFC Ausführungsreihenfolge Ausführungsreihenfolge anzeigen“.
Die Ausführungsreihenfolge nach Datenfluss wird angezeigt.
Ausführungsreihenfolge explizit festlegen
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.
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.
-
Selektieren Sie ein CFC-Objekt in der Ansicht „Geräte“ oder in der Ansicht „POUs“
-
Öffnen Sie das Kontextmenü und wählen Sie den Befehl „Eigenschaften“.
-
Wählen Sie die Registerkarte „CFC-Ausführungsreihenfolge“.
Die Auswahlliste „Ausführungsreihenfolge“ zeigt den gerade aktivierten Modus an.
-
Wählen Sie bei der Auswahlliste „Ausführungsreihenfolge“ die Option „Expliziter Ausführungsreihenfolge-Modus“.
-
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 folgende Befehle ür die Bearbeitung der Ausführungsreihenfolge zur Verfügung.
-
Öffnen Sie ein CFC-Objekt.
-
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.