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
THIS
puntero. 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).