FB与FC之间的区别
FB——功能块,带有背景数据块(DB)。FC——功能,相当于函数,没有属于自己的背景数据块。FB和FC最大的区别在于FB拥有属于自己的背景数据块(无储存和有储存区的区别),可以将自身的值永久储存在数据块中,在执行过FB块或退出程序之后这些数据值仍然可用。而FC因为没有属于自己的数据块,所以执行过FC或退出程序之后数据将不会保存。
FB和FC的使用
FB与FC作为一个块拥有属于自己的管脚,其中包括:
IN——变量从外部输入,只能被本程序读,不能被本程序写。
OUT——是由本程序块输出的,可以被本程序块读写,其他程序只能读这个值而不能写。
IN_OUT——输入输出变量,本程序和其他程序都可以读写这个引脚的值。
TEMP——临时变量,顾名思义是暂时存储数据的变量。这些临时的数据存储在CPU工作储存区的局部数据堆栈(即L区)中。
仅FB拥有静态变量
STAT——在plc运行期间始终被存储,静态变量定义在背景数据块,当被调用时可以读写静态变量,调用结束后静态变量保存在数据块中,静态变量在某种程度上可以作为全局变量来进行使用。
FC与FB 二者在使用中的不同
FB需要与背景数据块配合使用。在使用时,因为FB可以带上多个不同的背景数据块,所以可以带上不同的参数值。这样就可以将同一FB块和不同的背景数据块被多个对象调用。
FC使用共享数据块,因此调用函数时必须给所有形参分配实参(即先赋值,再使用)。对于FC的临时数据,FC采用了局部数据堆栈,不保存临时数据,要永久性保存数据,可将输出值赋给全局储存器位置,如M储存器或全局DB。
在程序调用方面,FB和FC既可以调用其他FB、FC,也可以被其他OB、FB、FC调用,非常方便。
FB优点
1. 易于移植,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,同一个FB块就可以方便的使用。
2. 可使用多重背景,减少重复工作,提高效率。
3. 多次调用时,易于修改参数。
4. 有独立的储存区。
FC优点
1. 程序简洁,对于非多次调用的程序更易理解。
2. 不占用储存资源。