// 系統(tǒng)啟停邏輯
V_CycleFlag := I_Start AND NOT I_Stop;
// 定時(shí)器觸發(fā):當(dāng)前狀態(tài)供水時(shí)長到,觸發(fā)狀態(tài)跳轉(zhuǎn)
V_Timer(IN:=V_CycleFlag, PT:=T#10S); // 設(shè)定每組供水10秒,可修改
// 狀態(tài)跳轉(zhuǎn)邏輯:定時(shí)器到或當(dāng)前狀態(tài)無效,切換下一個(gè)狀態(tài)
IF V_Timer.Q OR NOT (I_PipeEn[V_CurrentState+1] AND I_PipeEn[IF V_CurrentState=6 THEN 1 ELSE V_CurrentState+2]) THEN
V_CurrentState := V_CurrentState + 1;
IF V_CurrentState >=7 THEN
V_CurrentState := 0; // 狀態(tài)循環(huán):6→0
END_IF;
V_Timer(IN:=FALSE); // 定時(shí)器復(fù)位
END_IF;
// 電磁閥輸出邏輯:根據(jù)當(dāng)前狀態(tài),輸出對(duì)應(yīng)兩路電磁閥
// 先復(fù)位所有電磁閥
FOR i:=1 TO 7 DO
Q_Solenoid := FALSE;
END_FOR;
// 按狀態(tài)輸出兩路電磁閥(需兩路均使能)
IF V_CycleFlag THEN
CASE V_CurrentState OF
0: // 狀態(tài)0:1-2路供水
IF I_PipeEn[1] AND I_PipeEn[2] THEN
Q_Solenoid[1]:=TRUE; Q_Solenoid[2]:=TRUE;
END_IF;
1: // 狀態(tài)1:2-3路供水
IF I_PipeEn[2] AND I_PipeEn[3] THEN
Q_Solenoid[2]:=TRUE; Q_Solenoid[3]:=TRUE;
END_IF;
2: // 狀態(tài)2:3-4路供水
IF I_PipeEn[3] AND I_PipeEn[4] THEN
Q_Solenoid[3]:=TRUE; Q_Solenoid[4]:=TRUE;
END_IF;
3: // 狀態(tài)3:4-5路供水
IF I_PipeEn[4] AND I_PipeEn[5] THEN
Q_Solenoid[4]:=TRUE; Q_Solenoid[5]:=TRUE;
END_IF;
4: // 狀態(tài)4:5-6路供水
IF I_PipeEn[5] AND I_PipeEn[6] THEN
Q_Solenoid[5]:=TRUE; Q_Solenoid[6]:=TRUE;
END_IF;
5: // 狀態(tài)5:6-7路供水
IF I_PipeEn[6] AND I_PipeEn[7] THEN
Q_Solenoid[6]:=TRUE; Q_Solenoid[7]:=TRUE;
END_IF;
6: // 狀態(tài)6:7-1路供水
IF I_PipeEn[7] AND I_PipeEn[1] THEN
Q_Solenoid[7]:=TRUE; Q_Solenoid[1]:=TRUE;
END_IF;
END_CASE;
END_IF;