[西门子] 西门子SCL基础教学---WHILE/REPEAT

[复制链接]
查看32128 | 回复0 | 2024-3-11 17:26:39 | 显示全部楼层 |阅读模式
今天讲两个循环,while和repeat。因为这两个循环有一些共同点。所以放一起讲了。

while:while循环之前会先判断程序的给定条件,如果为true,则执行循环体内的程序,如果是flase,则不执行。

repeat:repeat循环会先执行循环体内的程序,然后判断循环给定条件,如果为true,则结束循环,如果为flase,则回到循环体开始处再一次执行循环。所以,repeat循环至少会执行一次。

while/repeat和for循环不同,for的循环次数是已知的,有起始,有结束。而while/repeat不同,它在很多情况下,循环次数是未知的。

所以,使用while循环的时候,必须要注意给定条件永远不能为true,这样会导致死循环。

反之,在使用repeat循环的时候,必须要注意循环给定条件不能永远为false,这样会导致程序死循环。

while循环示例:

声明变量a=int

#a:=0;

WHILE #a <= 9

DO

    #a := #a + 1;

END_WHILE;
程序开始,给a这个变量赋值0,根据while的解释,当a小于等于9的时候,则会执行循环体内的程序,一直执行到a大于9的时候,则结束执行循环体内的程序。
repeat循环示例:

声明变量a=int

a:=0;

REPEAT

    #a := #a + 1;

UNTIL #a >= 10 END_REPEAT;
程序开始,给a赋值0,根据repeat的解释,它首先会执行循环程序一次,执行完了之后,until判断,如果a小于等于10,则会再次执行循环体内的程序。如果a大于10,那么就结束执行循环程序。
由此可以看出,while和repeat的条件一直达不到,产生的结果就是这段循环体一直在执行,最终PLC的看门狗时间到,然后报错,就是我们说的,程序死循环了。

当然,循环的那两个CONTINUE和EXIT还是可以搭配使用的。具体使用方式自己根据程序使用。
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则