登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:西门子l p##in20的问题

点击:1899 回复:5

附件 IMG_20180513_123635.jpg
上面图片的问题的解答,不是很理他,db10.dbx0.0是个地址,那装入ar1后,是指的是ar1的地址是db10.dbx0.0还是说是指的是要把这个地址转为32位的一个常数,谢谢大神们指点一二。
18-05-13 12:43
1、AR地址寄存器中都是地址。
2、DB10.DBX0.0在内存中的地址被放入AR1中。
3、无论16位还是32位指针都是对地址进行操作。
HAVE FUN!
18-05-14 10:08
附件 IMG_20180514_154637.jpg
感谢您的指点,如图中的程序,是多重背景的底层功能块,我想问下,经过
这段程序后,ar1指向的是背景数据块,还是变量tab_ecq指向的外部的数据块,其中的l diw[ar1,p0.0这个语句不是很理解,]
在西门子官网上说在fb块内,ar2就是自动指向了背景数据块的首址,传到ar1后应该是背景数据块才对,可是实际不是这样,还请大神指点我那里理解错了
18-05-14 15:53
你所谓的指向数据块的指针叫做DB指针,其是一个6个字节的48位的指针,例如你的外层调用方式可能是类似于这样的:P#DB10.DBX20.5
这个48位的指针除了包含了一个32位指针外,还包含了数据块序号以及长度数据。
在Step7中,有3种指针:
1、32位的区指针,其包含了一个特殊地址
2、48位的DB指针,除了包含一个区指针,还包含了数据块的序号
3,80位的ANY指针,包含了DB指针和地址中的数据类型。
最重要的是区指针,DB指针和ANY指针只有在传递块参数的时候才会用到。
而DIW[AR1,P2.0]这种方式叫做区内寄存器间接寻址,具体你可以看STEP7编程手册附录A3.4.4章节。
Good Luck~
18-05-14 20:17
感谢版主的回复如图片所见
LAR1 AR2将AR2的地址传传送给AR1,
LP##TAB_ECQ是外功能块的输入接口,实参确实是P#DB90.DBX50.0
+AR1  将AR1的值与P#TAB_ECQ的值想加后传给AR1,这时AR1的地址指向了DB99.DBX50.0
LDIW[AR1,P#2.0]这个又怎么理解呢,是指向了DB90吗
18-05-14 23:24

引用 jiouai84 在 2018/5/14 23:24:49 发言【内容省略】

AR1中是一个ANY指针,通过对地址进行操作,指向了一个数据块。
L DIW[AR1,P#2.0]根据ANY指针的定义,由于数据区的类型为一个DB指针,因此在第2个字节处存放了DB块的数据长度
L DIW[AR1,P#4.0]则得到了DB块的编号。
附件 snap3.jpg
Good Luck~
18-05-15 10:40

工控新闻

更多新闻资讯