#plc #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, я хочу, чтобы на выходе не было подсчета тестов, но это не так.
Я не могу найти информацию о том, как обрабатывать код из FB_basis в InfoSys от Бекхоффа, просто объясните поведение методов.
Я не знаю, как назвать код, был бы благодарен за ответы.
Ответ №1:
Вы можете использовать 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