Call a Function Block

A  Function Block groups an algorithm and a set of private data.

It has inputs and outputs.

A function block can be a:

  • Standard function block (e.g., RS, TON...).
  • User-defined function block (UDFB).

To use a function block, declare an instance of the block as a variable with a unique name.

  • Each instance of a function block has its own set of private data and can be called separately.
  • A call to a function block instance processes the block algorithm on the private data of the instance, using the specified input parameters.

  • Best Practice Put function blocks in an N step and not in P0 or P1 because those steps are executed only once.
    If you must use an FB in P0 or P1 be sure to call it again in the N state so it can finish.

FBD and FFLD Languages

To call a function block in FBD Language or FFLD Language, insert the block in the diagram and to connect its inputs and outputs.

The name of the instance must be specified upon the rectangle of the block.

IL Language Example

Not available.

ST Language Example

To call a function block in ST Language, specify the name of the instance, followed by the input parameters written between parentheses and separated by commas.

To have access to an output parameter, use the name of the instance followed by a dot '.' and the name of the desired parameter.

This example demonstrates a call to an instance of TON function block:

(* MyTimer is declared as an instance of TON: *)
MyTimer (bTrig, t#2s); (* calls the function block *)
TimerOutput := MyTimer.Q;
ElapsedTime := MyTimer.ET;

Assign Block Outputs

This feature was added in v4.04.

It is possible to assign block outputs directly in the function block call using the => operator.

Example

(* MyTimer is declared as an instance of TON: *)
MyTimer(IN:= bTrig, PT:= t#2s, Q => TimerOutput, ET => ElapsedTime);

See Also

Differences between Functions and Function Blocks