CoDeSys和TIA的FB/FC的区别

虽然CoDeSys 和博途 都是基于IEC61131-3 的标准,但是两者之间还是有很大区别的。特别是对FB FC 的处理上,个人认为是最大的区别。

在CoDeSys中,FB FC 的区别是按输出的类型和个数区分的,而在西门子博途中,是按有无背景数据块来区分的。由于西门子博途应用广泛,本篇就介绍下 在CoDeSys中 FB FC 的区别,这次就以计算圆的面积做个例子。

我们在程序中分别建立一个 FB 和FC,它的功能相同,都是计算圆的面积

FC

FB

在CoDeSys 中 FC 是函数(FUNCTION)的意思,和高等数学中的函数是一个意思。FB 是功能块(FUNCTION_BLOCK )的意思。FB 和西门子博途中的FB 可以认为是等同的。在FC 中,是没有输出函数的,因为它的名字就是输出,在程序中调用如下

FB FC 在程序中的调用

很明显看到,FB 定义了输出 而FC 的输出就是FC 块的名字。注意 FB 块上的S_Circle_FB_0 在CoDeSys中俗称功能块型变量,学名实例。可以理解为博途中的背景数据块,它最直接的应用就是引用输入输出的,比如S_Circle_FB_0.Square,通过一个点来引用功能块的输出变量。所以,CoDeSys和西门子博途的FB 可以认为是一样的,区别就是FC。因为FC 只有一个输出,如果我们还要计算圆的周长,就要用两个FC,但是用一个FB就可以实现。

 如上图,这就是一个计算圆的周长和面积的FB,它是有两个输出的。在程序中调用如下

还有一个问题就是 如何保存数据,这是CoDeSys和博途最大的区别。在CoDeSys中,由于没有数据块的概念,所以对数据的保存完全依赖变量。在定义变量时,将它定义为RETAIN型,数据就会掉电保持,默认是非RETAIN 型的。