Reihenfolge der Anweisungen innerhalb eines FBS-Netzwerks
Nachdem das auszuwertende Netzwerk bestimmt wurde, bestimmt logi.CAD 3 die Reihenfolge, in der die Anweisungen dieses Netzwerks →ausgewertet werden.
Regeln für die Reihenfolge
Zuerst prüft logi.CAD 3, welche der Anweisungen des Netzwerks laut der →IEC-Norm auswertbar sind.
Eine Anweisung ist auswertbar, wenn alle anderen Anweisungen, die Eingangswerte für diese Anweisung erzeugen, im aktuellen Zyklus auswertbar sind.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.
- Falls logi.CAD 3 feststellt, dass
- nur eine der Anweisungen im Netzwerk auswertbar ist, wird diese Anweisung ausgewertet.
- mehrere Anweisungen im Netzwerk auswertbar sind, priorisiert logi.CAD 3 diese Anweisungen zur Auswertung laut dieser Reihenfolge:
Zuweisungen werden vor Aufrufen ausgewertet.
- Falls mehrere Zuweisungen auswertbar sind, prüft logi.CAD 3, ob Zuweisungen direkt einem Aufruf nachfolgen. Solche Zuweisungen werden zuerst ausgewertet, da diese Zuweisungen durch den belegten Eingang
EN
des Aufrufs beeinflusst werden (siehe auch die nachfolgende Regel zum Aufruf mit belegten EingangEN
). - Falls weiterhin mehrere Zuweisungen auswertbar sind, bestimmt logi.CAD 3 die grafische Position dieser Zuweisungen zueinander: Die Zuweisung am weitesten oben/links wird ausgewertet (oben gilt vor links). Beachten Sie: Für Zuweisungen ist die Position des Eingangs des Wertfelds ausschlaggebend, auf das die Zuweisung erfolgt. – siehe Beispiele unten
- Falls keine Zuweisungen auswertbar sind, aber mehrere Aufrufe, bestimmt logi.CAD 3 ebenfalls die grafische Position dieser Aufrufe zueinander: Der Aufruf am weitesten oben/links wird ausgewertet (oben gilt vor links).
Beachten Sie: Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend (ohne einen evtl. angezeigten Instanznamen). – siehe Beispiele unten
- keine einzige Anweisung im Netzwerk auswertbar ist, liegt eine →Rückkopplungsschleife vor. In diesem Fall priorisiert logi.CAD 3 diese Anweisungen zum Auflösen der Rückkopplungsschleife laut dieser Reihenfolge:
Zuerst versucht logi.CAD 3, die Summe der auszuwertenden Anweisungen zu reduzieren. Dazu werden die Anweisungen ignoriert, die der Rückkopplungsschleife nachfolgen und die keine weitere Rückkopplungsschleife enthalten.
Dann versucht logi.CAD 3, eine Rückkopplungsvariable aus den verbleibenden Anweisungen zu bestimmen. Dazu wählt logi.CAD 3 die Variable, deren Zuweisung am weitesten unten/rechts erfolgt. Auch hier gilt: Für Zuweisungen ist die Position des Eingangs des Wertfelds ausschlaggebend, auf das die Zuweisung erfolgt.
logi.CAD 3betrachtet diese Variable für die weitere Auswertung als ausgewertet, bis sie tatsächlich ausgewertet werden kann.Falls keine Zuweisungen in den verbleibenden Anweisungen enthalten sind, wählt logi.CAD 3 den Aufruf des Funktionsbausteins, der am weitesten oben/links liegt. Auch hier gilt: Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend (ohne einen evtl. angezeigten Instanznamen).
logi.CAD 3betrachtet die Ausgänge dieses Aufrufs als ausgewertet, bis der Aufruf tatsächlich ausgewertet werden kann.
- ein Aufruf mit einem belegten Eingang
EN
vorhanden ist, wird die davon abhängige Zuweisung nur ausgeführt, falls der EingangEN=TRUE
. Siehe "Beispiel für Verhalten bei Aufruf mit belegtem EN".
- Sobald logi.CAD 3 eine Anweisung ausgewertet hat oder eine Rückkopplungsschleife aufgelöst hat, werden die Regeln zur Auswertung der nächsten Anweisung angewendet (beginnend mit dem 1. Schritt).
Die Regeln werden solange angewendet, bis alle Anweisungen des Netzwerks ausgewertet sind. Danach bestimmt logi.CAD 3das nächste auszuwertende Netzwerk.
Beispiele für die Reihenfolge, keine Rückkopplungsschleifen
Die Reihenfolge der Zuweisungen wird durch die Abarbeitungsreihenfolge (= angezeigte Nummer im roten Rechteck) in den Beispielen angezeigt.
Beispiel 1: Zugleich auswertbare Zuweisungen
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- Zuweisung auf
var2
– Grund: Aufgrund der grafischen Position wird die Zuweisung aufvar2
ausgewertet. Die Zuweisung aufvar4
, die zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten als jene aufvar2
. - Zuweisung auf
var4
– Grund: Nur diese Zuweisung auswertbar. - Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
var5
– Grund: Aufgrund der grafischen Position wird die Zuweisung aufvar5
ausgewertet. Die Zuweisung aufvar7
ist zwar zur gleichen Zeit auswertbar (sie folgt ebenfalls direkt dem Aufruf desADD
-Bausteins nach), sie liegt aber weiter unter als jene aufvar5
. - Zuweisung auf
var7
– Grund: Die Zuweisung aufvar7
folgt direkt dem Aufruf desADD
-Bausteins nach und wird somit vor der Zuweisung aufvar6
ausgewertet (obwohl die Zuweisung aufvar6
weiter oben liegt). - Zuweisung auf
var6
– Grund: Nur diese Zuweisung auswertbar.
Beispiel 2: Zugleich auswertbare Zuweisungen, scheinbar geänderte Position
Diese Anweisungen werden in der gleichen Reihenfolge wie jene in Beispiel 1 ausgewertet.
- Die Zuweisungen auf
var2
bzw. aufvar4
werden in der gleichen Reihenfolge ausgewertet, da diese Zuweisungen wie in Beispiel 1 positioniert sind. - Die Zuweisungen auf
var5
, aufvar7
bzw. aufvar6
werden ebenfalls in der gleichen Reihenfolge ausgewertet, da die Zuweisung aufvar5
und jene aufvar7
weiterhin direkt dem Aufruf desADD
-Bausteins nachfolgen. Somit werden diese zuerst ausgewertet, obwohl davon die Zuweisung aufvar6
am weitesten oben liegt.
Beispiel 3: Zugleich auswertbare Aufrufe
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der linke, obere Aufruf des
ADD
-Bausteins – Grund: Aufgrund der grafischen Position wird der linke, obere Aufruf desADD
-Bausteins ausgewertet. Der linke, untere Aufruf desADD
-Bausteins, der zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten als der andere Aufruf. - der linke, untere Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - der rechte Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
var5
– Grund: Nur diese Zuweisung ist auswertbar.
Beispiel 4: Zugleich auswertbare Zuweisungen und Aufrufe
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- Zuweisung auf
var4
– Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der linke Aufruf desADD
-Bausteins sind zur gleichen Zeit auswertbar. - der linke Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - der mittlere Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
var5
– Grund: Aufgrund der grafischen Position wird die Zuweisung aufvar5
ausgewertet. Die Zuweisung aufvar6
, die zur gleichen Zeit auswertbar ist (sie folgt ebenfalls direkt dem Aufruf desADD
-Bausteins nach), liegt nämlich weiter unten als jene aufvar5
. - Zuweisung auf
var6
– Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der rechte, obere Aufruf desADD
-Bausteins sind zur gleichen Zeit auswertbar. - der rechte, obere Aufruf des
ADD
-Bausteins – Grund: Aufgrund der grafischen Position wird der rechte, obere Aufruf desADD
-Bausteins ausgewertet. Der rechte, untere Aufruf desADD
-Bausteins, der zur gleichen Zeit auswertbar sind, liegt nämlich weiter unten als der obere Aufruf. - Zuweisung auf
var8
– Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der rechte, untere Aufruf desADD
-Bausteins sind zur gleichen Zeit auswertbar. - der rechte, untere Aufruf des
ADD
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
var9
– Grund: Nur diese Zuweisung auswertbar.
Beispiel 5: Anweisungen mit einer Variable als Array-Index
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der Aufruf des
MOVE
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Hinweis: Die Zuweisung aufVar3
ist nicht auswertbar, da die VariableIndex
als Array-Index verwendet wird. Diese Variable muss ausgewertet sein, damit die Zuweisung aufVar3
auswertbar ist. - Zuweisung auf
Index
– Grund: Nur diese Zuweisung auswertbar. - Zuweisung auf
Var3
– Grund: Nur diese Zuweisung auswertbar.
Hinweis: Die Zuweisung aufVar3
ist nun auswertbar, da die VariableIndex
bereits ausgewertet wurde. - der Aufruf des
OR
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Beispiele für die Reihenfolge, mit Rückkopplungsschleifen
Beispiel 1: Explizite Rückkopplungsschleife mit einer Zuweisung
Da keine einzige Anweisung auswertbar ist, liegt eine Rückkopplungsschleife vor. Dabei handelt es sich um eine explizite Rückkopplungsschleife. Da der Rückkopplungsschleife keine Anweisungen nachfolgen, kann die Summe der Anweisungen zum Auflösen der Rückkopplungsschleife nicht reduziert werden. run
wird als Rückkopplungsvariable bestimmt (ansonsten sind keine Zuweisungen vorhanden), daher wird run
als ausgewertet betrachtet. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:
- Aufruf des
OR
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Aufruf des
AND
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
run
– Grund: Nur diese Zuweisung ist auswertbar.
Beispiel 2: Implizite Rückkopplungsschleife mit einer Zuweisung
Analog zu Beispiel 1, nur handelt es sich hier um eine implizite Rückkopplungsschleife. Bei der Reduzierung der Anweisungen, der Bestimmung der Rückkopplungsvariable und der Auswertung der Anweisungen ergeben sich keine Unterschiede zu Beispiel 1.
Beispiel 3: Explizite Rückkopplungsschleife nur mit Funktionsbausteinen, ohne Zuweisung
Da keine einzige Anweisung auswertbar ist, liegt eine Rückkopplungsschleife vor. Dabei handelt es sich um eine explizite Rückkopplungsschleife. Da der Rückkopplungsschleife keine Anweisungen nachfolgen, kann die Summe der Anweisungen zum Auflösen der Rückkopplungsschleife nicht reduziert werden. Es kann auch keine Rückkopplungsvariable bestimmt werden, da keine Zuweisung vorhanden ist. Zum Auflösen der Rückkopplungsschleife wird in Folge der Aufruf des MyFB_B
-Bausteins bestimmt, da dieser am weitesten oben liegt. Nachdem logi.CAD 3 den Ausgang dieses Bausteins als ausgewertet betrachtet, werden die Anweisungen in dieser Reihenfolge ausgewertet:
- Aufruf des
MyFB_A
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Aufruf des
MyFB_B
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Beispiel 4: Explizite Rückkopplungsschleife nur mit Funktionen, ohne Zuweisung
Beispiel 3 mit Funktionen (anstatt der Funktionsbausteine) wird als fehlerhaft markiert, da solche Rückkopplungsschleifen in logi.CAD 3 nicht unterstützt werden.
Beispiel 5: Rückkopplungsschleife mit nachfolgenden Anweisungen
Die nächsten Beispiele zeigen je eine Rückkopplungsschleife beim Aufruf des FB_D
-Bausteins. Da alle anderen Anweisungen von FB_D
abhängen, ist keine einzige Anweisung im Netzwerk zunächst auswertbar.
Zum Auflösen der Rückkopplungsschleife wird zuerst die Summe der Anweisungen reduziert. Grund: Anweisungen folgen der Rückkopplungsschleife nach und diese Anweisungen enthalten keine weitere Rückkopplungsschleife. Dadurch verbleibt der Aufruf des FB_D
-Bausteins als einzige Anweisung für die anschließende Bestimmung jenes Aufruf des Funktionsbaustein, der am weitesten oben/links liegt (eine Rückkopplungsvariable kann nicht bestimmt werden, da die Zuweisung auf var1
eine der ignorierten Anweisungen ist). In Folge wird der Ausgang von FB_D
als ausgewertet und die Anweisungen werden in dieser Reihenfolge ausgewertet:
- Aufruf des
FB_A
-Bausteins – Grund: Der Aufruf desFB_A
-Bausteins und der Aufruf desFB_D
-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdFB_A
ausgewertet (FB_A
liegt weiter oben alsFB_D
). - Aufruf des
FB_B
-Bausteins – Grund: Der Aufruf desFB_B
-Bausteins und der Aufruf desFB_D
-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdFB_B
ausgewertet (FB_B
liegt weiter oben alsFB_D
). - Aufruf des
FB_C
-Bausteins – Grund: Der Aufruf desFB_C
-Bausteins und der Aufruf desFB_D
-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdFB_C
ausgewertet (FB_C
liegt weiter oben alsFB_D
). - Zuweisung auf
var1
– Grund: Die Zuweisung aufvar1
und der Aufruf desFB_D
-Bausteins sind zur gleichen Zeit auswertbar. Da Zuweisungen vor Aufrufe ausgewertet werden, wird die Zuweisung aufvar1
ausgewertet - Aufruf des
FB_D
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Das folgende Beispiel zeigt eine 2. Rückkopplungsschleife (beim Aufruf des FB_C2
-Bausteins). Dadurch ergibt sich eine andere Reihenfolge.
Zum Auflösen der Rückkopplungsschleife kann hier die Summe der Anweisungen nicht reduziert werden: Der 1. Rückkopplungsschleife folgen zwar Anweisungen nach, aber in diesen ist die andere Rückkopplungsschleife enthalten. Dadurch verbleiben alle Aufruf für die anschließende Bestimmung jenes Aufruf des Funktionsbaustein, der am weitesten oben/links liegt (eine Rückkopplungsvariable kann nicht bestimmt werden, da keine Zuweisung vorhanden ist). Der am weitesten oben/links liegende Aufruf ist der Aufruf des FB_A
-Bausteins. In Folge wird der Ausgang von FB_A
als ausgewertet und die Anweisungen werden in dieser Reihenfolge ausgewertet:
- Aufruf des
FB_B
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. - Aufruf des
FB_C2
-Bausteins – Grund: Nach der Auswertung vonFB_B
sind wieder keine Anweisungen auswertbar. Daher wird aus den restlichen Anweisungen (das sind:FB_C2
undFB_D
) erneut der Aufruf des Funktionsbaustein bestimmt, der am weitesten oben/links liegt. Das ist nun der Aufruf desFB_C2
-Bausteins. Bei der erneuten Bestimmung des Aufrufs wirdFB_A
ignoriert, da sein Ausgang noch immer als ausgewertet betrachtet wird;FB_B
wird ignoriert, da er bereits ausgewertet ist. Daher wird der Ausgang vonFB_C
als ausgewertet betrachtet. In Folge ist der Aufruf desFB_C
-Bausteins als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind. - Aufruf des
FB_A
-Bausteins – Grund: Nach der Auswertung vonFB_C2
sind wieder keine Anweisungen auswertbar. Daher wird aus den restlichen Anweisungen erneut ein Aufruf des Funktionsbaustein bestimmt. Für diese Bestimmung bleibt nur mehr der Aufruf desFB_D
-Bausteins (FB_A
undFB_B
werden bei dieser Bestimmung wieder ignoriert; zusätzlich wirdFB_C2
ignoriert, daFB_C2
bereits ausgewertet ist). Da nun der Ausgang vonFB_D
als ausgewertet betrachtet wird, sind der Aufruf desFB_A
-Bausteins und der Aufruf desFB_D
-Bausteins zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdFB_A
ausgewertet (FB_A
liegt weiter oben alsFB_D
). - Aufruf des
FB_D
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Beispiel 6: Rückkopplungsschleife – geänderte Position von Anweisungen
Die nächsten Beispiele zeigen je eine Rückkopplungsschleife. Beachten Sie, dass in den Beispielen eine andere Rückkopplungsvariable oder ein anderer Aufruf eines Funktionsbaustein bestimmt wird – sofern sich die Position des ausschlaggebenden Elements geändert hat.
Das Beispiel zeigt eine Rückkopplungsschleife vom Wertfeld mit
|
Im folgenden Beispiel ist die Position der Wertfelder mit
|
Das folgende Beispiel zeigt ein komplexeres Konstrukt. In diesem Beispiel folgen der Rückkopplungsschleife keine Anweisungen nach, wodurch die Summe der Anweisungen zum Auflösen der Rückkopplungsschleife nicht reduziert wird.
|
Im folgenden Beispiel ist die Position des Wertfelds mit
|
Vergleichen Sie das linke mit dem rechten Netzwerk. Die Anweisungen im linken Netzwerk werden in der gleichen Reihenfolge wie jene im rechten Netzwerk ausgewertet. Grund: Die Position für die Zuweisungen auf var2 und var1 hat sich nicht geändert. | |
Für beide Netzwerke wird
|
Vergleichen Sie das linke mit dem rechten Netzwerk. Die Anweisungen im linken Netzwerk werden in einer anderen Reihenfolge wie jene im rechten Netzwerk ausgewertet. Grund: Die Position der Aufrufe hat sich geändert. | |
In beiden Netzwerken kann keine Rückkopplungsvariable bestimmt werden, da keine Zuweisung vorhanden ist. Zum Auflösen der Rückkopplungsschleife wird in Folge der Aufruf des Bausteins bestimmt, da dieser am weitesten oben/links liegt. Dabei handelt es sich um einen unterschiedlichen Baustein. | |
Im linken Netzwerk wird der Aufruf des
| Im rechten Netzwerk wird der Aufruf des
|
Beispiel 7: Rückkopplungsschleife aus der Praxis
Das folgende Beispiel zeigt eine Rückkopplungsschleife von var1
auf var1
.
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der untere Aufruf des
AND
-Bausteins (alsAND2
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. (Alle seine Eingangswerte sind auswertbar.) - Zuweisung auf
var1
– Grund: Nach der Auswertung vonAND2
existieren keine auswertbaren Anweisungen. Bei der Zuweisung aufvar1
handelt es sich um eine Rückkopplungsschleife und der obere Aufruf desAND
-Bausteins erhält einen Eingangswert vonvar1
. Zum Auflösen der Rückkopplungsschleife kann die Summe der Anweisungen nicht reduziert werden, da der Rückkopplungsschleife keine Anweisungen nachfolgen. Daher wirdvar1
als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet. In Folge sind sowohl die Zuweisung als auch der obere Aufruf desAND
-Bausteins auswertbar. Da Zuweisungen vor Aufrufe ausgewertet werden, wird die Zuweisung aufvar1
ausgewertet. - der obere Aufruf des
AND
-Bausteins (alsAND1
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar.
Beispiel 8: Verschachtelte Rückkopplungsschleifen
Das folgende Beispiel zeigt zunächst keine einzige abarbeitbare Anweisung.
Das Beispiel enthält mehrere Rückkopplungsschleifen: von ADD1
auf ADD2
, von ADD2
auf ADD3
und von ADD3
auf ADD4
– Sowohl ADD2
als auch ADD3
sind an zwei Rückkopplungsschleifen beteiligt, d.h. es liegen verschachtelte Rückkopplungsschleifen vor. Im Detail:
Der oberste Aufruf des
ADD
-Bausteins (alsADD1
bezeichnet) darf nicht ausgewertet werden, da einer seiner Eingänge durchvar2
belegt ist undvar2
vom darunterliegenden Aufruf desADD
-Bausteins (alsADD2
bezeichnet) berechnet wird.ADD2
darf ebenfalls nicht ausgewertet werden. Der EingangEN
erhält den Wert vom AusgangENO
vonADD1
. Zusätzlich ist der 2. Eingang durchvar3
belegt undvar3
wird vom darunterliegendenADD
-Baustein (alsADD3
bezeichnet) berechnet.- Analog zu
ADD2
darfADD3
ebenfalls nicht ausgewertet werden. Der EingangEN
erhält den Wert vom AusgangENO
vonADD2
. Zusätzlich ist der 2. Eingang durchvar4
belegt undvar4
wird vom unterstenADD
-Baustein (alsADD4
bezeichnet) berechnet. ADD4
darf ebenfalls nicht ausgewertet werden. Der EingangEN
erhält den Wert vom AusgangENO
vonADD3
.
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der oberste Aufruf des
ADD
-Bausteins (alsADD1
bezeichnet) – Grund: Zum Auflösen der Rückkopplungsschleife kann die Summe der Anweisungen nicht reduziert werden, da der Rückkopplungsschleife keine Anweisungen nachfolgen. Daher wirdvar4
als Rückkopplungsvariable bestimmt (dessen Wertfeld liegt am weitesten unten/rechts) und als ausgewertet betrachtet. In Folge ist jedoch weiterhin keine Anweisung auswertbar. Daher wird aus den restlichen Anweisungen erneut eine Rückkopplungsvariable bestimmt, und zwarvar3
(dessen Wertfeld liegt am weitesten unten/rechts), diese wird als ausgewertet betrachtet. In Folge ist noch immer keine Anweisung auswertbar. Daher wird aus den restlichen Anweisungen erneut eine Rückkopplungsvariable bestimmt: jetztvar2
(dessen Wertfeld liegt am weitesten unten/rechts), diese wird als ausgewertet betrachtet. Nun ist der oberste Aufruf desADD
-Bausteins (alsADD1
bezeichnet) als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind. - der darunterliegende Aufruf des
ADD
-Bausteins (alsADD2
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. Alle seine Eingangswerte sind auswertbar, davar3
aufgrund der Bestimmung der Rückkopplungsvariable noch immer als ausgewertet betrachtet wird. - Zuweisung auf
var2
– Grund: Da sowohl die Zuweisung als auchADD3
zur gleichen Zeit auswertbar sind (var4
wird aufgrund der Bestimmung der Rückkopplungsvariable ebenfalls noch immer als ausgewertet betrachtet), wird die Zuweisung ausgewertet (Zuweisungen vor Aufrufe). - der darunterliegende Aufruf des
ADD
-Bausteins (alsADD3
bezeichnet) – Nur dieser Aufruf ist auswertbar. Alle seine Eingangswerte sind auswertbar, davar4
– wie erwähnt – als ausgewertet betrachtet. - Zuweisung auf
var3
– Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auchADD4
sind zur gleichen Zeit auswertbar. - der unterste Aufruf des
AND
-Bausteins (alsAND4
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. - Zuweisung auf
var4
– Grund: Nur diese Zuweisung ist auswertbar.
Beispiel 9: Komplexes Beispiel mit mehreren Rückkopplungsschleifen
Das folgende Beispiel enthält 2 sofort erkennbare Rückkopplungsschleifen:
- eine zwischen dem
FB2
-Baustein und demFB3
-Baustein und - eine zwischen den
RS
-Bausteinen
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der linke Aufruf des
AND
-Bausteins (alsAND1
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. (Alle seine Eingangswerte sind auswertbar.) - der danebenliegende Aufruf des
AND
-Bausteins (alsAND2
bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. - der rechte Aufruf des
RS
-Baustein (alsRS2
bezeichnet) – Grund: Zum Auflösen der Rückkopplungsschleife kann die Summe der Anweisungen nicht reduziert werden: Der 1. Rückkopplungsschleife folgen zwar Anweisungen nach, aber in diesen ist ebenfalls eine Rückkopplungsschleife enthalten. Daher wird der Aufruf des Funktionsbaustein bestimmt, der am weitesten oben/links liegt (da keine Zuweisung vorhanden ist, kann keine Rückkopplungsvariable bestimmt werden). Der am weitesten oben/links liegende Aufruf ist der linke Aufruf desRS
-Bausteins (alsRS1
bezeichnet). Der Ausgang vonRS1
wird als ausgewertet betrachtet. In Folge ist der rechte Aufruf desRS
-Bausteins (alsRS2
bezeichnet) als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind. - Aufruf des
FB3
-Bausteins – Grund: Nach der Auswertung vonRS2
sind wieder keine Anweisungen auswertbar. Zur Auflösung der Rückkopplungsschleifen wird daher wieder der Aufruf des Funktionsbaustein ausgewählt, der am weitesten oben/links liegt. Das ist nun der Aufruf desFB2
-Bausteins. Der Ausgang vonFB2
wird als ausgewertet betrachtet. In Folge ist der Aufruf desFB3
-Bausteins als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind. - der linke Aufruf des
XOR
-Bausteins (alsXOR1
bezeichnet) – Grund: Der Aufruf desFB2
-Bausteins und der linke Aufruf desXOR
-Bausteins (alsXOR1
bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdXOR1
ausgewertet (XOR1
liegt weiter oben alsFB2
). - der mittlere Aufruf des
XOR
-Bausteins (alsXOR2
bezeichnet) – Grund: Der Aufruf desFB2
-Bausteins und der mittlere Aufruf desXOR
-Bausteins (alsXOR2
bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdXOR2
ausgewertet (XOR2
liegt weiter oben alsFB2
). - der rechte Aufruf des
XOR
-Bausteins (alsXOR3
bezeichnet) – Grund: Der Aufruf desFB2
-Bausteins und der rechte Aufruf desXOR
-Bausteins (alsXOR3
bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdXOR3
ausgewertet (XOR3
liegt weiter oben alsFB2
). - der linke Aufruf des
RS
-Bausteins (alsRS1
bezeichnet) – Grund: Der Aufruf desFB2
-Bausteins und der linke Aufruf desRS
-Bausteins (alsRS1
bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wirdRS1
ausgewertet (RS1
liegt weiter oben alsFB2
). - Aufruf des
FB2
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar
Beispiel für Verhalten bei Aufruf mit belegtem EN
Es ist möglich, dass die Auswertung innerhalb des Netzwerks durch einen Aufruf mit einem belegten Eingang EN
beeinflusst wird. Grund: Die direkt folgende Zuweisung, die von diesem Aufruf abhängt, wird in eine sogenannte EN
-Klammerung platziert. Nachfolgende Anweisungen werden außerhalb dieser EN
-Klammerung platziert.
Der Zustand des Eingangs EN
bestimmt, ob die abhängige Zuweisung ausgeführt wird oder nicht. Bei EN=TRUE
wird sie ausgeführt, bei EN=FALSE
wird sie nicht ausgeführt.
Beispiel: Die Anweisungen enthalten den Aufruf eines MOVE
-Bausteins mit belegtem EN
.
Die Zuweisungsanweisung auf Var2
wird in die EN
-Klammerung platziert und ist somit vom Zustand des Eingangs EN
abhängig.
Die Anweisungen werden in dieser Reihenfolge ausgewertet:
- der Aufruf des
MOVE
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. (Die Zuweisung aufVar3
ist nicht auswertbar, da derMOVE
-Baustein einen Wert aufVar2
zuweist.) - Zuweisung auf
Var2
– Grund: Nur diese Zuweisung ist auswertbar.
Diese Zuweisung wird in dieEN
-Klammerung platziert, da sie vonMOVE
abhängt. Alle anderen Anweisungen werden außerhalb derEN
-Klammerung platziert. - Zuweisung auf
Var3
– Grund: Nur diese Zuweisung ist auswertbar. - der Aufruf des
OR
-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
Folgender Code entsteht (vereinfachte Darstellung):
IF (Var1 != false) { MOVE(false); Var2:=MOVE.OUT1; } Var3:=Var2; OR(IN1:=Var3,IN2:=MOVE.ENO);
Dieser vereinfachte Code visualisiert, dass ist die Zuweisung auf Var2
nur bei Var1=TRUE
ausgeführt wird. Grund: Bei Var1=TRUE
gilt auch EN=TRUE
.