我想用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