数据块(DB)用于存储用户数据及程序的中间变量。新建数据块时,缺省状态下是优化的存储方式,且数据块中存储变量的属性是非保持的。数据块占用CPU的装载存储区和工作存储区,与标志存储区(M)相比,使用功能相类似。不同的是,M数据区的大小在CPU技术规范中已经定义,且不可扩展,而数据块存储区由用户定义,最大不能超过数据工作存储区或装载存储区(只存储于装载存储区)。在SIMATICS7-1500PLC中,非优化的数据块最大数据空间为64K。如果是优化的数据块,则其最大数据空间与CPU类型有关,例如CPU1516最大可达5M。CPU中可创建数据块的数量与CPU的类型相关,可参考CPU的技术数据。如果按功能划分,则数据块DB可以作为全局数据块、背景数据块和基于用户数据类型(用户定义数据类型、系统数据类型或数组类型)的数据块。下面分别介绍这三种类型的数据块。

  全局数据块(GlobalDB)用于存储程序数据,因此数据块包含用户程序使用的变量数据。一个程序中可以自由创建多个数据块。全局数据块必须事先定义才可以在程序中使用。

  数据块DB是用于存放执行代码块时所需的数据的数据区。 1)全局数据块存储供所有的代码块使用的数据。 2)背景数据块存储的数据供特定的FB使用。相关调用关系如图1所示。西门子S7-1200PLC中非常有特色的一种存储区是数据块(date block,DB)。与M区相似,DB块也主要用作为中间存储区。

  全局DB。又称共享DB,是一种在某一个PLC站点下任何程序块都可以对其进行读写操作的数据块。

  函数块FB的背景数据块。背景数据块是FB的专用数据块,即仅允许调用该背景数据块的FB程序对其进行读写操作,其他程序对该背景数据块仅能进行读操作。

  全局数据块的创建方法:要创建一个新的全局数据块,可在TIA博途界面下的 项目树中,单击“程序块”→“添加新块”,双击“添加新块”,选择窗口中的“数据块”,选择数据块类型为“全局DB”(缺省),如图2所示。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图1 数据块访问关系

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图2全局数据块的建立

  创建数据块后,在全局数据块的属性中可以切换存储方式,相关操作如图3,4所示。在程序中,选中“数据块_1”,然后点击鼠标右键,再点击“属性”,进入DB块的设置。在“常规” 选项卡中点开“属性”。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图3 选择数据块

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图4 属性选项

  非优化的存储方式与S7-300/400PLC兼容,可以使用绝对地址的方式访问该数据块,如图5所示;

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图5 非优化数据库寻址

  优化的存储方式只能以符号的方式访问该数据块,如图6所示。特点:1)采用符号地址的寻址方式,用户无需关心其实际地址。地址寻址方式--数据块_1.start。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图6 优化数据块寻址

  如果选择“仅存储在装载内存中”选项,则DB块下载后只存储于CPU的装载存储区(SIMATICMC卡)中。如果程序需要访问DB块的数据,则需要调用指令READ_DBL将装载存储区的数据复制到工作存储区中,或者调用指令WRIT_DBL将数据写入装载存储器中。如果在DB块的“属性”中勾选“在设备中写保护数据块”,则可以将DB块以只读属性存储。使能“可从OPCUA访问DB”选项,该数据块数据可以被OPCUA客户端访问。

  打开数据块后就可以定义新的变量,并编辑变量的数据类型、启动值及保持性等属性。如图7所示。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图7 数据块数据建立

  数据块默认是非保持的。对于非优化的数据块,整个数据块统一设置保持性属性;如图8所示。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图8 非优化的数据块设置

  如何把优化的数据块转化为非优化的数据块,在程序中,举个例子:选中“数据块_1”,然后点击鼠标右键,再点击“属性”,如图3所示。进入DB块的设置。在“常规” 选项卡中点开“属性”,去掉“优化的块访问”,点击确定设置完成。如图4所示。

  设置完成后,会发现程序状态,绝对地址出现一堆问号???同时会发现:绝地地址在偏移量一栏没有出现。如图9,10所示

  此时需要对数据块进行编译工作。11-13所示。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图9 地址未显示

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图10 地址偏移量未出现

  数据块的编译:在程序块中选中数据块,然后点击鼠标右键,选择编译—软件(仅更改)。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图11 数据块编译

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图12 程序中地址已标示

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图13 数据块中偏移量显示

  对于优化的数据块,可以单独设置每个变量的保持性属性,但对于数组、结构、PLC数据类型等,不能单独设置其中某个元素的保持性属性。在优化的数据块中设置变量的保持性属性如图14所示。可以单独设置初始值, DB块的优化使得其存储空间的利用率更高,以便存储更多的数据。如图15所示。

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图14 优化的数据块设置

  西门子PLC编程M地址、L地址、全局DB、背景DB、共享DB的使用技巧

  图15 优化和非优化数据块空间对比