商业控制器
CoDeSys
很多机器人控制软件都是借助CoDeSys实现的,那么CoDeSys是什么呢?
CoDeSys是德国3S公司推出的一款付费的软PLC开发软件,简单来说,它包括两部分:Development System和Runtime System。Development System就是用来编程的软件界面(就像Visual Studio、Eclipse等软件,也可以称为IDE),设计、调试、编译PLC程序都在IDE中进行,这部分是用户经常打交道的;程序写好了以后,就要把它转移到硬件设备中执行。可是这时生成的PLC程序自己是无法运行的,它还要在一定的软件环境中才能工作,这个环境就是Runtime System(也叫运行核),这部分是用户看不到的。二者安装的位置通常不同,IDE一般安装在用户的开发计算机上,Runtime System则位于起控制作用的硬件设备上,程序通过网线或串口线下载到Runtime中运行。
CoDeSys为什么要分成两部分?最主要的原因是CoDeSys主要运行在嵌入式系统中,例如ARM或者DSP芯片。这样的系统资源有限,不可能在其上建立庞大、复杂的开发环境,因而其开发环境和运行环境相互分离。因此,嵌入式软件的开发方式一般是,在宿主机(Host)上建立开发环境,进行应用程序代码的编写和交叉编译,然后宿主机与目标机(Target)建立连接,将应用程序下载到目标机上进行交叉调试,经过调试和优化,最后将应用程序固化到目标机中实际运行。当然,随着芯片的性能越来越强大,如果选择资源丰富的芯片,那么CoDeSys的开发环境和运行环境放在一起也没什么问题。我们自己的个人电脑不就是编译和运行程序都能完成吗。
CoDeSys在工业控制领域的应用非常广泛,上面提到的很多机器人公司都使用了它的产品,例如KEBA、倍福、固高、台达、广州启帆机器人、新时达机器人。3S公司只卖底层软件,不卖硬件和上层应用程序,应用程序和硬件电路需要由用户自己设计,3S公司负责将Runtime System移植到客户的硬件上。Runtime System可以裸跑在硬件上,但一般是运行在操作系统上,配置操作系统也是客户的工作。如果客户要求,CoDeSys的IDE可以定制,换成客户的logo和外观,这就是为什么你会发现不同厂家的开发平台长得不一样,但风格又比较相似。当然,用户也可以使用其它IDE,例如倍福就使用了Visual Studio,而背后的编译器等内核功能以及函数库仍然采用CoDeSys的方案。CoDeSys的Runtime具有强大的适应性,支持绝大多数的操作系统和芯片类型。
CoDeSys的IDE部分是免费的,你可以从官网下载体验。真正收费的是运行系统Runtime System以及一系列的通信、运动控制组件。
CoDeSys采用.Net技术开发,其在设计之初就将功能划分为若干组件模块,例如总线协议栈、可视化界面、运动控制、安全控制等等,用户可以像搭积木一样选购必需的模块搭建自己的系统,最后形成一个定制化的控制软件平台。一些初次接触软PLC的用户可能对这部分感到陌生,但其实这种设计方式非常普遍。举几个例子,MATLAB Simulink的实时工具箱(Real-Time)就是这样的工作方式,用户在Simulink的图形界面里通过拖拽设计控制程序,然后下载到真实的硬件中跑,可以在这里了解。还有像倍福也是这样的使用方式,用户在TwinCAT IDE里进行编程,然后下载到倍福的控制器中,控制器里面其实已经预装了一个Runtime。西门子的STEP7也是一款IDE,它的PLC中也存在一个配套的Runtime。只不过西门子(包括日系PLC)的系统封闭而保密,外人不知道他的系统架构。