工控智汇

工控智汇

西门子Step7 V5.5编程软件什么时候使用FB,什么时候使用FC?

admin 164 178

西门子编程软件什么时候用FB,什么时候用FC?

初学者在刚接触西门子S7-300、S7-400PLC编程时,可能都被这个问题困扰过,明明都有输入、输出,都是执行一段逻辑,到底有什么分别呢?

我们打开编程软件管理器SIMATICManager,在插入对象时可以看到功能块和功能,其中功能块即FB,功能即FC。


插入对象

功能块FB:是带背景数据块的功能;

功能FC:是不带背景数据块的功能。

从FB和FC的编程界面我们可以看出他们的细微差别:


FB编程界面


FC编程界面

从上图可以对比出FB比FC多了一个STAT变量类型,而FC除了IN(输入引脚)、OUT(输出引脚)、IN_OUT(输入输出引脚)外只有TEMP变量类型。而区分FB和FC的不同之处就在STAT变量类型和TEMP变量类型上。

STAT变量我们称之为静态变量,即对这个变量赋值后,该变量可以保持被赋值直至下一次对其赋值。

而TEMP变量我们称之为临时变量,即对这个变量的赋值只能保持到该功能块/功能调用结束。

为什么会有这种差别呢?这就和是否拥有背景数据块有关了。上文我们提到,FB是带背景数据块的功能,而STAT变量是保存在背景数据块上的,也就是说在PLC的存储空间内专门为STAT变量分配了存储地址,所以STAT变量值可以保存多个PLC扫描周期。FC是不带背景数据块的功能,所以它只能使用TEMP变量,而TEMP变量由PLC系统管理,可用的存储地址较少,当功能块/功能调用结束时系统会回收功能块/功能占用的TEMP变量存储地址,分配给下一个被调用的功能块/功能使用,由此我们看出TEMP变量的值只能在功能块/功能调用期间保持。

说了这么多,那到底什么时候使用FB,什么时候使用FC呢?根据工野的经验可总结为一句话:当功能块中有需要保持多个PLC扫描周期的变量时使用FB,当功能中所有变量值都不需要保持多个PLC扫描周期时使用FC。

至此可能有的网友会产生疑问,为什么搞这么复杂,全用FB不就行了?在这里工野一块给出答案,FC更节省PLC资源。