工业机器人控制系统架构

本文比较了机械臂和移动机器人两种工业机器人的控制系统方案,对其特点进行了介绍。
以上分类是根据应用对象,此外,市面上更多的是通用型运动控制器,即控制非标设备的。
1 控制器底层方案
1.1 机械臂类
机械臂类的控制器发展较早,相对成熟,先来看看现有的控制系统底层方案。
1.2 移动机器人类
移动机器人的控制器属于较新的方向,工业移动机器人有agv、无人驾驶工程机械等形式,控制系统底层方案如下:
1.3 对比
机械臂对精度和运动稳定性的要求较高,因此计算量大、周期短,比移动机器人一般要高1到2个量级。移动机器人一般对同步精度要求不高,其配置相对较低。
机械臂一般工作于固定的区域,其控制器通常放置于机箱内,因此防护等级不高,一般是ip20。
移动机器人由于需要经常运动,尤其是室外工程机械,要考虑防水防尘,其防护等级较高,一般是ip67。
2 codesys介绍
2.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.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]。
2.3 codesys的缺点
codesys给我们开发控制器带来了便利,省去了从零开始的麻烦,但是依靠codesys这类商业软件开发自己的控制器产品也存在不少的缺点:
(1)底层算法不公开
codesys集成的运动控制组件、总线协议栈都是封装好的,用户无法了解其内部细节,也无法针对自己的具体需求进行定制优化,只能简单地调用。用户只能依附于codesys平台,难以形成自己的核心技术。
(2)功能有限,难以扩展
现在以机器视觉、人工智能、自动驾驶等为代表的新技术突飞猛进,而工业控制上的很多技术仍然停留在20年前。以移动机器人中的导航场景为例,基于视觉或者激光的导航方法需要采集大量的数据并对其进行处理,其中涉及相当多的矩阵计算。
而现在plc只能进行落后的一维数字计算,难以实现复杂的算法。与人工智能圈子喜欢开源的风格正好相反,工业控制圈子相互封闭,谁都不肯开放自家的函数库,开源函数库极少(oscat),就连最基本的滤波算法、矩阵计算都要自己从头开始写。而且,国际标准提供的基本函数太过有限,完全无法适应新的场景,急需扩展。
(3)难以更新
由于完全依赖codesys,客户自己产品硬件的升级换代需要重新定制移植,导致成本增加。
3 开源方案
目前存在一些开源的控制系统方案,例如beremiz、orocos、openplc、openrtm、orca。
开发机器人控制器是个繁重的工作,要明确一系列性能要求,首先是实时性。
实时性对于工业机器人来说一般是必须的,对于服务或娱乐机器人则未必。一般人很容易错把“实时性”理解为处理或者响应速度快,但是其实“实时性”表示时间上的“确定性”,例如实时操作系统(rtos)中的中断响应或者进程切换的延迟时间一定是在一个时间范围内。
我们常用的操作系统(windows、linux)都不是实时操作系统,因为它们设计的初衷是吞吐量,不能保证每个事件都在一定范围内得到处理。再比如,标准以太网的传输速度比实时工业以太网快多了,但是它也却不是实时的,因为它同样不能保证数据在给定的时间内完成传输。
理解实时性不太难,可是机器人哪些的任务需要实时运行呢?如何根据机器人的性能要求确定程序运行的时间间隔呢(是1ms还是10ms)?实时性取决于硬件还是软件呢?
如何根据实时性选择具体的软硬件呢(该选择arm还是x86、linux rtai还是vxworks)?网上缺少这方面的深入讨论,各大机器人厂家也不会公开自己的测试和试验结果,似乎这方面主要依靠经验和试错。
这里我也只能提供几个指标,目前工业机械臂的控制周期是1ms左右,性能较高的伺服驱动器位置环的控制周期可以达到125[math processing error] mu sμs。
plcopen定义了伺服和运动控制的一些标准,包括编程语言、运动控制基础函数块(function block)、输入输出接口的参数等[math processing error] ^{[3]} 
[3]具体的实现代码细节,这个是由各个厂家提供的。


曝三星与谷歌正合作开发定制处理器 将基于三星 5nm LPE 工艺制造
X-ray无损检测技术在环保领域的应用有哪些?-智诚精展
路易威登推出旗下2019年款的智能手表 外观由LV设计
启用IoT的应用如何影响用户体验
StarVR推出新一代VR头戴式设备:搭载集成眼动追踪,能够提供接近完整人眼视角
工业机器人控制系统架构
浅析RFID技术在成品油配送行业的应用
传感器行业半年报 | 融资远超30亿,吸金能力哪家强?
韩国反击!6万亿韩元发展半导体材料
三菱plc编码器测速原理
基于Altera浮点IP核的浮点矩阵相乘运算的实现和改进设计
爱立信与希腊运营商COSMOTE达成合作,向其提供5G RAN产品和解决方案
超20个半导体项目在列,江苏省科技成果转化专项资金拟立项目公示
博特激光:专注各类激光打标机设备应用多行业打标
小米6配置再曝光,但貌似要延后发布
媒体聚焦丨瑞萨电子:工业物联网生态建设如何成熟?落地难点何在?
华为宣布正式启动欧洲无线工厂
开关电源带载测试方法是什么?怎么测试?
直流电弧炉炼钢技术及系统设计方案分析
关于五大传感器市场发展趋势的详细分析