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