恭喜,你发布的帖子
发布于 2016-08-23 14:23:17
2楼
在你的这段程序里,循环程序是在不断的运行的,所以MD200会一直增加;而且你的循环次数也实在是太多了。
L 0
T MW100
L 10
A001:T MW200
L MW100
+ 1
T MW100
L MW200
LOOP A001
L MW100
T MW102 //模拟看看是否这个数值为10
把你的程序仿真了一下。
我大概明白了两条要点:
1/ 我之前少了初始化,导致加法无止境的一直往上加。(这也说明 循环的确是一直在进行的)
2/ 你最后那个MW102还是为1(而不是0),说明LOOP指令它是把循环次数-1,大于0的话继续循环。=0的时候就结束循环,所以MW102=1。不可能等于0.如果等于0,就会一直无止境的往负的循环到CPU报错。
还有一个疑问,大家说的LOOP指令 在一个扫描周期内 是执行一次完整的扫描(就是扫描次数从初始值减到1),然后才执行后面的程序, 那是不是意味着,LOOP是不是不适合用于这种场合:MW100每个小时加1.(我知道这个功能 可以通过其他写法实现) ? 因为如果Loop到中间,等1个小时,才让它跳转,那其他程序都没法工作了,CPU估计也会报错。
我现在还无法实现,对LOOP内的程序进行干涉,比如让它等待指定时间之后,再跳转。
请填写推广理由:
分享
只看
楼主