Level control system in PLC Programming - Time & Space Complexity
We want to understand how the time it takes for a level control system program to run changes as the system size or input changes.
Specifically, we ask: how does the program's work grow when it checks or adjusts levels repeatedly?
Analyze the time complexity of the following code snippet.
// Simple level control loop
WHILE TRUE DO
level := READ_SENSOR();
IF level < LOW_LIMIT THEN
OPEN_VALVE();
ELSIF level > HIGH_LIMIT THEN
CLOSE_VALVE();
END_IF;
WAIT(1000); // wait 1 second
END_WHILE;
This code continuously reads a level sensor and opens or closes a valve based on the level.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The infinite WHILE loop that reads the sensor and controls the valve.
- How many times: This loop runs forever, repeating the check and control every second.
Each cycle does a fixed amount of work: one sensor read and one valve action check.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 seconds | 10 sensor reads and checks |
| 100 seconds | 100 sensor reads and checks |
| 1000 seconds | 1000 sensor reads and checks |
Pattern observation: The work grows linearly with time, as each second adds one cycle of fixed work.
Time Complexity: O(n)
This means the program's work grows directly in proportion to how long it runs or how many cycles it completes.
[X] Wrong: "The program does more work if the level is far from the limits because it opens or closes the valve more."
[OK] Correct: The program checks the level and decides what to do each cycle, but the number of operations per cycle stays the same regardless of the level value.
Understanding how control loops run repeatedly and how their work grows helps you explain automation system behavior clearly and confidently.
"What if we added multiple sensors and valves checked in the loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand the system goal
A level control system is designed to maintain liquid levels safely.Step 2: Identify the correct function
It uses sensors and pumps to keep levels steady, not temperature or color.Final Answer:
To keep the liquid level within safe limits automatically -> Option BQuick Check:
Level control = safe liquid level [OK]
- Confusing level control with temperature control
- Thinking it changes liquid properties
- Assuming it controls pressure
Solution
Step 1: Understand the condition for turning pump ON
The pump should turn ON when level is below 30% to fill the tank.Step 2: Match the correct syntax
IF level < 30 THEN pump = ON; correctly uses IF level < 30 THEN pump = ON;Final Answer:
IF level < 30 THEN pump = ON; -> Option CQuick Check:
Turn ON pump if level less than 30% [OK]
- Using > instead of < for turning pump ON
- Confusing ON and OFF states
- Using equality instead of inequality
IF level < 40 THEN pump = ON;
ELSE pump = OFF;
What will be the pump state if the level sensor reads 45?
Solution
Step 1: Check the condition with level = 45
Since 45 is not less than 40, the IF condition is false.Step 2: Follow the ELSE branch
Because IF is false, pump = OFF is executed.Final Answer:
Pump will be OFF -> Option DQuick Check:
Level 45 ≥ 40 means pump OFF [OK]
- Assuming pump stays ON without checking ELSE
- Confusing < and > operators
- Ignoring ELSE branch
IF level > 70 THEN pump = ON;
ELSE pump = ON;
Solution
Step 1: Analyze the IF and ELSE assignments
Both IF and ELSE branches set pump = ON, so pump is always ON.Step 2: Understand the logic flaw
This means pump never turns OFF, ignoring level changes.Final Answer:
Pump is always ON regardless of level -> Option AQuick Check:
Same action in IF and ELSE means no control [OK]
- Thinking ELSE is missing
- Assuming pump turns OFF somewhere
- Ignoring logic duplication
Solution
Step 1: Understand the required behavior
Turn pump ON below 30%, OFF above 70%, and keep state unchanged between 30% and 70%.Step 2: Analyze each option
IF level < 30 THEN pump = ON; ELSE IF level > 70 THEN pump = OFF; turns ON if level < 30, OFF if level > 70, and does nothing in between (keeps state).Final Answer:
IF level < 30 THEN pump = ON; ELSE IF level > 70 THEN pump = OFF; -> Option AQuick Check:
Two conditions control pump ON/OFF, else no change [OK]
- Turning pump OFF immediately below 70%
- Not handling the middle range correctly
- Reversing ON and OFF conditions
Ready to prove it?
Pass the test and this pattern moves unknown
