迭代語(yǔ)句主要用于重復(fù)執(zhí)行的程序,在codesys中,常見的迭代語(yǔ)句有 for,repeat 及while 語(yǔ)句。
for 循環(huán)
for 循環(huán)語(yǔ)句用于計(jì)算一個(gè)初始化序列,當(dāng)某個(gè)條件為 true 時(shí),重復(fù)執(zhí)行嵌套語(yǔ)句并計(jì)算一個(gè)迭代表達(dá)式序列,如果為 false,則終止循環(huán),具體格式如下。
for <變量>; := <初始值>; to <目標(biāo)值>; {by <步長(zhǎng)>;} do
<語(yǔ)句內(nèi)容>;
end_for;
for 循環(huán)的執(zhí)行順序如下:
? 計(jì)算<變量>;是否在<初始值>;與<目標(biāo)值>;的范圍內(nèi);
? 當(dāng)<變量>;小于<目標(biāo)值>;,執(zhí)行<語(yǔ)句內(nèi)容>;;
? 當(dāng)<變量>;大于<目標(biāo)值>;,則不會(huì)執(zhí)行<語(yǔ)句內(nèi)容>;;
? 當(dāng)每次執(zhí)行<語(yǔ)句內(nèi)容>;時(shí),<變量>;總是按照指定的步長(zhǎng)增加其值。步長(zhǎng)可以是任意的整數(shù)值。
如果不指定步長(zhǎng),則其缺省值是 1。當(dāng)<變量>;大于<目標(biāo)值>;時(shí),退出循環(huán)。
示例:使用 for 循環(huán)實(shí)現(xiàn) 2 的五次方計(jì)算。

假設(shè) var1 的初始值是 1,那么循環(huán)結(jié)束后,var1的值的為 32。
while 循環(huán)
while 循環(huán)與 for 循環(huán)使用方法類似。二者的不同之處是,while 循環(huán)的結(jié)束條件可以是任意的邏輯表達(dá)式。即可以指定一個(gè)條件,當(dāng)滿足該條件時(shí),執(zhí)行循環(huán),具體格式如下。
while <布爾表達(dá)式>;
<語(yǔ)句內(nèi)容>; ;
end_while;
while 循環(huán)的執(zhí)行順序如下:
? 計(jì)算<布爾表達(dá)式>;的返回值。
? 當(dāng)<布爾表達(dá)式>;的值為 true 時(shí),重復(fù)執(zhí)行<語(yǔ)句內(nèi)容>;。
? 當(dāng)<布爾表達(dá)式>;初始值為 false,那么指令<語(yǔ)句內(nèi)容>;不會(huì)被執(zhí)行,跳轉(zhuǎn)至 while 語(yǔ)句的結(jié)尾。

注意:
如果<布爾表達(dá)式>;的值始終為 true,那么將會(huì)產(chǎn)生死循環(huán),應(yīng)當(dāng)避免死循環(huán)的產(chǎn)生。可以通過改變循環(huán)指令的條件來避免死循環(huán)的產(chǎn)生。例如:利用可增減的計(jì)數(shù)器避免死循環(huán)的產(chǎn)生。
示例:只要計(jì)數(shù)器不為零,則始終執(zhí)行循環(huán)體內(nèi)的程序。

在一定的意義上,while 循環(huán)比 for 循環(huán)的功能更加強(qiáng)大,這是因?yàn)樵趫?zhí)行循環(huán)之前,
while 循環(huán)不需要知道循環(huán)的次數(shù)。因此,如果清楚地知道了循環(huán)的次數(shù),那么 for 循環(huán)更好,因?yàn)?for 循環(huán)可以避免產(chǎn)生死循環(huán)。










