首页 理论教育 功能块调用与功能优化

功能块调用与功能优化

时间:2023-06-29 理论教育 版权反馈
【摘要】:下面以发动机控制系统的用户程序为例,介绍生成和调用功能块和功能的方法。方框内是功能块的形参,方框外是对应的实参。功能块的符号名是在符号表中定义的。两次调用功能块“发动机控制”时,功能块的输入变量和输出变量不同,除此之外,分别使用汽油机的背景数据块“汽油机数据”和柴油机的背景数据块“柴油机数据”。

功能块调用与功能优化

CPU提供堆栈(B堆栈)来存储与处理被中断块的有关信息。当发生块调用或有来自更高优先级的中断时,就有相关的信息存储在B堆栈里,并影响部分内存和存储器。图6-4显示了调用指令对CPU内存的影响。

1.调用功能块(FB)

当调用功能块(FB)时,将会发生以下事件:

1)调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈。

2)数据块(DB)寄存器内容与DI寄存器内容交换。

3)新的数据块地址装入DI寄存器。

4)被调用块的实参装入DB和L堆栈上部。

5)当功能块(FB)结束时,先前块的现场信息从块堆栈弹出,临时变量弹出L堆栈。

6)DB和DI寄存器内容交换。

2.调用功能(FC)

当调用功能(FC)时将有以下事件发生:

1)功能(FC)实参的指针被存储到调用块的L堆栈中。

2)调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈。

3)功能(FC)存储临时变量的L堆栈区被推到堆栈上部。

4)当功能(FC)结束时,先前块的现场信息存储在块堆栈中,临时变量弹出L堆栈。

978-7-111-46052-7-Chapter06-7.jpg

图6-4 调用指令对CPU内存的影响

因为功能(FC)不用背景数据块,不能分配初始数值给功能(FC)的局域数据,所以必须给功能(FC)提供实参。

下面以发动机控制系统的用户程序为例,介绍生成和调用功能块和功能的方法。

(1)创建项目

生成一个新项目最简单的方法是使用“NEW PROJECT”向导,具体方法是在计算机的“桌面”上双击“SIMATIC Manager”图标,在弹出的新项目向导中点击“NEXT”按钮,依次选择CPU的型号、MPI站地址、需要编程的组织块和使用的编程语言等,最后设置项目的名称为“发动机控制”。

(2)生成用户程序结构

图6-5中的组织块OB1是主程序,用一个名为“发动机控制”的功能块FB1来分别控制汽油机和柴油机,控制参数在背景数据块DB1和DB2中。控制汽油机时调用FB1和名为“汽油机数据”的背景数据块DB1,控制柴油机时调用FB1和名为“柴油机数据”的背景数据块DB2。此外,控制汽油机和柴油机时还用不同的实参分别调用名为“风扇控制”的功能FC1。图6-6是程序设计好后SIMATIC管理器中的块。

978-7-111-46052-7-Chapter06-8.jpg

图6-5 程序结构

(3)编制符号表与变量声明表

1)符号表:为了使程序易于理解,可以给变量指定符号。表6-4是发动机控制项目的符号表,符号表中定义的变量是全局变量,可供所有的逻辑块使用。(www.xing528.com)

2)变量声明表:表6-5列出了发动机控制例程中FB1的局域变量。表中Bool变量的初值FALSE即二进制0。预置转速是固定值,在变量声明表中作为静态参数被存储,称为“静态局域变量”。

978-7-111-46052-7-Chapter06-9.jpg

图6-6 SIMATIC管理器中的块

表6-4 符号表

978-7-111-46052-7-Chapter06-10.jpg

表6-5FB1的变量声明表

978-7-111-46052-7-Chapter06-11.jpg

如果控制功能不需要保存它自己的数据,也可以用功能(FC)来编程。与功能块(FB)相比较,FC不需要配套的背景数据块。

在功能的变量声明表中可以使用的参数类型有IN、OUT、IN_OUT、TEMP和RETURN(返回参数),功能不能使用静态(STAT)局域数据。

表6-6是FC1中使用的变量。在变量声明表中不能用汉字作变量的名称。

表6-6FC1的变量声明表

978-7-111-46052-7-Chapter06-12.jpg

FC1用来控制发动机的风扇,要求在起动发动机的同时起动风扇,发动机停车后,风扇继续运行4s后停转,因此使用了延时断开定时器(S_0FFDT)。图6-7是FCl的梯形图。

978-7-111-46052-7-Chapter06-13.jpg

图6-7 FC1的梯形图

(4)编制程序

程序可以用语句表或梯形图两种形式来编制,下面分别给出了这两种程序的编制方法。

1)梯形图主程序OB1如图6-8所示。

978-7-111-46052-7-Chapter06-14.jpg

图6-8 梯形图主程序OB1

2)语句表程序如下:

978-7-111-46052-7-Chapter06-15.jpg

978-7-111-46052-7-Chapter06-16.jpg

在OB1中,用CALL指令调用功能块FB1。方框内的“发动机控制”是功能块FB1的符号名,方框上面的“汽油机数据”是对应的背景数据块DB1的符号名。方框内是功能块的形参,方框外是对应的实参。方框的左边是块的输入量,右边是块的输出量。功能块的符号名是在符号表中定义的。

两次调用功能块“发动机控制”时,功能块的输入变量和输出变量不同,除此之外,分别使用汽油机的背景数据块“汽油机数据”和柴油机的背景数据块“柴油机数据”。两个背景数据块中的变量相同,区别仅在于变量的实际参数(即实参)不同和静态参数(例如预置转速)的初值不同。背景数据块中的变量与“发动机控制”功能块的变量声明表中的变量相同(不包括临时变量TEMP)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈