首页 理论教育 功能与功能块的区别解析

功能与功能块的区别解析

时间:2023-06-21 理论教育 版权反馈
【摘要】:2)只能在功能内部访问它的局部变量。3)功能没有静态变量,功能块有保存在背景数据块中的静态变量。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要做任何修改,就可以将它们移植到其他项目。调用功能时应给所有的形参指定实参。

功能与功能块的区别解析

1.功能与功能块的区别

(1)功能与功能块的区别

FB和FC都是用户编写的子程序,并且都有Input、Output、InOut参数和Temp数据,二者的主要区别如下:

1)功能块有背景数据块,功能没有背景数据块。

2)只能在功能内部访问它的局部变量。其他代码块或HMI(人机界面)可以访问功能块的背景数据块中的变量。

3)功能没有静态变量(Static),功能块有保存在背景数据块中的静态变量。

功能如果有执行完后需要保存的数据,只能存放在全局变量(例如全局数据块和M区)中,但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要做任何修改,就可以将它们移植到其他项目。如果块的内部使用了全局变量,在移植时需要考虑块使用的全局变量是否会与别的块产生地址冲突。

4)功能块的局部变量(不包括Temp)有默认值(初始值),功能的局部变量没有初始值。在调用功能块时如果没有设置某些输入、输出参数的实参,将使用背景数据块中的初始值。调用功能时应给所有的形参指定实参。

(2)组织块与FB和FC的区别

1)对应的事件发生时,由操作系统调用组织块,FB和FC是用户程序在代码块中调用的。

2)组织块没有输入参数、输出参数和静态变量,只有临时局部数据。有的组织块自动生成的临时局部数据包含了与启动组织块的事件有关的信息,它们由操作系统提供。

2.功能块的多重背景数据块

系统每次调用定时器和计数器指令时,都需要指定一个背景数据块。如果这类指令很多,将会在系统内生成大量的数据块“碎片”。为了解决这个问题,在功能块中使用定时器、计数器指令时,可以在功能块的界面区定义数据类型为IEC_Timer或IEC_Counter的静态变量(见图5-16),用这些静态变量来提供定时器和计数器的背景数据。这种功能块的背景数据块被称为多重背景数据块。

978-7-111-47789-1-Chapter05-20.jpg

图5-16 程序中的静态变量(www.xing528.com)

这样多个定时器或计数器的背景数据被包含在它们所在的功能块的背景数据块中,而不需要为每个定时器或计数器设置一个单独的背景数据块。因此减少了处理数据的时间,能更合理地利用存储空间。在共享的多重背景数据块中,定时器、计数器的数据结构之间不会产生相互作用。

需要注意的是只能以多重背景方式调用STEP 7 Basic提供的库中包含的功能块,不能以多重背景方式调用用户创建的功能块。

【例5-3】卫生间冲水阀控制程序。

该程序用来模拟人使用卫生间,使用多重背景数据块可调用的静态变量。该程序实现使用卫生间后,控制冲水阀冲水。

在该程序中“使用者”是有人使用卫生间的信号;“电磁阀”是需要控制的电磁阀。

打开在5.1.1中所建的FB FC实例项目的指令树中的文件夹“程序块”,双击其中的“添加新块”,单击打开的对话框中的“功能块”按钮(见图5-3),FB默认的编号为2,语言为LAD(梯形图)。

设置功能的名称为“ValveContrl”,单击“确定”按钮,自动生成FB2,它用来控制卫生间的冲水阀,其程序如图5-17所示。在FB2的界面生成输入、输出参数,如图5-18所示。在PLC变量表(见图5-18)中定义调用FB2需要的变量,在OB1中两次调用FB2(见图5-19)。

978-7-111-47789-1-Chapter05-21.jpg

图5-17 FB2的程序

978-7-111-47789-1-Chapter05-22.jpg

图5-18 PLC变量表

程序编写完成后,就可以将程序下载到CPU,将CPU切换到RUN模式。拨动外接的小开关,模拟有人使用卫生间的“使用者”信号。可以看到输出参数“电磁阀”的状态按程序的要求变化,各段定时时间与FB2中设置的相同。可以令两次调用FB2的输入信号“使用者1”和“使用者2”几乎同时为1状态。在运行时可以用主程序OB1的程序状态功能监视被调用的FB2的输入、输出参数的状态,也可以在线监视FB2内部的程序的执行情况。

978-7-111-47789-1-Chapter05-23.jpg

图5-19 OB1调用FB2的程序

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

我要反馈