当前位置:文档之家› 05_STEP 7数据类型和变量 [只读]

05_STEP 7数据类型和变量 [只读]

内容页码变量及数据类型的含义 (2)变量特性及变量声明 (3)STEP 7数据类型概述 (4)STEP 7中的基本数据类型 (5)复杂数据类型的重要性 (6)STEP 7中的复杂数据类型 (7)STEP 7中的参数类型 (8)变量建立的区域 (9)本地数据堆栈工作方式 (10)示例:暂存器的替换 (11)数据块(DB ) (12)数据类型:ARRAY (13)ARRAY 的声明和初始化 (14)在存储器中存储ARRAY 变量 (15)数据类型:STRUCT (16)STRUCT 的声明 (17)在存储器中存贮STRUCT 变量 (18)用户自定义数据类型:UDT (19)UDT 的使用 (20)数据类型:DATE_AND_TIME (21)处理DT 型变量的功能 (22)数据类型:STRING (23)存储器中STRING 变量的存储 (24)处理STRING 变量的功能 (25)示例5.1:复杂数据类型的使用 (26)示例5.2:复杂数据类型的访问 (27)附加练习5.3:使用SFC 1(READ_CLK )读取日时间................................28概述现代计算机系统的发展,简化和加速了对那些复杂而耗时的计算任务的处理。

计算机对庞大信息的处理、存储以及可持续访问的能力,在大多数的应用中扮演着十分重要的角色。

控制器可用的信息由那些有关“现实世界”的并经过筛选的信息组成。

数据是对现实的一种抽象,因为对于特定的问题,忽略了相关对象的那些非主要和非重要的属性。

数据类型确定如何将数据表示出来常常是相当困难的。

您的选择通常要受到各种因素的限制,一方面,数据必须能够正确地反映所描述对象的属性,另一方面,使用该数据必须能够执行过程管理所必须的指令。

数据类型决定了数据可以接受哪些值,使用该数据能够执行哪些指令。

数据类型唯一地定义了:•允许的数据范围•允许使用的指令数据类型也是最终存贮在存储器中的各个位的潜在表示(格式)形式的抽象。

变量的含义除了指令,变量是编程系统中最为重要的元素。

变量的任务就是在程序中保存数值,以便后来使用或者做进一步处理。

变量的值可以存储在PLC 存储器中“任何”位置。

“传统”变量在传统的PLC 编程中,可以通过指定存储区域(比如:M=位(Bit )存储区,I=输入存储区,等。

)、访问宽度(比如:B=字节,W=字,等等)或通过指定字节(位)地址,直接访问PLC 存储器地址。

这些使用地址寻址的存储器区域在程序中有不同的用处,如,用作一个整型数(比如DINT 型)、用作浮点数(比如REAL 型)、或者只是用于收集单个信号(比如REAL 型)。

截至目前,程序员一直都需要记住各个存储单元的格式和用途。

这样就很容易产生有缺陷的程序,因为使用这种方法,不可避免地会在指令中不小心错误使用了某些存储器地址或格式。

声明变量稍早一些时候的PLC 系统(比如:STEP 5)允许使用符号来进行编程,以增强程序的可读性。

STEP 7则更进一步支持使用变量编程,取代PLC 地址和符号。

通过对变量进行显式声明,可确定变量的如下属性:•变量的符号名•变量的数据类型•变量的有效范围声明了一些变量之后,程序编辑器就可使用数据类型信息来检查指令许可,如:块调用中的参数赋值。

有效范围在全局符号表中或在全局数据块中声明的变量,可被程序文件夹中的所有块所访问。

因此这些变量称为全局变量。

在逻辑块的声明部分声明的变量和参数称为局域变量和参数,只能在同一个块的指令段中使用。

概述使用计算机进行任务的自动化解决,是基于这样一种处理规则,即处理来自传感器的信号,以便向执行机构输出新的控制值。

程序就是这种算法的基本形式,该算法依赖特定的数据或数据结构表示方法。

基本数据类型基本数据类型构成了每一种编程系统的“原子”。

选择一个编程系统的数据类型与面向的应用领域有很大关系。

在STEP 7中,基本数据类型按照IEC 61131-3而预先定义。

以这种方式选择的数据类型,除了可支持完成PLC 的天生任务如二进制和模拟信号的处理之外,也可以实现简单的信号传输系统及时间戳管理等任务。

使用基本数据类型时,数据类型决定了一个变量所需要的存储空间的数量。

在STEP 7中,基本数据类型的长度不会超过32位,可以完全装载到累加器中去并由STEP 7指令进行处理。

复杂数据类型数据结构的基本概念在于高级结构与基本数据类型之间的区别,基本数据类型是构成符合数据类型的原子数据单位。

在STEP 7中,复杂数据类型只能用于连接在全局DB 或本地数据堆栈中所声明的变量。

复杂数据类型不能够完全装载到一个累加器中去并进行处理。

用户自定义复杂数据类型没有数据类型标识符,因此就不能为参数或变量声明反复使用。

有了用户自定义数据类型(UDT ),就可以创建独一无二结构化的数据类型,并根据需要,频繁地用于其它参数或变量声明。

BOOL, BYTE, WORD 布尔BOOL 数据类型的变量包含一个位,而BYTE 、WORD 、DWORD 类型的DWORD, CHAR 数据变量依次由8位、16位和32位组成。

不能对这些数据类型的单个位进行评估。

这些数据类型中的特殊形式是BCD 数据、用于连接计数功能的计数值,以及以ASCII 码形式表示一个字符的CHAR 类型。

INT, DINT, REAL这些数据类型的变量表示的数字可以用于数学计算。

S5TIME S5TIME 数据类型的变量,用于在定时器功能(S5定时器功能)中指定定时值。

可以分别以小时、分钟、秒或毫秒为单位指定时间值。

向定时器输入时间值时,可以使用带下划线(1h_4m )的值,也可以使用不带下划线(1h4m )的值。

IEC 功能块(IEC Function Blocks )库中的功能FC 33和功能FC40分别将S5TIME 格式转换成TIME 格式、把TIME 格式转换成S5TIME 格式。

TIME TIME 数据类型变量占据双字的地址空间,这种变量用以在IEC 定时器功能中指定定时值。

这种变量的内容被视为一个以毫秒为单位的DINT 数字,并且可正可负(比如:T#-1s=L#-1 000, T#24d20h31m23s647msw = L#214748647)。

DATE DATE 数据类型变量是以无符号整数形式存储在一个字的地址空间中,其内容表示的是自1990年01月01日以来的天数值(例如:D#2168-12-31 = W#16#FF62)。

TIME_OF_DAYTIME_OF_DAY 数据类型变量占据双字的地址空间,它包含了自当日起(零点)所经过时间的毫秒值,该值是一个无符号整型数(例如:TOD#23:59:59.999 = DW#16#0526_5B77)。

数组和结构借助于ARRAY (域),可以将几个相同类型的对象组合到一个数据类型中,ARRAY 是一种包含固定数量的特定数据类型元素的数据类型。

数组中的每个元素都分配有一个索引,该索引用于访问数组的数据元素。

例如,一个ARRAY 可以是由固定数目的单个测量值所组成的一系列测量值。

数组允许将相同类型的元素组合成更高级的单元,同理,STRUCT (结构)数据类型则允许将不同数据类型的元素组合起来。

复杂数据类型是预先定义的,DATE_AND_TIME 具有64位的长度,而数据类型ARRAY 、STRUCT 和STRING 的长度则由用户自定义。

用户自定义数据类型借助于用户自定义数据类型(UDT ),就可定义特殊的数据类型(结构),并根据需要随意频繁地用于参数或变量声明中。

数据结构存储在UDT 块内(UDT1 ... UDT65535),并可在OB 、FC 、FB 及DB 的变量数据类型或参数声明中,像一个“模板”一样使用。

当相同的结构需要多次使用的时候,使用用户自定义数据类型UDT ,可以节省键入时间。

示例:假如同一结构在一个块中需要使用10次,首先,定义一个结构并将其保存为UDT 1,例如:在DB 中,定义一个变量“Drive ”,该变量是一个具有10个UDT 1类型元素的数组:Drive :array[1..10]UDT 1这样您就创建了10个具有UDT 1中所定义的结构的数据项,而无需额外的“键入”操作。

参数类型除了基本和复杂数据类型,也可以为FC 及FB 的参数定义参数类型。

使用这种形式参数,就可像使用实际地址一样,来执行同样的指令。

在块调用期间这些形式参数必须赋以相关的实际参数值。

TIMER 及这种参数类型为TIMER 或COUNTER 类型定义了一个形式参数。

COUNTER BLOCK_xx 借助于BLOCK_FB 或Block_FC 参数类型,可以将程序块作为参数传递到被调用块。

但是,必须注意,只有那些本身没有参数或静态变量(BLOCK_FB )的块(FB ,FC ),才能以这种方式传递。

逻辑块只有在被调块内部通过指令UC 或CC (不是CALL )予以调用。

这里对数据块(DB ,SDB )的传递及相关的指令(比如,OPN …)没有限制。

POINTER 当实际参数的数据类型可能为任意一种数据类型的时候,采用POINTER 数据类型。

POINTER 包含了实际参数的完整起始地址(DB 号,数据区域,字节地址和位地址)。

可通过给出实际参数地址的方式为POINTER 形式参数赋值:如P#M50.0。

ANY当实际参数的数据类型可能为ANY 数据类型的时候,采用ANY 数据类型。

ANY类型指针不仅传递完整的起始地址,而且还传递数据类型和长度的有关信息。

P#M10.0 Byte 10(从MB 10开始的10个BYTE 数据类型元素的域)。

PII概述除了程序块以外,用户程序也包含那些有关过程状态、信号等信息的数据,这些数据按照不同的指令,在用户程序中处理。

变量可在过程映像中、位存储器区域中或者数据块中拥有一个永久存储单元,变量也可以在运行期间在(局部堆栈)L Stack中动态建立。

PII, PIQ, 位(Bit)基本变量可以在程序文件夹中的全局符号表中声明,声明时,除了要给出变量的存储器, I/O符号名以外,还要给出存储区域(由区域标识符和长度组成)以及数据类型(比如:FullCrate MW 10 INT)。

与STEP 5(分配表)中相应的符号表不同的是,程序编辑器不仅允许使用符号名替代绝对地址,还监视块调用中分配参数时是否正确使用变量(类型检查)。

在全局符号表中声明的变量为全局变量,程序文件夹中的所有块都可以对其进行访问。

本地数据堆栈本地数据堆栈(L stack)用以存储:•逻辑块的临时变量,包括组织块OB的开始信息。

•调用功能时,所要传递的实际参数•LAD程序中的中间逻辑结果本地数据堆栈(L stack)中的变量区域,是在块的运行期间动态建立的,而且在块执行完毕以后允许再次使用。

相关主题