s7-300 指针数据传递

OPN   DB   300                    
      L     P#0.0                       
      LAR1  
      L     5                          
_001: T     MB  2000                   
      L     DBD [AR1,P#0.0]            
      T     DB301.DBD    0              
      A     M    100.0
      +AR1  P#4.0                       
      L     MB  2000                   
      LOOP  _001                    
这个程序是我照阿鸣大师修改的,在DB300中建立100个数据,通过指针每当A100.0成立时候,就把数据传送到DB301.DBD0中,DB301已经建立好了,但是没成功,程序有啥错误?

问题补充:
这个程序运行了,就把DB300.DBD0的值传递给DB301.DBD0了,然后A100.0再成立就始终是DB300.DBD0的值,DB块中应该按顺序DB300.DBD4、DB300.DBD8、DB300.DBD12...往下走吧?按顺序把值赋值给DB301.DBD0才对呢

最佳答案

感觉用循环来做的话,很难把循环中断,M100.0的条件不好加进去,不烦用下面程序试试看;  
         OPN   DB   300                    
         LAR1  MD   160        //初始化,地址寄存器1,
         A      M    100.0         //启动的条件
         FP    M    100.1         //这里做上升沿的目的就是一个周期值计算一次
         JCN   A001
         L     DBD [AR1,P#0.0]
         T     DB301.DBD0
         TAR1  
          L     3168
         <D                    //比较是否有超过规定的100的实数,因为从0开始的所以是3200-32=3168
         JCN   A002
         +AR1  P#4.0       //地址寄存器自加4个字节,这样就能往下移动了
         TAR1  MD   160   //MD160用来存放指针地址
         JU    A003
A002: L     0
         T     MD   160   //如果超过了100个数,就从头开始
A001: NOP   0
A003: NOP   0
以上程序经过测试,可行的;

提问者对于答案的评价:
非常棒,受益匪浅,谢谢大家了

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc221150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年12月9日
下一篇 2017年12月9日

相关推荐