恭喜,你发布的帖子
发布于 2020-10-23 22:00:41
3楼
先简单说一下,后面答疑时我们会把这个问题加进去
首先FB比FC多了背景数据块,而背景数据块中有个重要的区域就是静态变量,静态变量是带跨扫描周期保持功能的中间变量区,与它相反的是temp,一般像沿指令的中间位,或者runtime指令的mem,都可以放在静态变量中
有了背景数据块,就有了多重背景的概念,这样适合fb的嵌套,比如fb中调用定时器,各种通信指令,各种运动控制指令,一个FB可以对应一个设备,通过相同fb不同背景数据块来区分设备,一个背景数据块对应一个设备,不会因为外层FB调用了很多内层FB,而产生更多背景数据块,比如下面这个简单的运动控制FB
FB中有3个FB,但是在调用外层FB时,只会产生一个背景数据块,如下图
这样每个背景数据块对应一个设备。
而FC只能把这些变量、背景数据块放在inout,对于上面这个例子,FC调用这些运动控制FB,可以使用参数实例功能,所有的背景都放在inout,如下图。
但是在外部调用FC时,所有的inout上的背景数据块的地方还是需要一个单独的背景数据块,如下图
从上图可以知道,每个设备需要3个不同背景数据块
所以FC相对FB在复杂功能上不够方便
还有就是对于AT这一块,FC功能要弱于FB
此外FC和FB有一个重要的区分就是访问机制不同,如下图
这块内容比较多,不在这里详细说明,您有兴趣的话可以听一下2019年的一次答疑
https://m.lizhiweike.com/lecture2/12405955
对于S7-1500来说某些功能必须FB才行,S7-1200目前没有这种功能
所以要说实现功能,目前来说基本FB能实现的FC都能,只是很多时候要借助INOUT+参数实例+UDT,比较麻烦,所以我前面说简单功能FC来实现,没说出来的就是复杂功能用FB
请填写推广理由:
分享
只看
楼主