回复:指针不循环问题

怀念过去

  • 帖子

    238
  • 精华

    5
  • 被关注

    24

论坛等级:侠士

注册时间:2010-08-04

普通 普通 如何晋级?

发布于 2016-05-26 13:42:24

9楼

展开查看
以下是引用n次看你的背影在2016-05-26 12:22:37的发言 >8楼

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


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

  S   M [AR2,P#0.0] 

以下是引用怀念过去在2016-05-26 11:55:21的发言 >:n侠  终于把你盼来...

引用详细内容:

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块里的程序。

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

确认了,M2和M6  都没有被其他地方调用过,  写着一段的是想在复合条件的时候才置1,不复合条件的时候就是0, S   M [AR2,P#0.0] 可能就没法在不符合条件时为0 了, 所以才用的= ,之前还用过DB块的数据,是否能确认程序这样写是没有问题的,那我再找找其他原因。 能否帮小弟仿真一下,确认是否程序是没问题的。

自古深情留不住,总是套路得人心...
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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