对"P#DB1.DBX0.0 byte 20"这个例子而言,各部分的数值分别为:
Syntax_ID = 16#10
DataType = 16#02 //BYTE
Repetition_factor = 16#14 //16#14=20
DB_Number = 16#01
Byte_Pointer = 16#8400_0000
那么对P#DB1.DBX30.0 byte 20的Byte_Pointer 怎么表示?
我想动态修改ANY数据。
最佳答案
DBX30.0的Byte_Pointer 怎么表示?
1、当是对DB区域寻址时,AR=840*xx。其0-2bit,指定bit位,3-18bit指定byte字节。
表示DBX30.0的最后八位二进制数为1111_0000。即0-2bit为0,3-18bit为1111_0(十六进制的1E
即十进制的30)。完整的指针为16#8400_00F0。
2、相关文档:
、见《step7编程之地址概念详解》下载:
http://ishare.iask.sina.com.cn/f/3022080.html
或
http://www.plc365.com/jishu/57.html
、见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04) 》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
提问者对于答案的评价:
说的比较明白。
我现在是做动态间接寻址,通过查阅一些资料已解决。
原来没有把AR保存起来所以总是出错,上网咨询一下,看了别的事例程序发现没有保存AR,加上以后就没问题了。
我的体会是做间接寻址先要把AR保存,退出时要还原,这样就不会出错。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc249838.html