Auswertung des ST-Codes inklusive der AS-Netzwerke
Die Sprachelemente und -konstrukte im ST-Editor werden in der Reihenfolge →ausgewertet, wie sie definiert ist (d.h., von oben nach unten).
Die AS-Elemente eines AS-Netzwerks sind jedoch eine Ausnahme. Für diese gilt:
logi.CAD 3 prüft in jedem Zyklus (für die Ausführung der Anwendung), ob die AS-Elemente eines →AS-Netzwerks auswertbar sind – und zwar in der Reihenfolge, wie diese AS-Elemente textuell im ST-Editor definiert bzw. grafisch im FBS-Editor angeordnet sind (und wie diese im FBS-Editor bei eingeblendeter Abarbeitungsreihenfolge visualisiert wird).
Ob das AS-Element aber tatsächlich ausgewertet wird, ergibt sich erst aufgrund dieser Ablaufregeln:
- Der Ablauf des AS-Netzwerks folgt den Verbindungen vom Initial-→Schritt über eine/mehrere →Transitionen zu den Nachfolgerschritten über weitere Transitionen zu den anschließenden Nachfolgerschritten usw.
Der Ablauf des AS-Netzwerks ist zusätzlich so geregelt:
1. Am Anfang jedes Zyklus werden jene Transitionen geschaltet, die freigegeben sind und deren Transitionsbedingung erfüllt ist (siehe unter 3.). Durch das Schalten einer Transition werden sofort alle direkt nachfolgende Schritte dieser Transition aktiv.
Beachten Sie: Im ersten Zyklus nach einem →Kaltstart werden keine Transitionen geschaltet, es ist aber der Initial-Schritt des AS-Netzwerks aktiv.2. Für jede →Aktion, die einem aktiven Schritt zugeordnet ist, wird eine interne Eingangsvariable
Aktion_ACB.Aktionsbestimmungszeichen
auf den WertTRUE
gesetzt. Der Name der Eingangsvariable ist von der Aktion und dem verwendeten Aktionsbestimmungszeichen abhängig.
Falls ein Aktionsbestimmungszeichen mit einem Zeitdauer-Literal verwendet wird, wird außerdem die interne EingangsvariableAktion_ACB.T
auf den Wert des Zeitdauer-Literals gesetzt.3. Abhängig vom Verhalten des Aktionsbestimmungszeichens wird eine interne Ausgangsvariable
Aktion_ACB.Q
auf den WertTRUE
gesetzt. Nur falls diese interne AusgangsvariableAktion_ACB.Q
auf den WertTRUE
gesetzt ist, werden die Anweisungen der Aktion ausgewertet.Falls die Anweisungen von mehreren Aktionen zur gleichen Zeit auswertbar sind, werden diese in der Reihenfolge ausgewertet, wie die Aktionen textuell definiert oder grafisch angeordnet sind.
Für den ST- und FBS-Editor bedeutet das, dass die Aktionen von oben nach unten gereiht werden – siehe nachfolgendes Beispiel 1.
Sind im FBS-Editor mehrere auswertbare Aktionsblöcke auf gleicher Höhe angeordnet, werden diese Aktionsblöcke von links nach rechts gereiht.Im FBS-Editor können Sie die Abarbeitungsreihenfolge einblenden, um die Reihenfolge der Elemente zu sehen.
4. Am Ende des Zyklus werden die schaltenden Transitionen bestimmt. Für eine schaltende Transition werden sofort alle direkt vorhergehende Schritte deaktiviert.
Für jede Aktion, die diesen Vorgängerschritten zugeordnet sind, wird die interne EingangsvariableAktion_ACB.Aktionsbestimmungszeichen
nun auf den WertFALSE
gesetzt. Ob und wann die interne AusgangsvariableAktion_ACB.Q
auf den WertFALSE
gesetzt wird, ist wieder abhängig vom Verhalten des Aktionsbestimmungszeichens. Falls diese interne AusgangsvariableAktion_ACB.Q
auf den WertFALSE
gesetzt ist, werden die Anweisungen der Aktion nicht mehr ausgewertet.Die Bestimmung der zu schaltenden Transitionen erfolgt in der Reihenfolge, in der die Transitionen textuell definiert oder grafisch angeordnet sind.
Für den ST- und FBS-Editor bedeutet das, dass die Elemente von oben nach unten gereiht werden – siehe nachfolgendes Beispiel 2.
Sind im FBS-Editor mehrere zu schaltenden Transitionen auf gleicher Höhe angeordnet, werden diese Elemente von links nach rechts gereiht.Im FBS-Editor können Sie die Abarbeitungsreihenfolge einblenden, um die Reihenfolge der Elemente zu sehen.
Welche Bedingungen müssen für eine schaltende Transition erfüllt sein?
Die Transition muss freigegeben sein.
Eine Transition ist freigegeben, falls alle Vorgängerschritte der Transition aktiv sein.- Die Transitionsbedingung der Transition muss erfüllt sein, d.h., sie muss mit dem Wert
TRUE
(oder einer Entsprechung) ausgewertet werden.
Beachten Sie die folgende Sonderfälle:
- Falls die Instanz der POE, in der das AS-Netzwerk vorhanden ist, als →gepuffert deklariert ist (mit Schlüsselwort
RETAIN
), bleiben die Zustände für die Schritte und Transitionen erhalten. So ist es möglich, dass Transitionen am Anfang des Zyklus nach einem →Warmstart geschalten werden, da am Ende des Zyklus (aus der vorhergehenden Ausführung) die schaltenden Transitionen bestimmt wurden und diese Information für den Warmstart angewendet wird. - Falls mehrere AS-Netzwerke im Editor vorhanden sind, werden die obigen Regeln pro AS-Netzwerk angewendet. Diese AS-Netzwerke werden so gereiht:
- Im ST-Editor gilt die Reihenfolge, in der die AS-Netzwerke definiert sind, d.h. oben nach unten.
- Im FBS-Editor bestimmt logi.CAD 3 ein Netzwerk, das auszuwerten ist. Siehe "Reihenfolge der Netzwerke in FBS".
Daraus ergeben sich die folgenden Folgerungen für die Auswertung von AS-Elementen:
- Jeder aktivierter Schritt ist zumindest einen Zyklus lang aktiv.
- Falls einem Schritt keine Aktion zur Ausführung zugeordnet ist, wartet dieser Schritt, bis die Transitionsbedingung der nachfolgenden Transition erfüllt ist.
- Falls eine Transitionsbedingung für eine freigegebene Transition im Zyklus erfüllt ist, schaltet die zugehörige Transition erst im darauffolgenden Zyklus.
- Ein AS-Netzwerk wird nicht notwendigerweise vollständig ausgewertet, bevor mit der Auswertung des nächsten AS-Netzwerk im Editor begonnen wird.
Der ST-Code der folgenden Beispiele zeigt keine vollständige AS-Netzwerke. Das AS-Netzwerk ist nur in dem Ausmass erstellt, in dem es zur Erläuterung der obigen Regeln benötigt wird.
Beispiel 1: Bestimmung der aktiven Schritte bei simultaner Verzweigung
Bei einer simultane Verzweigung werden durch das Schalten einer Transition mehrere Schritten zur gleichen Zeit aktiviert.
ST-Code | TRANSITION t0 FROM S0 TO (S2, S1) := condition_0; END_TRANSITION TRANSITION t1 FROM (S2, S1) TO S3 := ...; END_TRANSITION STEP S1 : act1(N); END_STEP STEP S2 : act2(N); END_STEP ACTION act2: ...; END_ACTION ACTION act1: ...; END_ACTION |
---|---|
FBS-Logik (mit eingeblendeter Abarbeitungsreihenfolge) |
|
Erläuterung zur Auswertung:
- Falls der Schritt
S0
aktiv ist, ist die Transitiont0
freigegeben. In der FBS-Logik ist die Abarbeitungsreihenfolge2
für diese Transition eingeblendet. - Am Ende des Zyklus wird die schaltende Transition bestimmt. Falls
condition_0
erfüllt ist, wirdt0
als zu schaltende Transition bestimmt undS0
wird deaktiviert. - Im nächsten Zyklus wird
t0
geschaltet und somit sind sowohlS2
als auchS1
aktiv. Die Auswertung der Aktionen, dieS1
oderS2
zugeordnet werden, ist abhängig vom Aktionsbestimmungszeichen. Aufgrund des AktionsbestimmungszeichenN
haben die internen Eingangsvariablenact1_ACB.N
undact2_ACB.N
den WertTRUE
und in Folge haben auch die internen Ausgangsvariablenact1_ACB.Q
undact2_ACB.Q
den WertTRUE
. Das bedeutet, dass sowohlact1
als auchact2
zur gleichen Zeit auswertbar sind. Nun ergibt sich sowohl im ST-Editor als auch FBS-Editor die gleiche Reihenfolge durch die Regel "von oben nach unten".- Im ST-Code ist
ACTION act2: ... END_ACTION
oberhalb vonACTION act1: ... END_ACTION
definiert. - In der FBS-Logik ist
act2
weiter oben alsact1
positioniert.
- Im ST-Code ist
Beispiel 2: Bestimmung der schaltenden Transitionen bei Verzweigung
Bei einer Verzweigung folgen einem Schritt mehrere Transitionen nach. Die Bestimmung der schaltenden Transitionen erfolgt laut der Reihenfolge im ST-Code bzw. in der FBS-Logik.
ST-Code | TRANSITION t0 FROM S0 TO S1 := condition_0; END_TRANSITION TRANSITION t1 FROM S0 TO S2 := condition_1; END_TRANSITION TRANSITION t2 FROM S1 TO S3 := ...; END_TRANSITION TRANSITION t3 FROM S2 TO S3 := ...; END_TRANSITION |
---|---|
FBS-Logik (mit eingeblendeter Abarbeitungsreihenfolge) |
|
Erläuterung zur Auswertung:
- Falls der Schritt
S0
aktiv ist, sind die Transitionent0
undt1
freigegeben. In der FBS-Logik ist die Abarbeitungsreihenfolge2
für die Transitiont0
eingeblendet, die Abarbeitungsreihenfolge3
für die Transitiont1
. - Am Ende des Zyklus werden die schaltenden Transitionen bestimmt.
t0
hat dabei Vorrang vort1
. Grund: Im ST-Code stehtTRANSITION
t0 ... END_TRANSITION
oberhalb vonTRANSITION
t1 ... END_TRANSITION
. In der FBS-Logik sind die Transitionen auf gleicher Höhe angeordnet, daher gilt die Regel "von links nach rechts".- Falls
condition_0
erfüllt ist, wirdt0
als zu schaltende Transition bestimmt undS0
wird deaktiviert. In Folge wirdcondition_1
fürt1
nicht mehr geprüft, daS0
bereits deaktiviert ist und dadurcht1
nicht mehr freigegeben ist.
Im nächsten Zyklus wirdt0
geschaltet und somit istS1
aktiv. - Nur falls
condition_0
nicht erfüllt ist undcondition_1
erfüllt ist, wirdt1
als zu schaltende Transition bestimmt undS0
wird deaktiviert. Im nächsten Zyklus wirdt1
geschaltet und somit istS2
aktiv.
- Falls