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.
- Innerhalb des Funktions-Code kann unter bestimmten Bedingungen ENO = FALSE gesetzt werden.
- Im Falle von ENO = FALSE sollte ein fester Rückgabewert der Funktion definiert werden. Dies könnte der Standardwert des Datentyps sein.Felder und Strukturen sollten aus Performance-Gründen nicht auf den Standardwert zurückgesetzt werden. Aber im Allgemeinen sollte das Projekt den Rückgabewert nicht prüfen, wenn ENO = FALSE ist.
- Ist ENO = FALSE, wird der Ausgangsrückgabewert beim nächsten Aufruf mit EN = FALSE von der angeschlossenen Variablen oder dem Netzwerk übernommen. (Dies gilt nicht für Funktionen innerhalb von Funktionen.)
- 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.
- Im Falle von ENO = FALSE sollten feste Werte für den Ausgang definiert werden. Dies könnte der Standardwert des Datentyps sein.Felder und Strukturen sollten aus Performance-Gründen nicht auf den Standardwert zurückgesetzt werden. Aber im Allgemeinen sollte das Projekt den Rückgabewert nicht prüfen, wenn ENO = FALSE ist.
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