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 是没有存储能力的,这是一班的说法,给定入口参数,执行完了,从出口参数读出数据,FC 的功能就消失。如果在FC 里使用全局变量,也可以达到 FB 块一样的效果,但是这样的FC 块是没有可移植性的。下面,我将介绍我根据实际工程,编写的FC 与FB 块 实例 1:FC 块(这是一个用于西门子 PLC 向直流装置 6RA70 写过程数据的FC 块) A( L #in0 L #in1 >R ) JNB _001 L #in1 T #temp0 _001: NOP 0 A( L #in0 L #in2 ) JNB _002 L #in2 T #temp0 _002: NOP 0 L #in0 L #in1 <=R = #temp5 L #in0 L #in2 >=R = #temp5 A #tem...