THIS
THIS ist eine spezielle Variable und dient der objektorientierten Programmierung.
THIS ist der Zeiger eines Funktionsbausteins auf seine eigene Funktionsbaustein-Instanz. Für jeden Funktionsbaustein steht automatisch ein THIS-Zeiger zur Verfügung.
Sie können THIS nur in Methoden und in Funktionsbausteinen verwenden. THIS steht für die Implementierung in der Eingabehilfe in der Kategorie Schlüsselwörter zur Verfügung.
Dereferenzierung des Zeigers: THIS^
Verwendung des THIS-Zeigers:
- Wenn in einer Methode eine lokale Variable eine Funktionsbaustein-Variable verschattet, können Sie die Funktionsbaustein-Variable mit dem THIS- Zeiger setzen. Siehe unten Beispiel (1)
- Wenn der Zeiger auf die eigene Funktionsbaustein-Instanz zur Verwendung in einer Funktion referenziert wird. (Siehe unten Beispiel (2))
Beispiele:
ST:
THIS^.METH_DoIt();
FUP/CFC/LD:
THIS ist für die Anweisungsliste (AWL) nicht implementiert. |
Beispiele:
(1) Die lokale Variable nVarB verschattet die Funktionsbaustein-Variable nVarB.
FUNCTION_BLOCK FB_A
VAR_INPUT
nVarA: INT;
END_VAR
nVarA := 1;
FUNCTION_BLOCK FB_B EXTENDS FB_A
VAR_INPUT
nVarB : INT := 0;
END_VAR
nVarA := 11;
nVarB := 2;
METHOD DoIt : BOOL
VAR_INPUT
END_VAR
VAR
nVarB : INT;
END_VAR
nVarB := 22; // The local variable nVarB is set.
THIS^.nVarB := 222; // The function block variable nVarB is set even though nVarB is obscured.
PROGRAM MAIN
VAR
fbMyfbB : FB_B;
END_VAR
fbMyfbB(nVarA:=0, nVarB:= 0);
fbMyfbB.DoIt();
(2) Ein Funktionsaufruf benötigt die Referenz auf die eigene Instanz.
FUNCTION F_FunA
VAR_INPUT
fbMyFbA : FB_A;
END_VAR
...;
FUNCTION_BLOCK FB_A
VAR_INPUT
nVarA: INT;
END_VAR
...;
FUNCTION_BLOCK FB_B EXTENDS FB_A
VAR_INPUT
nVarB: INT := 0;
END_VAR
nVarA := 11;
nVarB := 2;
METHOD DoIt : BOOL
VAR_INPUT
END_VAR
VAR
nVarB: INT;
END_VAR
nVarB := 22; //The local variable nVarB is set.
F_FunA(fbMyFbA := THIS^); //F_FunA is called via THIS^.
PROGRAM MAIN
VAR
fbMyFbB: FB_B;
END_VAR
fbMyFbB(nVarA:=0 , nVarB:= 0);
fbMyFbB.DoIt();
Siehe auch: