.

THIS

.
.

THIS是一个特殊变量,用于面向对象的编程。

THIS是功能块指向其自己的功能块实例的指针。THIS指针可自动用于每个功能块。

您只能在method方法和相关的功能块实现中使用THIS。在输入助手的关键字类别中,可以使用THIS

指针的解除引用:THIS^

.使用THIS指针

  • 如果局部变量使方法中的功能块变量模糊不清,则可以使用THIS指针设置功能块变量。请参阅以下示例(1)
  • 如果函数中引用了指向功能块自己的功能块实例的指针。请参阅以下示例(2)
.

.例如

ST:

THIS^.METH_DoIt();

FBD/CFC/LD:

 

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();
 

.另请参阅