Anwenderdefinierte FUs/FBs mit EN/ENO schreiben - Best Practice
Beachten Sie folgende Regeln und Empfehlungen, wenn Sie anwenderdefinierte POEs schreiben.
Anwenderdefinierte IEC 61131-3-POEs
- Die Formalparameter EN und ENO sind standardmäßig vorhanden. Sie müssen nicht als Eingangs-/Ausgangsvariablen deklariert werden. EN besitzt den Anfangswert TRUE. Dieser Wert wird standardmäßig verwendet, wenn EN nicht beschaltet ist.
- Die Auswertung von EN und das Schreiben von ENO sind standardmäßig implementiert. Innerhalb der POE ist keine Kodierung oder explizite Verarbeitung dieser Formalparameter erforderlich. Dies beinhaltet auch, dass der Compiler ENO auf FALSE setzt, wenn EN = FALSE ist.
- Definieren Sie für die Funktion einen Standard-Rückgabewert. Diesen Wert muss die Funktion zurückgeben, wenn diese nicht ausgeführt wurde, da EN = FALSE ist.
Normalerweise sollte dieser Wert der Standardwert des Datentyps der Rückgabewerts sein. Der Rückgabewert sollte auch auf den Standardwert gesetzt werden, wenn ENO aufgrund von internen Prüfungen TRUE ist. (Felder und Strukturen sollten aus Performance-Gründen nicht auf den Standardwert zurückgesetzt werden.) - Innerhalb des Funktions-Code kann ENO unter bestimmten Bedingungen auf FALSE gesetzt werden.
Anwenderdefinierte C#-Funktions-POEs
Zusätzlich zu den oben genannten Punkten für IEC-Funktionen gilt Folgendes für C#-Anwenderfunktionen:
- Wenn innerhalb der C#-Anwenderfunktion auf ENO zugegriffen werden muss, d.h. die C#-Funktion muss in der Lage sein, den ENO-Ausgang zu schreiben, wird ENO innerhalb der Funktion als Rückgabewert behandelt (das Funktionsergebnis wird als OUTPUT-Parameter zurückgegeben).
- Die EN/ENO-Funktion wird vom IEC-Compiler übernommen, wenn kein internes ENO-Handling erforderlich ist (ENO wird innerhalb der Funktion nicht verwendet). Die Funktion wird nicht aufgerufen, wenn EN = FALSE ist.
Anwenderdefinierte IEC 61131-3-FB-POEs
- Die Formalparameter müssen im FB-Prototyp wie folgt deklariert werden:
- Deklarieren Sie in der lokalen 'Variablen'-Tabelle EN als ersten Parameter (mit 'Verwendung = Eingang') und ENO als zweiten Parameter (mit 'Verwendung = Ausgang'). (Verwenden Sie Großbuchstaben für die Variablennamen.) Beide Variablen müssen vom Typ BOOL sein.
- Implementieren Sie die Auswertung von EN. Die FB darf nur ausgeführt werden, wenn EN = TRUE ist.
- Stellen Sie sicher, dass ENO im FB-Code geschrieben wird.
- Zwingend erforderlich: Setzen Sie ENO = FALSE, wenn EN = FALSE ist.
- Optional: Setzen Sie ENO = FALSE bei bestimmten Bedingungen.
- Beachten Sie das Standardverhalten der anderen Ausgänge. Die Standardwerte müssen ausgegeben werden, wenn der FB nicht ausgeführt wurde, da EN = FALSE ist.
Normalerweise sollten die Werte der Ausgänge auf den Standardwert des jeweiligen Datentyps gesetzt werden, wenn EN = FALSE ist. (Felder und Strukturen sollten aus Performance-Gründen nicht auf den Standardwert zurückgesetzt werden.)
Anwenderdefinierte C#-Funktionsbausteine
Analog zum IEC-FB muss der C#-Funktionsbaustein die EN/ENO-Parameter definieren (als erste Parameter, in Großbuchstaben geschrieben).
Beispiel für einen C#-Funktionsbaustein mit internem EN/ENO-Handling