间接寻址偏移量

L     P##Endaddres
      LAR1  
      L     D [AR1,P#2.0]
      T     #Pointer_Bit_Nr
其中Endaddres是M23.7, 我获得的Pointer_Bit_Nr是23.7
想要问的是,为什么偏移量是P#2.0

最佳答案

Endaddres应该是pointer类型指针。pointer指针是48位的数据格式,是在交叉区域寄存器间接寻址的基础上加了一个字的数据块号而组成的。第一个字里存放的是数据块号(可以为0,这个例子的数据块号就是0),第二,三字里存放的是起始地址(应该用双字格式读取)。
 L     P##Endaddres
      LAR1                         //读取pointer指针到地址寄存器1
      L     D [AR1,P#2.0]     //这里是在ar1里偏移了两个字节(一个字),就是读取的是起始址。
      T     #Pointer_Bit_Nr   //因为Endaddres是M23.7, 所以获得的Pointer_Bit_Nr是23.7
      我的语言组织能力有限,表达得可能不是很清楚,但我不会乱说,以免误导你。你可以根据pointer指针的数据格式看看就明白了。

提问者对于答案的评价:
这个答案最合理。另两位可能没明白我问的是什么。因为我要取的是M后的值,比如M23.7,然后我在线试的时候也取出来了23.7。只是这个偏移量的数值没明白。谢谢你的回答。

最佳答案作者回复:
现在不能发图片了。你可以在step7的帮助里搜索pointer就有他的数据格式。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午2:42
下一篇 2018年12月1日

相关推荐