STEP7——ANY指针详解

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

参数类型ANY的格式

STEP 7以10个字节存储参数类型ANY。当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。

STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。

数据类型的ANY格式

对于基本和复杂数据类型,STEP 7存储下列数据:

数据类型

重复因子

DB编号

信息存储的存储区域

数据的起始地址

重复因子识别由参数类型ANY传送的指示数据类型的数量。这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。

地址以格式存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。位地址存储在字节9的位0 - 2。

对于类型NIL的空指针,所有来自字节1的字节设置为0。

下表给出参数类型ANY的数据类型或存储区域的编码。

数据类型的编码

十六进制代码数据类型描述

b#16#00 NIL 空指针

b#16#01 BOOL 位

b#16#02 BYTE 字节(8位)

b#16#03 CHAR 字符(8位)

b#16#04 WORD 字(16位)

b#16#05 INT 整数(16位)

B#16#06 DWORD 字(32位)

b#16#07 DINT 双整数(32位)

b#16#08 REAL 浮点数(32位)

b#16#09 DATE 日期

b#16#0A TIME_OF_DAY (TOD) 时间

b#16#0B TIME 时间

b#16#0C S5TIME 数据类型S5TIME

b#16#0E DATE_AND_TIME (DT) 日期和时间(64位)

b#16#13 STRING 字符串

存储器区的编码

十六进制代码区域描述

b#16#80 P I/O区域

b#16#81 I 输入区域

b#16#82 Q 输出区域

b#16#83 M 位存储区域

b#16#84 DB 数据块

b#16#85 DI 背景数据块

b#16#86 L 本地的数据(L堆栈)

b#16#87 V 先前的本地数据

参数类型的ANY格式

对于参数类型,STEP 7存储数据类型和参数的地址。重复因子始终是1。字节4、5和7始终是0。字节8和9指示定时器、计数器或块的编号。

下表为参数类型显示参数类型ANY的数据类型编码。

十六进制代码数据类型描述

b#16#17 BLOCK_FB FB编号

b#16#18 BLOCK_FC FC编号

b#16#19 BLOCK_DB DB编号

b#16#1A BLOCK_SDB SDB编号

b#16#1C COUNTER 计数器编号

b#16#1D TIMER 定时器编号

使用参数类型ANY

可以为适合于任何数据类型的实际参数的块定义形式参数。当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。在块的变量声明中,可以声明参数为数据类型ANY。然后可以在STEP 7中分配任何数据类型的实际参数。

STEP 7为ANY数据类型的变量分配存储器的80个位。如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。调用块为ANY参数分析保存数据的80个位,并获取进一步处理所需的信息。

分配实际参数给ANY参数

如果为参数声明数据类型ANY,可以分配任何数据类型的实际参数给形式参数。在STEP 7中,可以指定下列数据类型为实际参数:

基本数据类型:指定实际参数的绝对地址或符号名称。

复杂数据类型:指定复杂数据类型的数据符号名称(例如,数组和结构)。

定时器、计数器和块:指定编号(例如,T1、C20或FB6)。

下图说明数据如何传送到具有ANY数据类型参数的FC。

在此实例中,FC100具有三个参数(in_par1、in_par2和in_par3),声明为ANY数据类型。

当FB10调用FC100时,FB10传送一个整数(静态变量speed)、一个字(MW100)和一个双字到DB10 。

当FB11调用FC100时,FB11传送一个实数数组(临时变量"Thermo")、一个布尔值(M 和一个定时器(T2)。

为ANY参数指定数据区

不仅可以分配各个地址(例如,MW100)给ANY参数,而且可以指定数据区。如果希望指定数据区为实际参数,使用下列常数格式指定要传送的数据总量:

p# 区域标识符数据类型重复因数

对于数据类型元素,可以为常数指定所有基本数据类型和数据类型DATE_AND_TIME的格式。如果数据类型不是BOOL,必须指定位地址0 。下表为指定要传送的存储区域给ANY参数的格式的实例。实际参数描述

p# M BYTE 10 指定字节存储区域中的10个字节:

MB50到MB59。

p# S5TIME 3 指定数据类型S5TIME的数据的3个单元,它们

位于DB10:

DB字节5到DB字节10。

p# Q BOOL 4 在输出区指定4个位

使用参数类型ANY的实例

下列实例给出了如何使用参数类型ANY和系统功能SFC20 BLKMOV复制10个字节的存储区域。

相关文档
最新文档