Bird
Raised Fist0
PLC Programmingscripting~5 mins

Program organization units (POU) in PLC Programming - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Program organization units (POU)
O(n)
Understanding Time Complexity

When we use program organization units (POUs) in PLC programming, we want to know how the program's running time changes as we add more units or calls.

We ask: How does the execution time grow when the program calls multiple POUs?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

PROGRAM MainProgram
VAR
  i : INT;
  subInst : SubProgram;
END_VAR

FOR i := 1 TO 10 DO
  subInst();
END_FOR

END_PROGRAM

FUNCTION_BLOCK SubProgram
VAR
  x : INT;
END_VAR

x := x + 1;
END_FUNCTION_BLOCK

This code calls a subprogram 10 times inside a loop. The subprogram does a simple increment.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The loop in MainProgram that calls SubProgram 10 times.
  • How many times: The subprogram is called once per loop iteration, so 10 times total.
How Execution Grows With Input

As the number of loop iterations increases, the total calls to the subprogram increase at the same rate.

Input Size (n)Approx. Operations
1010 calls to SubProgram
100100 calls to SubProgram
10001000 calls to SubProgram

Pattern observation: The total work grows directly with the number of calls; doubling the calls doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the program's running time grows linearly with the number of POU calls.

Common Mistake

[X] Wrong: "Calling a POU inside a loop does not add to execution time because it's just a call."

[OK] Correct: Each call runs the POU code, so more calls mean more work and longer execution time.

Interview Connect

Understanding how calling POUs affects execution time shows you can reason about program structure and performance, a useful skill in real automation projects.

Self-Check

What if the SubProgram called another POU inside itself? How would the time complexity change?

Practice

(1/5)
1. Which of the following is NOT a type of Program Organization Unit (POU) in PLC programming?
easy
A. MODULE
B. PROGRAM
C. FUNCTION
D. FUNCTION_BLOCK

Solution

  1. Step 1: Recall POU types

    The three main POUs are PROGRAM, FUNCTION_BLOCK, and FUNCTION.
  2. Step 2: Identify the incorrect option

    MODULE is not a standard POU type in PLC programming.
  3. Final Answer:

    MODULE -> Option A
  4. Quick Check:

    POUs = PROGRAM, FUNCTION_BLOCK, FUNCTION [OK]
Hint: Remember only three POUs: PROGRAM, FUNCTION_BLOCK, FUNCTION [OK]
Common Mistakes:
  • Confusing MODULE with FUNCTION_BLOCK
  • Thinking FUNCTION_BLOCK is not a POU
  • Mixing hardware modules with POUs
2. Which syntax correctly declares a FUNCTION_BLOCK named MotorControl in IEC 61131-3 standard?
easy
A. PROGRAM MotorControl END_PROGRAM
B. FUNCTION MotorControl END_FUNCTION
C. FUNCTION_BLOCK MotorControl END_FUNCTION_BLOCK
D. FUNCTION_BLOCK MotorControl() END_FUNCTION_BLOCK

Solution

  1. Step 1: Identify correct POU declaration syntax

    FUNCTION_BLOCK declaration starts with 'FUNCTION_BLOCK Name' and ends with 'END_FUNCTION_BLOCK'.
  2. Step 2: Check each option

    FUNCTION_BLOCK MotorControl END_FUNCTION_BLOCK matches correct syntax; PROGRAM and FUNCTION declare different POUs; the version with parentheses is invalid.
  3. Final Answer:

    FUNCTION_BLOCK MotorControl\nEND_FUNCTION_BLOCK -> Option C
  4. Quick Check:

    FUNCTION_BLOCK syntax = FUNCTION_BLOCK MotorControl END_FUNCTION_BLOCK [OK]
Hint: FUNCTION_BLOCK has no parentheses in declaration [OK]
Common Mistakes:
  • Adding parentheses to FUNCTION_BLOCK
  • Confusing FUNCTION and FUNCTION_BLOCK syntax
  • Using PROGRAM keyword for function blocks
3. Given the following FUNCTION in a PLC program:
FUNCTION AddTwo : INT
VAR_INPUT
  a : INT;
  b : INT;
END_VAR
AddTwo := a + b;
END_FUNCTION

What is the output of calling AddTwo(3, 5)?
medium
A. 8
B. 35
C. Error: FUNCTION cannot be called like this
D. 0

Solution

  1. Step 1: Understand FUNCTION behavior

    The FUNCTION AddTwo takes two INT inputs and returns their sum.
  2. Step 2: Calculate the output for inputs 3 and 5

    3 + 5 = 8, so the function returns 8.
  3. Final Answer:

    8 -> Option A
  4. Quick Check:

    3 + 5 = 8 [OK]
Hint: Functions return values; sum inputs to get output [OK]
Common Mistakes:
  • Concatenating inputs as strings
  • Thinking FUNCTION_BLOCKs return values
  • Assuming syntax error on call
4. Identify the error in this FUNCTION_BLOCK declaration:
FUNCTION_BLOCK Timer
VAR
  StartTime : TIME;
END_VAR
METHOD Start()
  StartTime := TIME();
END_METHOD
END_FUNCTION_BLOCK
medium
A. METHOD keyword is not allowed inside FUNCTION_BLOCK
B. TIME() is not a valid way to get current time
C. StartTime variable must be VAR_INPUT
D. FUNCTION_BLOCK must not have variables

Solution

  1. Step 1: Check METHOD usage in FUNCTION_BLOCK

    METHODs are allowed inside FUNCTION_BLOCKs to define actions.
  2. Step 2: Verify TIME() usage

    TIME() is not a standard function to get current time in PLC; this causes an error.
  3. Final Answer:

    TIME() is not a valid way to get current time -> Option B
  4. Quick Check:

    Invalid TIME() call = TIME() is not a valid way to get current time [OK]
Hint: Check if functions used are standard PLC functions [OK]
Common Mistakes:
  • Assuming METHODs are disallowed
  • Thinking all variables must be inputs
  • Believing FUNCTION_BLOCKs can't have variables
5. You want to create reusable code that holds internal state and can be called multiple times with different inputs. Which POU type should you choose and why?
hard
A. FUNCTION, because it can be called multiple times with different inputs
B. PROGRAM, because it organizes the entire PLC project
C. FUNCTION, because it returns a value and holds state internally
D. FUNCTION_BLOCK, because it can hold data and be reused with different instances

Solution

  1. Step 1: Understand POU types and their features

    FUNCTION_BLOCKs can hold internal data/state and be instantiated multiple times.
  2. Step 2: Compare with other POUs

    FUNCTIONs return values but do not hold state; PROGRAMs organize code but are not reusable units with state.
  3. Final Answer:

    FUNCTION_BLOCK, because it can hold data and be reused with different instances -> Option D
  4. Quick Check:

    Reusable with state = FUNCTION_BLOCK [OK]
Hint: Use FUNCTION_BLOCK for reusable code with internal state [OK]
Common Mistakes:
  • Choosing FUNCTION for holding state
  • Confusing PROGRAM with reusable unit
  • Ignoring difference between FUNCTION and FUNCTION_BLOCK
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard