下面是一个可能的西门子smart200 PLC喷泉程序,该程序未经测试和验证,仅供参考:
[code]VAR
Pump1, Pump2, Pump3, Pump12, Pump23, Pump13: BOOL;
Counter: INT;
END_VAR
(* Start pump 1 *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 THEN
Pump1 := TRUE;
Counter := 0;
END_IF
(* Stop pump 1 after 5 seconds *)
IF Pump1 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump1 := FALSE;
Counter := 0;
END_IF
END_IF
(* Start pump 2 after pump 1 stops *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 THEN
Pump2 := TRUE;
Counter := 0;
END_IF
(* Stop pump 2 after 5 seconds *)
IF Pump2 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump2 := FALSE;
Counter := 0;
END_IF
END_IF
(* Start pump 3 after pump 2 stops *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 THEN
Pump3 := TRUE;
Counter := 0;
END_IF
(* Stop pump 3 after 5 seconds *)
IF Pump3 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump3 := FALSE;
Counter := 0;
END_IF
END_IF
(* Start pumps 1 and 2 together after pump 3 stops *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 AND NOT Pump12 THEN
Pump1 := TRUE;
Pump2 := TRUE;
Pump12 := TRUE;
Counter := 0;
END_IF
(* Stop pumps 1 and 2 after 5 seconds *)
IF Pump12 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump1 := FALSE;
Pump2 := FALSE;
Pump12 := FALSE;
Counter := 0;
END_IF
END_IF
(* Start pumps 2 and 3 together after pumps 1 and 2 stop *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 AND NOT Pump23 THEN
Pump2 := TRUE;
Pump3 := TRUE;
Pump23 := TRUE;
Counter := 0;
END_IF
(* Stop pumps 2 and 3 after 5 seconds *)
IF Pump23 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump2 := FALSE;
Pump3 := FALSE;
Pump23 := FALSE;
Counter := 0;
END_IF
END_IF
(* Start pumps 1 and 3 together after pumps 2 and 3 stop *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 AND NOT Pump13 THEN
Pump1 := TRUE;
Pump3 := TRUE;
Pump13 := TRUE;
Counter := 0;
END_IF
(* Stop pumps 1 and 3 after 5 seconds *)
IF Pump13 THEN
Counter := Counter + 1;
IF Counter = 5000 THEN
Pump1 := FALSE;
Pump3 := FALSE;
Pump13 := FALSE;
Counter := 0;
END_IF
END_IF
(* Wait for 3 seconds before restarting sequence *)
IF NOT Pump1 AND NOT Pump2 AND NOT Pump3 AND NOT Pump12 AND NOT Pump23 AND NOT Pump13 THEN
Counter := Counter + 1;
IF Counter = 3000 THEN
Counter := 0;
END_IF
END_IF[/code] |