深圳电子展
2024年11月6-8日
深圳国际会展中心(宝安新馆)

CoDeSys介绍

1 CoDeSys的组成

你会发现,很多的机器人控制软件都是借助CoDeSys实现的,那么什么是CoDeSys呢?

CoDeSys是一款付费的软PLC开发软件,简单来说,它包括两部分:Development System和Runtime System。Development System就是用来编程的软件界面(就像Visual Studio、Eclipse等软件,也可以称为IDE),设计、调试、编译PLC程序都在IDE中进行,这部分是用户经常打交道的;

PLC程序写好了以后,就要把它转移到硬件设备中运行。可是这时生成的PLC程序自己是无法运行的,它还要在一定的软件环境中才能工作,这个环境就是Runtime System,这部分是用户看不到的。

二者安装的位置通常不同,IDE一般安装在开发电脑上,Runtime System则位于起控制作用的硬件设备上,二者一般使用网线连接,程序通过网线下载到Runtime中运行。

CoDeSys在国内知名度不高,但是在欧洲久负盛名,尤其在工业控制领域。我们上面提到的很多机器人公司都使用了它的产品,例如KEBA、倍福、固高,还有几乎所有的移动机器人控制器厂家。

设计CoDeSys的3S公司只卖软件,不卖硬件。硬件电路需要由用户自己设计,3S公司负责将Runtime System移植到客户的硬件上。Runtime System可以裸跑在硬件上,但一般是运行在操作系统上,配置操作系统也是客户的工作。

如果客户要求,CoDeSys的IDE可以定制,换成客户的logo和外观,这就是为什么你会发现不同厂家的开发平台长得不一样,但风格又比较相似。

当然,用户也可以使用其它IDE,例如倍福就使用了微软的Visual Studio,而背后的编译器等内核以及函数库仍然采用CoDeSys的方案。

CoDeSys的Runtime具有强大的适应性,支持大多数的操作系统和硬件芯片架构。

2 CoDeSys Runtime原理

CoDeSys的IDE部分是免费的,你可以从其官网下载体验体验。真正收费的是运行系统Runtime System。

CoDeSys在设计之初就将功能划分为若干组件模块,例如总线协议栈、可视化界面、运动控制、安全控制等等,用户可以像搭积木一样选购必需的模块搭建自己的系统,后形成一个定制化的控制软件平台。

一些初次接触软PLC的用户可能对这部分感到陌生,但其实这种设计方式非常普遍。举几个例子,MATLAB Simulink的实时工具箱(Real-Time)就是这样的工作方式,用户在Simulink的图形界面里通过拖拽设计控制程序,然后下载到真实的硬件中跑,可以在这里了解。

还有像倍福也是这样的使用方式,用户在TwinCAT IDE里进行编程,然后下载到倍福的控制器中,控制器里面其实已经预装了一个Runtime。西门子的STEP7也是一款IDE,它的PLC中也存在一个配套的Runtime。

用户编写的PLC程序就像我们电脑里的应用程序,它运行在Runtime System上,而Runtime System又运行在操作系统之上。

Runtime System位于应用程序和操作系统之间。所以可以被称为中间件(Middleware)。在机器人软件里面,处于同样地位的还有ROS、OROCOS(Real-Time Toolkit)等等。

机器人的控制,像数控机床一样,对实时性有要求,因此我们选择的操作系统建议是实时操作系统(RTOS)。遗憾的是,我们经常用的操作系统都不是实时的,例如Windows和Linux。但幸运的是,有人对它们进行了改造,也就是加入实时补丁。

常用的实时操作系统有:VxWorks、QNX、Windows RTX、Xenomai、RT Linux、Linux RTAI、WinCE、μC/OS、SylixOs等等。考虑到Windows和Linux这两款操作系统的用户较多,CoDeSys推出了相应的实时补丁(RTE),为用户免去了改造的烦恼。

想了解更多的CoDeSys Runtime信息可以阅读官方的文档[Math Processing Error] [1][2][1][2]。

CoDeSys的缺点

CoDeSys给我们开发控制器带来了便利,省去了从零开始的麻烦,但是依靠CoDeSys这类商业软件开发自己的控制器产品也存在不少的缺点:

(1)底层算法不公开

CoDeSys集成的运动控制组件、总线协议栈都是封装好的,用户无法了解其内部细节,也无法针对自己的具体需求进行定制优化,只能简单地调用。用户只能依附于CoDeSys平台,难以形成自己的核心技术。

(2)功能有限,难以扩展

现在以机器视觉、人工智能、自动驾驶等为代表的新技术突飞猛进,而工业控制上的很多技术仍然停留在20年前。以移动机器人中的导航场景为例,基于视觉或者激光的导航方法需要采集大量的数据并对其进行处理,其中涉及相当多的矩阵计算。

而现在PLC只能进行落后的一维数字计算,难以实现复杂的算法。与人工智能圈子喜欢开源的风格正好相反,工业控制圈子相互封闭,谁都不肯开放自家的函数库,开源函数库很少(OSCAT),就连基本的滤波算法、矩阵计算都要自己从头开始写。而且,国际标准提供的基本函数太过有限,完全无法适应新的场景,急需扩展。

(3)难以更新

由于完全依赖CoDeSys,客户自己产品硬件的升级换代需要重新定制移植,导致成本增加。

来源:网络