登录
首页
PLC论坛
西门子SIEMENS
回帖
发帖
正文
主题:西门子l p##in20的问题
点击:1899 回复:5
楼主
编辑
引用
管理
jiouai84
上面图片的问题的解答,不是很理他,db10.dbx0.0是个地址,那装入ar1后,是指的是ar1的地址是db10.dbx0.0还是说是指的是要把这个地址转为32位的一个常数,谢谢大神们指点一二。
18-05-13 12:43
1楼
编辑
引用
管理
fujifa
1、AR地址寄存器中都是地址。
2、DB10.DBX0.0在内存中的地址被放入AR1中。
3、无论16位还是32位指针都是对地址进行操作。
HAVE FUN!
18-05-14 10:08
2楼
编辑
引用
管理
jiouai84
感谢您的指点,如图中的程序,是多重背景的底层功能块,我想问下,经过
这段程序后,ar1指向的是背景数据块,还是变量tab_ecq指向的外部的数据块,其中的l diw[ar1,p0.0这个语句不是很理解,]
在西门子官网上说在fb块内,ar2就是自动指向了背景数据块的首址,传到ar1后应该是背景数据块才对,可是实际不是这样,还请大神指点我那里理解错了
18-05-14 15:53
3楼
编辑
引用
管理
cvlsam
你所谓的指向数据块的指针叫做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
4楼
编辑
引用
管理
jiouai84
感谢版主的回复如图片所见
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
5楼
编辑
引用
管理
cvlsam
引用
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块的编号。
Good Luck~
18-05-15 10:40
工控新闻
和利时成功签约新加坡汤申-东海岸线延长线地铁综合监控系统项目
专访西门子全球执行副总裁肖松:中国是孵化工业智能体的热土
2025新型工业化优秀实践案例
Bumblebee X助力Taiga Robotics通过AI驱动的视觉技术实现矿业自动化
工业AI迈向“知行合一” 具身智能重构制造边界
华为旗下两大国产工业软件企业正式合并
骄阳·工业大模型正式发布,这家“AI新国企”展示工业+智能新范式
一图速览,工信系统下半年这样干!
更多新闻资讯