S7-300输入问题

我想用LOOP加变址实现输入I0.0对应Q0.0,I100.0对应Q100.0,怎样编写程序,望各位解决。

最佳答案

L     P#0.0          //初始读指针
   LAR1
      L     8              // 8个位(0-7)的循环计数为初值
M001: T     MB    10        //计数值 送入MB 10
      A    I [AR1,P#0.0]   //按读指针指示的地址读数据
    =   Q[AR1,P#0.0]  //按写指针指示的地址写数据
    +AR1  P#0.1            //读指针指向下一数据地址
    L     MB    10        //取循环计数值
    LOOP  M001           //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。

首先对一楼的回答表示敬佩。
我的回答与一楼的不同之处在于:
第一,没有使用AR2。对于初学者来说,要谨慎使用AR2。具体原因,可以参看对AR2的使用描述。简单的讲,AR1是完全由用户赋值、供用户使用,而AR2可能会被系统赋值,或系统也会使用到AR2的内容。所以建议,对AR2理解不深的用户不要再程序中使用AR2。
第二、使用的偏移不一样。一楼用户的语句是 +AR1 p#1.0这表示按字节偏移。我的语句是+AR1  P#0.1这表示是按位偏移。
第三、结果不同。一楼用户的结果是Q0.0=I0.0,Q1.0=I1.0,Q2.0=I2.0……Q100.0=I100.0。而我的结果是Q0.0=I0.0,Q0.1=I0.1……Q0.7=I0.7因为我只循环了八次,所以到Q0.7=I0.7就结束了。

提问者对于答案的评价:
回答的好

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午3:02
下一篇 2020年10月31日 下午3:02

相关推荐