Как вызвать код из базового FB при использовании расширения в Twincat

#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