一条“看不懂的指令”的意义

已锁定

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

一条“看不懂的指令”的意义

560

0

2011-03-07 08:47:53

本帖转自http://blog.gkong.com/blog.asp?name=liaochangchu
网上有人给出了一条S7-300“看不懂”的指令“L P#P 515.0”。
这条指令与区域之间的寄存器间接寻址有关。S7-300/400有两个地址寄存器AR1和AR2,操作数的地址等于地址寄存器中的地址值加上地址偏移量。下面是寄存器间接寻址的32位指针格式:
x000 0rrr 0000 0bbb bbbb bbbb bbbb bXXX
其中第0~2位(XXX,最低位为第0位)为被寻址地址中位的编号(0~7),第3~18位(16个b)为被寻址地址的字节的编号。第24~26位(rrr)为被寻址地址的区域标识号。
指针的最高位x 为0时,为区域内的间接寻址,最高位x 为1时,为区域间(交叉区域)间接寻址。
将下面的程序下载到仿真PLC,运行时监控累加器1(STANDARD)的值(见下图)。
L P#P 1.0 //16#8000 0008送累加器1
LAR1 //累加器1的内容送AR1
L MW [AR1,P#2.0] //MW3的值送累加器1
MW [AR1, P#2.0]的地址为AR1中的P#1.0加偏移量P#2.0,MW [AR1, P#2.0]即MW3。
由第1条指令的执行结果16#8000 0008可知(见下图),P#P1.0的最高位为1,表示这是区域间(交叉区域)间接寻址。第24~26位(rrr)为2#000,由西门子的资料《S7-300和S7-400寻址》可知,区域标识号2#000表示地址指针不包含地址区。仿真时用PLCSIM设置MW3的值为16#1234,第3条指令的监控结果验证了上述分析的正确性。
将上述程序的第1条指令改为“L P#1.0”,程序运行结果相同。指针值P#1.0的最高位为0。

一条“看不懂的指令”的意义 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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