与fb相比,fc的局部变量多了一个ret_val(返回值)。它实际上是输出参数。默认的情况它是没有数据类型的,在调用fc时也看不到这个输出参数。只要在局部变量表中设置ret_val的数据类型,在调用时就能看到它在方框的右边出现,所以它是一个输出参数。
我很长时间一直不理解为什么要设置这样一个局部变量,而不是将它纳入输出参数。后来偶然在一个资料上看到,这是为了和plc编程语言的国际标准iec 61131-3一致而设置的。
功能fc的英语为function,也可以像博途那样,将function翻译为函数。iec的函数和c语言的函数一样,执行后会产生一个返回值。iec 61131-3的fc也只有一个返回值,不用设置它的名称,返回值的名称和fc的名称相同。因此iec 61131-3的fc只有返回值这样一个输出参数。
西门子的fc对输出参数的个数没有限制,比iec 61131-3的fc更好用一些。