TIA 丢失的内存 – 优化和标准的数据块访问
1 引言
西门子 Tia Portal 平台是现代自动化控制系统的先进软件开发平台。在这种软件平台中,数据块是用于存储数据的重要元素。在 Tia Portal 中,有两种类型的数据块——优化数据块和标准数据块。这篇文章将重点介绍这两种类型的数据块。块访问的含义。制作一个简单的程序,并尝试展示优化块与标准块的不同之处。
2 什么是优化和标准数据块
在西门子 Tia Portal 中,数据块是用于存储程序所需数据的一种重要数据结构。优化数据块和标准数据块是两种不同类型的数据块。它们之间的主要区别在于,优化数据块是按照固定的字节顺序排列,而标准数据块是按照 CPU 架构和操作系统自动确定的字节顺序排列。
优化的数据块功能仅适用于 S7-1200 和 S7-1500 PLC,不适用于 S7-300 或 S7-400。使用 S7-1200 或 S7-1500 PLC 时,数据块的默认设置是经过优化的,如果您想要标准数据块,则必须自行设置。
3 简单程序示例
在此示例中,我们不会创建任何 PLC 逻辑或编写任何指令,我们只会创建 2 个全局数据块,DB1 将称为优化数据块,DB2 将称为标准数据块。
在两个数据块中,我们将分别声明 4 个数据类型为 Bool、Int、Real 和 Word 的变量。见图 1。
图 1
我们可以看到,DB1 和 DB2 不相同。DB2 中表示的标准块访问选项有一个称为偏移量的附加列。在偏移框中的每个变量的前面,都有一个地址 0.0、2.0、6.0 和 8.0,如图 2
图 2
那么,这个偏移量是多少?是什么意思?我们稍后会谈到这一点,但现在,让我们创建另一个标准数据块_2块并声明相同的 4 个变量,但这次我们将更改变量数据类型的顺序,见图 3。
图 3
从上一张图片中可以看出,虽然它们是相同的数据类型,但DB2 和 DB3 的偏移量是不同的,为什么当我们更改数据类型的顺序时,偏移量值会有所不同?让我们接着往下看。
4 什么是标准数据块?什么是偏移量?
在 Tia Portal 中,标准数据块是存储程序基础数据的一种集合,类似于 SQL 中的表。它们包含固定数量的数据类型和数值。在标准数据块中,数据块具有固定结构。当您在标准数据块中声明变量时,该变量将在此数据块中分配一个固定地址。
偏移量是一个用于定位特定数据类型的数值。在 Tia Portal 中,标准数据块和其他数据结构都是按照偏移量来组织的。这就意味着,当您要访问特定类型的数据时,需要知道该数据类型的偏移量,并且要确保这个偏移量与数据块的起始地址相关联。因此,我们在前面的图片中看到的偏移量是为每个变量分配的地址。
因为标准数据块的结构是固定的,所以只能在具有固定内存容量的数据块内部工作,这是 16 位比特或 2 字节。这就是我们更改声明顺序时对相同变量进行不同寻址的原因。更多说明见图 4。
图 4
图 4 显示了标准数据块 DB2 的简单表示。正如我们之前所说,标准数据块具有 16 位的固定内存块,因此,当我们声明 Static_1 为 BOOL 数据类型时,即使它只需要 1 位,这个变量也会占用整个 16 位内存。这就是为什么您会看到标记为红色的其余区域,因为它未使用但不能再使用。所以这是一个丢失的内存。
对于 Static_2 数据类型 INT 需要 16 位,因此它使用 2 个整字节。与数据类型为 WORD 的 Static_4 相同。Static_3,我们占用了 4 个字节,因为它的数据类型为 REAL。这就是为什么 DB2 的偏移量分别为 0.0、2.0、4.0 和 8.0 的原因。
DB2 和 DB3 虽然数据类型与数量相同。但是,由于变量的数据类型顺序不同,内存表示形式将不同,因此偏移量也会不同。因此,当您使用标准数据块时,在声明变量时必须小心,因为要知道每次定义新的 BOOL 变量时都会丢失内存。
如果在数据块列表的末尾声明新变量,则偏移量将扩展以包含新变量。但是,如果您在旧变量之间或在数据块开始时声明新变量,则会发生其他事情。您会注意到的第一件事是您的偏移量现在丢失了,您必须编译代码以重新建立新的偏移量。见图 5。
图 5
您是否注意到偏移量的寻址现在发生了怎样的变化?
例如,Static_1 标签的偏移量是 0.0,但在我们添加新的 add1 后,同一 Static_1 的偏移量的寻址现在是 2.0。
因此,在添加新变量时,所有旧变量的寻址都已更改。这意味着程序中任何使用过的变量都已失效。所以简单地说,你的整个逻辑现在都搞砸了。这将导致很多麻烦。更不用说现在添加新的比特变量后,会有额外的内存丢失。
这是使用标准数据块的一个非常大的缺点。
5 什么是优化数据块?
优化数据块和标准数据块的区别在于,优化数据块内部的变量不是固定地址,而是给变量赋一个符号名称,加上数据块的结构不是固定的作为标准数据块,所以在声明新标签时不会出现内存损失,地址也不会发生变化。见图 6。
图 6
因此,在优化的数据块中声明新标签不会影响其余标签,因为它们是由符号名称而不是绝对寻址定义的。优化的数据块在使用其中定义的标签时将不允许使用地址,只允许使用符号名称。
6 优化数据块的优势
优化数据块会自动保存在块的可用内存区域中,因此内存中没有间隙。与标准数据块相比,这样可以优化内存容量的使用,并避免内存丢失。
您可以创建具有任何结构的优化数据块,而无需注意各个标签的物理排列。
您可以将特定的单个标签定义为保持。在标准数据块中,您只能将整个块定义为保持。
由于优化数据块是按照固定的字节顺序排列的,因此访问其数据比访问标准数据块更快。
优化数据块可以通过名称来访问,不需要通过偏移量来确定每个数据类型的位置,因此编写程序也变得更加简单和直观。
7 结论
通过本文的介绍,我们了解了 Tia Portal 平台中的优化数据块和标准数据块,了解了标准数据块和优化数据块的用途和区别。在实际工作中,我们建议优先选择优化的数据块,与标准数据块相比,优化的数据块具有很多优势,使用符号名称有助于避免在向块添加新变量时对标签进行任何地址更改。使用优化的块,也不会浪费任何内存区域。
2023年11月