Ausführungssteuerung: EN, ENO

Mit Hilfe des Eingangs EN und des Ausgangs ENO eines →Bausteins können Sie die Ausführung dieses Bausteins und von nachgelagerten Bausteinen steuern. Dieser Abschnitt informiert Sie über:

Dieser Abschnitt gilt sowohl für →ST, für →FBS als auch für →KOP.

Bausteine mit EN/ENO

Alle Bausteine bieten einen Eingang EN und einen Ausgang ENO für den →Aufruf des Bausteins. Dies sind:

  • die Standardbausteine von  logi.CAD 3 , z.B. die IEC-Bausteine

  • Ihre Benutzerbausteine

Beachten Sie, dass ein formaler Aufruf verwendet werden muss, wenn Sie EN/ENO ansprechen wollen. Im Detail:

  • Falls Sie EN für einen Baustein setzen bzw. auf ENO eines Bausteins zugreifen wollen, ist der formale Aufruf dieses Bausteins erforderlich.
    Zuweisungen auf den Eingang EN des Bausteins bzw. Zugriffe auf den Ausgang ENO des Bausteins sind nur beim formalen Aufruf des Bausteins erlaubt. 
  • Falls Sie die Ausführung nicht steuern müssen, können Sie entweder einen formalen (ohne EN/ENO) oder einen nicht-formalen Aufruf des Bausteins verwenden.

Im FAQ-Artikel "Wann soll ich einen formalen Aufruf verwenden? Wann einen nicht-formalen Aufruf?" finden Sie weiterführende Informationen zum formalen und nicht-formalen Aufruf.

Verhalten von EN

Dieses Verhalten gilt sowohl für Standardbausteine als auch für Benutzerbausteine. Siehe "Beispiele für Verhalten von EN und ENO" für Abbildungen zum Verhalten.

Ist der Wert von EN auf diesen Wert gesetzt,gilt folgendes Verhalten beim Aufruf des Bausteins:

TRUE (bzw. einer Entsprechung)

(TRUE ist der vorgegebene Standardwert für EN.)

  1. Der Ausgang ENO wird auf den Wert TRUE (bzw. einer Entsprechung) zurückgesetzt.
  2. Die Funktionalität des Bausteins wird ausgeführt.
  3. Die Funktionalität des Bausteins kann eine →Zuweisung eines →Booleschen Werts auf ENO enthalten. Dies ist der Fall bei Bausteinen mit einer internen Fehlerdiagnose.

FALSE (bzw. einer Entsprechung)

(info) Gilt für den FBS-Editor: Der Wert FALSE gilt auch für einen EN, wenn dieser EN negiert ist und kein anderes Element an diesen EN angeschlossen ist.
Siehe unter "Eingänge/Ausgänge negieren" für Abbildungen zum Verhalten.

  1. Der Ausgang ENO wird auf den Wert FALSE (bzw. einer Entsprechung) zurückgesetzt.
  2. Die Funktionalität des Bausteins wird nicht ausgeführt. →Eingangsvariablen und →Ein-/Ausgangsvariablen werden in der Instanz nicht gesetzt.
  3. Alle →Ausgangsvariablen (mit Ausnahme von ENO) verhalten sich so:
    1. Bei einer →Funktionsbaustein-Instanz behalten diese Variablen die Werte, mit denen diese zuletzt belegt waren.
    2. Das Standardverhalten von logi.CAD 3  ist: Bei einer →Funktion oder einer →Methode erhalten diese Variablen und ein evtl. vorhandener Ergebniswert den →Initialisierungswert. Grund: Funktionen/Methoden haben laut →IEC-Norm kein speicherndes Verhalten.
      Es ist aber möglich, das Verhalten von  logi.CAD 3  so zu ändern, dass die Variablen und ein evtl. vorhandener Ergebniswert der Funktionen ebenfalls die Werte behalten, mit denen diese zuletzt belegt waren. Falls Sie diese Verhalten bevorzugen, müssen Sie die Start-Option lc3.fbdPreserveFunctionOutputs für  logi.CAD 3 definieren. Kontaktieren Sie am besten Ihren Administrator, damit er diese Konfigurationsvariable korrekt definiert. Beachten Sie außerdem, dass diese Start-Option auch die Fehlerbehandlung von Rückkopplungsschleifen für Funktionen ohne dazwischen liegende Variable ändert (siehe unter "→Rückkopplungsschleife" für Details).
  4. Zuweisungen von Ausgangsvariablen (inkl. vom Ausgang ENO) des Bausteins auf andere Variablen werden nicht ausgeführt, sofern diese Zuweisungen im gleichen →Netzwerk liegen (gilt für den FBS-Editor und den KOP-Editor; im FBS-Editor enthält z.B. ein Wertfeld dann diese Variable) oder im gleichen →Aufruf erfolgen (gilt für den ST-Editor).
    Als Abhilfe können Sie solche Zuweisungen im FBS-Editor aber erzwingen, indem Sie die Zuweisung in einem anderen Netzwerk oder mit Hilfe des Aufrufs eines Bausteins im gleichen Netzwerk realisieren. Auf den ST-Editor bezogen müssen Sie einen entsprechenden Zugriff getrennt vom Aufruf einer Funktionsbaustein-Instanz angeben.

Konsequenz: Wann verwenden Sie EN bei Bausteinen?

  • Wenn Sie die Ausführung eines Bausteins freigeben wollen, setzen Sie EN beim Aufruf des Bausteins auf TRUE.
  • Wenn Sie die Ausführung eines Bausteins unterdrücken wollen, setzen Sie EN beim Aufruf des Bausteins auf FALSE.

Vermeiden Sie die folgenden Konstrukte:

  1. Mehrere Bausteine weisen einen Wert auf die gleiche Variable zu.
  2. Der Wert FALSE wird dem Eingang EN für einen dieser Bausteine zugewiesen.
  3. Die Bausteine und die Variable befinden sich im gleichen Netzwerk. Beachten Sie, dass Konnektoren und Fortsetzungen auch zum Netzwerk gehören – auch wenn keine grafische Verbindung sichtbar ist.

Falls Sie solche Konstrukte dennoch erstellen, wird die Zuweisung auf die Variable nicht durchgeführt werden. Falls außerdem Zuweisungen von dieser Variable abhängen, ist das Verhalten dieser Zuweisungen nicht mehr problemlos nachvollziehbar

Verhalten von ENO

Dieses Verhalten gilt sowohl für Standardbausteine als auch für Benutzerbausteine.

  • Bei korrekter Ausführung des Bausteins folgt der Ausgang ENO dem Eingang EN (siehe Tabelle unter "Verhalten von EN"). 
  • Wird ein Fehler bei der Ausführung eines Bausteins mit einer internen Fehlerdiagnose festgestellt, dann wird der Ausgang ENO dieses Bausteins auf den Wert FALSE (bzw. einer Entsprechung)  zurückgesetzt. Die Werte aller anderen Ausgangsvariablen und Ein-/Ausgangsvariablen des Bausteins sind prinzipiell undefiniert. D.h., diese Variablen können auf verschiedenen Zielsystemen unterschiedliche Werte annehmen.

Konsequenz: Wann verwenden Sie ENO bei Bausteinen mit interner Fehlerdiagnose?
Wenn Sie die Ausführung von nachgelagerten Bausteinen freigeben wollen, aber nur wenn der aktuelle Baustein fehlerlos arbeitet, dann machen Sie die Ausführung der nachgelagerten Bausteine vom Ausgang ENO des aktuellen Bausteins abhängig (z.B. durch einen entsprechenden Zugriff auf den Ausgang ENO im formalen Aufruf). Voraussetzung: Der aktuelle Baustein muss über eine interne Fehlerdiagnose verfügen.

Bausteine mit interner Fehlerdiagnose

Die folgenden Standardbausteine verfügen über eine interne Fehlerdiagnose:

 

Falls Sie einen Benutzerbaustein mit einer internen Fehlerdiagnose erstellen wollen, müssen Sie für den Fehlerfall eine oder mehrere Zuweisungen auf ENO in Ihrem Benutzerbaustein erstellen.

Beispiele für Verhalten von EN und ENO

Beispiele: Abarbeitung bei EN=TRUE

FBS-Logik mit einer Funktionsbaustein-Instanz



Hinweis: Die Werte werden mit Hilfe von →OLT-Feldern angezeigt.

Erklärung der Abarbeitung: Da der Eingang EN für die Funktionsbaustein-Instanz RS1a auf den Wert TRUE gesetzt ist, ist der Ausgang ENO auf den Wert TRUE gesetzt und die Funktionalität des RS-Bausteins wird ausgeführt. Deshalb ist Q1 auf TRUE gesetzt. Aufgrund der ausgeführten Zuweisungen sind die Variablen Var1a bis Var6a ebenfalls auf TRUE gesetzt.
Entsprechung als ST-Code


Hinweis: Die Werte für die Ein-/Ausgänge beim Aufruf des RS-Bausteins werden im ST-Viewer aufgrund einer Einschränkung nicht angezeigt. Stattdessen sind die relevanten Werte in der darüberliegenden Sicht Variablenwerte erkennbar.

Bei einer Funktion ergibt sich die gleiche Abarbeitung. Zur Verdeutlichung hier nur die FBS-Logik:


Die Abarbeitung ergibt sich analog zu jener beim RS-Baustein: Da der Eingang EN für ADD auf den Wert TRUE gesetzt ist, ist der Ausgang ENO auf den Wert TRUE gesetzt und die Funktionalität des ADD-Bausteins wird ausgeführt. Deshalb ist der Wert 5 den Variablen result1 und result2 zugewiesen. Aufgrund der ausgeführten Zuweisungen sind die Variablen Var7 und Var8 ebenfalls auf TRUE gesetzt und die Variablen result3 und result4 ebenfalls auf den Wert 5.

Beispiele: Abarbeitung bei EN=FALSE

FBS-Logik mit einer Funktionsbaustein-Instanz

Erklärung der Abarbeitung: Da der Eingang EN für die Funktionsbaustein-Instanz RS1a nun auf den Wert FALSE gesetzt ist, ist der Ausgang ENO auf den Wert FALSE gesetzt und die Funktionalität des RS-Bausteins wird nicht mehr ausgeführt. Q1 ist weiterhin auf TRUE gesetzt, da der letzte Wert erhalten bleibt. Aufgrund von EN=FALSE werden die Zuweisungen von den Ausgangsvariablen des RS-Bausteins nicht ausgeführt, da diese im gleichen Netzwerk liegen. Erkennbar ist dies hier an der Zuweisung des Ausgangs ENO des RS-Bausteins auf Var1a: Der Wert FALSE vom Ausgang ENO wird nicht auf die Variable Var1a zugewiesen, wodurch der letzte Wert TRUE für Var1a erhalten bleibt.
Hinweis: Die anschließende Zuweisung von Variable Var1a auf Var4a wird wieder ausgeführt. Dies wäre erkennbar, wenn der Wert für Var1a z.B. in der Sicht Variablenwerte geändert wird.
Entsprechung als ST-Code


Bei einer Funktion ergibt sich wieder die gleiche Abarbeitung. Zur Verdeutlichung hier nur die FBS-Logik, und zwar das Standardverhalten:

Die Abarbeitung ergibt sich wieder analog zu jener beim RS-Baustein: Da der Eingang EN für den Aufruf von ADD nun auf den Wert FALSE gesetzt ist, ist der Ausgang ENO auf den Wert FALSE gesetzt und die Funktionalität des ADD-Bausteins wird nicht mehr ausgeführt. Aufgrund von EN=FALSE werden die Zuweisungen von den Ausgangsvariablen des ADD-Bausteins nicht ausgeführt, da diese im gleichen Netzwerk liegen. Erkennbar ist dies hier an der Zuweisung des Ausgangs ENO des ADD-Bausteins auf Var7: Der Wert FALSE vom Ausgang ENO wird nicht auf die Variable Var7 zugewiesen, wodurch der letzte Wert TRUE für Var7 erhalten bleibt.
Hinweis: Zum Unterschied zu einer Funktionsbaustein-Instanz wird der letzte Ergebniswert der Funktion nicht beibehalten. Stattdessen ist der Ergebniswert von ADD nun 0, da er hier mit dem Datentyp INT typisiert wurde und 0 der Initialisierungswert von INT ist. Die Zuweisungen vom Ergebniswert werden ebenfalls nicht ausgeführt werden (siehe die nächsten Beispiele für weitere Erläuterungen).
(info) Falls der Ergebniswert von ADD in Ihrer 
logi.CAD 3 -Version aber 5 ist, so verwenden Sie eine Konfiguration, in der die Variablen und ein Ergebniswert der Funktionen die Werte behalten, mit denen diese zuletzt belegt waren. Der Wert 5 war nämlich der zuletzt berechnete Wert.

Um zusätzlich zu verdeutlichen, dass Zuweisungen von den Ausgangsvariablen aufgrund von EN=FALSE nicht ausgeführt werden, wurden die folgenden Werte in der Sicht Variablenwerte geändert:

  • Der Wert für Q1 der Funktionsbaustein-Instanz RSa1 wurde von TRUE auf FALSE geändert.

    Erklärung der Abarbeitung: Obwohl der Wert für Q1 des RS-Bausteins nun auf den Wert FALSE gesetzt ist, haben die Variablen Var2a und Var3a weiterhin der Wert TRUE. Grund: Aufgrund von EN=FALSE des RS-Bausteins werden die Zuweisungen von den Ausgangsvariablen nicht ausgeführt, da diese im gleichen Netzwerk erfolgen. Beachten Sie, dass Konnektoren und Fortsetzungen auch zum Netzwerk gehören – auch wenn keine grafische Verbindung sichtbar ist.
    Hinweis: Die anschließende Zuweisung von Variable Var2a auf Var5a und jene von Var3a auf Var6a werden wieder ausgeführt. Dies wäre erkennbar, wenn die Werte für Var2a und Var3a z.B. in der Sicht Variablenwerte geändert werden
    .
  • Der Wert der Variable add1, die als Eingang für den ADD-Baustein verwendet wird, wurde von 2 auf 12 geändert.

    Die Abarbeitung ergibt sich wieder analog zu jener beim RS-Baustein: Obwohl add1 nun auf den Wert 12 gesetzt ist, haben die Variablen result1 und result2 weiterhin der Wert 5. Grund: Aufgrund von EN=FALSE des ADD-Bausteins werden die Zuweisungen des Ergebniswerts nicht ausgeführt, da diese im gleichen Netzwerk liegen. Beachten Sie, dass Konnektoren und Fortsetzungen auch zum Netzwerk gehören – auch wenn keine grafische Verbindung sichtbar ist.
    Hinweis: Die anschließende Zuweisung von Variable result1 auf result3 und jene von result2 auf result4 werden wieder ausgeführt. Dies wäre erkennbar, wenn die Werte für result1 und result2 z.B. in der Sicht Variablenwerte geändert wird.

Beispiele: Zuweisungen bei EN=FALSE erzwingen

Bei einem Baustein mit EN=FALSE können Sie die Zuweisungen der Ausgangsvariablen trotzdem erzwingen. Beachten Sie, dass das entsprechende Beispiel unter "Beispiele: Abarbeitung bei EN=FALSE" der Ausgangspunkt für die folgenden Abbildungen ist.

Sofern es sich beim Baustein um eine Funktionsbaustein-Instanz handelt, sind diese 2 Abhilfen im FBS-Editor möglich:

1. Abhilfe: Erstellen Sie die Zuweisung in einem anderen Netzwerk (durch Angabe der Ausgangsvariable in einem Wertfeld).

2. Abhilfe: Verwenden Sie den Aufruf des MOVE-Bausteins im gleichen Netzwerk.

Aufgrund von EN=FALSE für die Funktionsbaustein-Instanzen RS1b und RS1c ist deren Ausgang ENO auf den Wert FALSE gesetzt, wobei der Wert für Q1 der entsprechenden Funktionsbaustein-Instanzen wie im vorigen Beispiel auf FALSE geändert wurde. Im Gegensatz zu den vorigen Beispielen werden nun die Zuweisung der Ausgangsvariablen ausgeführt, da diese in einem anderen Netzwerk liegen (1. Abhilfe) oder mit Hilfe des MOVE-Bausteins im gleichen Netzwerk realisiert sind (2. Abhilfe).

Es ist nicht möglich, Ausgangsvariablen von Funktionen in einem Wertfeld anzugeben. Grund: Funktionen haben laut IEC-Norm kein speicherndes Verhalten. Somit ist für Funkionen nur diese Abhilfe möglich:

Abhilfe: Verwenden Sie den Aufruf des MOVE-Bausteins im gleichen Netzwerk.

Aufgrund von EN=FALSE für ADD ist der Ausgang ENO auf den Wert FALSE gesetzt, wobei der Wert für add1 im vorigen Beispiel auf 12 geändert wurde. Im Gegensatz zu den vorigen Beispielen werden nun die Zuweisungen des Ergebniswerts ausgeführt, da diese mit Hilfe des MOVE-Bausteins im gleichen Netzwerk realisiert sind. Beachten Sie, dass die Variablen result5 und result6 nun den Wert 0 haben. Grund: Der Ergebniswert von ADD wurde hier mit dem Datentyp INT typisiert und 0 ist der Initialisierungswert von INT.

Sofern es sich beim Baustein um eine Funktionsbaustein-Instanz handelt, ist diese Abhilfe im ST-Editor möglich:

Abhilfe: Verwenden Sie Zugriffe auf die entsprechende Variablen, die getrennt vom Aufruf anzugeben sind.

Aufgrund von EN=FALSE für RS1a bzw. RS1b ist deren Ausgang ENO auf den Wert FALSE gesetzt, wobei der Wert für Q1 der entsprechenden Funktionsbaustein-Instanzen wie in den anderen Beispielen auf FALSE geändert wurde. Im Gegensatz zu RS1a werden für RS1b die Zuweisung der Ausgangsvariablen ausgeführt, da diese vom Aufruf getrennt angegeben sind.

Falls es sich beim Baustein um eine Funktion handelt, ist keine Abhilfe im ST-Editor möglich. Grund: Funktionen haben kein speicherndes Verhalten. In Folge ist es nicht möglich, Ausgangsvariablen und den Ergebniswert der Funktion getrennt vom Aufruf der Funktion anzugeben.