STEP 7以10个字节存储参数类型ANY。当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据及参数类型的数据不同。
数据类型的ANY格式
对于基本和复杂数据类型,STEP 7存储下列数据:
∙数据类型
∙重复因子
∙DB编号
∙信息存储的存储区域
∙数据的起始地址
重复因子识别由参数类型ANY传送的指示数据类型的数量。这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节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 | parameter数据类型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数据类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论