Abarbeitungsreihenfolge in AS
Aktiver Schritt
Ein aktiver Schritt ist ein Schritt, dessen Aktionen gerade ausgeführt werden. Im Onlinebetrieb stellt CODESYS aktive Schritte in blau dar.
Initialschritt
Im ersten Zyklus nach Aufruf einer AS-POU wird der Initialschritt automatisch aktiv und die Schrittaktion wird ausgeführt.
CODESYS führt IEC-Aktionen mindestens zweimal aus. Das erste Mal nach Aktivwerden des Schrittes, das zweite Mal - aber erst im nächsten Zyklus - nach Deaktivieren des Schrittes.
Alternative Verzweigungen
Wenn der Schritt vor der Verzweigung aktiv ist, wertet CODESYS jeweils die erste Transition jedes alternativen Zweiges von links nach rechts aus. Im ersten Zweig, in dem CODESYS eine Transition findet, die
TRUE
liefert, wird der darauf folgende Schritt aktiviert.Parallele Verzweigungen
Wenn der Schritt vor der Verzweigung (vor der horizontalen Doppellinie) aktiv ist und die Transition vor der Verzweigung
TRUE
liefert, aktiviert CODESYS die ersten Schritte in allen Zweigen. Die Zweige werden dann gleichzeitig abgearbeitet. Der Schritt nach dem Ende der Verzweigung (nach der horizontalen Doppellinie) wird aktiviert, wenn alle letzten Schritte in den Zweigen aktiv sind und die Transition nach der DoppellinieTRUE
liefert.
Reset der IEC-Aktionen
CODESYS setzt die internen Aktionskontroll-Flags der Aktions-Qualifizierer (
N
,R
,S
,L
,D
,P
,SD
,DS
,SL
) zurück. Das sind die Flags, die eine IEC-Aktion steuern. Die Flags, die innerhalb von Aktionen aufgerufen werden, werden jedoch nicht zurückgesetzt!Ausgangsaktionen ausführen
CODESYS überprüft daraufhin alle Schritte, ob sie die Bedingung für die Ausführung der Ausgangsaktionen erfüllen. Die Reihenfolge der Prüfung entspricht der Anordnung im AS-Diagramm: von oben nach unten und von links nach rechts.
CODESYS führt eine Ausgangsaktion aus, wenn der Schritt deaktiviert wird, d. h. wenn seine Eingangs- und Schrittaktionen (falls vorhanden) im vorangegangenen Zyklus ausgeführt worden sind und die Bedingung für den nachfolgenden Schritt
TRUE
liefert.Eingangsaktionen ausführen
CODESYS überprüft daraufhin alle Schritte, ob sie die Bedingung für die Ausführung der Eingangsaktionen erfüllen. Die Reihenfolge der Prüfung entspricht der Anordnung im AS-Diagramm: von oben nach unten und von links nach rechts. Wenn dies der Fall ist, führt CODESYS die Eingangsaktionen aus.
CODESYS führt eine Eingangsaktion aus, sobald die Abarbeitung bei der dem Schritt vorangehenden Transition angelangt ist und diese Transition
TRUE
liefert, der Schritt also aktiviert wird.Zeitenprüfung, Schrittaktionen ausführen
IEC-Aktionen ausführen
CODESYS führt die IEC-Aktionen in alphabetischer Reihenfolge aus. Dies erfolgt in zwei Durchläufen durch die Liste der Aktionen. Im ersten Lauf führt CODESYS die IEC-Aktionen aller Schritte aus, die im vorangegangenen Zyklus deaktiviert wurden. Im zweiten Lauf werden die IEC-Aktionen aller Schritte ausgeführt, die aktiv sind.
Transitionen-Check, Aktivierung der nachfolgenden Schritte
Die Transitionen werden ausgewertet. Wenn ein Schritt im aktuellen Zyklus aktiv ist und die nachfolgende Transition
TRUE
liefert (und die ggf. definierte Minimalzeit des Schritts abgelaufen ist), wird der nachfolgende Schritt aktiviert.
Wichtig
Bei der Implementierung von Aktionen müssen Sie folgendes beachten:
Eine Aktion kann innerhalb desselben Zyklus mehrfach ausgeführt werden, weil Sie die Aktion in mehreren AS-Diagrammen verwenden.
Beispiel: Ein AS-Diagramm enthält zwei IEC-Aktionen A
und B
, die beide in der Sprache AS programmiert sind und die beide eine IEC-Aktion C
aufrufen. In diesem Fall würde C
zweimal aufgerufen werden.
Wenn Sie die gleiche IEC-Aktion gleichzeitig auf verschiedenen Ebenen eines AS-Diagramms verwenden, kann das zu unvorhersagbaren Effekten während der Abarbeitung führen. Deshalb gibt CODESYS eine entsprechende Fehlermeldung aus. Diese Fehlermeldung kann zum Beispiel erscheinen, wenn mit Projekten gearbeitet wird, die mit einer älteren Version des Entwicklungssystems erstellt wurden.
Tipp
Beachten Sie die Möglichkeit, implizite Variablen zu verwenden, um den Abarbeitungsstatus von Schritten und Aktionen zu überwachen bzw. die Abarbeitung zu kontrollieren.