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
✗ Incorrect
Function Blocks can keep internal state or memory between calls, unlike Functions.
What does a Function POU always return?
AA variable
BNothing
CA program
DA value
✗ Incorrect
Functions always return a single value after execution.
Which POU type is typically the main executable unit in a PLC project?
AFunction Block
BFunction
CProgram
DVariable
✗ Incorrect
Programs are the main executable units that run the control logic.
Can a Function Block have inputs and outputs?
ANo
BYes
COnly inputs
DOnly outputs
✗ Incorrect
Function Blocks can have inputs, outputs, and internal variables.
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
✗ Incorrect
Organizing code into POUs improves readability and reusability.
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
Step 1: Recall POU types
The three main POUs are PROGRAM, FUNCTION_BLOCK, and FUNCTION.
Step 2: Identify the incorrect option
MODULE is not a standard POU type in PLC programming.
Final Answer:
MODULE -> Option A
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
Step 1: Identify correct POU declaration syntax
FUNCTION_BLOCK declaration starts with 'FUNCTION_BLOCK Name' and ends with 'END_FUNCTION_BLOCK'.
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.
Final Answer:
FUNCTION_BLOCK MotorControl\nEND_FUNCTION_BLOCK -> Option C
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
Step 1: Check METHOD usage in FUNCTION_BLOCK
METHODs are allowed inside FUNCTION_BLOCKs to define actions.
Step 2: Verify TIME() usage
TIME() is not a standard function to get current time in PLC; this causes an error.
Final Answer:
TIME() is not a valid way to get current time -> Option B
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
Step 1: Understand POU types and their features
FUNCTION_BLOCKs can hold internal data/state and be instantiated multiple times.
Step 2: Compare with other POUs
FUNCTIONs return values but do not hold state; PROGRAMs organize code but are not reusable units with state.
Final Answer:
FUNCTION_BLOCK, because it can hold data and be reused with different instances -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.