首页 理论教育 数据类型与存储区的关系

数据类型与存储区的关系

时间:2023-06-21 理论教育 版权反馈
【摘要】:本节介绍基本数据类型,其他数据类型主要在5.2.1节介绍。很多指令和代码块的参数支持多种数据类型。表2-5 基本数据类型3)十六进制数。为了解决这一问题,可以用十六进制数来取代二进制数,每个十六进制数对应于4位二进制数。数据类型数据类型用来描述数据的长度和属性。数据类型Byte是十六进制数,Char为单个ASCII字符,SInt为有符号字节,USInt为无符号字节。

数据类型与存储区的关系

1.数制与数据类型

(1)数制

1)进制数。二进制数的1位(bit)只能取0和1这两个不同的值,可以用来表示开关量(或称数字量)的两种不同的状态,例如触点的断开和接通、线圈的断电和通电等。如果该位为1,则表示梯形图中对应的位编程元件(例如位存储器M和过程映像输出位Q)的线圈“通电”,其常开触点接通,常闭触点断开,以后称该编程元件为1状态,或称该编程元件ON(接通)。

如果该位为0,则对应的编程元件的线圈和触点的状态与上述的情况相反,称该编程元件为0状态,或称该编程元件OFF(断开)。在编程软件中,位编程元件的1状态和0状态用TRUE和FALSE来表示。

2)多位二进制数。计算机和PLC用多位二进制数来表示数字,二进制数遵循逢二进一的运算规则,从右往左的第n位(最低位为第0位)的权值为2n。二进制常数以2#开始,用下式计算2#1100对应的十进制数:

1×23+1×22+0×21+0×20=8+4=12

表2-4给出了不同进制数的表示方法。

表2-4 不同进制数的表示方法

978-7-111-47789-1-Chapter02-12.jpg

3)十六进制数。多位二进制数的书写和阅读很不方便。为了解决这一问题,可以用十六进制数来取代二进制数,每个十六进制数对应于4位二进制数。十六进制数的16个数字是0~9和A~F(对应于十进制数10~15)。B#16#、w#16#和DW#16#分别用来表示十六进制字节、字和双字常数,例如W#16#13AF。在数字后面加“H”也可以表示十六进制数,例如16#13AF可以表示为13AFH。

(2)数据类型

数据类型用来描述数据的长度(即二进制的位数)和属性。本节介绍基本数据类型,其他数据类型主要在5.2.1节介绍。

很多指令和代码块的参数支持多种数据类型。将鼠标的光标放在某条指令未输入地址或常数的参数域,过一会儿在出现的黄色背景的小方框中,可以看到该参数支持的数据类型。

(3)数据对象的长度

不同的任务使用不同长度的数据对象,例如位指令使用位数据,传送指令使用字节、字和双字。字节、字和双字分别由8位、16位和32位二进制数组成。

(4)基本数据类型

表2-5给出了基本数据类型的属性。

表2-5 基本数据类型

978-7-111-47789-1-Chapter02-13.jpg

(续)

978-7-111-47789-1-Chapter02-14.jpg

(5)位

位数据的数据类型为Bool(布尔)型,在编程软件中,Bool变量的值1和0用英语单词TRUE(真)和FALSE(假)来表示。位存储单元的地址由字节地址和位地址组成,例如I3.2中的区域标志符“I”表示输入(Input),字节地址为3,位地址为2(见图2-9)。这种存取方式称为“字节.位”寻址方式。

(6)字节

8位二进制数组成1个字节(Byte,见图2-9),例如I3.0~I3.7组成了输入字节IB3(B是Byte的缩写)。数据类型Byte是十六进制数,Char为单个ASCII字符,SInt为有符号字节,USInt为无符号字节。

978-7-111-47789-1-Chapter02-15.jpg

图2-9 字节与位

(7)字

相邻的两个字节组成一个字,例如字MW100由字节MB100和MB101组成(见图2-10b)。MW100中的M为区域标志符,W表示字。需要注意以下两点:

978-7-111-47789-1-Chapter02-16.jpg

图2-10 字节、字和双字

1)用组成字的编号最小的字节MB100的编号作为字MW100的编号。

2)组成字MW100的编号最小的字节MB100为MW100的高位字节,编号最大的字节MB101为MW100的低位字节。双字也有类似的特点。

数据类型Word是十六进制的字,Int为有符号的字(整数),UInt为无符号的字。

整数和双整数的最高位为符号位,最高位为0时为正数,为1时为负数。整数用补码来表示,正数的补码就是它的本身,将一个二进制正整数的各位取反后加1,得到绝对值与它相同的负数的补码。

(8)双字

两个字(或4个字节)组成一个双字,双字MD100由字节MB100~MB103或字MW100、MW102组成(见图2-10c),D表示双字,100为组成双字MD100的起始字节MB100的编号。MB100是MD100中的最高位字节。

数据类型DWord为十六进制的双字,DInt为有符号双字(双整数),UDInt为无符号双字。

(9)浮点

32位的浮点数又称为实数(Real),最高位(第31位)为浮点数的符号位(见图2-11),正数时为0,负数时为1。规定尾数的整数部分总是为1,第0~22位为尾数的小数部分。8位指数加上偏移量127后(1~255),占第23~30位。

978-7-111-47789-1-Chapter02-17.jpg

图2-11 浮点数的结构

浮点数的优点是用很小的存储空间(4B)可以表示非常大和非常小的数。PLC输入和输出的数值大多是整数,例如模拟量输入值和模拟量输出值,用浮点数来处理这些数据需要进行整数和浮点数之间的相互转换,浮点数的运算速度比整数的运算速度慢一些。

在编程软件中,用十进制小数来输入或显示浮点数,例如50是整数,而50.0为浮点数。LReal为64位的双精度浮点数,它只能在设置了仅使用符号寻址的块中使用。LReal的最高位(第63位)为浮点数的符号位,11位指数占第52~62位。尾数的整数部分总是为1,第0~51位为尾数的小数部分。

(10)复杂数据类型

1)数组(ARRAY)由相同数据类型的元素组合而成,4.3.3节介绍了在数据块中生成数组的方法。

2)字符串(Sting)是由字符组成的一维数组,每个字节存放1个字符。第1个字节是字符串的最大字符长度,第2个字节是字符串当前有效字符的个数,字符从第3个字节开始存放,一个字符串最多有254个字符。

用单引号表示字符串常数,例如‘ABC’是有3个字符的字符串常数。

3)DTL用来表示日期时间值,它由12B组成,其详细的结构见4.8.1节。

4)结构(STRUCT)可以由不同数据类型的元素组成(见5.2.2节)。

2.物理存储器

物理存储器是指在实质的PLC设备中,它能够帮PLC的操作系统使PLC具有基本的智能,能够完成PLC设计者规定的各种工作。用户程序由用户设计,它使PLC能完成用户要求的特定功能。

(1)PLC使用的物理存储器

1)随机存取存储器。CPU可以读出随机存取存储器(RAM)中的数据,也可以将数据写入RAM。它是易失性的存储器,电源中断后,存储的信息将会丢失。

RAM的工作速度高,价格便宜,改写方便。在关断PLC的外部电源后,可以用锂电池保存RAM中的用户程序和某些数据。

2)只读存储器。只读存储器(ROM)的内容只能读出,不能写入。它是非易失的,电源消失后,仍能保存存储的内容,ROM一般用来存放PLC的操作系统。

3)快闪存储器和可电擦除可编程只读存储器。快闪存储器(Flash EPROM)简称为FEPROM,可电擦除可编程的只读存储器简称为EEPROM。它们是非易失性的,可以用编程装置对它们编程,兼有ROM的非易失性和RAM的随机存取优点,但是将信息写入它们所需的时间比RAM长得多。它们用来存放用户程序和断电时需要保存的重要数据。(www.xing528.com)

(2)微存储卡

SIMATIC微存储卡基于FEPROM,用于在断电时保存用户程序和某些数据。微存储卡用来作装载存储器(Load Memory)或作便携式媒体。

(3)装载存储器与工作存储器

1)装载存储器。装载存储器是非易失性的存储器,用于保存用户程序、数据和组态信息。所有的CPU都有内部的装载存储器,CPU插入存储卡后,用存储卡作装载存储器。项目下载到CPU时,保存在装载存储器中。装载存储器具有断电保持功能。

2)工作存储器。工作存储器是集成在CPU中的高速存取的RAM。为了提高运行速度,CPU将用户程序中与程序执行有关的部分,例如组织块、功能块、功能和数据块从装载存储器复制到工作存储器。装载存储器类似于计算机的硬盘,工作存储器类似于计算机的内存条。CPU断电时,工作存储器中的内容将会丢失。

(4)断电保持存储器

断电保持存储器(保持性存储器)用来防止在电源关闭时丢失数据,暖启动后断电保持存储区中的数据保持不变。冷启动时断电保持存储器的值被清除。

CPU提供了2048B的保持存储器,可以在断电时,将工作存储器的某些数据(例如数据块或位存储器M)的值永久保存在保持存储器中。断电时CPU有足够的时间来保存数量有限的指定的存储单元的值。断电时选择的工作存储器的值被复制到保持存储器,首先进行求和运算,保存校验和之后,被保持的值写入非易失存储器。校验和与CPU的操作系统需要保持的其他值不会占用给用户使用的2048B保持存储器。电源恢复后,系统将保持存储器保存的断电之前工作存储器的数据,恢复到原来的存储单元。需要保存的数据如果超过2048B,将被拒绝。

在暖启动时,所有非保持的位存储器被删除,非保持的数据块的内容被复位为装载存储器中的初始值。保持存储器和有保持功能的数据块的内容被保持。可以用下列方法设置变量的断电保持属性:

1)位存储器中的变量:可以在PLC变量表或分配表(见5.5.2节)中,定义从MBO开始的有断电保持功能的位存储器的地址范围。

2)FB的局部变量:如果生成FB时激活了“仅符号访问”属性,可以在FB的界面区定义单个变量是否有保持功能。如果没有激活FB的该属性,只能在指定的背景数据块中定义所有的变量是否有断电保持属性。

3)全局数据块中的变量:如果激活了“仅符号访问”属性,则可以对每个变量单独设置断电保持属性。如果禁止了DB的该属性,则只能设置DB中所有的变量是否有断电保持属性。

在线时可以用CPU操作员面板上的“MRES”按钮复位存储器,只能在STOP模式复位存储器。存储器复位使CPU进入所谓的“初始状态”,清除所有的工作存储器,包括保持和非保持的存储区,将装载存储器的内容复制给工作存储器,数据块中变量的值被初始值替代。编程设备与CPU的在线连接被中断,诊断缓冲区、时间、IP地址、硬件组态和激活的强制任务保持不变。

如果在CPU断电时更换了存储卡,CPU上电时将复位存储器。

(5)存储卡

可选的SIMATIC存储卡用于存储用户程序,或用于传送程序。CPU仅支持预先格式化的SIMATIC存储卡。打开CPU的顶盖后,将存储卡插入到插槽中。应将存储卡上的写保护开关滑动到离开“Lock”位置。可以设置存储卡用作程序卡或传送卡:

1)使用传送卡可将项目复制到多个CPU,而无需使用STEP 7 Basic。传送卡将存储的项目从卡中复制到CPU的存储器,复制后必须取出传送卡。

2)程序卡可以替代CPU的存储器,所有CPU的功能都由程序卡进行控制。插入程序卡会擦除CPU内部装载存储器的所有内容(包括用户程序和被强制的I/O),CPU然后会执行程序卡中的用户程序。

程序卡必须保留在CPU中。如果取出程序卡,CPU将切换到STOP模式。

(6)查看存储器的使用情况

用鼠标右键单击项目树中的某个PLC,执行出现的快捷菜单中的“资源”命令,可以查看当前项目的存储器使用情况。

双击项目树中某个PLC文件夹内的“在线和诊断”,打开工作区左边窗口的“诊断”文件夹,选中“存储器”(见图5-61),也可以查看PLC运行时存储器的使用情况。

3.系统存储区

(1)过程映像输入/输出

过程映像输入在用户程序中的标识符为I,它是PLC接收外部输入的数字量信号的窗口。输入端可以外接常开触点或常闭触点,也可以接多个触点组成的串并联电路。在每次扫描循环开始时,CPU读取数字量输入模块的外部输入电路的状态,并将它们存入过程映像输入区(见表2-6)。

表2-6 系统存储区

978-7-111-47789-1-Chapter02-18.jpg

过程映像输出在用户程序中的标识符为Q,每次循环周期开始时,CPU将过程映像输出的数据传送给输出模块,再由后者驱动外部负载。用户程序访问PLC的输入和输出地址区时,不是去读、写数字量模块中信号的状态,而是访问CPU的过程映像区。在扫描循环中,用户程序计算输出值,并将它们存入过程映像输出区。在下一循环扫描开始时,将过程映像输出区的内容写到数字量输出模块。

对存储器的“读写”、“访问”、“存取”这3个词的意思基本上相同。

I和Q均可以按位、字节、字和双字来访问,例如.I0.0、IB0、IW0和ID0。

(2)物理输入

在I/O点的地址或符号地址的后边附加+P”,可以立即访问物理输入或物理输出。通过给输入点的地址附加“:+P”,例如I0.3:P或“Stop:P”,可以立即读取CPU、信号板和信号模块的数字量输入和模拟量输入。访问时使用I:P取代I的区别在于前者的数字直接来自被访问的输入点,而不是来自过程映像输入。因为数据从信号源被立即读取,而不是从最后一次被刷新的过程映像输入中复制,这种访问被称为“立即读”访问。

由于物理输入点从直接连接在该点的现场设备接收数据值,因此写物理输入点是被禁止的,即I:P访问是只读的。I:P访问还受到硬件支持的输入长度的限制。以被组态为从14.0开始的2 DI/2 DO信号板的输入点为例,可以访问I4.0:P、I4.1:P或IB4:P,但是不能访问I4.2:P~I4.7:P,因为没有使用这些输入点。也不能访问IW4:P和ID4:P,因为它们超过了信号板使用的字节范围。用I:P访问物理输入不会影响存储在过程映像输入区中的对应值。

(3)物理输出

在输出点的地址后面附加“:P”(例如Q0.3:P),可以立即写CPU、信号板和信号模块的数字量和模拟量输出。访问时使用Q_:P取代Q的区别在于前者的数字直接写给被访问的物理输出点,同时写给过程映像输出。这种访问被称为“立即写”,因为数据被立即写给目标点,不用等到下一次刷新时将过程映像输出中的数据传送给目标点。

由于物理输入点直接控制与该点连接的现场设备,因此读物理输出点是被禁止的,即Q_:P访问是只写的。与此相反,可以读写Q区的数据。Q:P访问还受到硬件支持的输出长度的限制。以被组态为从Q4.0开始的2 DI/2 DQ信号板的输出点为例,可以访问Q4.0:P、Q4.1:P或QB4:P,但是不能访问Q4.2:P~Q4.7:P,因为没有使用这些输出点。也不能访问QW4:P和QD4:P,因为它们超过了信号板使用的字节范围。用Q_:P访问物理输出同时影响物理输出点和存储在过程映像输出区中的对应值。

(4)位存储器区

位存储器区(M存储器)用来存储运算的中间操作状态或其他控制信息。可以用位、字节、字或双字读/写位存储器区。

(5)数据块

数据块(Data Block)简称为DB,用来存储代码块使用的各种类型的数据,包括中间操作状态、其他控制信息,以及某些指令(例如定时器、计数器指令)需要的数据结构。可以设置数据块有写保护功能。

数据块关闭后,或有关的代码块的执行开始或结束后,数据块中存放的数据不会丢失。有两种类型的数据块:

1)全局数据块:存储的数据可以被所有的代码块访问(见图2-12)。

978-7-111-47789-1-Chapter02-19.jpg

图2-12 全局数据块与背景数据块

2)背景(Instance)数据块:存储的数据供指定的功能块(FB)使用,其结构取决于FB的界面(Interface)区的参数(见图6-6和图6-7)。

(6)临时存储器

临时存储器用于存储代码块被处理时使用的临时数据。

PLC为3个OB的优先级组(见表5-3)分别提供临时存储器:

1)启动和程序循环(包括有关的FB和FC)16KB。

2)标准的中断事件(包括有关的FB和FC)4KB。

3)时间错误中断事件(包括有关的FB和FC)4KB。

临时存储器类似于M存储器,两者的主要区别在于M存储器是全局的,而临时存储器是局部的:

1)所有的OB、FC和FB都可以访问M存储器中的数据,即这些数据可以供用户程序中所有的代码块全局性地使用。

2)在OB、FC和FB的界面区生成临时变量(Temp)。它们具有局部性,只能在生成它们的代码块内使用,不能与其他代码块共享。即使OB调用FC,FC也不能访问调用它的OB临时存储器。

CPU按照按需访问的策略分配临时存储器。CPU在代码块被启动(对于OB)或被调用(对于FC和FB)时,将临时存储器分配给代码块。

代码块执行结束后,CPU将它使用的临时存储器区重新分配给其他要执行的代码块使用。CPU不对在分配时可能包含数值的临时存储单元初始化,只能通过符号地址访问临时存储器。

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

我要反馈