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:

Beispiele:

ST:

THIS^.METH_DoIt();

FUP/CFC/LD:

THIS 1:
THIS 2:

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: