依照你的問題敘述整理,8個燈的跑馬燈動作步序應該是:


1.8個燈先全亮,不限時間


2.接下來8個燈全滅,不限時間


3.之後從Y0→Y1→Y2→Y3→Y4→Y5→Y6→Y7→Y6→Y5→Y4→Y3→Y2→Y1→Y0依序亮燈,亮燈間距0.5s


4.接下來第3步序重複循環5次,每次亮燈時間間距會有變化,時間間距從0.1s→0.3s→0.5s→0.3s→0.1s變化

 

 


你寄來的程式碼只有完成第3步序,初步執行是沒有問題。但在執行過程中若滿足特定條件,會陷在T0和T1之間形成無法關閉的無窮迴圈,永遠不會進入旋轉指令亮燈


建議你程式寫完先用PLC或用電腦的PLC模擬程式先試RUN看看,我放在網站上的程式都有經過PLC測試過

20141106-01  

 

 


關於要完成這個問題:步序1和2因為不限時間,等於必需外加手動控制開關來觸發動作以便進入下一步序。第3步序皆是相同的動作循環程式相同,只需寫1組程式,時間間距使用D暫存器當變數,在每次完成循環後改變暫存器內容即可


基本上還是儘量要防止程式陷入無窮迴圈,所以啟動觸發條件和一開始的暫存器初始化程式要另外處理,絕對不要和循環內的程式碼有所關連

 

 


完成的程式如下:基本上沿用你程式中使用旋轉指令的方法,註解在程式內


要特別注意的是程式碼的編排順序,這樣的編排順序若更動其中幾行的位置就會產生不同的執行結果。在編排程式碼順序時要謹記PLC執行時,是從上到下的順序執行,所以下面的程式輸出會蓋過上面程式的輸出結果。同樣不想讓下面的程式執行時,就必需把對應的中斷停止程式寫在上面

20141106-02  

20141106-03  

20141106-04  

20141106-05  

20141106-06  

20141106-07  

20141106-08  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()