📖 Scenario: You are working on a Human-Machine Interface (HMI) for a factory. The HMI needs to manage alarms from different machines. Each alarm has a unique code and a message. You want to create a simple program that stores alarms, sets a threshold for active alarms, filters alarms that are active, and then displays them on the HMI screen.
🎯 Goal: Build a PLC program that stores a list of alarms with their status, sets a threshold for how many alarms can be active before alerting the operator, filters the active alarms, and displays the active alarms on the HMI.
📋 What You'll Learn
Create a data structure to hold alarms with their codes and active status
Add a threshold variable for the maximum allowed active alarms
Write logic to filter only active alarms
Display the active alarms on the HMI
💡 Why This Matters
🌍 Real World
Factories use HMIs to show machine alarms so operators can quickly see and fix problems. Managing alarms clearly helps keep machines safe and running.
💼 Career
PLC programmers and automation engineers often write alarm management code to improve factory safety and efficiency.
Progress0 / 4 steps
1
Create the alarm data structure
Create a variable called alarms as an array of 5 elements. Each element should be a structure with two fields: code (an integer) and active (a boolean). Initialize the array with these exact values: {code: 101, active: TRUE}, {code: 102, active: FALSE}, {code: 103, active: TRUE}, {code: 104, active: FALSE}, {code: 105, active: TRUE}.
PLC Programming
Hint
Use a STRUCT type to define the alarm with code and active fields. Then create an array of 5 alarms with the exact values.
2
Set the active alarm threshold
Create a variable called activeAlarmThreshold of type INT and set it to 2. This variable will represent the maximum number of active alarms allowed before alerting the operator.
PLC Programming
Hint
Declare an INT variable named activeAlarmThreshold and assign it the value 2.
3
Filter active alarms
Create a variable called activeAlarms as an array of INT with size 5. Write a FOR loop using the iterator i from 1 to 5. Inside the loop, check if alarms[i].active is TRUE. If yes, assign alarms[i].code to activeAlarms[i], otherwise assign 0.
PLC Programming
Hint
Use a FOR loop from 1 to 5. Inside, use an IF statement to check alarms[i].active. Assign the alarm code to activeAlarms[i] if active, else assign 0.
4
Display active alarms on HMI
Write code to print the active alarms codes from activeAlarms array. Use a FOR loop with iterator i from 1 to 5. For each element, if the value is not 0, print "Active Alarm Code: " followed by the alarm code.
PLC Programming
Hint
Use a FOR loop to check each element in activeAlarms. If the value is not zero, print the alarm code with the message.
Practice
(1/5)
1. What is the main purpose of alarm management on an HMI?
easy
A. To alert operators about abnormal conditions quickly
B. To slow down the machine operation
C. To display decorative graphics on the screen
D. To store historical data only
Solution
Step 1: Understand the role of alarms on HMI
Alarms notify operators when something unusual or wrong happens in the system.
Step 2: Identify the main goal of alarm management
The goal is to alert operators quickly so they can fix problems fast and keep the system safe.
Final Answer:
To alert operators about abnormal conditions quickly -> Option A
Quick Check:
Alarm management = alert operators fast [OK]
Hint: Alarms warn operators about problems fast [OK]
Common Mistakes:
Thinking alarms slow down machines
Confusing alarms with decorative features
Assuming alarms only store data
2. Which of the following is the correct way to define an alarm condition in a PLC program for HMI?
easy
A. alarm = ON IF temperature == 100
B. alarm = temperature + 100
C. SET alarm WHEN temperature < 100
D. IF temperature > 100 THEN alarm ON
Solution
Step 1: Identify correct alarm condition syntax
Alarm conditions usually use IF statements to check if a value crosses a limit.
Step 2: Check each option for proper condition
IF temperature > 100 THEN alarm ON correctly uses IF temperature > 100 THEN alarm ON, which means alarm triggers when temperature is too high.
Final Answer:
IF temperature > 100 THEN alarm ON -> Option D
Quick Check:
Alarm condition uses IF and comparison [OK]
Hint: Alarm conditions use IF with comparison operators [OK]
Common Mistakes:
Using assignment instead of condition
Confusing < and > operators
Writing incomplete or invalid syntax
3. Given this alarm logic snippet:
IF pressure < 50 THEN alarm = TRUE ELSE alarm = FALSE
What will be the value of alarm if pressure is 45?
medium
A. TRUE
B. 50
C. FALSE
D. Error
Solution
Step 1: Analyze the condition with given pressure
The condition checks if pressure is less than 50. Since 45 < 50, the condition is true.
Step 2: Determine alarm value based on condition
Because the condition is true, alarm is set to TRUE.
Final Answer:
TRUE -> Option A
Quick Check:
45 < 50 means alarm TRUE [OK]
Hint: Check condition result to set alarm TRUE or FALSE [OK]
Common Mistakes:
Confusing TRUE and FALSE values
Ignoring ELSE branch
Assuming alarm equals pressure value
4. You wrote this alarm condition:
IF level > 80 THEN alarm = TRUE ELSE alarm = FALSE
But the alarm never triggers even when level is 90. What is the most likely error?
medium
A. The condition should use < instead of >
B. The alarm variable is not linked to the HMI alarm tag
C. The ELSE part should be removed
D. The level variable is misspelled
Solution
Step 1: Check the condition logic
The condition level > 80 is correct for triggering alarm when level is 90.
Step 2: Consider why alarm does not trigger
If alarm variable is not linked to the HMI alarm tag, the HMI won't show the alarm even if alarm = TRUE.
Final Answer:
The alarm variable is not linked to the HMI alarm tag -> Option B
Quick Check:
Alarm variable must connect to HMI tag [OK]
Hint: Check variable linkage to HMI alarm tag [OK]
Common Mistakes:
Changing correct condition operator
Removing ELSE causing undefined alarm state
Assuming variable spelling error without proof
5. You want to create an alarm on the HMI that triggers only if temperature is above 100°C and pressure is below 30 PSI. Which of these alarm conditions is correct?
hard
A. IF temperature > 100 AND pressure > 30 THEN alarm = TRUE ELSE alarm = FALSE
B. IF temperature > 100 OR pressure < 30 THEN alarm = TRUE ELSE alarm = FALSE
C. IF temperature > 100 AND pressure < 30 THEN alarm = TRUE ELSE alarm = FALSE
D. IF temperature < 100 AND pressure > 30 THEN alarm = TRUE ELSE alarm = FALSE
Solution
Step 1: Understand the alarm trigger conditions
The alarm should trigger only when temperature is above 100 AND pressure is below 30 simultaneously.
Step 2: Check each option's logic
IF temperature > 100 AND pressure < 30 THEN alarm = TRUE ELSE alarm = FALSE uses AND with correct comparisons: temperature > 100 AND pressure < 30, matching the requirement exactly.
Final Answer:
IF temperature > 100 AND pressure < 30 THEN alarm = TRUE ELSE alarm = FALSE -> Option C
Quick Check:
Use AND for both conditions true [OK]
Hint: Use AND to combine multiple alarm conditions [OK]
Common Mistakes:
Using OR instead of AND
Reversing comparison operators
Mixing up greater than and less than
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.