全局数据块---不能分配给FB块。它包含设备或机器所需的值,并且可以在程序中的任何位置直接调用。
背景数据块是直接分配给FB块的数据块,如功能块。背景数据块包含存储在变量声明表中的功能块的数据。对于不是全局共享的数据块,不能改变声明视图。
背景数据块和全局数据块的区别,CALL 调用如何影响 DB 寄存器?
2.数据块的初始值
数据块的初始值仅对于一个数据块的"离线"组态有意义。如果用户离线创建了一个新的数据块或者在离线组态的过程中在数据块里创建了一个新的变量,如果用户不做任何修改,新建的变量会使用系统默认值作为初始值,如果用户为此变量指定了其它数值作为初始值,数据块将会多占用相应变量长度的Load memory。在此后的操作中(数据块的上传及下载),只要数据块的结构,变量的数据类型没有发生改变,变量的初始值都没有实际作用,只起到变量类型定义的作用。
如果用户不给此新建的变量指定实际值,初始值会被用作变量的实际值。
用户可以给变量指定实际值,初始值可以与实际值不同。
![]()
3.数据块的实际值
数据块中的每个变量都有自己的实际值,如果用户不自行指定,系统将使用初始值作为变量的实际值;如果用户自行指定变量的实际值,则变量的初始值与实际值可能不相同。

如果用户在data view 视图下,在菜单命令中执行Edit →initialize data block,数据块中所有变量的实际值都将被初始值覆盖(用户执行此操作需要格外谨慎,需要确认不再需要数据块中的实际值)。

4.断电保持
新建的数据块,系统默认其属性为断电保持。如图,DB块的非掉电保持默认未勾选。
数据块断电保持是work memory 的特性,与Load memory(MMC) 无关。
此外,为了断电保存数据,S7-300CPU中的工作存储区(Work memory)划分为两部分,其中一部分类型为RAM(断电丢失),一部分为NVRAM(断电保持),如果数据块为断电保持,则此数据块需要占用具备断电保持特性的Work memory部分。
注意:当CPU断电保持的工作存储区达到最大后,后续的DB块也将无法断电保持。
断电保持存储区的大小因CPU型号而异,具体请参看手册:
SIMATIC S7-300 CPU 31xC 和 CPU 31x:技术规范
5.常见问题
问题1:具备断电保持特性的数据块何时会丢失当前值?
回答 :如下操作会导致数据块丢失当前值
注意:Memory RESET操作将删除标志位、S7 定时器和 S7 计数器地址区的值,而不管这些区域是否已定义为保持或非保持属性。对于停止/启动(STOP/RUN)操作模式或断电/上电(POWER OFF/ON ),如果标志位、S7 定时器和 S7 计数器地址区已定义为保持,则保持它们的数值;否则,这些区域的数值将丢失且被初始化为“0”。
问题2:初始值显示灰色,无法更改
回答 :两种情况:
问题3:如何将初始值赋给实际值?
回答 :有以下两种方法可以将初始值传送给 CPU 作为实际值:
问题4:如何将实际值保存,并作为新的初始值?
回答 :请具体参看如下链接:
方法1. 怎样备份 DB 和位存储器中的实际值?
方法2&3. 数据块初始值与实际值的含义
其他常见问题请参看:
S7-300CPU数据块存储常见问题
如何将 Excel 表格中的 STEP 7 变量导入到 DB 块中?
如果在结构化编程时经常使用功能块,那么在每次调用 FB 时都要为其指定一个单独的背景数据块。对于非常小的FB, 它的背景数据块经常由很少的几个字组成。当频繁调用和指定背景数据块给这些小的 FB 时,程序会变得非常不清晰,或者 DB 块的数量会达到 CPU 所支持的最大数量。
由于一个背景数据块可以长于 FB 实际需要的长度,因此多个背景数据块可以合并成一个多重背景。
具体步骤请参看如下文档:
如何生成和更新多重背景?
UDT是STEP7中用户自定义数据类型。从数据类型的意义上说 UDT 并不被 CPU 所识别,而是在离线程序中自定义(组合)的数据类型。
具体使用请参看如下文档:
如何创建和参数化 UDT 数据类型中的变量及 IN, OUT , IN_OUT 参数?