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) noch nicht implementiert.
Beispiele
(1) Die lokale Variable iVarB
verschattet die Funktionsbaustein-Variable iVarB
.
FUNCTION_BLOCK fbA VAR_INPUT iVarA: INT; END_VAR iVarA := 1; FUNCTION_BLOCK fbB EXTENDS fbA VAR_INPUT iVarB: INT := 0; END_VAR iVarA := 11; iVarB := 2; METHOD DoIt : BOOL VAR_INPUT END_VAR VAR iVarB: INT; END_VAR iVarB := 22; // The local variable iVarB is set. THIS^.iVarB := 222; // The function block variable iVarB is set even though iVarB is obscured. PROGRAM PLC_PRG VAR MyfbB: fbB; END_VAR MyfbB(iVarA:=0, iVarB:= 0); MyfbB.DoIt();
(2) Ein Funktionsaufruf benötigt die Referenz auf die eigene Instanz.
FUNCTION funA VAR_INPUT pFB: fbA; END_VAR ...; FUNCTION_BLOCK fbA VAR_INPUT iVarA: INT; END_VAR ...; FUNCTION_BLOCK fbB EXTENDS fbA VAR_INPUT iVarB: INT := 0; END_VAR iVarA := 11; iVarB := 2; METHOD DoIt : BOOL VAR_INPUT END_VAR VAR iVarB: INT; END_VAR iVarB := 22; //The local variable iVarB is set. funA(pFB := THIS^); //funA is called via THIS^. PROGRAM PLC_PRG VAR MyfbB: fbB; END_VAR MyfbB(iVarA:=0 , iVarB:= 0); MyfbB.DoIt();
Siehe auch