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