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

  1. 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.

    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. logi.CAD 3 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 logi.cals Ihnen, solche Rückkopplungsvariablen in Rückkopplungsschleifen zu verwenden. Einerseits können Sie die Abarbeitungsreihenfolge der Netzwerk-Elemente m it 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 logi.CAD 3 diese Variable ebenfalls als einen Eingang.

  2. 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 Eingang EN).

      • 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 3 betrachtet 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 3 betrachtet die Ausgänge dieses Aufrufs als ausgewertet, bis der Aufruf tatsächlich ausgewertet werden kann. Direkt nachfolgende Zuweisungen werden von der Auswertung jedoch solange zurückgestellt, bis der Aufruf tatsächlich ausgewertet wurde. Für die weitere Auswertung verbleiben somit nur die nachfolgenden Aufrufe.

    • ein Aufruf mit einem belegten Eingang EN vorhanden ist, wird die davon abhängige Zuweisung nur ausgeführt, falls der Eingang EN=TRUE. Siehe "Beispiel für Verhalten bei Aufruf mit belegtem EN".

  3. 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.

Gut zu wissen

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/lightbulb.svg logi.CAD 3 zeigt eine Abarbeitungsreihenfolge für jeden Aufruf an. Im Gegensatz dazu wird die Abarbeitungsreihenfolge für ein Wertfeld nur angezeigt, falls dafür eine Berechnung erforderlich ist. Bei den folgenden Wertfelder wird somit keine Abarbeitungsreihenfolge angezeigt:

  • Wertfeld mit einer →Konstante

  • Wertfeld mit einer →Variable , wenn der Eingang des Wertfelds nicht verbunden ist

Die folgenden "Beispiele für die Reihenfolge, keine Rückkopplungsschleifen" erklären auch diese Anzeige bzw. Nicht-Anzeige der Abarbeitungsreihenfolge.

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/lightbulb.svg Die Regeln in diesem Artikel und die folgenden Beispiele gelten für die Standardkonfiguration von logi.CAD 3. Unterschiedliche Regeln werden angewendet, falls Sie mit Hilfe der Start-Option lc3.fbdStatementSortLC32 jene Abarbeitungsreihenfolge aktiviert haben, das dem Vorgängerprodukt logi.CAD/32 nachgebildet ist. Das dem Vorgängerprodukt nachgebildete Verhalten in logi.CAD 3 entspricht dem Verhalten im Vorgängerprodukt mit der logi.CAD/32-Umgebungsvariable LC32_SORTORDER_TAR_DEP_CHECK=1. Details zu den Regeln der Abarbeitungsreihenfolge für logi.CAD/32 finden Sie in der Online-Hilfe von logi.CAD/32. die Informationen zu LC32_SORTORDER_TAR_DEP_CHECK=1 finden Sie in der Dokumentation für Administratoren des Vorgängerprodukts (im Artikel "Defining Processing Variant Concerning Variables Used as Array Index").
Die Unterschiede zwischen logi.CAD/32 und logi.CAD 3 in der Standardkonfiguration finden Sie in der englischen Beschreibung "Unterschiede: Vorgängerprodukt zum aktuellen Produkt", suchen Sie in der Beschreibung nach den Zeilen mit den Text "feedback loops" und "execution order".

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

images/download/attachments/413893565/PositionForValueFields3-version-1-modificationdate-1533821518379-api-v22.png

Die Abarbeitungsreihenfolge wird nicht für das Wertfeld mit var1 und jenes mit var3 angezeigt. Grund: Es ist keine Berechnung für diese Wertfelder erforderlich.

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. Zuweisung auf var2 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var2 ausgewertet. Die Zuweisung auf var4, die zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten als jene auf var2.

  2. Zuweisung auf var4 – Grund: Nur diese Zuweisung auswertbar.

  3. Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf var5 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var5 ausgewertet. Die Zuweisung auf var7 ist zwar zur gleichen Zeit auswertbar (sie folgt ebenfalls direkt dem Aufruf des ADD-Bausteins nach), sie liegt aber weiter unter als jene auf var5.

  5. Zuweisung auf var7 – Grund: Die Zuweisung auf var7 folgt direkt dem Aufruf des ADD-Bausteins nach und wird somit vor der Zuweisung auf var6 ausgewertet (obwohl die Zuweisung auf var6 weiter oben liegt).

  6. Zuweisung auf var6– Grund: Nur diese Zuweisung auswertbar.

Beispiel 2: Zugleich auswertbare Zuweisungen, scheinbar geänderte Position

images/download/attachments/414777881/PositionForValueFields4-version-1-modificationdate-1534231363217-api-v2.png

Wie in Beispiel 1 wird die Abarbeitungsreihenfolge nicht für das Wertfeld mit var1 und jenes mit var3 angezeigt und die Anweisungen werden in der gleichen Reihenfolge ausgewertet.

  • Die Zuweisungen auf var2 bzw. auf var4 werden in der gleichen Reihenfolge ausgewertet, da diese Zuweisungen wie in Beispiel 1 positioniert sind.

  • Die Zuweisungen auf var5, auf var7 bzw. auf var6 werden ebenfalls in der gleichen Reihenfolge ausgewertet, da die Zuweisung auf var5 und jene auf var7 weiterhin direkt dem Aufruf des ADD-Bausteins nachfolgen. Somit werden diese zuerst ausgewertet, obwohl davon die Zuweisung auf var6 am weitesten oben liegt.

Beispiel 3: Wie Beispiel 1, aber mit Berechnungen für die linken Wertfeldern

images/download/attachments/435193662/PositionForValueFields3b-version-1-modificationdate-1574074274503-api-v2.png

Im Gegensatz zu Beispiel 1 wird hier eine Abarbeitungsreihenfolge für die linken Wertfelder angezeigt, da eine Berechnung dafür erforderlich ist.

Die Anweisungen werden nun in dieser Reihenfolge ausgewertet:

  1. Berechnung für var1*2 – Grund: Aufgrund der grafischen Position wird das Wertfeld mit var1*2 ausgewertet. Die Berechnung für var3+1, die zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten.

  2. Zuweisung auf var2 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var2 ausgewertet. Die Berechnung für var3+1, die zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten.

  3. Berechnung für var3+1 – Grund: Nur diese Berechnung ist auswertbar.

  4. restliche Auswertung: siehe Beispiel 1, ab Zuweisung auf var4

Beispiel 4: Zugleich auswertbare Aufrufe

images/download/attachments/414777886/PositionForCalls3-version-1-modificationdate-1534231399507-api-v2.png

Die Abarbeitungsreihenfolge wird nicht für das Wertfeld mit var1, jenes mit var2, jenes mit var3 und jenes mit var4 angezeigt. Grund: Es ist keine Berechnung für diese Wertfelder erforderlich.

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. der linke, obere Aufruf des ADD-Bausteins – Grund: Aufgrund der grafischen Position wird der linke, obere Aufruf des ADD-Bausteins ausgewertet. Der linke, untere Aufruf des ADD-Bausteins, der zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten als der andere Aufruf.

  2. der linke, untere Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  3. der rechte Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf var5 – Grund: Nur diese Zuweisung ist auswertbar.

Beispiel 5: Zugleich auswertbare Zuweisungen und Aufrufe

images/download/attachments/414777876/OrderOfStatements-version-1-modificationdate-1534231329692-api-v2.png

Die Abarbeitungsreihenfolge wird nicht für das Wertfeld mit var1, jenes mit var2, jenes mit var3 und jenes mit var7 angezeigt. Grund: Es ist keine Berechnung für diese Wertfelder erforderlich.

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. Zuweisung auf var4 – Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der linke Aufruf des ADD-Bausteins sind zur gleichen Zeit auswertbar.

  2. der linke Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  3. der mittlere Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf var5 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var5 ausgewertet. Die Zuweisung auf var6, die zur gleichen Zeit auswertbar ist (sie folgt ebenfalls direkt dem Aufruf des ADD-Bausteins nach), liegt nämlich weiter unten als jene auf var5.

  5. Zuweisung auf var6 – Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der rechte, obere Aufruf des ADD-Bausteins sind zur gleichen Zeit auswertbar.

  6. der rechte, obere Aufruf des ADD-Bausteins – Grund: Aufgrund der grafischen Position wird der rechte, obere Aufruf des ADD-Bausteins ausgewertet. Der rechte, untere Aufruf des ADD-Bausteins, der zur gleichen Zeit auswertbar sind, liegt nämlich weiter unten als der obere Aufruf.

  7. Zuweisung auf var8 – Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der rechte, untere Aufruf des ADD-Bausteins sind zur gleichen Zeit auswertbar.

  8. der rechte, untere Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  9. Zuweisung auf var9 – Grund: Nur diese Zuweisung auswertbar.

Beispiel 6: Wie Beispiel 5, aber mit Aufrufen in Wertfeldern

images/download/attachments/435193672/OrderOfStatementsb-version-1-modificationdate-1574075167390-api-v2.png

Im Gegensatz zu Beispiel 5 wird hier eine Abarbeitungsreihenfolge für die ganz linken Wertfelder angezeigt, da eine Berechnung dafür erforderlich ist.

Die Anweisungen werden nun in dieser Reihenfolge ausgewertet:

  1. Berechnung für ADD(var1,var2) – Grund: Aufgrund der grafischen Position wird das Wertfeld mit ADD(var1,var2) ausgewertet. Die Berechnung für MOVE(IN:=var3,MOVE=>var4), die zur gleichen Zeit auswertbar ist, liegt nämlich weiter unten.

  2. Berechnung für MOVE(IN:=var3,MOVE=>var4) – Grund: Nur diese Berechnung ist auswertbar.

  3. der linke Aufruf des ADD-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. restliche Auswertung: siehe Beispiel 5, ab Zuweisung auf var5

Beispiel 7: Anweisungen mit einer Variable als Array-Index

images/download/attachments/414777891/OrderOfStatementsArray-version-1-modificationdate-1534231428302-api-v2.png

Die Abarbeitungsreihenfolge wird nicht für das Wertfeld mit ArrayVar[Index] und jenes mit var1 angezeigt. Grund: Es ist keine Berechnung für diese Wertfelder erforderlich.

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. der Aufruf des MOVE-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
    Hinweis: Die Zuweisung auf Var3 ist nicht auswertbar, da die Variable Index als Array-Index verwendet wird. Diese Variable muss ausgewertet sein, damit die Zuweisung auf Var3 auswertbar ist.

  2. Zuweisung auf Index – Grund: Nur diese Zuweisung auswertbar.

  3. Zuweisung auf Var3 – Grund: Nur diese Zuweisung auswertbar.
    Hinweis: Die Zuweisung auf Var3 ist nun auswertbar, da die Variable Index bereits ausgewertet wurde.

  4. 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 Zuweisungen

images/download/attachments/441090067/OrderOfStatements_FBLoop_1a-version-2-modificationdate-1580370557690-api-v2.png

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. feedback wird als Rückkopplungsvariable bestimmt, da das Wertfeld mit feedback weiter unten als das Wertfeld mit run liegt. In Folge wird feedback als ausgewertet betrachtet. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des AND-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Zuweisung auf run – Grund: Nur diese Zuweisung ist auswertbar.

  3. Aufruf des OR-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf feedback – Grund: Nur diese Zuweisung ist auswertbar.

Im Vergleich hier ein analoges Netzwerk, aber ohne Rückkopplungsschleife:

images/download/attachments/441090070/OrderOfStatements_NoFBLoop_1-version-1-modificationdate-1580370564671-api-v2.png

Diese Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. Aufruf des OR-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. Im Unterschied zum Netzwerk mit der expliziten Rückkopplungsschleife sind alle Eingänge für OR auswertbar.

  2. Zuweisung auf feedback – Grund: Nur diese Zuweisung ist auswertbar.

  3. Aufruf des AND-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf run_2 – Grund: Nur diese Zuweisung ist auswertbar.

Beispiel 2: Implizite Rückkopplungsschleife mit Zuweisungen

images/download/attachments/441090068/OrderOfStatements_FBLoop_1b-version-2-modificationdate-1580370561161-api-v2.png

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

images/download/attachments/521699912/OrderOfStatements_FBLoop_1c-version-2-modificationdate-1683813807146-api-v2.png

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:

  1. Aufruf des MyFB_A-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. 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.

images/download/attachments/414777911/OrderOfStatements_FBLoop_1d-version-1-modificationdate-1534231509371-api-v2.png

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Abhängig von Ihrer Konfiguration von logi.CAD 3 wird das Beispiel 4 möglicherweise auch als Warnung (statt als Fehler) gekennzeichnet. Siehe unter "→Rückkopplungsschleife" für Details. Solch eine geänderte Konfiguration von logi.CAD 3 zeigt eine Abarbeitungsreihenfolge auch für eine Rückkopplungsschleife an, wenn diese nur Funktionen enthält:
images/download/attachments/521699927/OrderOfStatements_FBLoop_1dWarning-version-2-modificationdate-1683813873067-api-v2.png

In welcher Reihenfolge werden nun die Anweisungen ausgewertet, wenn die Rückkopplungsschleife nur Funktionen enthält und diese Rückkopplungsschleife als Warnung gekennzeichnet wird?

logi.CAD 3 wendet die Regeln zum Auflösen der Rückkopplungsschleife an, wie diese unter "Regeln für die Reihenfolge" erläutert sind – allerdings wird nun kein Aufruf eines Funktionsbausteine, sondern der Aufruf einer Funktion zum Auflösen der Rückkopplungsschleife verwendet. Dieser Aufruf der Funktion wird so bestimmt:
logi.CAD 3 wählt den Aufruf der Funktion, die am weitesten oben/links liegt. Auch hier gilt: Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend. logi.CAD 3 betrachtet die Ausgänge dieses Aufrufs als ausgewertet, bis der Aufruf tatsächlich ausgewertet werden kann. D irekt nachfolgende Zuweisungen werden von der Auswertung solange zurückgestellt, bis der Aufruf tatsächlich ausgewertet wurde.

Auf das obige Beispiel bezogen wird der Aufruf des AND -Bausteins bestimmt, da dieser weiter oben liegt. Nachdem logi.CAD 3 den Ausgang dieses Aufrufs als ausgewertet betrachtet, werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des OR-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des AND-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

Sobald Sie eine Zuweisung oder einen Funktionsbaustein in diese Rückkopplungsschleife einfügen, gelten erneut die Regeln zum Auflösen der Rückkopplungsschleife, wie diese unter "Regeln für die Reihenfolge" erläutert sind.

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.

images/download/attachments/521699942/OrderOfStatements_FBLoop_2a-version-2-modificationdate-1683813934971-api-v2.png

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:

  1. Aufruf des FB_A-Bausteins – Grund: Der Aufruf des FB_A-Bausteins und der Aufruf des FB_D-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird FB_A ausgewertet (FB_A liegt weiter oben als FB_D).

  2. Aufruf des FB_B-Bausteins – Grund: Der Aufruf des FB_B-Bausteins und der Aufruf des FB_D-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird FB_B ausgewertet (FB_B liegt weiter oben als FB_D).

  3. Aufruf des FB_C-Bausteins – Grund: Der Aufruf des FB_C-Bausteins und der Aufruf des FB_D-Bausteins sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird FB_C ausgewertet (FB_C liegt weiter oben als FB_D).

  4. Zuweisung auf var1 – Grund: Die Zuweisung auf var1 und der Aufruf des FB_D-Bausteins sind zur gleichen Zeit auswertbar. Da die Zuweisung auf var1 nicht direkt dem Aufruf des FB_D-Bausteins nachfolgt, wird sie von der Auswertung nicht zurückgestellt. Somit gilt, dass Zuweisungen vor Aufrufe ausgewertet werden. Deshalb wird die Zuweisung auf var1 ausgewertet.

  5. 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.

images/download/attachments/521699957/OrderOfStatements_FBLoop_2b-version-3-modificationdate-1683891641394-api-v2.png

Zum Auflösen der Rückkopplungsschleifen kann hier die Summe der Anweisungen zuerst nicht reduziert werden: Der 1. Rückkopplungsschleife folgen zwar Anweisungen nach, aber in diesen ist die andere Rückkopplungsschleife enthalten. Dadurch verbleiben alle Aufrufe für das Auflösen der Rückkopplungsschleifen. Hier wird zuerst die Rückkopplungsschleife bestimmt, die aufzulösen ist. Diese Bestimmung erfolgt anhand der Aufrufe FB_D (in der linken Rückkopplungsschleife enthalten) und FB_C2 (in der rechten Rückkopplungsschleife enthalten). Da FB_C2 weiter oben als FB_D liegt, wird die rechte Rückkopplungsschleife mit FB_C2 zuerst aufgelöst. Somit wird der Ausgang von FB_C2 als ausgewertet betrachtet, bis dieser Aufruf tatsächlich ausgewertet werden kann . In Folge ist die rechte Rückkopplungsschleife nicht mehr für die weitere Auswertung vorhanden. Da aber weiterhin keine der Anweisung auswertbar ist, wird die andere (linke) Rückkopplungsschleife mit FB_D aufgelöst. Somit wird auch der Ausgang von FB_D als ausgewertet betrachtet, wodurch nun der Aufruf des FB_A-Bausteins auswertbar ist. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des FB_A-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des FB_B-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  3. Aufruf des FB_C2-Bausteins – Grund: Nach der Auswertung von FB_B kann FB_C2 tatsächlich ausgewertet werden.

  4. Aufruf des FB_D-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

Das folgende Beispiel zeigt ein Konstrukt, in dem Zuweisungen und ein Aufruf direkt einem Aufruf in einer Rückkopplungsschleife nachfolgen:

images/download/attachments/521699974/OrderOfStatements_FBLoop_2c-version-2-modificationdate-1683814074404-api-v2.png

Da keine einzige Anweisung auswertbar ist, liegt wieder eine Rückkopplungsschleife vor. Da die Anweisungen, die der Rückkopplungsschleife aufgrund von run nachfolgen, eine weitere Rückkopplungsschleife enthalten (jene vom Aufruf des OR-Bausteins auf den Aufruf des FB1-Bausteins) kann hier die Summe der Anweisungen nicht reduziert werden: Dadurch verbleiben alle Anweisungen zum Auflösen der Rückkopplungsschleife. initOK wird zuerst als Rückkopplungsvariable bestimmt, da das Wertfeld mit initOK weiter unten als das Wertfeld mit run liegt. Da aber weiterhin keine der Anweisung auswertbar ist, wird die nächste Rückkopplungsvariable bestimmt – das ist nun run. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des AND-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.
    Nach der Auswertung von AND ist aufgrund der nächsten Rückkopplungsschleife keine der folgenden Anweisungen auswertbar. Zum Auflösen dieser Rückkopplungsschleife wird zuerst die Summe der Anweisungen reduziert. Grund: Die Zuweisungen nach dem Aufruf des FB1-Bausteins folgen der Rückkopplungsschleife nach und diese Anweisungen enthalten keine weitere Rückkopplungsschleife. Dadurch verbleibt der Aufruf des OR-Bausteins und der Aufruf des FB1-Bausteins 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 Zuweisungen Teil der ignorierten Anweisungen sind). Hier wird der Aufruf des FB1-Bausteins zum Auflösen der Rückkopplungsschleife gewählt, d a der OR-Baustein eine Funktion ist. In Folge werden die Ausgänge von FB1 als ausgewertet betrachtet und die restlichen Anweisungen können nun weiter ausgewertet werden. Da die Zuweisungen auf run und initOK dem Aufruf von FB1 direkt nachfolgen, werden diese jedoch von der Auswertung solange zurückgestellt, bis der Aufruf von FB1 tatsächlich ausgewertet wurde.

  2. Aufruf des OR-Bausteins – Grund: Nach dem Auflösen der 2. Rückkopplungsschleife ist nur dieser Aufruf auswertbar, da alle seine Eingangswerte auswertbar sind.

  3. Aufruf des FB1-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  4. Zuweisung auf run – Grund: Nach der tatsächlichen Auswertung von FB1 sind nun die Zuweisungen auf run und initOK zur gleichen Zeit auswertbar. Da das Wertfeld mit run weiter oben liegt, wird die Zuweisung auf run zuerst ausgewertet.

  5. Zuweisung auf initOK – Grund: Nur diese Zuweisung 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 var2 auf den Aufruf des AND-Bausteins. Die Zuweisung auf var3 kann nicht ausgewertet werden (da sie dem Aufruf des AND-Bausteins nachfolgt) und wird zum Auflösen der Rückkopplungsschleife ignoriert.

images/download/attachments/414777928/OrderOfStatements_FBLoop_3a-version-1-modificationdate-1534231583492-api-v2.png

var2 wird aus den verbleibenden Anweisungen als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet, da das Wertfeld mit var2 weiter unten als das Wertfeld mit var1 liegt. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des AND-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Zuweisung auf var1 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var1 ausgewertet. Die Zuweisung auf var3 ist zwar zur gleichen Zeit auswertbar (sie folgt ebenfalls direkt dem Aufruf des AND-Bausteins nach), sie liegt aber weiter unter als jene auf var1.

  3. Zuweisung auf var3 – Grund: Die Zuweisung auf var3 folgt direkt dem Aufruf des AND-Bausteins nach und wird somit vor der Zuweisung auf var2 ausgewertet (obwohl die Zuweisung auf var2 weiter oben liegt).

  4. Zuweisung auf var2 – Grund: Nur diese Zuweisung ist auswertbar.

Im folgenden Beispiel ist die Position der Wertfelder mit var1 und var2 geändert. Dadurch ergibt sich eine andere Reihenfolge, durch den Aufruf eines anderen Bausteins ergibt sich keine Änderung in der Reihenfolge.

images/download/attachments/414777933/OrderOfStatements_FBLoop_3b-version-1-modificationdate-1534231604612-api-v2.png

var1 wird aus den verbleibenden Anweisungen als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet, da das Wertfeld mit var1 weiter unten als das Wertfeld mit var2 liegt. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Zuweisung auf var2 – Grund: Nur diese Zuweisung ist auswertbar.

  2. Aufruf des OR-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  3. Zuweisung auf var1 – Grund: Aufgrund der grafischen Position wird die Zuweisung auf var1 ausgewertet. Die Zuweisung auf var3 ist zwar zur gleichen Zeit auswertbar (sie folgt ebenfalls direkt dem Aufruf des AND-Bausteins nach), sie liegt aber weiter unter als jene auf var1.

  4. Zuweisung auf var3 – Grund: Nur diese Zuweisung ist auswertbar.

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.
images/download/attachments/414777938/OrderOfStatements_FBLoop_3c-version-1-modificationdate-1534231625371-api-v2.png

var1 wird als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet, da das rechte Wertfeld mit var1 weiter rechts als das Wertfeld mit var2 liegt. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des FB1-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des FB2-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. (var1 wird weiterhin als ausgewertet betrachtet. Der Aufruf des FB3-Bausteins ist nicht auswertbar, da einer seiner Eingangswerte von var2 erzeugt wird und var2 wurde noch nicht ausgewertet.)

  3. Zuweisung auf var2 – Grund: Nur diese Zuweisung ist auswertbar.

  4. Aufruf des FB3-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  5. Zuweisung auf var1 – Grund: Nur diese Zuweisung ist auswertbar.

Im folgenden Beispiel ist die Position des Wertfelds mit var2 geändert. Dadurch ergibt sich eine andere Reihenfolge.

images/download/attachments/414777943/OrderOfStatements_FBLoop_3d-version-1-modificationdate-1534231648758-api-v2.png

var2 wird als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet, da das Wertfeld mit var2 weiter unten als das Wertfeld mit var1 liegt. Dadurch existiert jedoch noch immer keine einzige auswertbare Anweisung. Daher wird eine erneute Rückkopplungsvariable bestimmt, und zwar var1. Beachten Sie, dass sowohl var1 als auch var2 als ausgewertet betrachtet werden. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des FB1-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des FB3-Bausteins – Grund: Aufgrund der grafischen Position wird der Aufruf des FB3-Bausteins ausgewertet, obwohl der Aufruf des FB2-Bausteins ebenfalls auswertbar ist. Zur Erinnerung: Da sowohl var1 als auch var2 als ausgewertet betrachtet werden, sind die Aufrufe für FB2 und FB3 auswertbar. Und wenn mehrere Aufrufe auswertbar sind, wird jener Aufruf ausgewertet, der am weitesten oben/links liegt.

  3. Zuweisung auf var1 – Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch der Aufruf des FB2-Bausteins sind zur gleichen Zeit auswertbar.

  4. Aufruf des FB2-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  5. Zuweisung auf var2 – Grund: Nur diese Zuweisung ist auswertbar.

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.

images/download/attachments/414777948/OrderOfStatements_FBLoop_5b-version-1-modificationdate-1534231670082-api-v2.png

images/download/attachments/414777953/OrderOfStatements_FBLoop_5a-version-1-modificationdate-1534231692029-api-v2.png

Für beide Netzwerke wird var1 als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet, da das rechte Wertfeld mit var1 weiter unten als das rechte Wertfeld mit var2 liegt. In Folge werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Zuweisung auf var2 – Grund: Nur diese Zuweisung ist auswertbar.

  2. Zuweisung auf var1 – Grund: Nur diese Zuweisung ist auswertbar.

  3. Aufruf des FB2-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

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.

images/download/attachments/521699989/OrderOfStatements_FBLoop_5c-version-2-modificationdate-1683814183057-api-v2.png


images/download/attachments/521700004/OrderOfStatements_FBLoop_5d-version-2-modificationdate-1683814311012-api-v2.png

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 FB2-Bausteins bestimmt. Nachdem logi.CAD 3 den Ausgang dieses Bausteins als ausgewertet betrachtet, werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des FB3-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des FB2-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

Im rechten Netzwerk wird der Aufruf des FB3-Bausteins bestimmt. Nachdem logi.CAD 3 den Ausgang dieses Bausteins als ausgewertet betrachtet, werden die Anweisungen in dieser Reihenfolge ausgewertet:

  1. Aufruf des FB2-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

  2. Aufruf des FB3-Bausteins – Grund: Nur dieser Aufruf ist auswertbar.

Beispiel 7: Rückkopplungsschleife aus der Praxis

Das folgende Beispiel zeigt eine Rückkopplungsschleife von var1 auf var1.

images/download/thumbnails/414777968/OrderOfStatements_FBLoop_6-version-1-modificationdate-1534231756894-api-v2.png

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. der untere Aufruf des AND-Bausteins (als AND2 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. (Alle seine Eingangswerte sind auswertbar.)

  2. Zuweisung auf var1 – Grund: Nach der Auswertung von AND2 existieren keine auswertbaren Anweisungen. Bei der Zuweisung auf var1 handelt es sich um eine Rückkopplungsschleife und der obere Aufruf des AND-Bausteins erhält einen Eingangswert von var1. Zum Auflösen der Rückkopplungsschleife kann die Summe der Anweisungen nicht reduziert werden, da der Rückkopplungsschleife keine Anweisungen nachfolgen. Daher wird var1 als Rückkopplungsvariable bestimmt und als ausgewertet betrachtet. In Folge sind sowohl die Zuweisung als auch der obere Aufruf des AND-Bausteins auswertbar. Da Zuweisungen vor Aufrufe ausgewertet werden, wird die Zuweisung auf var1 ausgewertet.

  3. der obere Aufruf des AND-Bausteins (als AND1 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar.

Beispiel 8: Verschachtelte Rückkopplungsschleifen

Das folgende Beispiel zeigt zunächst keine einzige abarbeitbare Anweisung.

images/download/attachments/414777973/OrderOfStatements_FBLoop_7-version-1-modificationdate-1534231779960-api-v2.png

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 (als ADD1 bezeichnet) darf nicht ausgewertet werden, da einer seiner Eingänge durch var2 belegt ist und var2 vom darunterliegenden Aufruf des ADD-Bausteins (als ADD2 bezeichnet) berechnet wird.

  • ADD2 darf ebenfalls nicht ausgewertet werden. Der Eingang EN erhält den Wert vom Ausgang ENO von ADD1. Zusätzlich ist der 2. Eingang durch var3 belegt und var3 wird vom darunterliegenden ADD-Baustein (als ADD3 bezeichnet) berechnet.

  • Analog zu ADD2 darf ADD3 ebenfalls nicht ausgewertet werden. Der Eingang EN erhält den Wert vom Ausgang ENO von ADD2. Zusätzlich ist der 2. Eingang durch var4 belegt und var4 wird vom untersten ADD-Baustein (als ADD4 bezeichnet) berechnet.

  • ADD4 darf ebenfalls nicht ausgewertet werden. Der Eingang EN erhält den Wert vom Ausgang ENO von ADD3.

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. der oberste Aufruf des ADD-Bausteins (als ADD1 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 sind Rückkopplungsschleifen enthalten. Daher wird var4 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 zwar var3 (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: jetzt var2 (dessen Wertfeld liegt am weitesten unten/rechts), diese wird als ausgewertet betrachtet. Nun ist der oberste Aufruf des ADD-Bausteins (als ADD1 bezeichnet) als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind.

  2. der darunterliegende Aufruf des ADD-Bausteins (als ADD2 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. Alle seine Eingangswerte sind auswertbar, da var3 aufgrund der Bestimmung der Rückkopplungsvariable noch immer als ausgewertet betrachtet wird.

  3. Zuweisung auf var2 – Grund: Da sowohl die Zuweisung als auch ADD3 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).

  4. der darunterliegende Aufruf des ADD-Bausteins (als ADD3 bezeichnet) – Nur dieser Aufruf ist auswertbar. Alle seine Eingangswerte sind auswertbar, da var4 – wie erwähnt – als ausgewertet betrachtet.

  5. Zuweisung auf var3 – Grund: Zuweisungen vor Aufrufe; Sowohl diese Zuweisung als auch ADD4 sind zur gleichen Zeit auswertbar.

  6. der unterste Aufruf des AND-Bausteins (als AND4 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar.

  7. 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 dem FB3-Baustein und

  • eine zwischen den RS-Bausteinen

images/download/attachments/521700019/OrderOfStatements_FBLoop_8-version-2-modificationdate-1683814386263-api-v2.png

Die Anweisungen werden in dieser Reihenfolge ausgewertet:

  1. der linke Aufruf des AND-Bausteins (als AND1 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar. (Alle seine Eingangswerte sind auswertbar.)

  2. der danebenliegende Aufruf des AND-Bausteins (als AND2 bezeichnet) – Grund: Nur dieser Aufruf ist auswertbar.

  3. der rechte Aufruf des RS-Baustein (als RS2 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 eines Funktionsbausteins (beachten Sie, dass es sich bei den XOR-Bausteinen um Funktionen handelt) ist der linke Aufruf des RS-Bausteins (als RS1 bezeichnet). Der Ausgang von RS1 wird als ausgewertet betrachtet. In Folge ist der rechte Aufruf des RS-Bausteins (als RS2 bezeichnet) als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind.

  4. Aufruf des FB3-Bausteins – Grund: Nach der Auswertung von RS2 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 des FB2-Bausteins. Der Ausgang von FB2 wird als ausgewertet betrachtet. In Folge ist der Aufruf des FB3-Bausteins als einzige Anweisung auswertbar, da alle seine Eingangswerte auswertbar sind.

  5. der linke Aufruf des XOR-Bausteins (als XOR1 bezeichnet) – Grund: Der Aufruf des FB2-Bausteins und der linke Aufruf des XOR-Bausteins (als XOR1 bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird XOR1 ausgewertet (XOR1 liegt weiter oben als FB2).

  6. der mittlere Aufruf des XOR-Bausteins (als XOR2 bezeichnet) – Grund: Der Aufruf des FB2-Bausteins und der mittlere Aufruf des XOR-Bausteins (als XOR2 bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird XOR2 ausgewertet (XOR2 liegt weiter oben als FB2).

  7. der rechte Aufruf des XOR-Bausteins (als XOR3 bezeichnet) – Grund: Der Aufruf des FB2-Bausteins und der rechte Aufruf des XOR-Bausteins (als XOR3 bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird XOR3 ausgewertet (XOR3 liegt weiter oben als FB2).

  8. der linke Aufruf des RS-Bausteins (als RS1 bezeichnet) – Grund: Der Aufruf des FB2-Bausteins und der linke Aufruf des RS-Bausteins (als RS1 bezeichnet) sind zur gleichen Zeit auswertbar. Aufgrund der grafischen Position wird RS1 ausgewertet (RS1 liegt weiter oben als FB2).

  9. 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.

images/download/attachments/414777988/ENBracketing-version-1-modificationdate-1534235180222-api-v2.png

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:

  1. der Aufruf des MOVE-Bausteins – Grund: Nur dieser Aufruf ist auswertbar. (Die Zuweisung auf Var3 ist nicht auswertbar, da der MOVE-Baustein einen Wert auf Var2 zuweist.)

  2. Zuweisung auf Var2 – Grund: Nur diese Zuweisung ist auswertbar.
    Diese Zuweisung wird in die EN-Klammerung platziert, da sie von MOVE abhängt. Alle anderen Anweisungen werden außerhalb der EN-Klammerung platziert.

  3. Zuweisung auf Var3 – Grund: Nur diese Zuweisung ist auswertbar.

  4. 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.