Der Zeiger THIS
ist eine spezielle Variable, die für die objektorientierte Programmierung verwendet
wird.
THIS
ist der Zeiger eines Funktionsblocks auf seine eigene Funktionsblockinstanz. Für
jeden Funktionsblock ist automatisch ein Zeiger THIS
verfügbar. Sie können THIS
nur in Methoden und in Funktionsblöcken verwenden. THIS
steht für die Implementierung im Input Assistant in der Kategorie „zur Verfügung Schlüsselwörter“.
Dereferenzierung des Zeigers: THIS^
Verwendung des Zeigers THIS
-
Wenn eine lokale Variable eine Funktionsblockvariable in einer Methode übersteuert, können Sie die Funktionsblockvariable mit dem Zeiger
THIS
setzen. Siehe nachstehendes Beispiel (1) -
Wenn der Zeiger auf die Funktionsblockinstanz des Funktionsblocks zur Verwendung in einer Funktion referenziert wird. (Siehe Beispiel unten (2))
Beispiele
ST
THIS^.METH_DoIt();
FBD/CFC/LD

Beispiel
Die lokale Variable iVarB
hat Vorrang vor der Funktionsblockvariablen 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();
Beispiel
Ein Funktionsaufruf benötigt den Verweis auf seine 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();
THIS
ist noch nicht für die Anweisungsliste (IL) implementiert.