首页 理论教育 数据类型及其应用场景详解

数据类型及其应用场景详解

时间:2023-07-02 理论教育 版权反馈
【摘要】:例如输入字节IB3由I 3.0~I 3.7这8位组成。表8-9 基本数据类型2.复杂数据类型日期和时间数据类型日期和时间占用8个字节的BCD码。例如2004年7月27日12点30分25.123秒可以表示为DT#04-07-27-12:30:12.123。ANY在调用逻辑块时,长度为10B的数据类型ANY指令用于将任意的数据类型传递给声明的形参。ANY可用于实参的数据类型位置,或实参可以使用任意数据类型的情况。

数据类型及其应用场景详解

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位组成。

978-7-111-44354-4-Chapter08-58.jpg

图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表示双字。

978-7-111-44354-4-Chapter08-59.jpg

图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 基本数据类型

978-7-111-44354-4-Chapter08-60.jpg

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变量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈