一、数据块(DB)
数据块用于存储程序数据,分为全局数据块和背景数据块,全局数据块即全局有效,而背景数据块主要用于作为FB块的存储区。在全局DB块中可定义程序块中需要使用到的各种数据类型的变量,如基本数据类型的变量、复杂数据类型的变量等。
新建数据块时,默认“优化的访问块”且数据块中存储变量的属性是非保持性的。在优化的访问块状态下通过符号寻址的方式对数据块中的数据进行读写,若需要取消优化的块,在数据块的属性栏中取消勾选“优化的访问块”再进行编译时即可生成绝对地址。 在上图中DB块的访问设置里面除了优化的访问块设置外,还有“仅存储在装载内存中”及“在设备中写保护数据块”两项进行勾选设置。
仅存储在装载内存中:若勾选此选项时,DB块下载后只存储于装载存储区中,若需要将数据复制到工作存储区中需要使用“READ-DBL”指令来实现,同样如需要将数据写入到装载存储中的DB块中,需使用“WRIT-DBL”来实现
在设备中写保护数据块:若勾选此选项时,则此DB块只支持可读访问。对于背景数据块和函数块相关联,存储函数块的输入、输出、输入/输出、静态变量的参数,其变量只能在函数块中定义,不能在背景数据块中直接创建,程序在调用时,可为之分配一个已创建的背景DB块,也可以直接定义一个新的DB块,该DB块将自动生成并作为这个函数块的背景数据块
在建立DB块时,可以选择建立全局DB块或FB块的背景DB块
二、全局DB块的建立
全局DB全局范围都可以用,存储的是全局的数据;局部DB只能是某个FB块来使用,存储的是某个FB块的数据,执行完后一直保留。 在建立全局数据块后,优化的访问块在使用后是只有符号没有绝对地址的,如下图所示
在TIA博途中,默认DB块中建立的变量为优化的访问块,只能使用符号寻址,且数据块中存储变量的属性是非保持性的;若使用时需要用到绝对地址,则可以在块的属性中去掉 “优化的块访问”前面的勾选去掉后再重新编译即可生成绝对地址 见下图
在建立背景DB之前,我们可以先添加FB块
FB块接口参数建立完成之后,我们建立背景DB块
此时生成的背景DB块的数据也是和FB块接口区的参数一致;如要把背景DB块参数显示绝对地址时,可在FB块的属性中把优化的块访问勾选去掉,再编译,这时背景DB块就有地址了。如下图