摘要:数据块是用来存程序数据的,它有全局数据块和背景数据块这两种。全局数据块在整个程序里都有效,背景数据块主要是给 FB 块当存储区用的。在全局 DB 块里,能定义程序块要用的各种数据类型的变量,像基本数据类型的变量啦,复杂数据类型的变量啥的。新建数据块的时候,默认
一、数据块(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 块就有地址啦。下面有图可以参考。
S7-1200程序块之DB块 PLC论坛-全力打造可编程控制器专业技术论坛 -
来源:PLC技术玩