Example: Packaging Machine Controller

This example shows a practical industrial automation use case.

A packaging machine can coordinate multiple servo axes and be responsible for:

  • Product infeed.
  • Carton positioning.
  • Sealing.
  • Discharge conveyor.

A custom UDFB named PackagingMachineController coordinates machine operation.

Instead of placing all logic inside one large UDFB implementation, functionality is separated into methods.

UDFB Structure

PackagingMachineController

   9  ValidateRecipe

   9  CheckSafetyConditions

   9  SynchronizeAxes

   9  ProcessMachineState

   9  DetectFaults

   9  GenerateAlarms

Method Responsibilities

Method

Purpose

ValidateRecipe()

Verify recipe parameters and machine settings.

CheckSafetyConditions()

Verify E-Stop, guards, and safety interlocks.

SynchronizeAxes()

  • Calculates coordinated motion between Product feed axis, Carton indexer axis, and Seal jaw axis.
  • Ensures all axes remain synchronized during production.

DetectFaults()

Monitor drives, I/O, and communication faults.

GenerateAlarms()

Create operator-facing alarm messages based on fault conditions.

Parent UDFB Implementation

CheckSafetyConditions();
 
IF SafetyOK THEN

     ValidateRecipe(ProductLength := CurrentRecipe.Length, ProductWidth := CurrentRecipe.Width, RecipeValid => RecipeOK);

     IF RecipeValid THEN
          SynchronizeAxes();
     END_IF;

END_IF;

DetectFaults();
GenerateAlarms();

    • The implementation becomes a high-level description of machine operation.
    • The detailed logic remains encapsulated within methods.