THIS
是一个特殊变量,用于面向对象编程。
THIS
是一个功能块指向其自身功能块实例的指针。每个功能块都会自动提供一个THIS
指针。
您只能在方法和功能块中使用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; // 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();
(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; //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();