首页 历史故事数据块的存储与寻址机制介绍

数据块的存储与寻址机制介绍

【摘要】:数据块与临时数据不同,当逻辑块执行结束时或数据块关闭时,数据块中的数据不被覆盖。数据块的数目依赖于CPU的型号,数据块的最大块长度因CPU的不同而各异。数据块中的数据单元按字节进行寻址,图3-13所示为数据块的存储单元示意图。数据块的存储单元从字节0开始依次增加,根据需要寻址相应单元的数据。故建议使用符号寻址数据块存储单元。关于数据块的使用将在6.4节进行介绍。

用户程序中除了逻辑程序外,还需要对存储过程状态和信号信息的数据进行处理。数据以变量的形式存储,通过存储地址和数据类型来确保数据的唯一性。数据的存储地址包括I/O映像区、位存储器、局部存储区和数据块等。数据块(Data Block,DB)是用于存放执行用户程序时所需的变量数据的数据区。用户程序以位、字节、字或双字操作访问数据块中的数据,可以使用符号或绝对地址。数据块与临时数据不同,当逻辑块执行结束时或数据块关闭时,数据块中的数据不被覆盖。数据块同逻辑块一样占用用户存储器的空间,但不同于逻辑块的是,数据块中没有指令而只是一个数据存储区,S7按数据生成的顺序自动地为数据块中的变量分配地址。

根据使用方法,数据块可以分为共享数据块(也叫全局数据块)和背景数据块。用户程序的所有逻辑块(包括OB1)都可以访问共享数据块中的信息,而背景数据块是分配给特定的FB。背景数据块中的数据是自动生成的,它们是FB的变量声明表中的数据(临时变量TEMP除外)。编程时,应首先生成FB,然后生成它的背景数据块。在生成背景数据块时,应指明它的类型为背景数据块(Instance),并指明它的功能块的编号。

数据块用来存储过程的数据和相关的信息,用户程序中需要对数据块中的数据进行访问。数据块的数目依赖于CPU的型号,数据块的最大块长度因CPU的不同而各异。

数据块中的数据单元按字节进行寻址,图3-13所示为数据块的存储单元示意图。可以看出,数据块就像一个大柜子,每个字节类似于一个抽屉。数据块的存储单元从字节0开始依次增加,根据需要寻址相应单元的数据。

S7-1200 PLC中访问数据块数据有两种方法:符号访问和绝对地址访问。默认情况下,在编程软件中建立数据块时系统会自动选择“仅符号访问”项,则此时数据块仅能通过符号寻址的方式进行数据的存取。例如,“Values”.Start即为符号访问的例子,其中,Values为数据块的符号名称,Start为数据块中定义的变量。而例如DB10.DBW0则为绝对地址访问的例子,其中,DB10指明了数据块DB10,DBW的“W”指明了寻址一个字长,其寻址的起始字节为0,即寻址的是DB10数据块中的数据字节0和数据字节1,如图3-13所示。同样,DBB0、DBD0以及DBX4.1等分别寻址的是一个字节、双字和位。

978-7-111-34922-8-Chapter03-33.jpg

图3-13 数据块存储单元示意图

数据块存储单元的绝对地址访问方式具有一些缺点:

1)必须确定访问的是数据块“正确”的值,例如若装载DBW3,而该数据块中的DBW3不是一个有效的值。

2)由于数据块中变量声明区的地址是根据变量的顺序确定的,采用绝对地址访问就限制了对数据块变量的修改并使程序难读。

当数据块和它的存储单元都用符号表示时,可以使用符号访问数据块中的变量。输入时允许“混合”使用绝对和符号地址,输入确认后转换为完全的符号。另外,符号访问能够实现复杂数据类型变量的使用。故建议使用符号寻址数据块存储单元。需要注意的是,当需要与HMI设备进行通信时,必须支持绝对地址访问,即编程软件中建立数据块时要取消“仅符号访问”项,否则将无法通信。

关于数据块的使用将在6.4节进行介绍。