西门子6ES7655-5PX31-1AX0

西门子6ES7655-5PX31-1AX0

发布商家
湖南西控自动化设备有限公司
联系人
徐嘉泉(先生)
职位
经理
手机
17838383235
微信
17838383235

说明

POINTER 类型的参数是一个可指向特定变量的指针。它在存储器中占用 6 个字节(48 位),可能包含以下变量信息:

数据块编号或 0(若数据块中没有存储数据)

CPU 中的存储区

变量地址

下图显示了 POINTER 参数类型的结构:

指针类型

根据相关信息,可以使用 POINTER 参数类型声明以下四种类型的指针:

内部区域指针:

内部区域指针存储变量的地址信息。

跨区域指针:

跨区域指针存储变量的存储区域和地址信息。

DB 指针:

使用 DB 指针,可以指向数据块变量。除变量的存储区域和地址信息外,DB 指针中还存储有数据块号。

零指针:

使用零指针,可以指出缺少的值。缺少的值可以表示值不存在,或为未知值。零值表示缺少值,但仍然是值。

下表显示的是声明各种指针类型的格式:

P#ByteRepresentation格式输入值示例说明
符号P#Byte.Bit"MyTag"内部区域指针
P#OperandAreaByte.Bit"MyTag"跨区域指针
P#Data_block.Data_operand"MyDB"."MyTag"DB 指针
P#零值-零指针

P#Byte.BitP#20.0内部区域指针
P#OperandAreaByte.BitP#M20.0跨区域指针
P#Data_block.Data_operandP#DB10.DBX20.0DB 指针
P#零值P#0.0, ZERO零指针


前缀 P#

在块调用中输入不带 P# 前缀的实际值,可作为 POINTER 数据类型的形参。然后可自动转换为 POINTER 格式。

在 STL 编程语言中使用前缀 P# 时,需注意以下注意事项:

块类型“优化”访问模式“标准”访问模式
函数 (FC)在程序代码中,不能使用带前缀 P# 的变量。在程序代码中,可以使用以下带前缀 P# 的变量。
在块接口的 InOut 区域中声明变量的结构变量。
声明基本数据类型的变量不能使用前缀 P#。
函数块 (FB)在程序代码中,不能使用带前缀 P# 的变量。在程序代码中,可以使用以下带前缀 P# 的变量。
在块接口的 Static、Input 和 Output 区域声明的变量。
在块接口的 InOut 区域中声明的 PLC 数据类型 (UDT) 变量。

存储区

下表列出了 POINTER 参数类型的存储区的十六进制代码:

十六进制代码存储区说明
B#16#801)PCPU S7-300/400 的外围设备
16#1PCPU S7-1500 的外围输入
16#2PCPU S7-1500 的外围输出
B#16#81I输入存储区
B#16#82Q输出存储区
B#16#83M位存储的存储区
B#16#84DBX数据块
B#16#85DIX背景数据块
B#16#86L本地数据
B#16#87V先前的本地数据
1) 这些数据类型只能用于 CPU S7-300/400 上的 POINTER 指针。
输入常量的完整语法

概述

短格式长格式
B#BYTE#
W#WORD#
DW#DWORD#
D#DATE#
T#TIME#
TOD#TIME_OF_DAY#
S5T#S5TIME#
DT#DATE_AND_TIME#
P#POINTER#

使用指针进行间接寻址

说明

对于间接寻址,要求特定的数据格式,应包含地址或者还包含操作数的范围和数据类型。该数据格式称为指针。可以使用以下类型的指针:

引用 (S7-1500)

VARIANT (S7-1200/1500)

POINTER (S7-1500)

ANY(S7-1500,仅适用于可标准访问的块)

有关指针数据类型的更多信息,请参考“另请参见”。

说明
在 SCL 中,POINTER 的使用具有一定限制。只能将其转发到被调用块中。

示例

以下举例说明了使用区域内指针进行间接寻址

在 STL 中寻址说明
L P#10.0// 在累加器 1 中(P#10.0)加载指针
T MD20// 将指针传递给操作数MD20
L MW [MD20]// 在累加器 1 中加载 MW10
....// 任意程序
L MD [MD20]// 在累加器 1 中加载 MD10
....// 任意程序
= M [MD20]// 若 RLO=1,则设置存储器位 M10.0

将指针 P#10.0 传递给操作数 MD20。若编程时操作数 MD20 用方括号括起,则在运行时其将被指针中包含的地址替换。

通过指针间接寻址

说明

对于间接寻址,要求特定的数据格式,应包含地址或者还包含操作数的范围和数据类型。该数据格式称为指针。以下提供的是指针类型:

POINTER (S7-300/400)

ANY (S7-300/400)

VARIANT (S7-1200/1500)

有关指针数据类型的详细信息,请参见“另请参见”部分。

说明
在 SCL 中,指针数据类型的使用受到限制。唯一的选择是可以将其转发至被调用块。

示例

以下举例说明了使用区域内指针进行间接寻址:

在 STL 中寻址说明
L P#10.0// 在累加器 1 中(P#10.0)载入指针
T MD20// 将指针传递给操作数MD20
L MW [MD20]// 在累加器 1 中加载 MW10
....// 任意程序
L MD [MD20]// 在累加器 1 中MD10载入
....// 任意程序
= M [MD20]// 若 RLO=1,则设置存储器位M10.0

将指针 P#10.0 传递给操作数 MD20。若编程时操作数 MD20 用方括号括起,则在运行时其将被指针中包含的地址替换。 

LAR1 :用双字或区域指针加载至 AR1

说明

使用“用双字或区域指针加载至 AR1”指令,将双字或区域内部指针、跨区域指针的内容加载到地址寄存器 1 (AR1) 中。因此双字中的内容必须与区域指针格式相匹配。

在下列某个存储区中,可以寻址指针和双字:

位存储器 (M)

临时本地数据 (L)

数据块 (DB,DI)

无论逻辑运算结果以及状态位如何,CPU 都会执行该指令。该指令既不影响逻辑运算结果也不影响状态位。

该指令不会更改累加器中的内容。

参数

下表列出了“用双字或区域指针加载至 AR1”指令的参数:

参数声明数据类型存储区说明

InputDWORD、POINTERD、M、L加载了内容的操作数。


示例

以下示例说明了该指令的工作原理:

STL说明
LAR1 P#10.0// 将区域内部指针 P#10.0 中的内容加载到地址寄存器 1。
L MW [AR1,P#4.0]// 将 MW14 加载到累加器 1 中。
L "Tag_Value"// 将累加器 1 中的内容移到累加器 2 中。
// 将操作数“Tag_Value”的内容加载到累加器 1 中。
>I// 比较累加器 2 的值是否大于累加器 1 的值。
A I [AR1,P#2.1]// 检查位 I12.1 的信号状态是否为“1”,并与当前的 RLO 进行“与”运算。
= "Tag_Output"// 如果满足条件 (RLO = "1"),则将操作数“Tag_Output”置位为“1”。
LAR1 MD20// 用 MD20 (MD20 = P#30.0) 中的内容加载至地址寄存器 1
A I [AR1,P#2.1]// 检查位 I32.1 的信号状态是否为“1”,并与当前的 RLO 进行“与”运算。


人气
12
发布时间
2024-07-18 03:12
所属行业
PLC
编号
41171162
我公司的其他供应信息
相关西门子产品
拨打电话
微信咨询
请卖家联系我