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.

In diesem Artikel:

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 Neuron Power Engineer, z.B. die Standardausteine

  • 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 (or an equivalent)

(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 (or an equivalent)

(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 Neuron Power Engineer 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 Neuron Power Engineer 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 Neuron Power Engineer 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.

  • Dies gilt nur für die PLCopen-Bausteine: Der Ausgang ENO des PLCopen-Bausteins wird auf den Wert FALSE (bzw. eine Entsprechung) gesetzt, wenn dieser Baustein bedingungslos einen undefinierten Diagnosecode erreicht.

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:

ABS-Baustein

ACOS-Baustein

ADD_2D_ARRAY-Baustein

ArduinoDigitalWrite-Baustein

ArduinoDigitalRead-Baustein

ArduinoPinMode-Baustein

ASIN-Baustein

Assert-Baustein

CALL_PROGRAM_SYNC-Baustein

CAN_close-Baustein

CAN_getState-Baustein

CAN_init-Baustein

CAN_open-Baustein

CAN_recv-Baustein

CAN_send-Baustein

CAN_setBitrate-Baustein

CAN_setTripleSampling-Baustein

CHS-Baustein

CONCAT-Baustein

CONCAT_DT-Baustein

DELETE-Baustein

DIV-Baustein

DIV_2D_ARRAY-Baustein

DIV_TIME-Baustein

DT_TO_DATE-Baustein

ECM_ACONTIS_CONFIGURED_SLAVES-Baustein

ECM_ACONTIS_CONNECTED_SLAVES-Baustein

ECM_ACONTIS_ISCONNECTED-Baustein

EXPT-Baustein

GET_CURRENT_PI_NAME-Baustein

GET_NAMED_MEMORY-Baustein

GET_NAMED_MEMORY_RETAIN-Baustein

GET_PROGRAM_HANDLE-Baustein

GET_REF_FROM_VARNAME-Baustein

GET_TICKS_FROM_TIME-Baustein

GET_TYPE_FROM_VARNAME-Baustein

GPIOReadPin-Baustein

GPIOSetPinConfig-Baustein

GPIOWritePin-Baustein

I2C_open-Baustein

INET_ATON-Baustein

INET_NTOA-Baustein

INSERT-Baustein

INTEGRATOR-Baustein

LEFT-Baustein

LN-Baustein

LoadRetainData-Baustein

LoadRetainDataFast-Baustein

LOG-Baustein

MAX_2D_ARRAY-Baustein

MB_Close-Baustein

MB_GetState-Baustein

MB_InitRTU-Baustein

MB_InitTCP-Baustein

MB_ReadBits-Baustein

MB_ReadInputBits-Baustein

MB_ReadInputRegisters-Baustein

MB_ReadRegisters-Baustein

MB_SetDebug-Baustein

MB_SetSlave-Baustein

MB_WriteAndReadRegisters-Baustein

MB_WriteBit-Baustein

MB_WriteBits-Baustein

MB_WriteRegister-Baustein

MB_WriteRegisters-Baustein

MEMCMP-Baustein

MEMCPY-Baustein

MEMSET-Baustein

MID-Baustein

MIN_2D_ARRAY-Baustein

MOD-Baustein

MOVE_2D_ARRAY-Baustein

MQTT_Disconnect-Baustein

MQTT_Unsubscribe-Baustein

MUL_2D_ARRAY-Baustein

MUX_BYTE-Baustein

MUX_DINT-Baustein

MUX_DWORD-Baustein

MUX_INT-Baustein

MUX_SINT-Baustein

MUX_UDINT-Baustein

MUX_UINT-Baustein

MUX_USINT-Baustein

MUX_WORD-Baustein

REPLACE-Baustein

RIGHT-Baustein

RTSAppLoadReason-Baustein

SAVE_ALL_NAMED_MEMORY_RETAIN-Baustein

SAVE_NAMED_MEMORY_RETAIN-Baustein

SaveRetainData-Baustein

SaveRetainDataFast-Baustein

SEL_2D_ARRAY-Baustein

SPLIT_DT-Baustein

SQRT-Baustein

SUB_2D_ARRAY-Baustein

SysTaskActualCycleTime-Baustein

SysTaskCycleCount-Baustein

System_close-Baustein

System_delete-Baustein

System_ioctl-Baustein

System_open-Baustein

System_read-Baustein

System_write-Baustein

TCP_Close-Baustein

TCP_Connect-Baustein

TCP_Receive-Baustein

TCP_Send-Baustein

TCP_ServerAcceptConnection-Baustein

TCP_ServerClose-Baustein

TCP_ServerOpen-Baustein

TO_BOOL-Baustein

TO_BYTE-Baustein

TO_DATE-Baustein

TO_DINT-Baustein

TO_DT-Baustein

TO_DWORD-Baustein

TO_INT-Baustein

TO_LINT-Baustein

TO_LREAL-Baustein

TO_LWORD-Baustein

TO_REAL-Baustein

TO_SINT-Baustein

TO_STRING-Baustein

TO_TOD-Baustein

TO_UDINT-Baustein

TO_UINT-Baustein

TO_ULINT-Baustein

TO_USINT-Baustein

TO_WORD-Baustein

UDP_Close-Baustein

UDP_Open-Baustein

UDP_Receive-Baustein

UDP_Send-Baustein

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 ar1a 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 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 ar7 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 Neuron Power Engineer-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 würden.

  • 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 würden.

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. Der Wert für Q1 der entsprechenden Funktionsbaustein-Instanzen wurde wie im vorigen Beispiel auf FALSE geändert. Im Gegensatz zu den vorangegangenen Beispielen werden die Zuweisungen von den Ausgangsvariablen nun ausgeführt, da sie sich in einem anderen Netzwerk befinden (1. Abhilfe) oder da sie unter Verwendung des MOVE-Bausteins im gleichen Netzwerk realisiert wurden (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. Der Wert für add1 wurde wie im vorigen Beispiel auf 12 geändert. 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 und RS1b ist der Ausgang ENO auf den Wert FALSE gesetzt. Der Wert für Q1 der entsprechenden Funktionsbaustein-Instanzen wurde wie im vorigen Beispiel auf FALSE geändert. 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.