CODESYS是德国3S公司出品的,完全符合 IEC61131-3标准的PLC编程工具,它是一种与设备无关的编程系统。不但包含PLC,还包括运动控制,可视化也就是触摸屏,现场总线的解决方案,很多自动化厂商,都开发了基于CODESYS的自动化产品。其中较著名的有 ABB 的 Control builder、Schneider Electric 的 SoMachine、BECKHOFF 的 TwinCAT、EATON 的 XSoft、Bosch-Rexroth 的 IndraWorks Engineering,此外还有 TT control、万可、赫思曼、易福门、派芬、德国控创、法国阿尔斯通、路斯特、 伦茨,科比,科控,SEW,丹佛斯、费斯托、日立、三菱电机、欧姆龙、和利时、固高、中控集团,步科等业界巨头。
近年来,基于CODESYS开发的PLC产品越来越多,大有和PLC巨头西门子平分市场的去世。CODESYS是完全符合IEC61131-3标准的,而西门子的博途,只能是近似符合,今天,就来谈谈两者的区别。
FB FC POU是PLC编程中三个经常提及的概念,而STEP7和CODESYS中,差别非常明显。在IEC61131-3标准中,FB有多个输出,而FC只能由一个输出。
FB 是指功能块,FC是指功能,POU是指程序组织单元。在博途中,充满了各种块,比如组织块,数据块,功能块等,而在CODESYS中,是没有这么多块的。
在博途中,组织块(OB)是一个非常重要的概念,是PLC的操作系统和用户程序之间的重要接口。我们写好的各种程序,都是通过组织块来运行的。比如用的最多的循环扫描,以及中断处理,故障处理等。我们写好的FB FC需要通过调用,才能执行。因此,在博途中,是通过OB块调用FB块和FC块,来实现控制任务的。而FB和FC的区别就是,FB有背景数据块,也就是有独立的存储空间,而FC没有。所以,FB中有静态变量,而FC中没有。博途中的FB和FC可以相互调用,只不过需要处理好DB块的问题。
而在CODESYS中,没有组织块,有的是任务。任务调用POU,而POU可以调用FB和FC。任务是不能直接调用FB和FC 的。可以看出,CODESYS比STEP7多了一层结构。在CODESYS中,FB有存储空间,有多个输出,输出可以有多种数据类型。而FC,没有存储空间,只能有一个输出。因此,FC又称之为函数,因为它真的像数学中的函数。在CODESYS中,FB可以调用FC,但FC是不能调用FB 的。
所以,CODESYS中的任务,就相当于博途中的组织块。而博途中的FC,更像是CODESYS中的POU。为了和标准兼容,博途的FC中增加了一个返回变量RET_VAL。它的作用就是,既能和IEC标准兼容,又能兼容自家的产品。
其实,这些区别是没有实质性影响的,也不存在孰优孰劣的问题。