回复:课程中为什么会用fc而不用fb呢?

西家讲师

官方工程师

  • 帖子

    3342
  • 精华

    0
  • 被关注

    33

论坛等级:奇侠

注册时间:2018-05-23

普通 普通 如何晋级?

发布于 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

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

S7-1200精英训练营

共有1959条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。