Introduction
A level control system helps keep the amount of liquid in a tank just right. It stops the tank from getting too full or too empty automatically.
IF level_sensor_high THEN
CLOSE inlet_valve
OPEN outlet_valve
ELSE IF level_sensor_low THEN
OPEN inlet_valve
CLOSE outlet_valve
ELSE
KEEP valves as they are
END_IFIF level_sensor_high THEN
CLOSE inlet_valve
OPEN outlet_valve
END_IFIF level_sensor_low THEN
OPEN inlet_valve
CLOSE outlet_valve
END_IFIF level_sensor_high THEN
CLOSE inlet_valve
OPEN outlet_valve
ELSE IF level_sensor_low THEN
OPEN inlet_valve
CLOSE outlet_valve
ELSE
KEEP valves as they are
END_IFPROGRAM LevelControl
VAR
level_sensor_high : BOOL;
level_sensor_low : BOOL;
inlet_valve : BOOL := FALSE;
outlet_valve : BOOL := FALSE;
END_VAR
// Simulate sensor inputs
level_sensor_high := FALSE;
level_sensor_low := TRUE;
// Control logic
IF level_sensor_high THEN
inlet_valve := FALSE; // Close inlet
outlet_valve := TRUE; // Open outlet
ELSIF level_sensor_low THEN
inlet_valve := TRUE; // Open inlet
outlet_valve := FALSE; // Close outlet
ELSE
// Keep valves as they are
END_IF
// Output status
PRINT('Inlet valve is ' + (inlet_valve ? 'OPEN' : 'CLOSED'));
PRINT('Outlet valve is ' + (outlet_valve ? 'OPEN' : 'CLOSED'));
END_PROGRAMIF level < 40 THEN pump = ON;
ELSE pump = OFF;
IF level > 70 THEN pump = ON;
ELSE pump = ON;
Pass the test and this pattern moves unknown