关于P##,这段程序怎么读

L     P##DeviceData
      LAR1  
      L     W [AR1,P#4.0]               //DBnr
      T     #DB_DeviceData

      L     D [AR1,P#6.0]               //Startbyte pointer
      L     DW#16#7FFFFF                //mask Adress
      AD    
      T     #StartbyteDeviceData

最佳答案

1、要想读懂这段程序必须了解ANY数据类型的格式,例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
先看看:
《S7-300/400PLC ANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
2、程序分析:
L     P##DeviceData
      LAR1  //区设备数据地址装入地址指针AR1中。
      L     W [AR1,P#4.0]               //DBnr,字节4指定DB编号。
      T     #DB_DeviceData  // DB编号存入 #DB_DeviceData中
      L     D [AR1,P#6.0]               //Startbyte pointer,字节6、7、8、9分别指定存储器区、字节、位地址。
      L     DW#16#7FFFFF                //mask Adress
      AD    //与常数#16#7FFFFF  相与屏蔽最高位,其第31bit固定为0,形成32位指针。
      T     #StartbyteDeviceData  //存入#StartbyteDeviceData 
3、32位指针格式:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  AR:  
  0000 0000 0000 0BBB BBBB BBBB BBBB BXXX  
  这样规定,就意味着AR的取值只能是:0.0 ——65535.7  
  例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

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

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

相关推荐