注意:
整型类型很多,我们一般情况下统一使用DINT/UDINT就好了,其他整型数据类型根据实际需求选择。DINT/UDINT是32位,基本够我们一般场景应用,当然根据实际需求还可能用到INT等等。如果没有特殊需求的应用场景,我们为了数据管理方便,一律使用DINT/UDINT。(特殊场景比如,要为伺服功能码写入数据,而伺服功能码那个数据正好是16位整型,那你就必须使用INT/UINT指令了)。
整型类型代表了没有小数点的整数类型,CoDeSys 中支持的整型类型在表2.1 中所示。在CoDeSys 中,整型是一个最大的标准类,其成员最多,没有必要将每个类型的关键字死记硬背,只要了解其中的规律,就非常容易记忆。
短整型 | SINT | 8 | -128~127 |
---|---|---|---|
无符号短整型 | USINT | 8 | 0~255 |
整型 | INT | 16 | -32768~32767 |
无符号整型 | UINT | 16 | 0~65535 |
双整型 | DINT | 32 | -2147483648~2147483647 |
无符号双整型 | UDINT | 32 | 0~4294967295 |
长整型 | LINT | 64 | -2^63~(2^63-1) |
如UINT 为无符号的整型数据,USINT 即为无符号的短整型数,LINT 表示长整型数据。
整型数据类型还有字节、字、双字、长字。整型很多,我们以后涉及整型的时候,一般直接选择32位带符号的也就是DINT就基本都能满足我们的编程需求。因为我们PLC或者计算机存储区很大,不用对存储空间进行精打细算,一般项目程序我们的数据存储区根本用不完,所以为了省事,为了不用经常的进行数据类型强制转换呢,我们将常用整型数据都选择DINT好了。
如果没有特殊需求的话,直接都使用DINT就省事很多了。
这里需要注意的是,ST语言的整型数据类型和C语言是有差别的。
C语言 | 描述 | ST语言 | 描述 |
---|---|---|---|
short | 有符号短整型(16位) | INT | 有符号短整型(16位) |
unsigned short | 无符号短整型 | UINT | 无符号短整型(16位) |
int | 有符号32位整型 | DINT | 有符号32位整型 |
unsigned int | 无符号32位整型 | UDINT | 无符号32位整型 |
无符号与有符号
无符号数只能是大于等于0的数,也就是0和正数。有符号数据类型包括了负数。
无符号(Unsigned)和有符号(signed)的区别是最高位的区别。无符号类型数据将全部存储空间全部储存数据本身,没有符号位。如UINT 型将16 为全部存储数据本身,即数据范围可以从0~(2^16 − 1),即0~65535。
有符号类型数据牺牲最高位作为符号位。如INT 型变量牺牲最高位作为符号位,剩下15 位作为数据存储,故该数据范围为−2^15~(2^15 − 1),即-32768~32767。所以有符号整型变量中可以存放的正数的范围比无符号的整形变量中正数的范围缩小一倍。如下通过两个变量对无符号和有符号进行说明:
nValue1:UINT; nValue2:INT;
。