s7-300的数据类型分以下三种:基本数据类型、复合数据类型和参数类型。一、基本数据类型1、位(bit)常称为bool(布尔型),只有两个值:0或1。如:i0.0,q0.1,m0.0,v0.1等。2、字节(byte)一个字节(byte)等于8位(bit),其中0位为最低位,7位为最高位。如:ib0(包括i0.0~i0.7位),qb0(包括q0.0~q0.7位),mb0,vb0等。范围:00~ff(十进制的0~255)。3、字(word)相邻的两字节(byte)组成一个字(word),来表示一个无符号数,因此,字为16位。如:iw0是由ib0和ib1组成的,其中i是区域标识符,w表示字,0是字的起始字节。需要注意的是,字的起始字节(如上例中的“0”)都必须是偶数。字的范围为十六进制的0000~ffff(即十进制的0~65536)。在编程时要注意,如果已经用了iw0,如再用ib0或ib1要特别加以小心。4、双字(doubleword)相邻的两个字(word)组成一个双字,来表示一个无符号数。因此,双字为32位。如:md100是由mw100和mw102组成的,其中m是区域标识符,d表示双字,100是双字的起始字节。需要注意的是,双字的起始字节(如上例中的“100”)和字一样,必须是偶数。双字的范围为十六进制的0000~ffffffff(即十进制的0~4294967295)。在编程时要注意,如果已经用了md100,如再用mw100或mw102要特别加以小心。以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。5、16位整数(int,integer)整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。6、32位整数(dint,doubleinteger)32位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。7、浮点数(r,real)浮点数为32位,可以用来表示小数。浮点数可以为:1.m×2e,其存储结构如图所示:8、常数的表示方法常数可以是字节、字或双字,cpu以二进制方式存储,也可以用十进制,十六进制ascii码或浮点数形式来表示。如下图所示:说明:(1)s5t#格式为:s5t#ad_bh_cm_ds_ems,其中a,b,c,d,e分别是日,小时,分,秒和毫秒的数值,输入时可以省掉下划线,如表中所示。(2)d#取值范围为:d#1990_1_1~d#2168_12_31。二、复合数据类型用户通过复合基本数据类型而生成就是复合数据类型。复合数据类型包括以下几种:1、数组(array)将一组同一类型的数据组合在一起组成一个单位就是数组。2、结构(struct)将一组同不同类型的数据组合在一起组成一个单位就是结构。3、字符串(string)字符串是由最多254个字符组成的一维数组。4、日期和时间(date-and-time)用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用8个字节,bcd编码。星期天代码为1,星期一~星期六代码分别是2~7。如:dt#2004_07_15_12:30:15.200为2004年7月15日12时30分15.2秒。5、用户定义的数据类型(udt,user-defineddatatypes)由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。可以在数据块db和变量声明表中定义复合数据类型。三、参数类型是为在逻辑块之间传递参数的形参(formalparameter,形式参数)定义的数据类型。