L P##IN1
LAR1
L W#16#0
L W [AR1,P#0.0]
==I
JZ M001
T #TEMP2
OPN DB [#TEMP2]
M001: NOP 0
L D [AR1,P#2.0]
LAR1
L W [AR1,P#0.0]
L W [AR1,P#2.0]
>I
JCN M002
L 1
+I
T W [AR1,P#2.0]
L 1
+I
SLD 4
TAR1
+D
LAR1
L #IN0
T W [AR1,P#0.0]
SET
JU M003
M002: CLR
M003: SAVE
看这段程序搞不懂为什么要左移4位,最后是怎么实现存放数据的,希望专家们能帮我解答,关于寻址困扰我很长时间???
最佳答案
1、首先要了解、掌握32位指针格式:
AR1和AR2,每个32位。 其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。
AR:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=0000 0000 0000 0000 0000 0000 0000 1000(b),实际上就是等于1.0。
2、 什么要左移4位?
如果一个数值1,即,0000 0000 0000 0000 0000 0000 0000 0001(b)要形成地址需要左移3位,其后为0000 0000 0000 0000 0000 0000 0000 1000(b),实际上就是等于1.0。
左移4位是为了形成偶数的地址,例如上述0000 0000 0000 0000 0000 0000 0000 0001(b),左移4位后为0000 0000 0000 0000 0000 0000 0001 0000(b),实际上就是等于2.0。
总之,掌握上述的32位指针格式就可解决你的困惑。
3、建议看看:
、见《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=F0215
、《详解西门子间接寻址.pdf》下载:
http://ishare.iask.sina.com.cn/f/22746895.html
http://www.gongkong365.com/bbs/job.php?action=download&aid=96
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc230741.html