.

SUPER

.
.

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

SUPER是功能块的指针,该指针指向从中生成功能块的基本功能块实例。因此,SUPER指针还允许访问基本功能块(基本类)的方法的实现。SUPER指针可自动用于每个功能块。

您只能在方法和相关的功能块实现中使用SUPER

指针的解除引用:SUPER^

使用SUPER指针:在关键字SUPER的帮助下,您调用在基本类或父类实例中有效的方法。

.

.例如

ST:

SUPER^.METH_DoIt();

FBD/CFC/LD

 

THIS指令列表(IL)尚未实现。

.

.例如

使用SUPERTHIS指针


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;