PROGRAM PumpControl
PROGRAM PumpControl
VAR
Pump1, Pump2, Pump3, Pump4, Pump5 : BOOL; (* Status of each pump: TRUE = ON, FALSE = OFF *)
ID_Pump1, ID_Pump2, ID_Pump3, ID_Pump4, ID_Pump5 : INT; (* Dynamic IDs for each pump *)
PriorityCounter : ARRAY[1..5] OF INT := [0, 0, 0, 0, 0]; (* Cycle counter for each pump priority *)
BB_triggered : BOOL := FALSE; (* Flag to ensure priority change happens only once *)
END_VAR
END_IF;
IF BB_triggered THEN
FOR i := 1 TO 5 DO
PriorityCounter[i] := PriorityCounter[i] + 1;
PriorityCounter[i] := 1;
END_IF;
PumpOrder[Priority[i]] := i; (* Assign pump order based on priority *)
END_FOR;
END_IF;
ID_Pump1 := 2;
ID_Pump2 := 1;
ID_Pump3 := 4;
ID_Pump4 := 3;
ID_Pump5 := 5;
Pump1 := FALSE;
Pump2 := FALSE;
Pump3 := FALSE;
Pump4 := FALSE;
Pump5 := FALSE;
FOR i := 1 TO NB_pump DO
CASE PumpOrder[i] OF
1: Pump1 := TRUE;
2: Pump2 := TRUE;
3: Pump3 := TRUE;
4: Pump4 := TRUE;
5: Pump5 := TRUE;
END_CASE;
END_FOR;
END_PROGRAM