Reihenfolge der Netzwerke in FBS

Falls mehrere →Netzwerke im FBS-Editor vorliegen, bestimmt logi.CAD 3 die Reihenfolge, in der die Netzwerke →auszuwerten sind.

Regeln für die Reihenfolge

  1. Zuerst prüft logi.CAD 3, ob Netzwerke vorliegen, die laut der →IEC-Norm auswertbar sind.
    Netzwerke sind auswertbar, wenn keiner seiner Eingänge von einem noch nicht ausgewerteten Netzwerk abhängt. Beachten Sie: Nur falls Eingänge für ein Netzwerk von anderen Netzwerken als Ausgänge benutzt werden, so gilt das Netzwerk zunächst als nicht auswertbar.
    Falls alle Eingänge des Netzwerks Teil einer expliziten →Rückkopplungsschleife sind, wird dieses Netzwerk für die Auswertung zurückgestellt, bis alle abarbeitbaren Netzwerk ausgewertet wurden. Umgekehrt gilt: Ein Netzwerk mit zumindest einem auswertbaren Eingang oder einem Eingang, der Teil einer implizite Rückkopplungsschleife ist, wird nicht für die Auswertung zurückgestellt (siehe Beispiel 3 unten).
    In den Worten der IEC-Norm
    • Kein Element eines Netzwerks darf ausgewertet werden, bevor die Zustände aller seiner Eingänge ausgewertet wurden.
    • Die Auswertung eines Netzwerk-Elements darf nicht abgeschlossen sein, bevor die Zustände aller seiner Ausgänge ausgewertet wurden.
    • Die Auswertung eines Netzwerks ist nicht abgeschlossen, bevor die Ausgänge aller seiner Elemente ausgewertet wurden, sogar falls das Netzwerk eines der Elemente für die Ausführungssteuerung enthält.

    Beachten Sie: Falls eine Variable als Array-Index selbst oder im Array-Index verwendet wird, betrachtet logi.CAD 3 diese Variable ebenfalls als einen Eingang.

  2. Falls logi.CAD 3 feststellt, dass
    • nur eines der Netzwerke auswertbar ist, werden die Anweisungen dieses Netzwerk ausgewertet.
    • mehrere Netzwerke oder kein einziges der Netzwerke auswertbar sind, bestimmt logi.CAD 3 die grafische Position dieser Netzwerke zueinander. Dafür werden die Netzwerke von "oben links nach unten rechts" gereiht. logi.CAD 3 wertet die Anweisungen jenes Netzwerk aus, dessen Anweisung am weitesten oben/links steht (oben gilt vor links).
      Beachten Sie: 2 Arten von Anweisungen sind möglich:
      • Aufrufsanweisungen (kurz: →Aufrufe): Aufrufe werden durch die Positionierung eines →Funktionsbausteins oder einer →Funktion erzeugt.

        Hiere sehen Sie Aufrufe der SUB-Funktion, der AND-Funktion bzw. des TON-Funktionsbausteins:


        Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend (ohne einen evtl. angezeigten Instanznamen).

        Der Aufruf des oberen NOT-Bausteins wird vor jenem des unteren gereiht (oben gilt vor links):

        Der Aufruf des linken NOT-Bausteins wird vor jenem des rechten gereiht:

        (info) AS-Elemente eines →AS-Netzwerks verhalten sich prinzipiell wie Aufrufe im Netzwerk. Beachten Sie jedoch, dass AS-Elemente laut vorgegebenen Ablaufregeln ausgewertet werden.

      • Zuweisungsanweisungen (kurz: →Zuweisungen): Zuweisungen werden durch die Positionierung eines Wertfelds und das Verbinden mit einem Aufruf oder anderen Wertfeld erzeugt.

        Hier sehen Sie Zuweisungen zur Variable var3 bzw. var5:


        Für Zuweisungen ist die Position des Eingangs des Wertfelds ausschlaggebend.

        Das Wertfeld mit var1 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den rosa Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den blauen Wertfeldern.

        Das Wertfeld mit var4 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

        Das Wertfeld mit var5 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

        Das Wertfeld mit var5 ist noch immer die Anweisung am weitesten oben/links, obwohl das Wertfeld mit var8 scheinbar weiter oben positioniert ist. Ausschlaggebend ist, dass der Eingang des Wertfelds mit var5 am weitesten oben/links liegt. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

Nach der vollständigen Auswertung des Netzwerks werden die Regeln zur Auswertung des nächsten Netzwerks angewendet (beginnend mit dem 1. Schritt).

Beispiele für die Reihenfolge

Die Reihenfolge der Netzwerke kann aufgrund der Abarbeitungsreihenfolge (= angezeigte Nummer im roten Rechteck) abgeleitet werden, die in den Beispielen für die Anweisungen der Netzwerke eingeblendet ist.

Beispiel 1: Abhängige und mehrere auswertbare Netzwerke

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW3 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da die Variable var3 vom Netzwerk NW3 abhängt. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. Da NW3 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mit var1 in NW3 ist oberhalb dem Wertfeld mit var4 in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet.

  2. NW1 – Grund: Nach der Abarbeitung von NW3 ist var3 ausgewertet, wodurch nun NW1, NW2 und NW4 auswertbar sind. Da NW1 oberhalb von NW4 und mehr links als NW2 liegt (genauer: der Eingang des Wertfelds mit var3 in NW1 ist am weitesten oben/links positioniert), wird NW1 als nächstes Netzwerk ausgewertet.

  3. NW2 – Grund: NW2 und NW4 sind auswertbar. Da NW2 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mit var3 in NW2 ist oberhalb dem Wertfeld mit var4 in NW4), wird NW2 als nächstes Netzwerk ausgewertet.

  4. NW4 – Grund: Nur NW4 ist auswertbar.

Beispiel 2: Abhängige Netzwerke mit einer Variable als Array-Index

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW_3 – Grund: Die Netzwerke NW_1 und NW_2 sind nicht auswertbar, da die Variable Index, die in diesen Netzwerken als Array-Index verwendet wird, vom Netzwerk NW_3 abhängt. Somit ist nur NW_3 auswertbar. 

  2. NW_1 – Grund: Nach der Abarbeitung von NW_3 ist Index ausgewertet, wodurch nun NW_1 und NW_2 auswertbar sind. Da NW_1 oberhalb von NW2 liegt (genauer: der Eingang des Wertfelds mit ArrVar11[Index] ist am weitesten oben/links positioniert), wird NW_1 als nächstes Netzwerk ausgewertet.

  3. NW_2 – Grund: Nur NW_2 ist auswertbar.

Das folgende Beispiel unterscheidet sich vom obigen Beispiel nur durch die Wertfelder ArrVar3[Index+1] in NW_A und NW_B:

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW_C – Grund: Weder das Netzwerk NW_A noch das Netzwerk NW_B sind auswertbar. NW_A ist nicht auswertbar, da ArrVar3[Index+1] vom Netzwerk NW_B abhängt (zusätzlich hängt die Variable Index, die in NW_A im Array-Index verwendet wird, vom Netzwerk NW_C ab). NW_B ist ebenfalls nicht auswertbar, da die Variable Index, die in NW_B im Array-Index verwendet wird, vom Netzwerk NW_C abhängt. Somit ist nur NW_C auswertbar.

  2. NW_B – Grund: Nur NW_B ist nach der Auswertung von Index auswertbar. Im Unterschied zum obigen Beispiel ist hier NW_A weiterhin nicht auswertbar, da ArrVar3[Index+1] weiterhin vom Netzwerk NW_B abhängt.

  3. NW_A – Grund: Nur NW_A ist auswertbar.

Beispiel 3: Netzwerke ohne und mit Rückkopplungsschleife

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW4 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da ihre Eingänge (= Variable var4 bzw. var3) von anderen Netzwerken abhängen. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. Da aber alle Eingänge von NW3 Teil einer expliziten Rückkopplungsschleife innerhalb von NW3 sind, wird NW3 für die Abarbeitung zurückgestellt. In Folge bleibt nur mehr NW4 für Auswertung.

  2. NW2 – Grund: Nach der Abarbeitung von NW4 ist var3 ausgewertet, wodurch nun NW2 auswertbar ist. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt.
  3. NW1 – Grund: Nach der Abarbeitung von NW2 ist var4 ausgewertet, wodurch nun NW1 auswertbar ist. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt.
  4. NW3 – Grund: Nur NW3 ist auswertbar.

Das folgende Beispiel unterscheidet sich vom obigen Beispiel nun insofern, dass die Eingänge von NW3 Teile einer impliziten Rückkopplungsschleife sind:


Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW3 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da ihre Eingänge (= Variable var4 bzw. var3) von anderen Netzwerken abhängen. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. NW4 wird hier nicht zurückgestellt, da keiner der Eingänge Teil einer expliziten Rückkopplungsschleife ist.  Da NW3 weiter links als NW4 liegt (genauer: der Eingang des Wertfelds mit var1 in NW3 ist weiter links als das Wertfeld mit var7 in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet.

  2. NW4 – Grund: Nur NW4 ist auswertbar.
  3. NW2 – Grund: Nach der Abarbeitung von NW4 ist var3 ausgewertet, wodurch nun NW2 auswertbar ist.
  4. NW1 – Grund: Nach der Abarbeitung von NW2 ist var4 ausgewertet, wodurch nun NW1 auswertbar ist.

Hinweis: Diese Reihenfolge der Netzwerke gilt auch, falls nur ein Eingang von NW3 Teil einer impliziten Rückkopplungsschleife ist und ein Eingang von NW3 Teil einer expliziten Rückkopplungsschleife ist. Also: NW3, NW4, NW2 und abschließend NW1

(info) Im Netzwerk NW3 gilt nun jedoch eine unterschiedliche Reihenfolge der Anweisungen (siehe "Reihenfolge der FBS-Elemente innerhalb eines FBS-Netzwerks", wie logi.CAD 3 die Reihenfolge im Netzwerk bestimmt).