當乙個或者多個指令(程式)重複多次(次數可知)時,可使用for指令。for為有限次迴圈指令。
如上圖,程式的執行過程主要分為3個步驟,輸入檢測、程式掃瞄、輸出重新整理。這是plc乙個工作週期的工作順序,在掃瞄的時候某些程式段需要執行多遍,這個時候我們可以使用for指令。讓程式中的某一段反覆執行多遍,然後再往下掃瞄。
那麼,在哪些地方用到它呢。下面我們來看2個應用案例。
程式的0到9步,觸發x0的上公升沿訊號,把m0導通,z0、d10全部清空;第9到23步,是一段迴圈指令,for k10表示這段程式迴圈10遍。
第一遍,由於變址暫存器z0裡面的數字為0,d0z0這個位址變為d0(具體參考變址暫存器的用法),add d10 d0z0 d10,這條指令把d10加d0的資料放到d10裡面了,由於在程式上面用了d10,所以一開始d10儲存的資料為0,經過加法指令,d10裡面儲存資料就是d0,然後通過inc z0加一指令,讓z0自加1,等於1.然後進入迴圈第二遍.
第二遍,z0裡面的資料為1,d0z0這個位址變為d1,add d10 d0z0 d10這條指令把d10(經過第一遍掃瞄,d10裡面儲存了d0)加d1的資料放到d10裡面了,那麼 d10裡面的資料變為d0+d1,然後通過inc z0加一指令,讓z0自加1,等於2.然後進入迴圈第三遍。
第10遍,z0裡面的資料為9,d0z0這個位址變為d9,add d10 d0z0 d10這條指令把d10(經過第9遍掃瞄,d10裡面儲存了d0+d1+… +d8)加d9的資料放到d10裡面了,那麼 d10裡面的資料變為d0到d9裡面全部資料的總和,然後通過inc z0加一指令,然後退出迴圈,進入下一步。
m8000常通觸點段開m0,當進入plc下乙個工作週期時,由於迴圈指令裡面的程式都是由m0常開觸點觸發的,這是就不會再觸發了,也就是,經過乙個plc的工作週期,就把d0到d9裡面的資料加起來,放到了d10裡面了。
當然,我們也可以寫程式來做一些其他的計算。下面我們來看下另外乙個應用案例:
有54個x點,對應啟動54個y點,需要保持自鎖,當按下按鈕m0時所有輸出停止。
面對這樣乙個要求,在沒有學習迴圈指令之前,你可能會一段一段的寫,需要寫54段程式,今天,我們來嘗試下用for指令來寫,如下圖。
每次進行掃瞄都會先把z0清0,然後進入迴圈(54次),第一遍z0=0,這時x000z0的位址是x000,y000z0的位址是y000,x000觸發y000線圈並形成自鎖,通過inc指令z0自加1;第二遍,z0等於1,這時x000z0的位址是x001,y000z0的位址是y001,x001觸發y001線圈並形成自鎖,通過inc指令z0自加1;… …
這樣的話,就把本來很冗長的一大段簡化成了一小段,節省程式步數的同時減少了程式設計的時間。
關於for指令,除了以上兩種,大家平時還有什麼用法?
整流、濾波、穩壓等電路講解全集,各種讀圖要點和舉例,太有料
inc指令是什麼意思 FOR迴圈指令案例詳解
當乙個或者多個指令 程式 重複多次 次數可知 時,可使用for指令。for為有限次迴圈指令。如上圖,程式的執行過程主要分為3個步驟,輸入檢測 程式掃瞄 輸出重新整理。這是plc乙個工作週期的工作順序,在掃瞄的時候某些程式段需要執行多遍,這個時候我們可以使用for指令。讓程式中的某一段反覆執行多遍,然...
for while等迴圈的執行過程
迴圈是我們程式設計中經常使用的技巧,我們常用迴圈有 while flag do while flag for foreach 遞迴,這些迴圈各有各的優勢,我們在開發的過程中,可以選用最適合的迴圈方法滿足實際業務中的需求。while while 迴圈中,中為每次迴圈會判斷的條件,中為每次迴圈執行的 片...
PHP 雙層 for迴圈的執行過程
先看 1 2for i 0 i 3 i 6 7 看下它的執行過程 1.首先執行最外層的for迴圈,此時 i 0 2.然後開始執行內迴圈,這裡值得一提的是 for迴圈巢狀的話將優先執行內迴圈,再執行外迴圈,所以說它會把 x由0遞增到2 執行3遍內迴圈後,退出外迴圈,i i 1 再次執行外迴圈.直到 i...