Reihenfolge der Netzwerke in FBS
Falls mehrere →Netzwerke im FBS-Editor vorliegen, bestimmt Neuron Power Engineer die Reihenfolge, in der die Netzwerke →auszuwerten sind.
Regeln für die Reihenfolge
-
Zuerst prüft Neuron Power Engineer, 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 von Neuron Power Engineer 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.
Implementierungsabhängige Realisierung
Die IEC-Norm definiert, dass es dem Anwender möglich sein muss, ein implementiererspezifisches Mittel zu verwenden, um die Reihenfolge der Ausführung der Elemente in einer expliziten →Rückkopplungsschleife zu bestimmen, z.B. durch die Auswahl einer Rückkopplungsvariable.
Neuron Power Engineer versucht daher, eine Rückkopplungsschleife mit Hilfe von Rückkopplungsvariablen aufzulösen. Falls jedoch keine Variable in der Rückkopplungsschleife enthalten ist, werden die Aufrufe zum Auflösen der Rückkopplungsschleife verwendet.
Als Folge empfiehlt Neuron Ihnen, solche Rückkopplungsvariablen in Rückkopplungsschleifen zu verwenden. Einerseits können Sie die Abarbeitungsreihenfolge der Netzwerk-Elemente mit Hilfe einer Rückkopplungsvariable besser steuern. Und andererseits bleiben Sie damit konform zur IEC-Norm, da Rückkopplungschleifen ohne Rückkopplungsvariable nicht in der IEC-Norm vorgesehen sind.
Beachten Sie: Falls eine Variable als Array-Index selbst oder im Array-Index verwendet wird, betrachtet Neuron Power Engineer diese Variable ebenfalls als einen Eingang.
-
-
Falls Neuron Power Engineer feststellt, dass
-
nur eines der Netzwerke auswertbar ist, werden die Anweisungen dieses Netzwerk ausgewertet.
-
mehrere Netzwerke oder kein einziges der Netzwerke auswertbar sind, bestimmt Neuron Power Engineer die grafische Position dieser Netzwerke zueinander. Dafür werden die Netzwerke von "oben links nach unten rechts" gereiht. Neuron Power Engineer 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, derAND
-Funktion bzw. desTON
-Funktionsbausteins:
Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend (ohne einen evtl. angezeigten Instanznamen).Beispiele
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: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.
Beispiele
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 mitvar8
scheinbar weiter oben positioniert ist. Ausschlaggebend ist, dass der Eingang des Wertfelds mitvar5
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).
Gut zu wissen |
---|
Die Regeln in diesem Artikel und die folgenden Beispiele gelten für die Standardkonfiguration von Neuron Power Engineer. Unterschiedliche Regeln werden angewendet, falls Sie mit Hilfe der Start-Option |
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:
-
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 mitvar1
in NW3 ist oberhalb dem Wertfeld mitvar4
in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet. -
NW1 – Grund: Nach der Abarbeitung von NW3 ist
var3
ausgewertet. NW1, NW2 und NW4 sind nun daher auswertbar. Da NW1 oberhalb von NW4 und mehr links als NW2 liegt (genauer: der Eingang des Wertfelds mitvar3
in NW1 ist am weitesten oben/links positioniert), wird NW1 als nächstes Netzwerk ausgewertet. -
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 mitvar4
in NW4), wird NW2 als nächstes Netzwerk ausgewertet. -
NW4 – Grund: Nur NW4 ist auswertbar.
Beispiel 2: Abhängige Netzwerke mit einer Variable als Array-Index
Die Netzwerke werden mit dieser Reihenfolge ausgewertet:
-
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. -
NW_1 – Grund: Nach der Abarbeitung von NW_1 ist
Index
ausgewertet. NW_1 und NW_2 sind nun daher auswertbar. Da NW_1 oberhalb von NW2 liegt (genauer: der Eingang des Wertfelds mitArrVar11[Index]
ist am weitesten oben/links positioniert), wird NW_1 als nächstes Netzwerk ausgewertet. -
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:
-
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 VariableIndex
, die in NW_A im Array-Index verwendet wird, vom Netzwerk NW_C ab). NW_B ist ebenfalls nicht auswertbar, da die VariableIndex
, die in NW_B im Array-Index verwendet wird, vom Netzwerk NW_C abhängt. Somit ist nur NW_C auswertbar. -
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, daArrVar3[Index+1]
weiterhin vom Netzwerk NW_B abhängt. -
NW_A – Grund: Nur NW_A ist auswertbar.
Beispiel 3: Netzwerke ohne und mit Rückkopplungsschleife
Die Netzwerke werden mit dieser Reihenfolge ausgewertet:
-
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. -
NW2 – Grund: Nach der Abarbeitung von NW4 ist
var3
ausgewertet. NW2 ist daher auswertbar. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt. -
NW1 – Grund: Nach der Abarbeitung von NW2 ist
var4
ausgewertet. NW1 ist daher auswertbar. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt. -
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:
-
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 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mitvar1
in NW3 ist oberhalb dem Wertfeld mitvar7
in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet. -
NW4 – Grund: Nur NW4 ist auswertbar.
-
NW2 – Grund: Nach der Abarbeitung von NW4 ist
var3
ausgewertet. NW2 ist daher auswertbar. -
NW1 – Grund: Nach der Abarbeitung von NW2 ist
var4
ausgewertet. NW1 ist daher auswertbar.
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. Die Netzwerke werden also in dieser Reihenfolge ausgewertet: NW3, NW4, NW2 und abschließend NW1
Im Netzwerk NW3 gilt nun jedoch eine unterschiedliche Reihenfolge der Anweisungen (siehe "Reihenfolge der FBS-Elemente innerhalb eines FBS-Netzwerks", wie Neuron Power Engineer die Reihenfolge im Netzwerk bestimmt).