回复:指针不循环问题

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2016-05-26 12:22:37

8楼

展开查看
以下是引用怀念过去在2016-05-26 11:55:21的发言 >

n侠  终于把你盼来了,   你修改的部分 ,我之前也是这么用的, 因为    M [AR2,P#0.0]    只有M2.0置1,我就把 程序更改为  用MD数据再转给AR1和AR2,  但效果也是一样的。 我在VAT 里监控,只有M2.0 置1, 之后就像只停留在第一次循环上, 只有M2.0 能置1,  如果改为

LAR1  P#5.0       //把P#1.0给AR1 

      LAR2  P#2.1     //把P#2.0给AR2     则M2.1就置1了,M2.2和之后M2.3等还是为0,  说明条件是成立的,如果循环的话,原程序M2.0和M2.1都应该置1的。因为都满足条件。


为了测试循环是否正常, 我又增加了一个计算,每循环一次  让一个MD400 增加10,在程序开头增加一个MD400 赋值 0, 在循环程序的下一段程序增加一个MD400的转移,监控能看到,循环之后MD400一直显示是200,改变循环次数20变为10,则MD400则为100, 所以证明循环是没问题的,之后的结果是循环20次之后的结果,  但为什么   M [AR2,P#0.0]  这个循环 只有开始M2.0才置1, 想不通了。是不是必须用DB才行


这是FC块里的程序。

头都大了, 第一搞这个指针循环,就卡壳了。

  =   M [AR2,P#0.0] //这条语句符合语法,是赋值操作(把当前的RLO赋给当前的M位);并不是置位操作。无论是赋值还是置位,对DB区和M区都是一样的。再检查一下,程序其它地方是不是还有对MD2、MD6写操作。


如果是置位,可以写成这样:

  S   M [AR2,P#0.0] 

佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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