📖 Scenario: You are programming a simple PLC controller that controls a machine mode based on an input number. The machine can be in one of four modes: Idle, Start, Stop, or Error.The input is a number from 1 to 4, and you want to use a CASE statement to set the machine mode accordingly.
🎯 Goal: Build a PLC program using a CASE statement that reads an input number and sets the machine mode string based on the input.
📋 What You'll Learn
Create a variable input_mode with a value between 1 and 4
Create a variable machine_mode to hold the mode string
Use a CASE statement to assign machine_mode based on input_mode
Print the machine_mode as output
💡 Why This Matters
🌍 Real World
PLC programs often use CASE statements to control machines based on input signals or sensor values.
💼 Career
Understanding CASE statements is essential for PLC programmers to write clear and maintainable control logic.
Progress0 / 4 steps
1
Set up the input variable
Create an integer variable called input_mode and set it to 3.
PLC Programming
Hint
Use the assignment operator := to set input_mode.
2
Create the output variable
Create a string variable called machine_mode to hold the machine mode text.
PLC Programming
Hint
Declare machine_mode as a string variable.
3
Use CASE statement to assign machine_mode
Write a CASE statement using input_mode to assign machine_mode these values: - 1: "Idle" - 2: "Start" - 3: "Stop" - 4: "Error" Use ELSE to assign "Unknown".
PLC Programming
Hint
Use CASE input_mode OF and END_CASE; to create the CASE block.
4
Output the machine_mode
Write a statement to print the value of machine_mode.
PLC Programming
Hint
Use the PRINT() function to display the string.
Practice
(1/5)
1. What is the main purpose of a CASE statement in PLC programming?
easy
A. To stop the program execution immediately
B. To repeat a set of instructions multiple times
C. To select one action from many based on a variable's value
D. To declare variables for use in the program
Solution
Step 1: Understand the role of CASE statement
The CASE statement evaluates a variable and chooses one matching action from multiple options.
Step 2: Compare with other options
Repeating instructions is done by loops, declaring variables is separate, and stopping execution is a different command.
Final Answer:
To select one action from many based on a variable's value -> Option C
Quick Check:
CASE statement = Select action by value [OK]
Hint: CASE chooses action based on value, like a traffic signal [OK]
Common Mistakes:
Confusing CASE with loops
Thinking CASE declares variables
Assuming CASE stops program
2. Which of the following is the correct syntax to start a CASE statement in PLC structured text?
easy
A. CASE variable OF
B. SWITCH(variable) {
C. IF variable THEN
D. SELECT variable FROM
Solution
Step 1: Recall PLC structured text CASE syntax
The correct syntax to start a CASE statement is CASE variable OF.
Step 2: Eliminate other options
SWITCH(variable) { is JavaScript style, C is IF statement, D is invalid syntax.
Final Answer:
CASE variable OF -> Option A
Quick Check:
PLC CASE starts with 'CASE variable OF' [OK]
Hint: PLC CASE always uses 'CASE variable OF' to start [OK]
Common Mistakes:
Using SWITCH instead of CASE
Confusing IF with CASE
Writing SELECT instead of CASE
3. Given the following PLC code snippet, what will be the value of output after execution?
CASE input OF
1: output := 'One';
2: output := 'Two';
3: output := 'Three';
ELSE
output := 'Other';
END_CASE;
If input is 2?
medium
A. 'One'
B. 'Two'
C. 'Three'
D. 'Other'
Solution
Step 1: Match input value with CASE options
The input is 2, so the CASE matches the line 2: output := 'Two';.
Step 2: Determine output value
Since input is 2, output is assigned the string 'Two'.
Final Answer:
'Two' -> Option B
Quick Check:
Input 2 matches case 2, output = 'Two' [OK]
Hint: Match input to CASE label to find output [OK]
Common Mistakes:
Choosing ELSE output for matching case
Confusing input 2 with 1 or 3
Ignoring ELSE clause
4. Identify the error in this CASE statement snippet:
CASE status OF
0: action := 'Stop';
1: action := 'Start';
2 action := 'Pause';
ELSE
action := 'Unknown';
END_CASE;
medium
A. Missing colon after 2 in third case
B. ELSE clause is not allowed in CASE
C. END_CASE should be ENDCASE
D. Variable 'action' is not declared
Solution
Step 1: Check syntax of each CASE line
The third case line is missing a colon after 2; it should be 2: action := 'Pause';.
Step 2: Verify other parts
ELSE clause is valid, END_CASE is correct syntax, and variable declaration is not shown but not an error here.
Final Answer:
Missing colon after 2 in third case -> Option A
Quick Check:
Each case label needs a colon ':' [OK]
Hint: Each case label must end with ':' [OK]
Common Mistakes:
Omitting colon after case value
Thinking ELSE is invalid
Confusing END_CASE syntax
5. You want to use a CASE statement to control a motor speed setting based on an integer input from 0 to 4, where 0 means 'Stop', 1 means 'Slow', 2 means 'Medium', 3 means 'Fast', and any other value means 'Error'. Which of the following CASE statements correctly implements this logic?
hard
A. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
END_CASE;
B. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
4: motor_speed := 'Error';
END_CASE;
C. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
4: motor_speed := 'Error';
ELSE motor_speed := 'Error';
END_CASE;
D. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
ELSE motor_speed := 'Error';
END_CASE;
Solution
Step 1: Check the required mapping
Values 0 to 3 have specific motor speeds; any other value should set 'Error'.
Step 2: Analyze each option
CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
ELSE motor_speed := 'Error';
END_CASE; uses ELSE for all other values, correctly handling unexpected inputs. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
4: motor_speed := 'Error';
END_CASE; treats 4 as 'Error' but misses ELSE for other values. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
4: motor_speed := 'Error';
ELSE motor_speed := 'Error';
END_CASE; incorrectly uses a colon after ELSE ('ELSE:'), which is invalid syntax. CASE speed OF
0: motor_speed := 'Stop';
1: motor_speed := 'Slow';
2: motor_speed := 'Medium';
3: motor_speed := 'Fast';
END_CASE; lacks handling for values outside 0-3.
Final Answer:
CASE speed OF 0: motor_speed := 'Stop'; 1: motor_speed := 'Slow'; 2: motor_speed := 'Medium'; 3: motor_speed := 'Fast'; ELSE motor_speed := 'Error'; END_CASE -> Option D
Quick Check:
Use ELSE for unexpected values in CASE [OK]
Hint: Use ELSE to catch all unexpected values in CASE [OK]
Common Mistakes:
Not using ELSE for unexpected values
Assigning error to a specific case instead of ELSE
Missing cases for valid inputs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.