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() |
|
|
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.





