首页 历史故事使用FB静态变量自动保存数据的优点

使用FB静态变量自动保存数据的优点

【摘要】:背景数据块可以保存静态变量,故静态变量只能用于FB块中,并在其变量声明表中定义。当FB块退出时,静态变量仍然保持。可以看出,FB的优点如下:1)当编写FC程序时,必须寻找空的标志区或数据区来存储需保持的数据,并且要自己编写程序来保存它们。而FB的静态变量可由STEP 7的软件来自动保存。2)使用静态变量可避免两次分配同一存储区的危险。同时,各个电动机的状态数据也存储在该FB的静态变量之中。

FB(Function Blocks)不同于FC的是它带有一个存储区,也就是说,有一个局部数据块被分配给FB,这个数据块称为背景数据块(Instance Data Block)。当调用FB时,必须指定背景数据块的号码,该数据块将自动打开。

背景数据块可以保存静态变量,故静态变量只能用于FB块中,并在其变量声明表中定义。当FB块退出时,静态变量仍然保持。

当FB块被调用时,实际参数的值被存储在它的背景数据块中。如果在块调用时,没有实际参数分配给形式参数,在程序执行中将采用上一次存储在背景数据块中的参数值。

每次调用FB时可以指定不同的实际参数。当块退出时,背景数据块中的数据仍然保持。

可以看出,FB的优点如下:

1)当编写FC程序时,必须寻找空的标志区或数据区来存储需保持的数据,并且要自己编写程序来保存它们。而FB的静态变量可由STEP 7的软件来自动保存。

2)使用静态变量可避免两次分配同一存储区的危险。

结合前面例子,如果用FB块实现FC1的功能,并用静态变量EarlyValue、LastValue和LatestValue来代替原来的形式参数,如表6-4所示,将可省略这三个形式参数,简化了块的调用。在FB1中定义形式参数,编写程序同图6-41a,图6-42所示为调用FB1子程序,其中DB10为FB1的背景数据块,在输入时若DB1不存在则将自动生成该背景数据块。双击打开背景数据块DB10,可以看到DB10中保存的正是在FB的接口中定义的形式参数,如图6-43所示。对于背景数据块,无法进行编辑修改,而只能读写其中的数据。

表6-4 定义FB的形式参数

978-7-111-34922-8-Chapter06-48.jpg

978-7-111-34922-8-Chapter06-49.jpg

图6-42 调用FB1子程序

978-7-111-34922-8-Chapter06-50.jpg

图6-43 背景数据块

调用FB块时需要为其指定背景数据块,这称为FB背景化,类似于C语言等高级语言中的背景化,即在变量名称和数据类型下面建立一个变量。只有通过用于存储块参数值和静态变量的“自有”数据区,FB才能成为可执行的单元(FB背景)。然后使用FB背景,即分配有数据区域的FB,就能控制实际的处理设备。同时,该过程单元的相关数据存储在这个数据区域里。

STEP 7里的背景具有如下特点:

1)在调用FB时,除了对背景DB进行赋值之外,不需要保存和管理局部数据。

2)按照背景的概念,FB可以多次使用。例如,如果对几台相同类型的电动机进行控制,那么就可以使用一个FB的几个背景来实现。同时,各个电动机的状态数据也存储在该FB的静态变量之中。