admin 发表于 2018-8-17 08:47:09

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 型的。         

小小工程师 发表于 2020-6-23 11:08:55

FC在梯形图中怎么调用呢?

郑文祥 发表于 2022-3-8 17:00:55

FC的结果怎么获取,我用了FC不会获取FC的返回值。知道到,谢谢。上图资料我做了也不一个模样啊。

郑文祥 发表于 2022-3-8 17:03:53

您好,刚才赵老师给了一个回复,我看不到啊。
页: [1]
查看完整版本: CoDeSys和TIA的FB/FC的区别