THIS是一个特殊变量,用于面向对象的编程。
THIS是功能块指向其自己的功能块实例的指针。THIS指针可自动用于每个功能块。
您只能在method方法和相关的功能块实现中使用THIS。在输入助手的关键字类别中,可以使用THIS。
指针的解除引用:THIS^
.使用THIS指针
THIS在指令列表(IL)尚未实现。 |
.例如
(1)局部变量iVarB使功能块变量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; // 设置局部变量 iVarB
THIS^.iVarB := 222; // 功能块变量iVarB即使掩盖,同样被设置
PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0, iVarB:= 0);
MyfbB.DoIt();
(2)函数调用需要引用其自己的实例。
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; //设置局部变量iVarB
funA(pFB := THIS^); //funA 通过THIS^调用.
PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();