Pointer: THIS
Der Pointer THIS
ist eine spezielle Variable für die objektorientierten Programmierung.
THIS
ist der Pointer eines Funktionsbausteins auf seine eigene Funktionsbaustein-Instanz. Für jeden Funktionsbaustein steht automatisch ein THIS
-Pointer 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 Pointers: THIS^
THIS
-PointersWenn in einer Methode eine lokale Variable eine Funktionsbaustein-Variable verschattet, können Sie die Funktionsbaustein-Variable mit dem
THIS
-Pointer setzen. Siehe unten Beispiel (1)Wenn der Pointer auf die eigene Funktionsbaustein-Instanz zur Verwendung in einer Funktion referenziert wird. (Siehe unten Beispiel (2))
ST
THIS^.METH_DoIt();
FUP/CFC/LD

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();
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();
Tipp
THIS
ist für die Anweisungsliste (AWL) noch nicht implementiert.