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