STEP7——POINTER指针详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参数类型POINTER的格式
下图给出了存储在每个字节中的数据类型。

参数类型POINTER存储下列信息:
∙DB编号(或0,如果数据没有存储在DB中)
∙CPU中的存储区域(下表给出了参数类型POINTER存储器区的十六进制代码)
十六进制代码存储区描述
b#16#81I输入区域
b#16#82Q输出区域
b#16#83M位存储区域
b#16#84DB数据块
b#16#85DI背景数据块
b#16#86L本地的数据(L堆栈)
b#16#87V先前的本地数据
∙数据的地址(格式为字节.位)
STEP7提供指针格式:p#memory_area byte.bit_address.(如果形式参数被声明为参数类型POINTER,只需要指出存储区域和地址。

STEP7将自动地重定输入指针的格式。

)下面的实例说明如何为以M50.0开始的数据输入参数类型POINTER:
∙P#M50.0
∙M50.0(如果形式参数声明为POINTER)。

使用参数类型POINTER
指针用于指向地址。

这种寻址方式的优点是可以在程序处理期间动态地修改语句的地址。

存储器间接寻址的指针
使用存储器间接寻址的程序语句由指令、地址标识符和偏移量组成(偏移量必须在方括号内给出)。

双字格式指针的实例:
L P#8.7装载指针的值到累加器1。

T MD2传送指针到MD2。

A I[MD2]询问输入位I8.7的信号状态,并
=Q[MD2]将信号状态分配给输出位Q8.7。

区域内部和区域交叉寻址的指针
使用这些寻址方式的程序语句包含指令和下列部分:地址标识符、地址寄存器标识符、偏移量。

地址寄存器(AR1/2)和偏移量必须在方括号内一起指定。

区域内部寻址的实例
指针不包含存储器区的指示:
L P#8.7装载指针的值到累加器1。

LAR1将指针从累加器1装载到AR1。

A I[AR1,P#0.0]询问输入位I8.7的信号状态,并
=Q[AR1,P#1.1]将信号状态分配给输出位Q10.0。

偏移量0.0没有影响。

输出10.0由8.7(AR1)加上偏移量1.1计算出来。

结果是10.0而不是9.8,参见指针格式。

区域交叉寻址的实例
在区域交叉寻址中,存储区域在指针中指出(在实例I和Q中)。

L P#I8.7将指针的值和区域标识装载到累加器1中。

LAR1装载存储器区I和地址8.7到AR1中。

L P#Q8.7将指针的值和区域标识装载到累加器1中。

LAR2装载存储器区Q和地址8.7到AR2中。

A[AR1,P#0.0]询问输入位I8.7的信号状态,并
=[AR2,P#1.1]将信号状态分配给输出位Q10.0。

偏移量0.0没有影响。

输出10.0由8.7(AR2)加上偏移量1.1计算出来。

结果是
10.0而不是9.8,参见指针格式。

相关文档
最新文档