数据类型决定数据的属性,在STEP7中,数据类型分为三大类:基本数据类型、复杂数据类型和参数数据类型。
一、基本数据类型
基本数据类型定义不超过32位(bit) 的数据,可以装人S7处理器的累加器,可利用STEP7基本指令处理。
基本数据类型共有12种,每一种数据类型都具备关键词、数据长度与取值范围以及常数表示形式等属性。表1列出了S7 - 300/400 PLC所支持的基本数据类型。
二、复杂数据类型
复杂数据类型定义超过32位或由其他数据类型组成的数据。复杂数据类型要预先定义,其变量只能在全局数据块中声明,可以作为参数或逻辑块的局部变量。STEP7支持的复杂数据类型有数组、结构、字符串、日期和时间、用户定义的数据类型,以及功能块类型6种。
1.数组
数组(ARRAY)是由一组同一类型的数据组合在--起而形成的复杂数据类型。数组的维数最大可以到6维,数组中的元素可以是基本数据类型或者复杂数据类型中的任一数据类型(ARRAY类型除外,即数组类型不可以嵌套);数组中每一维的下标取值范围是-32 768 ~32767,要求下标的下限必须小于下标的上限。
定义数组时必须指明数组元素的类型、维数及每--维的下标范围。数据格式是ARRAY[n..m]。 第一个数n和最后一个数m在方括号中指明。例如,[1..10] 表示10个元素,第一个元素的地址是[1], 最后一个元素的地址是[10]。 也可以采用[0..9], 元素个数为10个,地址为[0] ~ [9]。
例如: ARRAY [1..4, 1..5, 1..6] INT
这是一个三维数组,1..4. 1..5、 1..6 为数据第1 ~3维的下标范围; INT 为元素类型关键词。定义了一个整数型,大小为4x5 x6的三维数组。可以用数组名加上下标方式来引用数组中的某个元素,如a [2, 1, 5]。
2.结构
结构(STRUCT) 是由一组不同类型(结构的元素可以是基本的或复杂的数据类型)的数据组合在一起而形成的复杂数据类型。结构通常用来定义一组相关的数据,例如,电动机的一组数据可以按如下方式定义:
Motor: STRUCT
Speed: INT
Current: REAL
END_ STRUCT
其中STRUCT为结构的关键词; Motor 为结构类型名(用户自定义); Speed 和Current为结构的两个元素,INT 和REAL是这两个元素的数据类型; END STRUCT是结构的结束关键词。
3.字符串
字符串( STRING)是最多254个字符(CHAR)的一维数组,最大长度为256个字节(其中前2个字节用来存储字符串的长度信息)。字符串常量用单引号括起来,如‘S7 -300’、‘ SIMATIC'
4.日期和时间
日期和时间(DATE_ AND_ _TIME)用来存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD码格式保存。星期天的代码为1,星期一至星期六的代码分别为2 ~7。如: DT#2010 -02 -06-13:30:15. 200表示2010年2月6日13点30分15.2秒。
5. 用户定义的数据类型
用户定义数据类型(UDT)表示自定义的结构,存放在UDT块中(UDTI~UDT6535),在另一个数据类型中作为一个数据类型“模板”。当输入数据块时,如果需要输人几个相同的结构,利用UDT可以节省输入时间。
6.功能块类型
功能块类型(FB、 SFB)只可以在FB的静态变量区定义,用于实现多背景DB。
三、参数数据类型
参数类型是-一种用于逻辑块(FB、FC)之间传递参数的数据类型,主要有以下几种:
(1) TIMER (定时器)和COUNTER (计数器)。
(2)BLOCK(块)。指定一个块用作输入和输出,实参应为同类型的块。
(3) POINTER (指针)。6字节指针类型,用来传递DB的块号和数据地址。
(4) ANY。10字节指针类型,用来传递DB块号、数据地址、数据数量以及数据类型。