SUPER是一个特殊变量,用于面向对象的编程。
SUPER是功能块的指针,该指针指向从中生成功能块的基本功能块实例。因此,SUPER指针还允许访问基本功能块(基本类)的方法的实现。SUPER指针可自动用于每个功能块。
您只能在方法和相关的功能块实现中使用SUPER。
指针的解除引用:SUPER^
使用SUPER指针:在关键字SUPER的帮助下,您调用在基本类或父类实例中有效的方法。
THIS指令列表(IL)尚未实现。 |
.例如
使用SUPER和THIS指针
FUNCTION_BLOCK FB_Base
VAR_OUTPUT
iCnt : INT;
END_VAR
METHOD METH_DoIt : BOOL
iCnt := -1;
METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;
FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
iBase : INT;
END_VAR
THIS^.METH_DoIt(); //Call of the methods of FB_1
THIS^.METH_DoAlso();
SUPER^.METH_DoIt(); //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;
METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;
PROGRAM PLC_PRG
VAR
myBase : FB_Base;
myFB_1 : FB_1;
iTHIS : INT;
iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;
FUNCTION_BLOCK FB_Base
VAR_OUTPUT
iCnt : INT;
END_VAR
METHOD METH_DoIt : BOOL
iCnt := -1;
METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;
FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
iBase : INT;
END_VAR
THIS^.METH_DoIt(); //Call of the methods of FB_1
THIS^.METH_DoAlso();
SUPER^.METH_DoIt(); //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;
METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;
PROGRAM PLC_PRG
VAR
myBase : FB_Base;
myFB_1 : FB_1;
iTHIS : INT;
iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;