购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 数据描述与数据类型

3.2.1 数据描述

大家知道,程序处理的对象是数据。数据是计算机所表示的信息总称,它可以分为数值数据和非数值数据两种。数值数据包括整数、小数,既可以是正数,也可以是负数。

数据以某种特定的形式存在,数据类型决定了数据的属性。不同的数据之间往往还存在某些联系。

数据类型为数据说明数据结构、数据格式、数据行为等,用于定义标签使用的数据位、字节或字的个数。

ControlLogix PLC系统的数据类型分为基本数据类型和由基本数据类型构成的结构数据类型,结构数据类型与通常的关系数据库的记录是一样的结构方式,这使得工业数据采集系统读取的数据与管理系统处理的数据在交换时可以做到无缝连接。

数据类型之所以重要,是因为涉及数据在控制器中的内存分配问题。

3.2.2 数据类型

1.基本数据类型

(1)基本数据类型

二进制格式的数据类型是指单一数据类型。一个二进制格式的数据由一位或者多位组成,其中的每一位都用两个基数(0或1)表示。数据的大小由其位数决定,如图3-5所示。

img

图3-5 二进制数据格式

数据可以是有符号的,最高位是符号位,数值的范围是(−2 位数−1 ,2 位数−1 −1);数据也可以是无符号的,所有位数都用来表示数值,数值的范围是(0,2 位数 −1)。

数据在计算机内采用二进制数,通常将十进制数表示为二进制编码形式,称为十进制数的二进制编码,简称二-十进制编码或BCD(Binary Coded Decimal)码。

单个的十进制数需要用4位二进制数进行编码,为了用BCD码表示十进制数的0~9,使用与二进制数相同的表示方法,如图3-6所示。

img

图3-6 BCD数据格式

例如,对十进制数“2 350”用16位编码,如表3-2所示。

表3-2 16位编码

img

例如,对十进制数“58 293 016”用32位格式编码,如表3-3所示。

表3-3 32位编码

img

ControlLogix PLC系统的基本数据类型如表3-4所示。

表3-4 ControlLogix PLC系统的基本数据类型

img

续表

img

其中,实数类型的格式(ANSI/IEEE标准中的浮点)以32位格式编码,相当于十进制的单精度浮点数。按照IEEE标准表示,实数可以用来表示小数。为了表示10的乘方次数,可以用幂的形式表示实数。例如,1 024可以表示为1.024E3。实数占用存储器的2个字,最高位是符号位,其余的位代表指数和尾数。浮点数为1.m×2e,其存储结构如图3-7所示。

img

图3-7 实数存储结构图

图3-7中,表示浮点数值的32位被分成3栏。

● S:符号位。当符号位为0时,表示正浮点数;当符号位为1时,表示负浮点数。

● E:8位编码的指数。

● F:23位编码的定点部分。

ControlLogix PLC系统数据处理和传送的基本单元是32位。当数据类型为BOOL、SINT、INT,被分配给一个标签时,控制器仍然占了一个完整的4字节DINT,剩余部分则被闲置,如图3-8所示。

(2)基本数据类型的优点

使用基本数据类型具有以下优点:

● 名称是独立的;

● 标签的数量没有限制;

● 标签编辑器(Edit Tags)和数据监视(Monitor Tags)可以任意选择标签并显示任何参数;

img

图3-8 基本数据类型内存占用图

● 允许在标签编辑器和数据监视中按字母排序显示;

● 标签及其他的位都可以支持别名;

● 在线编程时可以增加。

(3)基本数据类型的注意点

使用基本数据类型时,要注意以下几点:

● 每个标签都要消耗4字节;

● 需要消耗较多的通信管理和控制器内存;

● 在线时不可以改变标签的数据类型。

2.结构数据类型

(1)系统预定义结构数据类型

系统预定义结构数据类型是系统预先设定的结构数据,主要包括以下几类。

① I/O模块组态时产生的I/O数据。

每当创建一个I/O模块时,都会在数据库产生相应的I/O结构数据,例如:

● Local:0:C—本地位于0槽输入模块的组态数据;

● Local:0:I—本地位于0槽输入模块的输入数据;

● Local:1:C—本地位于1槽输出模块的组态数据;

● Local:1:I—本地位于1槽输出模块的输出数据;

● CNBR_2:0:C—远程位于0槽输入模块的组态数据;

● CNBR_2:0:I—远程位于0槽输入模块的输入数据。

② 功能块(过程控制)的数据结构。

由功能块编程时引用的数据结构,例如:

● TOTALIZER—累加器数据结构;

● FBD_TIMER—功能块的计时器;

● FBD_COUTER—功能块的计数器。

③ 系统组态信息和状态信息。

SSV和GSV指令操作时引用的信息,必须创建相同数据结构的自定义结构数据,以建立对应的标签,例如:

● CONTROLLERDEVICE—控制器物理硬件信息;

● CONTROLLER—控制器模块执行时的状态信息;

● CST—同一个背板中的设备协调系统时间的信息;

● FAULTLOG—读取或清除控制器的故障信息;

● MESSAGE—读取或设置信息指令的组态信息;

● MODULE—读取或设置I/O configuration中的模块组态信息;

● PROGRAM—读取或设置程序的组态信息;

● ROUTINE—读取子程序的状态信息;

● TASK—读取或设置任务的状态信息;

● WALLCLOCKTIME—读取或设置控制器的系统时间。

(2)自定义结构数据类型

自定义结构数据类型是用户根据实际的需要自己定义的结构数据,主要包括以下几类。

① 字符串自定义数据结构。

用户可以根据时间需要自己定义不同长度的字符串数据结构,用于ASCII码的数据表示,一般长度为1~64K字符。

② 用户自定义数据结构UDF。

用户自定义数据结构通常用在关于某一控制行为的相关数据而建立的数据结构。这样的结构便于数据的查找、传输等。在建立用户自定义数据结构过程中,结构中子元素的定义顺序与存储器空间的占用情况有关。每建立一个结构子元素,都会安排在剩余的存储器空间。如果空间不够,则开辟出新的32位存储器空间。一个完整的用户自定义数据结构尺寸,一定是32位存储器的整数倍。

③ AOI自定义指令。

每建立一个AOI指令,都会为其分配输入/输出参数,还有指令内部使用的参数,这些参数构成了小数据库,类似于指令的结构数据。当建立AOI后,将在Add-On-Defined自动产生与AOI指令同名的自定义数据结构。

3.数组

(1)数组类型

数组是同一数据类型的连续分布的集合,可由基本数据类型和结构数据类型构成。

数组可以有一维、二维、三维,各维数组中的元素个数没有限制,大小取决于内存。

(2)数组类型和结构数据类型的优点

使用数组类型和结构数据类型具有以下优点:

● 允许特定的名称和用户自定义的结构;

● 在控制器中固定信息;

● 控制器内存占用冲突得到解决,且通信时间得到优化;

● 能够动态地索引数组;

● 在线编程可以创建新数组。

(3)数组类型和结构数据类型的注意点

使用数组类型和结构数据类型时,要注意以下几点:

● 每个用户自定义的结构或数组限于2MB;

● 用户自定义的结构充满32位整倍数的空间;

● 数组中的数据元素只能被基本标签指向;

● 标签编辑器(Edit Tags)和数据监视(Monitor Tags)的筛选有限;

● 只有在离线时才能创建或改变结构数据类型和数组类型的结构;

● 在结构里面的数组只可以是一维数组;

● 用户自定义结构的子元素不能超过500个,如果需要更多,可以采用嵌套的形式,即子元素本身就是自定义结构;

● 要用于通信的用户自定义结构也有限制,Produce/Consume的标签,通过背板的不超过500B,通过ControlNet网络的不超过480B;

● I/O数据要放入结构中,只能使用COP指令,注意数据类型要保持一致,以避免数据转换;

● 当需要在程序开始时将输入数据装载在结构数据中,在程序结束时将结构数据装载到输出数据中,这时,要用合适的指令把数据装载到结构数据里,单一的位用XIC指令和OTE指令,连续的位用BTD指令,单一的量用COP指令,连续的量用CPS指令。

4.不同数据类型的内存占用和时间消耗情况对比

不同的数据类型直接影响到内存的占用和时间的消耗情况。

例如,在1756-L63控制器中执行一条ADD指令,使用不同数据类型的消耗情况如表3-5所示。

表3-5 不同数据类型的消耗情况

img

由表3-5可见,不同数据类型的耗用差别很大。ControlLogix控制器的CPU信息处理基本单位是32位,如果编程时不使用DINT数据类型,SINT和INT数据类型在运算前都要转换成DINT数据类型,运算后再将DINT的数据转换为SINT和INT数据类型,这都要消耗内存和时间。 KDaa3VzINOX/w+wp13NFdKNnMH8nC6gHG5M/RfWyELuE1z/Bn9cmgdbcKvBxRZIy

点击中间区域
呼出菜单
上一章
目录
下一章
×