回复:蹊跷的LOOP循环 仿真

creasy

  • 帖子

    3
  • 精华

    0
  • 被关注

    2

论坛等级:游民

注册时间:2010-01-25

普通 普通 如何晋级?

发布于 2016-08-23 14:23:17

2楼

展开查看
以下是引用艾星落尘在2016-08-23 11:37:18的发言 >1楼

在你的这段程序里,循环程序是在不断的运行的,所以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内的程序进行干涉,比如让它等待指定时间之后,再跳转。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。