1.基本数据类型
(1)位(bit)
位数据的数据类型为BOOL(布尔)型,在编程软件中BOOL变量的值1和0用TRUE和FALSE表示。
位存储单元的地址由字节地址和位地址组成,称为“字节.位”寻址方式。例如I 3.2中的区域标示符“I”表示输入(Input),字节地址为3,位地址为2。
(2)字节(Byte)
8位二进制数组成1个字节(Byte),其中的第0位为最低位(LSB),第7位为最高位(MSB)。例如输入字节IB3由I 3.0~I 3.7这8位组成。
图8-24 MW100
(3)字(Word)
相邻的两个字节组成一个字,字用来表示无符号数。例如MW100是MB100和MB101组成的一个字,如图8-24所示。MW100中的M为区域标示符,W表示字。
需要注意:用组成字的编号最小的字节MB100的编号作为字MW100的编号;组成字的编号最小的字节MB100为字的高位字节,编号最大的字节MB101为字的低位字节。双字也有类似的特点。
字的取值范围为W#16#0000~W#16#FFFF。
(4)双字(Double Word)
两个字(或4个字节)组成1个双字,双字用来表示无符号数。例如双子MD100由MB100~MB103组成,如图8-25所示,D表示双字。
图8-25 MD100
(5)16位整数(INT,Integer)
整数是有符号数,整数的最高位为符号位,最高位为0时为正数,为1时为负数,取值范围为-32768~32767。整数用补码来表示,正数的补码就是它的本身,将一个正数对应的二进制数的各位求反后加1,得到绝对值与它相同的负数的补码。
(6)32位整数(DINT,Double Integer)
32位整数的最高位为符号位,取值范围为-2147483648~2147483647。
(7)32位浮点数(实数,REAL)
实数(REAL)又称为浮点数,可以表示为1.m×2E,其中,数m和指数E为二进制数,E可能为正数,也可能为负数。
在编程软件中,用小数来输入和显示浮点数,例如50.0。
(8)常数的表示方法
常数值可以是字节、字或双字,CPU以二进制方式存储常数,常数也可以用十进制、十六进制数ASCⅡ或浮点数形式表示,见表8-9。(www.xing528.com)
表8-9 基本数据类型
2.复杂数据类型
(1)日期和时间
数据类型日期和时间(DATE_AND_TIME)占用8个字节的BCD码。例如2004年7月27日12点30分25.123秒可以表示为DT#04-07-27-12:30:12.123。
(2)字符串
字符串(STRING)是字符(CHAR)组成的一维数组,每个字节存放1个字符。一个字符串最多有254个字符,通过定义字符串的长度可以减少它占用的存储空间。
(3)数组
数组(ARRAY)是同一类型的数据组合成的一个单元,数组的维数最多为6维。各维之间的数字用逗号隔开,每一维开始和结束的编号用两个小数点隔开,如果某一维有n个元素,该维的起始元素和结束元素的编号采用1和n,例如PRESS[1..2,1..3],即指定二维数组PRESS有2×3个元素,其中数组的第1个元素为PRESS[1,1],第3个元素为PRESS[1,3],第4个元素为PRESS[2,1],第6个元素为PRESS[2,3]。
(4)结构
结构(STRUCT)是不同类型的数据的组合。可以用基本数据类型、复杂数据类型和用户定义数据类型作为结构中的元素,例如一个结构可以由数组和结构组成,结构可以嵌套8层。
可以用结构中的元素的绝对地址或符号地址来访问结构中的元素。访问结构中的数据时,需要指出结构所在的数据块的名称、结构的名称,以及结构元素的名称,例如数据块TANK内结构STACK的元素AMOUNT应表示为“TANK”.STACK.AMOUNT,假设A-MOUNT从数据块TANK(DB4)的第12个字节开始存放,它的绝对地址为DB4.DBW12。
(5)用户定义数据类型
用户定义数据类型(User-Defined Data Types,UDT),是一种特殊的数据结构,用户只需要对它定义一次,定义好以后可以在用户程序中作为数据类型使用。可以用它来产生大量的具有相同数据结构的数据块,用这些数据块来输入用于不同目的的实际数据。用户定义数据类型由基本数据类型和(或)复杂数据类型组成。定义好以后可以在符号表中为它指定一个符号名,使用UDT可以节约录入数据的时间。
3.用于传送FB(功能块)和FC(功能)参数的参数类型
(1)TIMER和COUNTER
使用参数类型TIMER(定时器)和COUNTER(计数器)可以在调用逻辑块时,分别将定时器和计数器的编号作为实参传送给块的形参。
(2)Block
使用参数类型Block_FC、Block_FB、Block_DB和Block_SDB,可以在调用逻辑块时,分别将FC、FB、DB和SDB(系统数据块)作为实参传送给块的形参。块参数类型的实参应为同类型的块的绝对地址编号或块的符号名。
参数类型TIMER、COUNTER、BLOCK只能用于块的输入变量(IN)的形参。
(3)POINTER
参数类型POINTER(指针)可以指向一个数据块中的变量,例如P#DB2.DBX50.0,POINTER的实参可以省略“P#”,例如M50.0和DB2.DBX50.0。POINTER占6个字节,只能用于形参中的IN、OUT(不能用于FB)、IN_OUT变量。
(4)ANY
在调用逻辑块时,长度为10B的数据类型ANY指令用于将任意的数据类型传递给声明的形参。ANY可用于实参的数据类型位置,或实参可以使用任意数据类型的情况。ANY指针可以用来表示一片连续的数据区,例如P#DB2.DBX50.0 BYTE 10表示DB2中的DBB50~DBB59。ANY指针也可以用地址作实参,但是只能指向一个变量。ANY指针只能用于形参的IN、OUT(不能用于FB)、IN_OUT和TEMP变量。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。