Puntero: THIS
El THIS puntero es una variable especial que se utiliza para la programación orientada a objetos.
THIS es el puntero de un bloque de funciones a su propia instancia de bloque de funciones. A THIS El puntero está disponible automáticamente para cada bloque de funciones. Puedes usar THIS solo en métodos y en bloques de funciones. THIS está disponible para la implementación en Input Assistant en la categoría Palabras clave.
Desreferenciación del puntero: THIS^
THIS punteroSi una variable local anula una variable de bloque de funciones en un método, puede establecer la variable de bloque de funciones con el
THISpuntero. Ver ejemplo a continuación (1)Si se hace referencia al puntero a la propia instancia de bloque de funciones del bloque de funciones para su uso en una función. (Ver ejemplo abajo (2))
S T
THIS^.METH_DoIt();
FBD/CFC/LD

El iVarB variable local anula la iVarB variable del bloque de funciones.
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();Una llamada de función requiere la referencia a su propia instancia.
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();Sugerencia
THIS aún no está implementado para la lista de instrucciones (IL).