功能: Fu nction , 简称 FC 功能块: Fu nction Block , 简称 FB FB 和FC 根本的区别是:FB 支持静态变量,而FC 只支持临时变量
静态变量:是调用 FB 返回时,仍然要为 FB 保留此变量区,因此不会改变这一区域的数据值
临时变量却没有这样的特*
所以在 FC 中如果在对临时数据变量处写入确定的数据前,就去读时就可能产生不可预见的结果,而对于静态变量却不会,因为它会保留你上次写入的结果
另外,楼下的某位大侠的回答也很详细,你可以看看—— “ 我简单的说说 FB 和FC 的区别,FB 是具有存储功能的,FC 没有存储功能,这是一般的理解;FB 需要背景数据块,而FC 是没有的;参数的传递方式不同,FB 的输入输出对应着背景数据块地址,而FC 的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系
FB 参数传递的是数据,FC 参数传递的是数据的地址
FB(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及STAT 的数据都是数据块里,入口参数和出口参数、STAT 可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里
FB 里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的
更确切的说,FB里的变量在调用时将根据AR2 的值当作偏移量与背景数据块是一一对应
如果一个 FB 功能块里没有入口参数、出口参数及STAT 数据,他将不需要背景数据块,这时的FB 和没有入口出口参数的FC 就没有什么区别了,就只能使用临时变量和全局变量了
用很多人认为,FB 的背景数据块必须由 FB 生成、FB 里的第一个变量对应着背景数据块的第一个变量,还有就是由FB 生成的数据块只能作为 FB 的背景数据块使用
其实这些理解是错误的,FB 的背景数据块