KEBA机器人控制器简介


   KEBA (中文名:科控)是一家提供自动控制产品和服务的公司,总部在奥地利(和贝加莱是老乡)。KEBA 成立于1968年,在中国设有分公司,其员工总数不到1000人,2015年营业收入达到1.89亿欧元。公司不大,产品却不俗,在工业、银行、能源等很多行业都有应用。
  看到机器人市场的火热,KEBA 也推出了面向机器人自动化应用的产品 —— KeMotion [ 1 ] ,号称是机器人与机械设备自动化的全套解决方案 。说白了,KeMotion 就是一个机器人控制系统(有意思的是 KEBA 自己并不制造机器人),本文我们就来看看它有什么特色。KeMotion 既然是一个系统,它就包含一系列的软件、硬件、标准规范等等,我总结了一下,如下表所示:

● KeSystems ● KeStudio
● KeControl ● KAIRO
● KeTop ● KAIROEdit
● KeConnect ● TeachView
● KeDrive ● TeachEdit
● KeSafe ● ViewEdit
● KeView ● TeachTalk

  
  看完是不是想死的心都有了,KEBA 的工程师为了把用户搞晕也是做出了不懈的努力,下面我们逐个介绍。首先介绍看得见摸得着的硬件部分:

控制器 KeControl

  KeControl 是控制器,更准确的说是控制器的 CPU 模块,有CP、DU等几种型号。下图中我手里拿着的型号是 CP263/X(左图),它比 A4 纸瘦长一点,从正面看外表由一段段塑料片组成。你可以把 KeControl 看成是一个功能齐全的小电脑(PC —— Personal Computer),它内部有中央处理器、内存和硬盘(由CF卡充当),而且运行着 VxWorks 操作系统。KeControl 虽然是一个 PC,但是却采用了 PLC 的术语,把(我手中的)整个盒子称为 “ CPU 模块”。


   我们可以和贝加莱的机器人控制器产品 Automation PC 比较一下,如下图所示的 PC 2100 型号。贝加莱的控制器更小巧,而且外观采用了醒目的橘黄色。
 

   固高被认为是我们国家最好的机器人控制器,下图是 GUC 系列。吐槽一下,我们国家的工业设计被国外同行甩出几条街,和国外的产品对比简直丑的惨不忍睹。
   CPU 模块可以说是整个 KeMotion 系统的核心了,所有的控制程序都在它上面运行。这么重要的 CPU 模块到底采用了什么样的中央处理器呢?我展示的这款采用了 1.6 GHz 的 Intel ATOM,并搭配 1 GB DDR3 内存,这配置可能还比不上你的家用电脑(价格却可能贵几倍,要万把块钱。这额外的钞票是为可靠性付出的代价。你能想象机器人工作时突然因为控制器死机而歇菜或者失控吗?这给工厂带来的损失可不是几万块钱能弥补的)。
  CPU 模块所有的接口都在前面,我这款有:2个USB接口、3个以太网口(EtherNet)、一个CAN口、一个VGA口,还有一个24V的电源口用来给控制器供电。如果接口不够用怎么办?KEBA 提供扩展接口模块。右图所示的是 DM 272/A ,它是最常用的数字I/O扩展接口,有8个输入和8个输出接口。DM 272/A 可以直接插在 CPU 模块的右侧,如果还不够用可以继续添加其它模块。
  KeControl 的顶部开满散热孔,如下图。透过这些孔,还能隐约看到里面有个小风扇。

  

   不同型号的 KeControl,其接口和功能都有微小差别,见下图(打对号的表示有该功能,叉号表示没有) [ 1 ]

   KeMotion 系统都支持哪些类型的机器人呢,见下图。
  

驱动器 KeDrive

  从机械角度看,机器人就是一堆电机加连杆。控制器不能直接控制电机,控制器要通过伺服驱动器才能驱动电机。聪明的 KEBA 不只卖控制器,它还打包连驱动器一起卖,提供全套解决方案。下图红框中的就是 KeDrive 驱动器。红框外的是和 KeDrive 配套使用的控制器(型号是DU,可选配 Intel Core i3 处理器 [ 2 ] )。这样一体化的设计更节省空间。

   当然,用户也可以选用其它厂家的驱动器,KeMotion 目前支持的驱动器厂家见下表,最多支持控制64个轴。如果你的驱动器不在支持列表中,需要联系 KEBA 的售后,店大欺客,这也是不方便的地方。

  
示教器 KeTop 
 
   KeTop 有 T10、T20、T55、T70 等多个型号。以常用的 T70 为例(如下图,设计的真漂亮,欧洲不愧是经历了文艺复兴的地方),它相当于一个平板电脑,采用了ARM Cortex A9 处理器,运行Windows CE 操作系统。用户可以在上面编写机器人的操作程序,设置机器人的示教参数。KeTop 如何与 CPU 模块相连呢?就是普通的网线,这时它们组成了一个局域网,各自有自己的 IP 地址。


  
显示面板 KeView

  KeView 就不细说了,它就是用来监控显示机器人运行状况的各种液晶显示器 ,这个国内用的不是很多。
  
安全软件包 KeSafe

  KeSafe 是针对人机协作设计的安全防护软件。

编程软件部分 

  小气的 KEBA 不肯公开自己的软件,除非你购买它的产品。购买控制器后,在附送的光盘 Kemro Automation 中有开发软件安装程序(Installation)和帮助文档(Documentation),如下图。在安装界面,用户可以安装 KeStudio U3 和 ViewEdit 这两个软件,如果想进行专家级编程,也就是二次开发,可以点击 Expert Installation 安装其它软件。


   KEBA 的帮助文档写的还是挺详细的。点击 Documentation 可以看它提供的各种帮助文档,见下图(先点击左侧的KeMotion,再点击右侧想看主题的 pdf 图标即可看到帮助文档。部分文档我上传到了网盘,点击此处下载)。
  

KeStudio:PLC程序开发软件

  为了控制 KeControl 硬件,我们需要编写控制程序,而 KeStudio 就是用来写代码和调试的开发软件,其界面见下图。我打开了一个软件自带的模板,界面右侧显示的是程序代码。没有用过 PLC 的人可能会觉得陌生,这其实是 PLC 编程语言的风格(一堆大写的IF THEN语句)。用过 Visual Studio 编写 C++ 程序的同志会发现这开发环境的易用性比 VS 差远了。


   KeStudio 是在 CoDeSys 的基础上设计的开发软件。  

CoDeSys 也是一款控制程序开发软件,不过它更像是一只“母鸡”—— 是专门孵化“PLC控制器软件”的软件,这从它的名字就能看出来:Controller Development System。CoDeSys 在 PLC 中的地位就像手机操作系统里的 Android 系统。由于 CoDeSys 完善的功能、开放的设计,同时也为了节约时间和成本,好多厂家都选择在 CoDeSys 平台上搭建自己的开发平台,例如固高的 OtoStudio、倍福的 TwinCAT 2。CoDeSys 的缺点是付费 —— 你需要购买使用许可,而且你每卖出一套产品都要单独交额外的授权费。真是一只下金蛋的母鸡啊!

  难怪 KeStudio 和 CoDeSys 长的那么像,而且使用习惯也类似。点击左侧栏中的 Resources 标签后可以看到 KEBA 为了实现机器人控制提供的一些功能资源,其中比较重要的是一些实现运动控制功能的库文件,我们点击 Library Manager 就能看到 KEBA 都提供了哪些库,点击库的名字可以看到库中包含了哪些具体的功能,比如我们点击 Rc.lib(Robot Control 机器人控制库)后可以看到它里面根据功能的不同进行了分类,进一步点击进去后可以看到以模块的形式表示的功能(这又是PLC的特征)。这些库文件存储在 C:\Kemro\KeStudio V2.3\Targets\KeMotion_CP24xCP25x_02.66\lib 目录下(假设默认安装在C盘),如果用记事本打开后缀名为 lib 的库文件你会发现显示为乱码(只有 McCustomDrive.lib 例外)。这说明 KEBA 不想让别人知道它控制的实现细节,毕竟这可是吃饭的家伙。


   KeStudio 支持哪些编程语言呢?国际标准 IEC61131-3 规定的几种 PLC 语言都可以使用,例如梯形图、ST语言。很遗憾,C++、Matlab 暂时不支持。

为了结束 PLC 厂商各自为战、代码移植性差、互不兼容的混乱局面,国际组织 PLCopen 制定了 IEC-61131 标准,其中的第三部分IEC 61131-3规定了5种 PLC 编程语言(梯形图、功能块图、ST等)的规范和标准术语。值得一提的是,IEC 61131-3 是世界上第一个,也是迄今为止唯一的工业控制系统的编程标准。

  人们设计PLC最初是用来替代繁琐死板的继电器电路的,它们主要用在针对开关量的逻辑控制上,例如打开、关闭阀门、按键互锁等等。为了让缺少编程训练(蠢笨)的现场工程师更容易地使用PLC ,PLC的编程语言故意被设计为简单形象、通俗易懂的图形或文本形式,而且不会涉及复杂的数据结构。排名最靠前的PLC语言——梯形图,连编程语言排行榜前30名都进不了。
  熟悉机器人的同志都知道,机器人控制中可能会用到很多复杂的数值/矩阵计算(比如高级的控制算法、多轴插补、轨迹规划、逆运动学、甚至动力学),牵扯到复杂的流程和高级的数据结构。PLC 的语言是图灵完备的,也就是说其它高级语言能实现的功能,PLC 语言也能实现,但问题是实现起来的难易程度却是不同的。虽然PLC语言在工业控制领域很流行,但机器人控制器厂家为什么要舍弃强大的 C\C++ 等高级语言,而采用PLC语言这类面向逻辑控制、并不高端的语言编写机器人的控制程序呢?
  我个人认为有几个原因:
  1. 它的母亲 —— CoDeSys,使用了 PLC 语言,而且 CoDeSys 提供了 SoftMotion 运动控制软件包,为 KEBA 省去了从零开始编程的麻烦;
  2. 现在工业使用的机器人还很蠢,自己只能完成简单固定的工作,而且用于制造过程时通常需要搭配一些其它的机械,比如传送带。这些外部机械的协同控制就要靠 PLC 了。KeControl 控制器中并没有任何的硬件 PLC,而是用纯软件实现硬件 PLC的功能,这就是现在流行的“软PLC”技术。KEBA 在宣传时也号称自己支持逻辑控制、运动控制、机器人控制;
  3. 虽然 KEBA 号称自己是开放的系统,但“开放”也有程度之分。为了盈利,KEBA不可能将所有代码都开放给用户。用户只需要会配置和使用控制器的上层功能,至于底层的实现细节,对不起是不会开放给用户的。用户既然不能修改底层的程序,那么高级的编程语言自然也就用不到了。
  4. 也最重要的一点:PLC 编程语言号称是“工业控制”的语言,经过这么多年的积累,已经形成了庞大的 PLC 代码资源。就像这篇文章《打破PLC、机器人和运动控制之间的界限》中说的,机器人使用的编程语言往往过于复杂和专业,门槛太高,难以向大多数人群推广。难怪很多的控制器都用PLC语言进行程序的编写,例如:倍福的 TwinCAT、3S的 CoDeSys、固高的 OtoStudio、贝加莱的 Automation Studio,甚至就连大名鼎鼎的 AGV 移动机器人的控制器 NDC 也支持 PLC 编程。大家都选择同一个方向,也就是与 PLC 的国际标准 IEC-61131 保持一致,这绝不是巧合。这个 PLC 国际标准看来真是很重要,不仅统一了逻辑控制,也将运动控制纳入其中。而机器人控制也不过是运动控制的一种,将机器人的控制也纳入到 PLC 的阵营也是顺其自然。


软 PLC 家族

   KeStudio 安装在哪里呢?既然 KeControl 控制器本身就是一个功能完备的计算机,那么我们是不是将 KeStudio 安装在控制器上呢?最好不要。KeControl 控制器上运行的 VxWorks 是一款实时操作系统,而之所以不采用 Windows XP/7、Linux 这样的操作系统是因为它们都不是实时操作系统。机器,尤其是精密运动机器(比如机器人、数控机床),对实时性的要求一般较高。而像 Windows 7 这样的系统是为人设计的,人(闪电侠除外)对实时性的要求并不高,电脑上的程序反应偶尔慢个几十毫秒又不会死人,你甚至根本感觉不到,可是机器如果慢个几十毫秒性能可就大打折扣了。

“实时”的意思是程序必须在规定的时间段(比如10毫秒)内完成给定的周期性任务。也就是说“实时”对程序(执行某个操作)运行的时间规定了上限,绝不允许超时。对于不同的任务这个时间上限并没有固定的值,只要它满足要求我们就可以认为它是实时的。

  像 KeStudio 开发环境这样给人使用、对实时性要求不高的程序没有必要放到实时操作系统上。因此,你需要一台额外的带网卡的计算机(台式机或笔记本),将KeStudio 安装到这台计算机上,计算机通过网线连接到 KeControl 控制器上。用户在 KeStudio 上完成程序的编写并且编译调试无误后即可下载到 KeControl 控制器中。用户编写的程序一旦下载到 KeControl 中,就会被当做一个应用程序,在 VxWorks 操作系统上自动运行。
  一个 KeMotion 控制系统可以实现 PLC 逻辑控制、多电机同步控制和机器人的运动控制。为了进一步搞晕用户,让用户更死心塌地的崇拜 KEBA 的工程师,KEBA又将系统分为 RC 和 PLC 两部分,如下图。你可以认为在 KeStudio 中编写的 PLC 程序是整个系统的主程序,机器人运动程序是作为子程序被调用的。PLC 系统中的 RC Interface 就是用来与机器人运动程序通信的。


KAIRO:机器人操作编程语言

  KEBA 可能嫌五花八门的机器人编程语言还不够丰富,于是又提出了 KAIRO 语言(机器人操作编程语言应该像 PLC 一样也出台一个国际标准,不然的话每个机器人厂家都可以不要脸地定义自己的编程语言,给客户增加学习的成本)。 KAIRO 是面向机器人操作用户(End User)的编程语言,类似于 ABB 的 RAPID 语言(说白了就是给现场的操作工人用的,而不是给工程师拿来开发高级算法的)。在帮助文档 [ 3 ] 中是这样介绍 KAIRO 的:

KAIRO is a programming language designed for machine operators to implement user programs. The language has been kept simple deliberately to make programming machine sequences easy —— without the necessity of a fundamental software engineering education.

  KAIRO的部分指令如下表 [ 3 ] 所示。定义一门机器人编程语言没有什么太难的,这属于上层的编程,一个硕士生就可以做到。因为KAIRO主要是用来控制机器人运动的,我们仔细看看运动控制指令就行了,其它的都是大同小异了。

KAIRO语言编写软件 KAIROEdit

  利用 KAIRO 指令编写机器人的运动控制程序需要在 KAIROEdit 开发软件中完成,KAIROEdit 软件长这个样子:

TeachTalk:二次开发语言

  如果你觉得 KAIRO 的指令集无法满足需求,你还可以自己定义指令集对 KAIRO 进行扩展,方法就是使用 TeachTalk 语言,它是制作 KAIRO 指令的语言。在开发工具 TeachEdit 中利用 TeachTalk 语言就可以编写自定义的指令了(这个过程叫二次开发 [ 4 ] )。 TeachTalk 语言的命令可比 KAIRO 的指令集丰富多了,我就不一一列举了,可以参考文档 [ 5 ]
  使用 KeMotion 的困难之一是要浪费大量的脑细胞去区分各种雷同的软件工具和概念,反正我看到一堆 TeachEdit、TeachView、ViewEdit、TeachTalk 头都大了。另一款运动控制平台——TwinCAT 则聪明的多,所有功能都用一个软件实现,免去了用户记忆大量胡乱定义的名称和概念的麻烦 [ 6 ]
 
参考资料

[1] KeMotion Brochure CN.
[2] KeDrive for Motion catalog EN,p6.
[3] KAIRO Language Reference Programming manual V2.66,p13.
[4] 机器人控制器的二次开发,戴栋,重庆理工大学学报.
[5] TeachTalk Libraries Basic Functions Programming Manual V1.42.
[6] 倍福:打造一体式软件平台,宋慧欣,自动化博览.
  

猜你喜欢

转载自blog.csdn.net/robinvista/article/details/61925002