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:
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. aufENO
eines Bausteins zugreifen wollen, ist der formale Aufruf dieses Bausteins erforderlich.
Zuweisungen auf den EingangEN
des Bausteins bzw. Zugriffe auf den AusgangENO
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: |
---|---|
( |
|
FALSE (bzw. einer Entsprechung) |
|
Konsequenz: Wann verwenden Sie EN
bei Bausteinen?
- Wenn Sie die Ausführung eines Bausteins freigeben wollen, setzen Sie
EN
beim Aufruf des Bausteins aufTRUE
. - Wenn Sie die Ausführung eines Bausteins unterdrücken wollen, setzen Sie
EN
beim Aufruf des Bausteins aufFALSE
.
Vermeiden Sie die folgenden Konstrukte:
- Mehrere Bausteine weisen einen Wert auf die gleiche Variable zu.
- Der Wert
FALSE
wird dem EingangEN
für einen dieser Bausteine zugewiesen. - 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 EingangEN
(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 WertFALSE
(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 |
---|
|
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 |
---|
|
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:
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).
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-InstanzRSa1
wurde vonTRUE
aufFALSE
geändert.
Erklärung der Abarbeitung: Obwohl der Wert fürQ1
desRS
-Bausteins nun auf den WertFALSE
gesetzt ist, haben die VariablenVar2a
undVar3a
weiterhin der WertTRUE
. Grund: Aufgrund vonEN=FALSE
desRS
-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 VariableVar2a
aufVar5a
und jene vonVar3a
aufVar6a
werden wieder ausgeführt. Dies wäre erkennbar, wenn die Werte fürVar2a
undVar3a
z.B. in der Sicht Variablenwerte geändert werden. - Der Wert der Variable
add1
, die als Eingang für denADD
-Baustein verwendet wird, wurde von2
auf12
geändert.
Die Abarbeitung ergibt sich wieder analog zu jener beimRS
-Baustein: Obwohladd1
nun auf den Wert12
gesetzt ist, haben die Variablenresult1
undresult2
weiterhin der Wert5
. Grund: Aufgrund vonEN=FALSE
desADD
-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 Variableresult1
aufresult3
und jene vonresult2
aufresult4
werden wieder ausgeführt. Dies wäre erkennbar, wenn die Werte fürresult1
undresult2
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 |
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.