回复:指针不循环问题

怀念过去

  • 帖子

    238
  • 精华

    5
  • 被关注

    24

论坛等级:侠士

注册时间:2010-08-04

普通 普通 如何晋级?

发布于 2016-05-26 11:55:21

7楼

展开查看
以下是引用n次看你的背影在2016-05-26 11:09:18的发言 >6楼

//------------------修改部分--------------------------- 

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

      LAR2  P#2.0     //把P#2.0给AR2

//--------------------------------------------------------

      OPN   DB1

      L     20

M2:   T     MW    30      //循环20次

      L     DBD [AR1,P#4.0]   

      L     DBD [AR1,P#0.0]

      -R    

      L     DBD [AR1,P#0.0]    

      /R    

      T     MD   100     //将相差的值比例给MD100          

      L     MD   100

      ABS   

      T     MD   100   // 绝对值

      A(    

      L     DBD [AR1,P#2.0]   // 如果这个值不等于0

      L     0.000000e+000

      <>R   

      )     

      A(    

      L     MD   100         //且 MD100小于MD200

      L     MD   200

     

      )     

      =     M [AR2,P#0.0]    // 则 让M 这个位 置1 

//------------------修改部分---------------------------

      +AR1 P#30.0

      +AR2 P#0.1 

//--------------------------------------------------------

      L     MW    30

      LOOP  M2               //  MW30 不为0则继续循环


楼主:我稍微修改了一下,试试看。


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

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

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

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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