在STEP7的编程中,经常会用到FC功能和FB功能块来简化程序编制,减少程序空间占用。本文通过现场实例详细介绍了FC功能和FB功能块的应用
1.FC和FB的主要区别
FC和FB的主要区别是FB有背景块,能够保存上一次执行的数据,调用一次就需要建立一个DB块。FC没有背景块,多次调用可以共用一个DB块
FC 功能是没有存储能力的,给定入口的参数,执行完毕后,从输出参数读出结果。FC功能也就完成了。就像计算机高级编程语言中的子函数。当然,FC可以访问全局的存储变量,M区,数据块等等。但是影响程序的可移植性。FC的参数是没有实际的地址的,只是在调用FC的时候,对应到一个实际的地址来读取参数。而FB的参数都是有实际对应的地址的,也就是对应的背景数据块的地址。FB参数传递的是数据。FB可以生成静态变量,下次调用FB的时候,这些静态变量可以被保留。而FC的变量只在调用期内有效。FB与FC的区别在于入口参数,出口参数和使用静态变量。如果一个FB对入口参数,出口参数和使用静态变量都不需要,那么与使用没有入口参数和出口参数的FC基本一样了。FB可以和多个背景数据块配合使用,被用来控制多个对象。例如控制多个电机或者泵的运行。多个电机之间参数互不干扰。如果使用FC达成同样功能,就需要不断地修改共享数据块,以避免对象的数据丢失。FC没有一个永久的数据块来存储数据,只是在被调用的时候,被分配一个临时的数据区。
2.FC功能编程及调用实例:
2.1在STEP7中完成硬件组态以后,开始编制PLC程序,插入一个功能FC,如图所示。将FC设置成为一个模拟量数值超限报警程序,模拟量信号比较后输出报警值。
2.2在FC中创建接口,IN 变量是外部输入的,只能被本程序块读,不能被本程序块写,输入参数只能在功能和功能块中使用,以将数据传送到调用块进行处理。OUT 是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写,通过它将结果传送到调用块IN_OUT 输入输出变量 本程序块和其他程序都可以读写这个引脚的值,输入/输出参数在功能和功能块中使用,以将数据传递到调用块中,在调用块中处理数据,然后再将从调用块中发送的结果存储在相同的变量中。
TEMP 临时变量是一种在块执行时,用来暂时存储数据的变量,这些数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。临时变量可以在组织快OB、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行介绍,堆栈重新分配,临时变量中的数据将丢失。临时数据是块的逻辑块,并且在处理块时将其存储在本地的数据堆栈(L堆栈)。关闭块并完成处理后,临时数据就变得不再可访问。
2.3编制FC功能程序,实现模拟量数值对比输出报警信号
在其他功能中多次调用此功能程序,简化程序的编制,此程序的含义为IN_WORD_1与IN_WORD_2之间的差值大于8,延时3S中进行报警输出。
3.FB功能块编程与调用实例:
3.2编制一个速度调节功能块程序,如图所示
3.3创建DB32数据块,作为FB的背景数据块,在功能程序中调用FB功能块,数据块选择必须为FB的背景数据块,如图所示,这样就完成了FB的调用:
作者简介:井运 资深电气工程师,设备管理高级工程师,从事电气行业十余载,在国内某大型上市企业担任技术主管,对高低压电气,自控仪表等都有深入的研究,熟悉多品牌PLC编程与画面组态的制作与应用。