|
工控玩家
澧縣電氣自動(dòng)化
級(jí)別: 家園常客
|
現(xiàn)有7個(gè)電磁閥向7條管道給水,先給1 2號(hào)供水---再給2 3號(hào)供水----3 4號(hào)供水---4 5號(hào)供水----5 6號(hào)供水--6 7號(hào)供水--7 1供水---1 2供水,這樣循環(huán)。 問題是某些管路關(guān)閉了怎么跳過?任何時(shí)間都有兩路給水。 |
|---|---|
|
|
|
卓發(fā)智能
相互學(xué)習(xí),共同進(jìn)步。
級(jí)別: 工控俠客
|
// 系統(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; |
|
|---|---|---|
|