我考慮了一下這個程序,實際上影響該結果的還是我們經常討論的一些內容:PLC的掃描方式,PLC的雙線圈問題。
對于臺達PLC而言,每次掃描到PLS指令時,它只判斷PLS前面的條件是否有OFF-->ON的過程,有則會將線圈導通一個掃描周期;當然因為雙線圈的存在,之后遇到新的線圈觸點后它就又判斷后一個PLS的條件,有OFF-->ON的過程則繼續導通,否則斷開。在這種情況下線圈當然無法再保持一個掃描周期了。。(可以理解為,第一個PLS后線圈的結果不會帶到下一個PLS中去。)
再回到這段程序,如果沒有FOR K100……NEXT的循環,那么在C1=K44的時候,最后邊的這個M120是有可能導通的,但因為有了循環程序,在第二次循環時C1=K44的條件仍然滿足著,所以沒有了OFF-->ON的過程,PLS M120指令執行后M120就被斷開,最終跳出循環程序的結果就是M120無法被導通。那么在C1等于其他值的時候,M120也只是在執行第一次循環時能夠被導通一下,再掃描到下一個PLS M120的時候就會立即被斷開,最終的結果也是M120無法被導通。
----------------------
而對于三菱的PLC,它不僅看PLS前面的條件是否有OFF-->ON的過程,還要看上一行程序中線圈觸點的條件是否為ON,可以理解為上一個PLS的結果會帶到下一個PLS上來。所以連續的幾個PLS條件都滿足的話,它只有第一個PLS指令會將線圈導通。而如果這幾個連續的PLS中間有一個條件是OFF的,那么該指令執行后會將線圈的狀態刷新為OFF,在之后緊接著的一個PLS指令后又能導通一個線圈。。。如此循環。
所以如果這段程序是用于三菱的PLC,那么結果就會變成這樣:
1.無視循環程序的存在,循環程序不會影響到最終M120的結果;
2.如果C1=K7、M607為ON,則第一個PLS是能夠將M120導通的,直到第二個PLS指令執行后將M120斷開;
3.在C1=K7、M607為ON時,即使將C1=...的條件去掉,強行置位其他各PLS指令的導通條件,其他的PLS指令也不能導通M120;
4.如果C1=K44、M660為ON,其他的PLS指令的條件都不能滿足,則執行完C1=K44這行的PLS指令后M120會被導通;即使有FOR……NEXT的循環程序,在最后一個循環執行完C1=K44這行的PLS指令后,M120也是導通的,一直維持到本次掃描到END指令。