FB和FC均为用户编写的子程序,局部变量表中均有IN、OUT、IN_OUT和TEMP变量。FC的返回值Ret_Val实际上属于输出参数。下面是FC和FB的区别:
1) 功能块有背景数据块,功能没有背景数据块。
2)只能在功能内部访问它的局部变量。其他逻辑块可以访问功能块的背景数据块中的变量。
3)功能没有静态变量(STAT),功能块有保存在背景数据块中的静态变量。
功能如果有执行完后需要保存的数据,只能存放在全局变量(例如共享数据块和M区)中,但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要作任何修改,就可以将它们移植到其他项目。如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会与别的块产生地址冲突。
4)功能块的局部变量(不包括TEMP)有初始值,功能的局部变量没有初始值。调用功能时应给所有的形参指定实参。
调用功能块时可以不设置某些输入、输出参数的实参,此时这些参数将使用背景数据块中的初始值。
转自
http://blog.gkong.com/more.asp?name=liaochangchu&id=119612