FOR-NEXT循環(huán)指令
循環(huán)指令的引入為解決重復(fù)執(zhí)行相同功能的程序段提供了極大的方便,并且優(yōu)化了程序結(jié)構(gòu),特別是在進(jìn)行大量相同功能計(jì)算和邏輯處理時(shí),循環(huán)指令非常有用。
循環(huán)指令由FOR和NEXT兩條指令構(gòu)成,使用時(shí)必須成對(duì)出現(xiàn),F(xiàn)OR…NEXT指令中間的程序稱為循環(huán)體,就是PLC每次掃描到此處時(shí)需要循環(huán)執(zhí)行的程序。
INDX:記錄循環(huán)次數(shù),每執(zhí)行一次循環(huán),數(shù)值會(huì)加1,該值在FOR指令重新使能時(shí)會(huì)自動(dòng)清零。
INIT、FINAL:循環(huán)的起始值和循環(huán)的結(jié)束值。
FOR NEXT之間的程序,稱為循環(huán)體,是用來(lái)實(shí)現(xiàn)循環(huán)的。
每循環(huán)一次INDX的值會(huì)加1,并且用它跟終止進(jìn)行比較,如果大于終終止值,循環(huán)結(jié)束。
注:循環(huán)次數(shù)若是太多可能出現(xiàn)看門(mén)狗錯(cuò)誤的報(bào)警。
FOR NEXT示例應(yīng)用
循環(huán)指令使用注意事項(xiàng):
1、FOR、NEXT指令使用時(shí)必須成對(duì)出現(xiàn)。
2、FOR、NEXT指令可以循環(huán)嵌套,最多8層,因此使用時(shí)若嵌套使用需注意嵌套層數(shù)。
3、每次重新使能改指令時(shí),PLC自動(dòng)復(fù)位各參數(shù),因此使用時(shí)可以不需要對(duì)參數(shù)進(jìn)行清零。
4、初始值大于終止值時(shí),循環(huán)指令不執(zhí)行,設(shè)置結(jié)束次數(shù)時(shí)需注意,不要設(shè)置的比結(jié)束值大。
例程1:計(jì)算0+1+2+3+...+100的結(jié)果?
例程1
例程2:通過(guò) FOR-NEXT 指令,對(duì) 5 個(gè)變量:VW100、VW102、VW104、VW106、VW108 進(jìn)行求和,求和結(jié)果放到 VW200 中,計(jì)算的平均值存放在 VD210 中 。
例程2
補(bǔ)充說(shuō)明:
FOR-NEXT指令的循環(huán)次數(shù)如何計(jì)算?
答:FOR-NEXT工作過(guò)程:?jiǎn)⒂肍OR-NEXT指令,首先將 INIT( 初始值) 復(fù)制到 INDX(當(dāng)前循環(huán)次數(shù));每執(zhí)行一次,INDX (當(dāng)前循環(huán)次數(shù)) 加1; 如 果 INDX 大于 FINAL (終止循環(huán)次數(shù)),終止循環(huán)。
比如: INIT=1 FINAL=10,則循環(huán)體被執(zhí)行10次,然后退出循環(huán), 退出循環(huán)后INDX=11;
INIT=0,FINAL=10, 則循環(huán)體被執(zhí)行11次,然后退出循環(huán),退出循環(huán)后INDX=11。
FOR-NEXT指令執(zhí)行時(shí),主程序是否執(zhí)行,對(duì)掃描周期的影響?
答:程序自上而下循環(huán)掃描,當(dāng)FOR-NEXT指令啟用后,則循環(huán)體被循環(huán)執(zhí)行,直至循環(huán)次數(shù)到達(dá),循環(huán)結(jié)束,程序繼續(xù)向下執(zhí)行。即在一個(gè)掃描周期內(nèi)執(zhí)行循環(huán)完畢后才會(huì)向下執(zhí)行,循環(huán)次數(shù)越多,會(huì)導(dǎo)致掃描周期時(shí)間延長(zhǎng)越多。如果循環(huán)次數(shù)過(guò)多或者出現(xiàn)死循環(huán),會(huì)導(dǎo)致掃描周期時(shí)間超過(guò)看門(mén)狗時(shí)間,報(bào)出看門(mén)狗超時(shí)的致命錯(cuò)誤,CPU停機(jī)并且SF/DIAG燈紅燈常亮。
如何在FOR-NEXT執(zhí)行循環(huán)過(guò)程中,退出循環(huán)?
答:您可以在FOR/NEXT 指令處于循環(huán)過(guò)程中時(shí),在循環(huán)體中修改FINAL (終止循環(huán)次數(shù))數(shù)值。