Function Blocks

Function BlocksClosed A function block groups an algorithm and a set of private data. It has inputs and outputs. (FBs) take several inputs and return a group of values as the output as the result of processing.

FunctionClosed A function calculates a result according to the current value of its inputs. A function has no internal data and is not linked to declared instances. Blocks are the equivalent to Integrated Circuits (ICClosed Integrated Circuits - Miniaturized electronic circuits (consisting mainly of semiconductor devices, as well as passive components) that have been manufactured in the surface of a thin substrate of semiconductor material.), representing a specialized control function. They are specified at such a level that you quickly recognize the functionality of the function block and specifically what happens if it is activated or connected to other blocks in a sequence of motion commands.

They contain data as well as an algorithm, so they can keep trackClosed Characterized by an axis group that follows with its movement the movement of another axis group. of the past (which is one of the differences from Functions). They have a well-defined interface and hidden internals, like an IC or a black box. The user only sees the interface, being the inputs and outputs. The code itself is hidden.

Function Blocks can be used in any of the IECClosed International Electrotechnical Commission - A not-for-profit, non-governmental international standards organization that prepares and publishes International Standards for all electrical, electronic and related technologies. languages. In an SFCClosed Sequential function chart - It can be used to program processes that can be split into steps. The main components of SFC are: - Steps with associated actions. - Transitions with associated logic conditions. - Directed links between steps and transitions. programClosed The act of performing a sequence of instructions or commands., function blocks can be part of a step or transition created in FFLD, FBDClosed Function block diagram - Describes a function between input variables and output variables. A function is described as a set of elementary blocks., ILClosed Instruction list - This is a low-level language and resembles assembly., and STClosed Structured text - A high-level language that is block structured and syntactically resembles Pascal..

Once defined, they can be used repeatedly, in the same program, different programs, or even different projects. This makes them highly re-usable.

There are predefined function blocks (e.g., timers, counters, or triggers) and additional function blocks that can come from libraries produced by you or other suppliers (e.g., a temperature control-loop or PIDClosed Proportional-Integral-Derivative - A PID controller is a generic control-loop feedback mechanism widely used in industrial control systems. An error occurs when an event or a disturbance triggers off a change in the process variable. A PID controller attempts to correct the error between a measured process variable and a desired setpoint by calculating and then outputting a corrective action that can adjust the process accordingly.).

Example of Function Blocks

  • The function block is based on the programming language function block Diagram and has the name Hysterisis.
  • It has three inputs (XIN1, XIN2 and EPS) of datatype REAL on the left, and one output (called Q) of type BOOL on the right-hand side.

  • Input names are not very usable; use meaningful names.

Internally, the FB contains this body code:

FUNCTION_BLOCK HYSTERISIS
VAR_INPUT
	XIN1, XIN2 : REAL;
	EPS : REAL;  (* Hysterisis ban *)
END_VAR
VAR_OUTPUT
	Q : BOOK := 0
END_VAR
IF Q THEN
	IF XIN1 < ( XIN2 - EPS ) THEN
		Q := 0 (* XIN2 decreasing *)
	END_IF;
	ELSIF XIN1 > ( XIN2 + EPS ) THEN
		Q := 1; (* XIN2 increasing *)
	END_IF;
END_FUNCTION_BLOCK

In this example, the body code is written in the Structured Text language:

  • The first part deals with the data structure.
  • The second with the algorithm.
  • No additional data is used.

Whatever name was used for this local data inside the body does not conflict with matching names in other functions, function blocks, or with global expressions. This example of data encapsulation removes a major source of errors.