Bird
Raised Fist0
PLC Programmingscripting~5 mins

Program organization units (POU) in PLC Programming - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Program Organization Unit (POU) in PLC programming?
A POU is a basic building block in PLC programming. It organizes code into manageable parts like programs, functions, or function blocks.
Click to reveal answer
beginner
Name the three main types of POUs.
The three main types of POUs are: Program, Function, and Function Block.
Click to reveal answer
intermediate
What is the difference between a Function and a Function Block in POUs?
A Function returns a value and has no memory of past calls. A Function Block can keep memory (state) between calls and can have inputs, outputs, and internal variables.
Click to reveal answer
beginner
Why do we use POUs in PLC programming?
POUs help organize code into smaller, reusable, and easier-to-understand parts. This makes programming and troubleshooting simpler.
Click to reveal answer
intermediate
Can a Program POU call a Function Block POU? Explain.
Yes, a Program POU can call a Function Block POU to use its functionality and maintain state during the program execution.
Click to reveal answer
Which POU type can keep memory between calls?
AFunction Block
BFunction
CProgram
DAll POUs
What does a Function POU always return?
AA variable
BNothing
CA program
DA value
Which POU type is typically the main executable unit in a PLC project?
AFunction Block
BFunction
CProgram
DVariable
Can a Function Block have inputs and outputs?
ANo
BYes
COnly inputs
DOnly outputs
Why is organizing code into POUs helpful?
AIt makes code easier to read and reuse
BIt slows down the program
CIt removes the need for variables
DIt prevents errors automatically
Explain the three main types of Program Organization Units (POUs) and their roles.
Think about which POUs run code, return values, or keep memory.
You got /5 concepts.
    Describe why using POUs is important in PLC programming projects.
    Consider how breaking code into parts helps manage complexity.
    You got /4 concepts.

      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