Puntatore: THIS
Il THIS
pointer è una variabile speciale che viene utilizzata per la programmazione orientata agli oggetti.
THIS
è il puntatore di un blocco funzione alla propria istanza di blocco funzione. UN THIS
il puntatore è automaticamente disponibile per ogni blocco funzione. Puoi usare THIS
solo nei metodi e nei blocchi funzione. THIS
è disponibile per l'implementazione nell'Input Assistant nella categoria Parole chiave.
Dereferenziazione del puntatore: THIS^
THIS
puntatoreSe una variabile locale sostituisce una variabile del blocco funzione in un metodo, è possibile impostare la variabile del blocco funzione con il
THIS
puntatore. Vedi esempio sotto (1)Se si fa riferimento al puntatore all'istanza del blocco funzione del blocco funzione per l'uso in una funzione. (Vedi esempio sotto (2))
ST
THIS^.METH_DoIt();
FBD/CFC/LD

Il iVarB
la variabile locale ha la precedenza su iVarB
variabile del blocco funzione.
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 chiamata di funzione richiede il riferimento alla propria istanza.
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();
Suggerimento
THIS
non è ancora implementato per l'elenco di istruzioni (IL).