張國良
級別: 探索解密
|
有ABCD三個風機,觸摸屏上可以任意排序,比如A可以是一號可以是二號也可以是三號也可以是四號,BCD同理,現(xiàn)在要求一號風機開10秒停5秒,然后二三四號依次運行,如果是A是一號B是二號,C是三號,D是四號這樣固定好了可以寫出來,但是ABCD是任意排序的,如果下一次ABCD排序成2341,這樣應該怎么寫,plc是三菱的 |
---|---|
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園常客
|
可以參考,能監(jiān)控當前運行風機編號,狀態(tài),以及加了停止動作 VAR TimerRun : TON; // 運行計時器 TimerStop : TON; // 停止計時器 FanState : ARRAY[1..4] OF BOOL; // 風機狀態(tài)數(shù)組(TRUE-運行,F(xiàn)ALSE-停止) CurrentFan : INT; // 當前運行的風機編號(1-A,2-B,3-C,4-D) FanOrder : ARRAY[1..4] OF INT := [1, 2, 3, 4]; // 風機排序數(shù)組,可以修改排序 EmergencyStop : BOOL; // 緊急停止按鈕狀態(tài) SafetyInterlock : BOOL; // 安全聯(lián)鎖狀態(tài) END_VAR //初始化 IF NOT TimerRun.Q AND NOT TimerStop.Q AND NOT EmergencyStop AND SafetyInterlock THEN FOR i := 1 TO 4 DO FanState := FALSE; // 所有風機初始狀態(tài)為停止 END_FOR; CurrentFan := FanOrder[1]; // 根據(jù)風機排序數(shù)組確定起始風機 TimerRun(IN:=TRUE, PT:=T#10s); // 設置運行計時器為10秒 END_IF // 風機運行邏輯 IF NOT EmergencyStop AND SafetyInterlock THEN IF TimerRun.Q THEN // 當前風機正在運行或即將運行 IF NOT FanState[CurrentFan] THEN // 啟動當前風機 FanState[CurrentFan] := TRUE; // 這里加入控制當前風機啟動的代碼 END_IF ELSE // 運行時間到,停止當前風機 FanState[CurrentFan] := FALSE; // 這里加入控制當前風機停止的代碼 TimerStop(IN:=TRUE, PT:=T#5s); // 設置停止計時器為5秒 END_IF IF TimerStop.Q THEN // 停止時間到,切換到下一個風機 CurrentFan := FanOrder[(CurrentFan MOD 4) + 1]; // 根據(jù)風機排序數(shù)組循環(huán)風機編號 TimerRun(IN:=TRUE, PT:=T#10s); // 重置運行計時器為10秒 END_IF ELSE // 緊急停止或安全聯(lián)鎖斷開,停止所有風機 FOR i := 1 TO 4 DO FanState := FALSE; END_FOR; TimerRun(IN:=FALSE); // 停止運行計時器 TimerStop(IN:=FALSE); // 停止停止計時器 END_IF |
|
---|---|---|
|