回复:求教:L P#P 0.0

伊默

西门子1847工业学习平台

  • 帖子

    4263
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2006-07-25 20:40:21

0楼

地址寄存器存储的地址模式有两种格式:
1、地址指针格式包含被寻址数值所在存储单元地址的字节编号和位编号,至于对哪能个存储区寻址,则必须要在指令中明确地直接给出。
2、地址指针格式中在1种条件下还包含了数值所在存储区的说明位(存储区域标志位),这样可以通过改变这个存储区域标志位实现跨区间寻址。
32位指针格式具体如下:

X000_0rrr,0000_0bbb,bbbb_bbbb,bbbb_bXXX

位31=0表示区域内间接寻址,位31=1表示区域间寻址。
位24、25、26,区域标志位,具体如阿鸣帖子写讲。
位3~18:被寻址位的字节编号(共16位,范围:~65535)。
位0~2:被寻址的位编号(范围0-7)。

LAR1 P#1.1 装入的是1.1立即数,故是区域内寻址,位31=0,位24~26=0
LAR1 P#DBX0.0装入的是DBX0.0,属于区域间寻址,位31=1,位24~26=2#100


对于Harry dong的
L P#DBX 0.0
LAR1
L MW [AR1,P#2.0]
T MW 20
这和
L P#0.0
LAR1
L MW [AR1,P#2.0]
T MW 20
是一样的结果! 因为后面L MW [AR1,P#2.0]指定了区域标志,相当于把前面LAR1 P#DBX0.0装载的区域标志覆盖了!

对于Harry dong写的第二条,你自己已经解释了。即区域间寻址的时候位31必须等于1 !
当你用LAR1 P#DBX0.0时,系统会自动将位31置1,位24~26=2#100
而用LAR1 P#03000000时,仅仅是将位24~26=2#011表明这是对M区寻址(说明这是区域间寻址),但是同时位31却等于0(这又说明是区域内寻址), 这两处位的值是矛盾的,导致系统故障。
I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54622条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。