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.
Erstellen Sie ein 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 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
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.
Wählen Sie den Befehl
.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.
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 Baustein 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
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.
Ö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.
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.
Ö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.
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.