龙空技术网

PLC之数据类型(Data type)

京华工控课堂 78

前言:

此刻小伙伴们对“空间数据有哪几种类型”大约比较注意,同学们都需要分析一些“空间数据有哪几种类型”的相关内容。那么小编同时在网络上收集了一些有关“空间数据有哪几种类型””的相关文章,希望同学们能喜欢,同学们快快来学习一下吧!

在学习数据类型前,首先需要了解PLC的数据存储区及其重要地位,那么,为什么在PLC里面要有数据存储区呢?我们知道PLC既能控制开关量,比如电机的启停和正反转,还能支持数据运算,比如模拟量 变频器的控制等。这么多的功能其PLC内部的CPU要进行大量的数据处理,这一系列的工作要完成,CPU肯定要有内存,也就是数据存储区,但存储区作为一种资源其空间是有限的,为了合理用好这有限的资源,就要有不同的数据类型来支持CPU运行时的存储。

数据类型(Data type)是数据在PLC(计算机CPU)中的组织形式,它包含了数据的长度及数据所支持的操作方式(支持哪些指令)。编程时给变量(Varibale)指定数据类型后,编译器会给该变量分配一定长度的内存并明确该变量的操作方式。透彻的理解数据类型是程序设计的基本要求。

不同品牌的PLC对数据类型的支持会略有区别,但是基本数据类型几乎相同(不仅仅是PLC的编程,在计算机高级语言的编程中,基本数据类型也相同)。本文以西门子S7系列PLC为例,讲解一下PLC的基本数据类型。

第一种类型:“位(bit)”,它是PLC(计算机)的最小存储单位,其取值范围为“1”和“0”两种。按位存放的数据,在数据类型中,被称为“布尔型”(Bool)。布尔型数据的取值范围为“1”和“0”,可用英文“TRUE”(真)和“FALSE”(假)表示。也表示电路中的“通”与“断”。

在PLC的编程中,布尔型的数据使用频率是很高的。对于数字量的输入或输出,都是以“位”(布尔型)的方式进行操作。比如“I0.0”就是一个布尔型变量,它表示输入缓冲区(Input)的第0个字节的第0位。“位”,也俗称“点”,常把输入通道称为“I点”,把输出通道称为“Q点”。

第二种类型:字节(Byte),字节(Byte)是PLC信息处理的最基本单位,由8个二进制位组成一个“字节(Byte)”,如下图:

在PLC中,输入模块和输出模块的通道也是按照字节的顺序来存放的。比如“I0.0~I0.7”,这8个输入“位”组成“IB0”。对于S7-300/400的PLC,Byte类型是无符号数,其取值范围内为 0~255(16# 0~FF)。对于S7-1200/1500PLC的编程(博途平台),Byte类型可以作为有符号数或者无符号数。当作为有符号数时,其取值范围为“-128~+127”;当作为无符号数时,其取值范围为0~255(16# 0~FF)。

第三种类型:字符型(CHAR)。字符型类型的数据也占用一个字节,它内部存放的是该字符的ASCII码值。比如字符“B”,其ASCII码值为(十进制)66,(2#0100 0010)。当程序查询到该数据属于字符型,并且内部存储的值为66时,将会在屏幕上显示大写的字符:“B”。

第四种类型:整型(INT)。整型数据占用两个字节(Byte),属于有符号数,其取值范围为:-32768~+32767。整形数据的最高位为符号位,“0”表示正数,“1”表示负数。既然整形数据由两个字节组成,就有字节顺序的问题,哪个字节是高字节呢?西门子S7系列PLC采用起始字节为高位字节的存放方式,如下图

第五种类型:字(WORD)。“字”类型也占用两个字节,但是它表示无符号数,其取值范围为:0~65535(16#0~FFFF)。与整型数据一样,也是采用起始字节为高位字节的存放方式,

在PLC中,用“W”来表示一个“字”类型的变量。比如变量“MW0”,其中“M”表示该变量存放在“M”区,“W”表示它是一个“字”类型的变量,“0”表示其起始地址为0。“MW0”由“MB0”和“MB1”组成,其中“MB0”为高字节。

第六种类型:双字(Double WORD)。“双字”由两个“字”组成,因此它包含四个字节,其取值范围为:0~4294967295(0~FFFFFFFF)。在PLC中,“双字”用“D”表示。比如“MD0”,它表示M存储区从地址0开始的4个字节,即:MB0、MB1、MB2和MB3,字节序依然为起始字节为高位字节的存放方式。如下图:

第七种类型:双整型(Double INT)。“双整型”类型由两个“整型”组成,也占用四个字节,不过它表示的是有符号数,其取值范围为:-2147483648~+2147483648。在PLC中,表示为“DINT”。

第八种类型:实型(Real)。“实型”数据占用四个字节,用来表示浮点数。实型数据总计32个“位”,被分成三个部分:

1)符号位(Sign):最高位(第31位),正数为“0”,负数为“1”。

2)指数位(Exponent):第23位到第30位,用于存储科学计数法中的指数数据,并且采用移位存储;

3)尾数部分(Mantissa):第0位到第22位,表示浮点数的尾数部分;

对于“指数位”,为了处理负指数的需要,其存储的值为实际指数加上偏移量“127”。比如,若实际指数为“0”,则存储值为“127”;若实际指数为“-64”,则存储值为“63”。

实型数据(浮点数)可以使用4个字节的空间,可以表示非常大(10的38次方)和非常小(10的负38次方)的数,但是浮点数的运算速度相对整型会慢一些。在PLC编程中,可以输入小数点来表示浮点数。比如“10”表示整数,“10.0”表示浮点数。

对于S7-1200/1500系列PLC,博途开发环境支持更多的数据类型。比如:UDINT表示无符号双整型;SDINT表示有符号双整型;SINT表示有符号整型;LReal表示双精度浮点数(64位,8个字节)。本文介绍的基本数据类型主要针对S7系列PLC,对其它PLC产品或计算机程序设计可能会略有出入。在某些高级语言中(比如:VB),布尔型变量的取值范围虽然也是“0”和“1”,但是要占用2个字节(Byte),不同的操作系统对数据类型的定义也会有所不同(比如32位的Windows和64位的Windows)。为了防止初学者混淆,建议先搞清楚西门子PLC编程环境下的基本数据类型,如果以后需要在其它开发环境下编程,只要查询下相关手册,便可触类旁通。

关于基本数据类型就先讲到这里了,对于西门子S7-300/400 ,S7-1200/1500的PLC还支持复杂数据类型,将在以后的文章中介绍。

标签: #空间数据有哪几种类型