在 Twincat 上使用扩展时如何从基础 FB 调用代码
How to call the code from the basis FB when using extending at a Twincat
我想扩展一个FB但是我需要调用基础FB的代码
示例代码
FB_Basis
FUNCTION_BLOCK FB_Basis
VAR_INPUT
bInTest : BOOL;
END_VAR
VAR_OUTPUT
nOutTest : INT;
END_VAR
IF bInTest THEN
nOutTest := nOutTest + 1;
END_IF
FB_Test
FUNCTION_BLOCK FB_Test EXTENDS FB_Basis
VAR_INPUT
bInTest2 : BOOL;
END_VAR
VAR_OUTPUT
nOutTest2 : INT;
END_VAR
IF bInTest2 THEN
nOutTest2 := nOutTest2 + 1;
END_IF
电话:
FB_Test( bInTest:=
, nOutTest=>
, bInTest2:=
, nOutTest2=>
);
如果我将 bInTest 设置为 TRUE,我希望输出 nOutTest 计数,但它没有。
我无法在 Beckhoff 的 InfoSys 中找到如何处理 FB_basis 中的代码的信息,只是解释了方法的行为。
不知道代码怎么调用,望解答
您可以使用SUPER^()
调用父功能块的主体。您需要将其添加到 FB_Test
:
的正文中
FUNCTION_BLOCK FB_Test EXTENDS FB_Basis
VAR_INPUT
bInTest2 : BOOL;
END_VAR
VAR_OUTPUT
nOutTest2 : INT;
END_VAR
SUPER^(); // Call the body of FB_Basis
IF bInTest2 THEN
nOutTest2 := nOutTest2 + 1;
END_IF
我想扩展一个FB但是我需要调用基础FB的代码
示例代码
FB_Basis
FUNCTION_BLOCK FB_Basis
VAR_INPUT
bInTest : BOOL;
END_VAR
VAR_OUTPUT
nOutTest : INT;
END_VAR
IF bInTest THEN
nOutTest := nOutTest + 1;
END_IF
FB_Test
FUNCTION_BLOCK FB_Test EXTENDS FB_Basis
VAR_INPUT
bInTest2 : BOOL;
END_VAR
VAR_OUTPUT
nOutTest2 : INT;
END_VAR
IF bInTest2 THEN
nOutTest2 := nOutTest2 + 1;
END_IF
电话:
FB_Test( bInTest:=
, nOutTest=>
, bInTest2:=
, nOutTest2=>
);
如果我将 bInTest 设置为 TRUE,我希望输出 nOutTest 计数,但它没有。
我无法在 Beckhoff 的 InfoSys 中找到如何处理 FB_basis 中的代码的信息,只是解释了方法的行为。
不知道代码怎么调用,望解答
您可以使用SUPER^()
调用父功能块的主体。您需要将其添加到 FB_Test
:
FUNCTION_BLOCK FB_Test EXTENDS FB_Basis
VAR_INPUT
bInTest2 : BOOL;
END_VAR
VAR_OUTPUT
nOutTest2 : INT;
END_VAR
SUPER^(); // Call the body of FB_Basis
IF bInTest2 THEN
nOutTest2 := nOutTest2 + 1;
END_IF