Есть только два символа, которые имеют огромное значение между результатами: ()
. Скобки указывают, что функциональный блок вызывается, что означает, что часть реализации функционального блока выполняется.
Чтобы проиллюстрировать различия, позвольте мне сделать пример функционального блока, чтобы показать различия.
Пример
Здесь я определяю функциональный блок с одним входом Increment
и одним выходом Count
. Каждый раз, когда вызывается функциональный блок, он запускает код в части реализации. Часть реализации увеличит текущий Count
на Increment
.
FUNCTION BLOCK FB_Counter
VAR_INPUT
Increment : UINT := 1;
END_VAR
VAR_OUTPUT
Count : UINT := 0;
END_VAR
// Implementation part
Count := Count + Increment;
Позвольте мне создать экземпляр counter
этого функционального блока в программе Runner
, чтобы мы могли видеть, что происходит, когда мы его вызываем.
PROGRAM Runner
VAR
counter : FB_Counter;
END_VAR
counter(); // Count is set to 1 since the function block implementation is called
counter.Increment := 2; // Increment is set to 2, Count is still at 1 since the implementation of the function block is not called.
counter(); // Count is set to 3 since the implementation of the function block is now executed
counter(Increment:=1); // Increment is set back to 1 and the function block is called again, increasing the Count to 4.
Если вы пройдёте приведенный выше код, используя точку останова, вы увидите, что происходит на каждом этапе пути.
person
Roald
schedule
14.02.2021