Bird
Raised Fist0
PLC Programmingscripting~10 mins

Program organization units (POU) in PLC Programming - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a program organization unit named 'MainProgram'.

PLC Programming
PROGRAM [1]
END_PROGRAM
Drag options to blanks, or click blank then click option'
ALoop
BMainProgram
CStart
DInit
Attempts:
3 left
💡 Hint
Common Mistakes
Using a keyword like 'Start' or 'Init' instead of the intended program name.
Leaving the program name blank.
2fill in blank
medium

Complete the code to declare a function block named 'Counter'.

PLC Programming
FUNCTION_BLOCK [1]
VAR
    count : INT;
END_VAR
END_FUNCTION_BLOCK
Drag options to blanks, or click blank then click option'
ATimer
BSensor
CController
DCounter
Attempts:
3 left
💡 Hint
Common Mistakes
Using a name that does not match the intended function block.
Confusing function block names with program names.
3fill in blank
hard

Fix the error in the program declaration by completing the missing keyword.

PLC Programming
[1] MainProgram
VAR
    speed : INT;
END_VAR
END_PROGRAM
Drag options to blanks, or click blank then click option'
APROGRAM
BFUNCTION_BLOCK
CFUNCTION
DMETHOD
Attempts:
3 left
💡 Hint
Common Mistakes
Using FUNCTION_BLOCK or FUNCTION instead of PROGRAM.
Omitting the keyword entirely.
4fill in blank
hard

Fill both blanks to declare a function named 'Calculate' that returns an INT.

PLC Programming
FUNCTION [1] : [2]
VAR_INPUT
    value1 : INT;
    value2 : INT;
END_VAR_INPUT
END_FUNCTION
Drag options to blanks, or click blank then click option'
ACalculate
BResult
CINT
DBOOL
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong return type like BOOL when INT is expected.
Mixing up the function name and return type positions.
5fill in blank
hard

Fill both blanks to create a method named 'StartMotor' inside a function block 'MotorControl' with no return value.

PLC Programming
FUNCTION_BLOCK MotorControl
METHOD [1] : [2]
VAR_INPUT
    speed : INT;
END_VAR_INPUT
END_METHOD
END_FUNCTION_BLOCK
Drag options to blanks, or click blank then click option'
AStartMotor
BVOID
CBOOL
DINT
Attempts:
3 left
💡 Hint
Common Mistakes
Using a return type like BOOL or INT when the method should have no return.
Confusing method names with function block names.

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