请问大家两个STL编程问题?

1.我写了利用寄存器间接寻址来得到一个背景数据块的数据源,这个背景数据块号可以自己设定,但是为什么   A    DBX [AR1,P#68.2]    O   DBX [AR1,P#68.3]  这两个地址读出来是0,0,用直接地址  A    DBX   68.2   O  DBX   68.3读出来是1,1,实际上也是1,1;这是为什么?请看截图1和2,非常感谢!
2.下面我想用循环加右移位检测最右边是否为1来计算内存 #_ZS_CAL1中为1的个数,请问为什么这段程序不行,还变成了死循环?非常感谢!
//#_ZS_CAL1
      L     0
      T     #_ZS_CAL1
      L     #_ZS_Status1
      AW    W#16#1
      L     1
      ==I   
      JC    P1
P3:   L     3
P100: T     MB     5
      SRW   1
      L     #_ZS_Status1
      AW    W#16#1
      L     1
      ==I   
      JC    P1
P2:   L     MB     5
      L     0
      ==I   
      JC    P101
      TAK   
      LOOP  P100
P1:   L     #_ZS_CAL1
      L     1
      +I    
      T     #_ZS_CAL1
      L     3
      L     MB     5
      ==I   
      JC    P3
      JU    P2
P101: NOP   0

图片说明:

请问大家两个STL编程问题?    请问大家两个STL编程问题?   

最佳答案

1、 A    DBX [AR1,P#68.2]    O   DBX [AR1,P#68.3]  这两个地址读出来是0,0,用直接地址  A    DBX   68.2   O  DBX   68.3读出来是1,1,实际上也是1,1;这是为什么?
你的指令用错了,应该为:
      L     P#0.0          //初始读指针
      LAR1   //将 P#0.0装入AR1中
不应使用TAR1,TAR1是将AR1中的内容送至累加器1中。从你截图中即可看出AR1中的内容始终为6.0,以至于指针寻址的数据不是你所要的。
2、关于循环的问题,不能完全理解你的意图,肯定给不出满意的答案。倒不如,请你看看下述的典型的循环语句编程,从中理解其中的指针及循环指令的典型用法。我相信你读后,你自己就能够解决你自己的问题了:
、典型的循环语句编程例程:
例: 需将PIW128- PIW147,共20个字送入DB10中的 DW0,DW1,.......,DW19中:
在OB1:
     OPN   DB     10      //打开DB 10
      L     P#128.0            //初始读指针
      LAR1  
      L     P#0.0            //初始写指针
      LAR2  
      L     20               // 20个字的循环计数为初值
M001: T     MB    10        //计数值 送入MB 10
      L     PIW [AR1,P#0.0]   //按读指针指示的地址读数据
      T     DBW [AR2,P#0.0]  //按写指针指示的地址写数据
      +AR1  P#2.0            //读指针指向下一数据地址
      +AR2  P#2.0            //写指针指向下一数据地址
      L     MB    10        //取循环计数值
      LOOP  M001       //循环计数值如为0则结束循环;如不为0,则减1后转向标号为M001的语句,继续循环。

提问者对于答案的评价:
阿鸣大师多谢!!!,很多都是自己太粗心了,万分感谢!

最佳答案作者回复:
回答自控达人的问题:  请问为什么会是6.0呢? 由于编程者用错指令,使得程序中的ARI中的内容始终没有改变,始终保持着原内容,即6.0!提问者给出的程序只是一部分,执行到本程序时ARI中的内容就是6.0了。

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

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

相关推荐