当前位置: 主页 > PLC控制

关于loop指令的理解?

第1次执行
L#SAMpling_Num//若该值为30
aaa:T#NUMBER//则该值也为30
L32//
*I//30*32=960??
LP#0.0
+D//960+0=960??
LAR1//地址寄存器指向960??
LDBD[AR1,P#0.0]//指向960??
TDBD[AR1,P#4.0]//指向964??
L#NUMBER//仍为30
LOOPaaa//???先减1,为29<>0,跳到aaa???
//???还是先判断30<>0,再30-1,跳至aaa???
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




第30次执行,
L#Sampling_Num//该值变为1
aaa:T#NUMBER//该值变为1
L32//
*I//1*32=32?
LP#0.0//
+D//32+0=32?
LAR1//地址寄存器指向32?
LDBD[AR1,P#0.0]//指向32?
TDBD[AR1,P#4.0]//指向36?
L#NUMBER//此时值为1
LOOPaaa//两种理解:1、先执行1-1=0,要跳处循环。2、先判断1<>0,执行1-1,跳至aaa,再执行一次。请问到底应该哪一种理解正确?
另外,上面中间程序的执行理解是否正确?
再,loop是否为每个扫描周期执行1次减1运算,还是不受扫描周期影响?
对于以上问题,论坛有不同的回答,故在此出贴!

图片说明:

关于loop指令的理解?关于loop指令的理解?

最佳答案

看看手册中的计算举例:
LOOPNEXT//如果累加器1低字中的内容大于“0”,则累加器1中的内容减“1”,并跳转到NEXT跳转标号。
LMW24//循环结束之后重新进行程序扫描。

可以看出是先判断<>0则执行-1,跳转再执行一次,否则=0则不跳转,往下执行。
loop循环是在每个扫描周期内执行完的,但是循环次数有一定限制,执行时间不能超过程序的看门狗时间,不然要报错

提问者对于答案的评价:
感觉有道理

  • 关注微信

猜你喜欢

微信公众号