FB 与 FC 块的区别及其实际的工程运用 简单的说FB 是具有存储功能的,FC 没有存储功能,这是一般的理解:FB 需要背景数据块,而FC 是没有的;参数的传递方式不同,FB 的输入输出对应背景DB 地址,而FC 的输入输出没有实际地址对应的,只有程序调用时,才会和实际的地址产生关系
FB 参数传递的是数据,FC 参数传递的是数据的地址
FB 功能块的处理方式是围绕着数据块处理数据,它的输入输出参数都是数据块里的数据,以及STAT 的数据都是数据块里的,入口参数和出口参数,这些数据不会因为函数消失而消失,它会一直保持在数据块里
FB 里的变量与它的背景数据块是一一对应的,而它的对应并不是一层不变的,更确切的说,FB 里的变量在调用时将根据AR2的值当作偏移量与背景数据块是一一对应的
如果一个FB 功能块没有入口参数、出口参数及STAT 数据,它将不需要背景数据块,这时的FB 块和没有出、入口参数的FC就没什么区别了,也就只能使用临时变量和全局变量,当然这时的FB 块是没有实际作用了
有人会认为,FB 的背景数据块必须由 FB 生成、FB 的第一个变量对应背景数据块的第一个变量,还有就是由 FB 块生成的数据块只能作FB 的背景数据块使用
其实这些理解都是错误的,FB 的背景数据块不一定是通过 FB 生成的,可以像生成共享数据块一样生成 FB 的背景数据块,换句话说,普通的数据块也可以作为FB 的背景数据块使用,只是这种做发是有前提的:就是这个数据块的字节数必须大于或等于 FB 所需的字节数,如果小于 FB 所需的字节数,FB 访问到超出背景数据块的变量时就会找不到变量的地址,当然也就出错了
FC 功能块里的参数没有实际的地址,都是使形参数,只有在调用时才会把实际的参数地址传送到 FC 的参数里
FC 是没有存储能力的,这是一班的说法,给定入口参数,执行完了,从出口参