1、西门子 300PLC 的 FC 与 FB 接口FC 块的接口参数里有 return,即返回值,为什么 FB 块中没有这个参数?这个参数只作为返回值用?FB 块没有返回值?另外 FB 块中的STAT接口参数和TEMP接口参数有什么区别?哪些情况使用STAT?哪些情况使用 TEMP?答: 受西门子影响一般都把 FC/FB 之间的区别放在了有没有背景数据块上,这其实是比较片面的。FC/FB 在存在原本是为了不同的应用而出现的,FC 就像是数学中的函数,比如 sin(x),它本身可以出现在算式中,返回值就是它的结果,但 FB 则不同,它是为了完成某种功能而出现,不需要用返回值来表示结果,它也不能像 F
2、C 一样直接加入算式中,这点在 LAD 或 FBD 编程中体现不出来,在某些编程语言中就体现的很明显。虽然现在因为 FC/FB 功能都很强大,实际项目中使用的 FC 常常可以用 FB 来完成,给 FC 配一个共享数据块后也能较好的模仿一个 FB,但归根结底区别如前所说,把 FC 想象为数学中的函数就好理解了。这个问题单从应用方法 (不谈两者的由来) 来讲一下 FB 与 FC 的区别:、FC 块有 return,而 FB 没有 return;、STAT 静态变量,只有功能块 FB 有;、FB 有背景数据块,而 FC 没有.。1、FC 块的接口参数里有 return,即返回值,为什么 FB 块中没
3、有这个参数?这个参数只作为返回值用?FC 块有 return,而 FB 没有 return.对于RETURN一般只用RET_VAL这个值, 可以用于反映FC的运行结果。例如,我们常见的 FC105 等程序都有这个接口,通过这些接口的数据值,我们可以判断的程序的运行结果如何。为什么 FB 块中没有这个参数?因为 FB 有背景数据块,FB 的运行结果可以通过背景数据块中相关的数据来判断的程序的运行结果如何。2、FB 块中的 STAT 接口参数和 TEMP 接口参数有什么区别?STAT 静态变量, 只有功能块 FB 有, 也是 FB 和 FC 的一个最大的区别。静态变量在其对应 FB 块执行完后数据会保存, 而临时变量 TEMP 在对应 FB 块执行完后数据就清除。3、哪些情况使用 STAT?哪些情况使用 TEMP?在本次程序运行不能确定的变量, 或对下次程序运行相关的变量需要使用 STAT。例如,程序中有有关上升沿和下降沿相关指令时必须采用静态变量。 某些在本次程序执行是即可确定结果且对下次程序运行无关的变量可以使用 TEMP。