Auswertung von AS-Elementen

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 Wert TRUE 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 Eingangsvariable Aktion_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 Wert TRUE gesetzt. Nur falls diese interne Ausgangsvariable Aktion_ACB.Q auf den Wert TRUE 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.

    (info) 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 Eingangsvariable Aktion_ACB.Aktionsbestimmungszeichen nun auf den Wert FALSE gesetzt. Ob und wann die interne Ausgangsvariable Aktion_ACB.Q auf den Wert FALSE gesetzt wird, ist wieder abhängig vom Verhalten des Aktionsbestimmungszeichens. Falls diese interne Ausgangsvariable Aktion_ACB.Q auf den Wert FALSE 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.

    (info) 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.

(info) 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)

SFCSteps_Example1b

Erläuterung zur Auswertung:

  • Falls der Schritt S0 aktiv ist, ist die Transition t0 freigegeben. In der FBS-Logik ist die Abarbeitungsreihenfolge 2 für diese Transition eingeblendet.
  • Am Ende des Zyklus wird die schaltende Transition bestimmt. Falls condition_0 erfüllt ist, wird t0 als zu schaltende Transition bestimmt und S0 wird deaktiviert.
  • Im nächsten Zyklus wird t0 geschaltet und somit sind sowohl S2 als auch S1 aktiv. Die Auswertung der Aktionen, die S1 oder S2 zugeordnet werden, ist abhängig vom Aktionsbestimmungszeichen. Aufgrund des Aktionsbestimmungszeichen N haben die internen Eingangsvariablen act1_ACB.N und act2_ACB.N den Wert TRUE und in Folge haben auch die internen Ausgangsvariablen act1_ACB.Q und act2_ACB.Q den Wert TRUE. Das bedeutet, dass sowohl act1 als auch act2 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 von ACTION act1: ... END_ACTION definiert.
    • In der FBS-Logik ist act2 weiter oben als act1 positioniert.

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)

SFCSteps_Example2

Erläuterung zur Auswertung:

  • Falls der Schritt S0 aktiv ist, sind die Transitionen t0 und t1 freigegeben. In der FBS-Logik ist die Abarbeitungsreihenfolge 2 für die Transition t0 eingeblendet, die Abarbeitungsreihenfolge 3 für die Transition t1.
  • Am Ende des Zyklus werden die schaltenden Transitionen bestimmt. t0 hat dabei Vorrang vor t1. Grund: Im ST-Code steht TRANSITION t0 ... END_TRANSITION oberhalb von TRANSITION 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, wird t0 als zu schaltende Transition bestimmt und S0 wird deaktiviert. In Folge wird condition_1  für t1 nicht mehr geprüft, da S0 bereits deaktiviert ist und dadurch t1 nicht mehr freigegeben ist.
      Im nächsten Zyklus wird t0 geschaltet und somit ist S1 aktiv.
    • Nur falls condition_0 nicht erfüllt ist und condition_1 erfüllt ist, wird t1 als zu schaltende Transition bestimmt und S0 wird deaktiviert. Im nächsten Zyklus wird t1 geschaltet und somit ist S2 aktiv.