您现在的位置是:首页 > PLC技术 > PLC技术
STEP 7数据块中的数据类型
来源:艾特贸易2017-06-04
简介数据块中的数据类型包括基本数据类型和复合数据类型。 有关基本数据类型 BOOL 、 BYTE 、 WORD 、 DWORD 、 CHAR 、 INT 、 DINT 、 REAL 、 TIME 、 DATE 、 TIME_OF_DAY 等的知识我们在第 3.2.2 节中已
数据块中的数据类型包括基本数据类型和复合数据类型。 有关基本数据类型BOOL、BYTE、WORD、DWORD、CHAR、INT、DINT、REAL、TIME、DATE、TIME_OF_DAY等的知识我们在第3.2.2节中已经详细介绍过,下面我们学习复合数据类型。 所谓复合数据类型,就是基本数据类型的组合。数据长度超过32bit。因为数据长度超过累加器的长度,所以不可以一次把整个数据装入累加器,往往需要利用一些特殊的方法(如库中的标准块)来处理这些数据。复合数据类型如表6-3所示。 表6-3 复合数据类型 从表6-3中可以看出,DAT_AND_TIME和STRING明显地就是前面基本数据类型的组合。而ARRAY、STRUCT和UDT的组成,是由用户定义的,可以包含基本数据类型和复合数据类型。这些数据类型,为结构化带来很大的方便。 (1) DATE_AND_YIME 当使用DATE_AND—TIME数据类型(DT)输入日期和时间时,输入条目以8个字节的二进制编码的十进制格式存储。DA YE_AND—TIME数据类型的范围如下: DT#1990 -1-1-0:0:0.0到DT#2089 -12 -31-23: 59: 59.999 下面的实例给出了日期和时间分别是2993年12月25日星期四上午8:01和1.23秒的语法。下列两种格式是可行的:DATE_AND_TIME#1993 - 12 - 25 -8:01:1.23和DT#1993 -12 -25-8:01:1.23 (2)数组(ARRAY) 数组组合一组相同的数据类型(基本或复杂)以构成单元。可以创建包含数组的数组。当定义数组时,必须做如下步骤: ·给数组指定名称。 ·用关键字ARRAY声明数组。 ·使用下标指定数组的大小。指定数组中各个维(最多为6维)的第一个和最后一个 数字。将下标输入方括号中,每个维数之间用逗号隔开,维数中的第一个数字和最 后一个数字之间用两个点隔开。例如,下列下标定义一个三维数组:[1..5,-2.. 3,30..32]。 ·指定包含在数组中的数据的类型。 图6-6显示具有三个整数的一维数组。使用下标访问数组中存储的数据。下标是在方括号中的数字。例如,第二个整数的下标是Op_temp[2]。下标可以是任何整数(- 32768 -32767),包括负的值。下图中的数组也可以被定义为ARRAY [-1..1]。然后,第一个整数的下标可以是Op_temp[-1],第二个可以是Op_temp[0],而第三个整数可以是Op_temp[1]。
图6-6 创建数组示例图 可以在数据块中创建多维数组。图6-7所示为创建的二维整数数组及可使用的元素。使用下标访问多维数组中的数据。在此例中,第一个整数是Op_temp[1,1],第三个是Op_temp[1,3],第四个是Op_temp[2,1],第六个是Op_temp[2,3]。还可以定义变量Op_temp如下作为六维数组: ARRAY[1..3,1..2,1..3,1..4,1..3,1..4] 在此数组中的第一个元素的下标是Op_terrip[1,1,1,1,1,1],最后元素的下标是Op_temp[3,2,3,4,3,4].
图6-7 二维整数数组示例图 1)创建数组。当在DB中或在变量声明中声明数据时,可以定义数组。当声明数组时,在方括号中数组大小后跟指定的关键字( ARRAY):[下限值..上限值]。在多维数组中,也可以指定另外的上限和下限值,并用逗号分开各个维数。如图6-8所示格式为2×3的数组创建的声明。
图6-8 数组声明示例图 2)给数组赋初值。当创建数组时,可以将初始值赋给每个数组元素。STEP 7提供两种方式输入初始值: ·输入单个值:对于数组的每个元素,指定有效的数组数据类型值。按元素顺序指定 值:[1,1]。记住各个元素必须用逗号互相隔开。 ·指定重复因子:对于具有相同初始值的有序元素,可以指定元素的数目(重复因 子),以及这些元素的初始值。输入重复因子的格式是x(y),此处x是重复因子, 而y是重复的值。 如果使用图6-8中声明的数组,可以如下为全部六个元素指定初始值:17、23、- 45、556、3342、0。也可以通过指定6 (10)设置所有六个元素的初始值为10。可以指定前两个元素的特定值,然后设置余下的四个元素为0,如下指定:17、23、4(0)。 3)访问数组中的数据。通过数组中特定元素的下标访问数组中的数据,下标使用符号名。例如,如果在图6-8中声明的数组以DB20 (Motor)的第一个字节开始,用下列地址访问数组的第二个元素:Motor.Heat_2×3[1,2]。 4)将数组作为参数。可以将数组作为参数传送。如果在变量声明中参数被声明为AR-RAY,必须传送整个数组(而不是单个元素)。然而,当调用块时,倘若数组的元素符合参数的数据类型,数组的元素就可以分配给一个参数。 如果使用数组作为参数,数组不需要具有相同的名称(它门甚至不需要名称)。然而,两个数组(形式参数和实际参数)必须具有相同的结构。例如,只有当块的形参定义为格式2×3的整数数组,并且调用操作提供的实际参数为2×3的整数数组时,格式2×3的整数数组才能作为参数传送。 (3)结构(STRUCT) 结构组合了各种数据类型(基本和复杂数据类型,包括数组和结构),形成一个单元。可以归类数据以适合过程控制。因此,也可以将参数作为数据单元传送,而不是作为单个元素传送。图6-9说明包含整数、字节、字符、浮点数和布尔值的结构。结构最多可以嵌套8层(例如,结构由包含数组的结构组成)。
图6-9 结构(STRUCT)示例图 1)创建结构。当在DB中或在逻辑块的变量声明中声明数据时,就定义了结构。图6-10说明了结构的声明(Stack_l)包含下列元素:整数(用作保存总数)、字节(用于保存原始数据)、字符(用于保存控制代码)、浮点数(用于保存温度)和布尔型存储位(用于终止信号)。
图6-10 创建结构(Stack_1)示例图 2)为结构赋初始值。如果想要将初始值赋给结构的每个元素,则要指定有效数据类型的值和元素名称。例如可以赋值下列初始值给图6-10中声明的结构Stack_1:
3)在结构中保存和访问数据。用户能够访问结构的各个元素。可以使用符号地址(例如,Stack_1.Temperature]。然而,也可以指定元素所位于的绝对地址(如果Stack_1位于DB20,以字节0开始,amount的绝对地址是DB20. DBW0,而temperature的地址是DB20. DBD6)。 4)使用结构作为参数。可以将结构作为参数传送。如果参数在变量声明中被声明为STRUCT,则必须传送具有相同组件的结构。然而,当调用块时,倘若结构的元素符合参数的数据类型,结构的元素就可以分配给一个参数。如果使用结构作为参数,两个结构(对于形式参数和实际参数的)必须具有相同的组件。换句话说,相同的数据类型必须以相同的顺序排列。 (4)用户自定义类型(UDT) 用户自定义数据类型( UDT)可以组合基本和复杂数据类型。可以指定名称给UDT,并多次使用它们。图6-11说明包含整数、字节、字符、浮点数和布尔值的用户自定义数据类型的结构。
图6-11 用户自定义数据类型(UDT)示例图 代替逐一地输入所有数据类型或作为结构,只需要指定“UDT20”作为数据类型,STEP 7自动地分配相应的内存空间。 1)创建用户自定义数据类型。使用STEP 7定义UDT。图6-12中给出的UDT包括如下的元素:整数(用作保存总数)、字节(用于保存原始数据)、字符(用于保存控制代码)、浮点数(用于保存温度)和布尔型存储位(用于终止信号)。可以在符号表中指定一个符号名称给UDT(例如process data)。
图6-12 创建用户自定义类型( UDT)示例图 一旦已创建UDT,可以像数据类型那样使用UDT。例如在DB中(或在FB的变量说明中)为变量声明了数据类型UDT200。 图6-13给出了具有变量process_data_1以及数据类型UDT200的DB。只指定UDT200和process_data_1。当编译DB时,以斜体字显示被创建的数组。
图6-13 使用用户自定义类型(UDT)示例图 2)为用户自定义数据类型分配初始值。如果希望将初始值赋给用户自定义数据类型的每个元素,要指定有效数据类型的值和元素的名称。例如可以赋值下列初始值(给上图中声明的用户自定义数据类型):
如果声明变量为UDT,变量的初始值是当创建UDT时指定的值。 3)在用户自定义数据类型中保存和访问数据。用户访问UDT的各个元素。可以使用符号地址(例如,Stack哪1. Temperature)。然而,也可以指定元素位于的绝对地址(例如,如果Stackj位于DB20,以字节0开始,anount的绝对地址是DB20.DBW0,而temperature的地址是DB20.DBD6)。 4)使用用户自定义数据类型作为参数。可以将数据类型UDT的变量作为参数传送。如果参数在变量说明中被声明为UDT,必须传送具有相同结构的UDT。然而,当调用块时,倘若UDT的元素符合该参数的数据类型,UDT的元素可以分配给一个参数。
点击排行
