发布于 2012-12-22 18:47:33
15楼
FC为什么会多出来一个RET_VAL
与FB相比,FC的局部变量多了一个RET_VAL(返回值)。它实际上是输出参数。默认的情况它是没有数据类型的,在调用FC时也看不到这个输出参数。只要在局部变量表中设置RET_VAL的数据类型,在调用时就能看到它在方框的右边出现,所以它是一个输出参数。
我很长时间一直不解为什么要设置这样一个局部变量,而不是将它纳入输出参数。后来偶然在一个资料上看到,这时为了和PLC编程语言的国际标准IEC 6116-3一致而设置的。
功能FC的英语为Function,也可以像博途那样,将Function翻译为函数。IEC的函数和C语言的函数一样,执行后会产生一个返回值。IEC 6116-3的FC也只有一个返回值,不用设置它的名称,返回值的名称和FC的名称相同。因此IEC 6116-3的FC只有一个输出参数。
西门子的FC没有对输出参数个数的限制,比IEC 6116-3的FC更好用一些。
我认为其实没有必要为了和IEC 6116-3一致而设置一个RET_VAL,这没有什么实质性的意义,反而容易把初学者弄糊涂。
追求完美