基于μC/OS-III的工业机器人嵌入式实时控制系统*
2015-11-03何明超曹其新冷春涛
何明超,曹其新,冷春涛
(上海交通大学机械与动力工程学院机器人所,上海 200240)
基于μC/OS-III的工业机器人嵌入式实时控制系统*
何明超,曹其新,冷春涛
(上海交通大学机械与动力工程学院机器人所,上海 200240)
针对工业机器人控制系统的发展趋势和国内运动控制器的落后现状,提出了一种以μC/OS-III实时操作系统作为软件平台的机器人控制系统。该系统采用单处理器架构,利用嵌入式高性能MCU给控制系统提供运算和接口通讯保障,系统软件采用模块化设计,各模块分配不同的优先级,利用μC/OS-III强大的任务管理功能来保证系统的实时运转。利用μC/OS-III提供的API,采用标准C语言进行编程,可以任意添加和删除任务模块,具有很好的开放性和拓展性,用户可以方便的自定义控制系统功能和控制算法。通过实验验证,基于μC/OS-III的工业机器人嵌入式实时系统能够满足工业机器人对实时性的要求。
μC/OS-III;机器人控制系统;实时系统
0 引言
控制系统是工业机器人的核心部分,是决定工业机器人性能的重要因素。我国工业机器人研究起步较晚,经过几十年的发展,已经攻克了工业机器人的一些关链技术,研制出适用于搬运、焊接、喷涂等多种工作的工业机器人。然而,国产控制器与国外产品还有较大差距,国内研制的控制器多为PC+运动控制卡结构[1-2],这些控制器往往结构复杂,可靠性较差,且价格昂贵。面对已经来临的工业4.0时代[3]和智能工厂的发展方向,工业机器人控制系统已经朝着嵌入式、开放化、低成本的方向发展。国外厂商走在了前面,KUKA公司于2011年推出的新一代控制器KR C4[4],采用多核处理器和软件功能来取代具有很大使用限制性的专用硬件,具有绝对的开放性和未来的兼容性[5]。
与此同时,工业机器人正朝着高速、重载方向发展,要求控制器需要有很好的硬实时性,硬实时操作系统成为控制器软件部分必须采用的操作系统。KUKA公司的机器人控制器采用了VxWin实时操作系统来实现系统硬实时控制[6],保证机器人系统的可靠性。在国内,μC/OS-II系统也被应用于工业机器人控制器中[7]。
随着近些年微控制器的飞速发展,开放ARM Cortex内核、集成DSP功能、同时拥有许多外设、更多的I/O引脚、能够满足不同的接口和总线并具有信号处理能力的微控制器为单一处理器芯片结构的机器人嵌入式控制器提供了可行性。相比使用PC架构的机器人控制器[8-9],嵌入式控制器拥有更低的成本,更简单可靠的结构、更小的体积和发热。利用实时操作系统和MCU配合,开发适用于机器人控制的软件和算法,这是国内机器人控制器一个可行的发展方向。
本文介绍一种基于Micrium公司新一代嵌入式实时操作系统μC/OS-III的开放式工业机器人控制系统。该系统硬件使用ARM Cortex-M4架构的高性能MCU作为唯一处理器,不需要其他处理器进行相关运算,系统架构简单且成本较低。系统软硬件均采用模块化设计,有很好的实时性、可扩展性和开放性。
1 控制系统结构
工业机器人控制系统是一个多任务并行并具有很高实时性的系统。目前主流控制系统大致分为两种结构[10]。一是多处理器主从式的控制系统。主机一般为IPC,使用INTEL的CPU,运行的是非实时操作系统,例如windows。在主CPU中主要运算一些非实时任务。从机可能是运动控制卡或运动控制器,负责执行伺服控制等实时性高的任务,其CPU一般为嵌入式的DSP,负责复杂的信号处理和伺服控制等运算,再加上FPGA芯片负责系统I/O信号处理。第二种系统结构是单处理器配合实时操作系统。在这种控制器中,所有的任务都要在一个CPU上进行,这就对各个任务如何合理使用CPU时间提出了很高的要求。一开始的机器人多采用单个处理器,但由于当时处理器性能不高,且不能运行实时操作系统,难以满足对机器人实时性以及复杂的伺服控制的要求。所以随着时间的推移,多处理器结构占据了主流。近年来,嵌入式实时操作系统的发展给单机处理器完成机器人控制任务提供了可能。通过实时操作系统对所有任务进行CPU时间分配,达到多任务并行处理的效果和极短的中断响应时间,可以达到机器人控制需求。
本文开发的工业机器人控制系统中的运动控制器是采用上述第二种结构,采用意法半导体公司的STM32F4高性能MCU作为控制器处理器,以嵌入式实时操作系统μC/OS-III作为软件平台,在系统中加入不同的任务模块,完成对四轴搬运机器人的运动控制。μC/OS-III是Micrium公司推出的第三代实时操作系统[11],不同于前一代μC/OS-II,专门对Cortex-M4内核CPU进行优化,能够利用Cortex-M4的NVIC实现硬件级的中断响应。同时,能够实现1ms的系统时钟节拍,具有抢占式和时间片轮转任务切换,支持无限个进程优先级,能够以最短的时间进入中断,每个任务之间的切换时间为微秒级别。同时它采用标准C语言进行编写,方便用户进行编程,任务增减和算法修改。工业机器人控制系统结构如图1所示。
STM32F4是采用当下最高性能的Cortex-M4微控制器内核的MCU,通过MCU自身具有PWM波形生成功能的定时器生成PWM互补信号,发送给伺服驱动器来控制伺服电机;通过带有增量编码器接口功能的定时器计算驱动器返回的增量编码器AB向脉冲信息,由此可计算得到电机每个时刻的位置、速度、加速度信息;通过拥有5V容忍的I/O引脚处理机器人系统数字输入信号以及给机器人系统发送数字输出信号;通过MCU自身的A/D外设将传感器信号转为MCU可以识别的数字量;通过MCU的USART外设与示教器进行串口通信。此外,MCU提供的CAN总线和Ethernet接口使机器人系统具有可拓展性,可以连接其他各种设备进行通信。由于STM32F4自身带有的多种外部设备和相当数量的I/O接口,不需要再添加其他的外设芯片便可以满足一台工业机器人的控制需要。大大减少了控制器结构的复杂程度,降低了成本。
控制系统对输入数字信号的处理和伺服电机的控制等都在μC/OS-III中编写用户应用代码来完成。要使用μC/OS-III,首先要完成μC/OS-III在STM32F4上的移植。这其中涉及对源代码中与CPU相关的代码的修改,包括μC/OS-III中CPU相关代码和μC/CPU中相关代码。移植好后,通过系统配置模块来给μC/ OS-III相应模块和用户代码文件进行参数设置,便可在μC/OS-III系统下,利用μC/OS-III提供的丰富的API函数来编写用户任务代码。BSP文件包含控制板上所有外设的初始化,这样用户才能使用这些外设来输出输入相应的信号。对用户代码,即软件结构的分析将在下一节进行。
这样,系统软硬件架构都是具有模块化和开放性特征,便于修改和升级。
图1 工业机器人控制系统结构
2 控制系统软件结构
在实时操作系统中,需要把要完成的工作分为多个任务来实现。每个任务负责其中一部分工作,由μC/OS-III负责多任务的管理。每个任务都调用μC/ OS-III的APIOSTaskCreate()来创建。创建一个任务时,系统为每个任务分配了一个任务控制块(TCB)、一个堆栈、一个优先级和其他一些重要参数。任务一般设计为无限循环类型任务,每个任务必须调用μC/OSIII的服务函数,使该任务进入等待某个事件的状态。机器人系统需要有中断处理,每个中断服务程序都按照μC/OS-III中中断函数进行定义。各个任务和中断服务程序间通过系统信号量OS-SEM和消息队列OSQ等进行通信。利用实时操作系统的任务调度来实现任务的合理分配,满足系统硬实时性要求和多任务并行的要求。
机器人控制系统会有很多中断请求,比如USART接收到数据、以太网控制器接收到数据帧、ADC转换器完成传感器信号转换等,这些外设会向系统请求中断,系统会在极短的时间内挂起当前运行的任务,进入中断服务程序。每个中断服务程序将给不同的任务发布信息,使等待该中断的任务进入运行态。
整个控制系统软件是采用模块化的编写,用户可以很方便增减模块,修改软件功能。整个控制系统的软件结构如图2所示,每个矩形框代表一个模块。
图2 系统软件结构
本文的控制系统软件是用一台四轴工业机器人的具体应用作为示范。由上图可知,软件在运行时,每个系统周期触发一次系统节拍中断,系统中断将使能系统状态监控、系统状态显示和增量编码器信号处理等任务。通信中断服务负责接收由示教器或者远程主机下发的数据帧,并交给任务定义代码进行数据帧的解析,从而得知用户希望机器人控制器进行的任务,如系统初始化、系统参数设置、原点复位、数据记录、手动示教和自动码垛等。轨迹规划任务负责对码垛机器人在抓取点和码垛点之间的运动轨迹进行规划,规划好的轨迹会发送给伺服控制任务,伺服控制任务负责四轴电机的闭环控制,使电机精确跟随规划好的轨迹进行运动。外部中断服务主要是响应数字输入口的信号变化,外部中断服务将触发报警任务、模式切换任务等。
每个任务模块根据重要性不同分配不同的优先级。例如系统状态显示任务不需要很高的实时性,给予其较低的优先级;伺服控制任务是极其重要的任务,决定了机器人的运动速度和精度,给予其较高的优先级。机器人系统运行时出错必须急停,所以报警急停任务使用最高优先级。
对于其他用途的工业机器人,系统软件结构与本文结构并无太大差别,用户自行增减任务和修改算法便可实现对不同机器人的控制。
3 系统实时性分析和性能测试
对于工业机器人系统朝着更高的运行速度和精度发展的趋势,每个关节间电机运动的同步性、电机运动轨迹的精确性、对系统中断的响应速度都非常重要。这就意味着控制系统需要很高的实时性,系统软件必须对相关任务进行快速计算,并且任务之间的切换也要非常快。
不同的任务被赋予不同的优先级,在每个系统周期内,先执行优先级高的任务,再执行优先级低的任务。一旦有中断服务程序,CPU正在执行的任务将被挂起,先执行完中断服务程序。如果中断服务程序使另一个更高优先级的任务进入就绪态,则先执行该任务,后执行被中断的任务。最后回到最低优先级任务。
评定实时操作系统性能的好坏,具体指标通过任务切换时间、中断响应时间,任务执行时间等进行评定。在本文介绍的控制系统中,系统时钟节拍设定为为1ms,在一个系统节拍内,典型的软件执行时序如图3所示。
图3 控制系统典型时序图
图3中,A为系统空闲任务,空闲任务执行时间越久说明CPU使用率越低;B为时钟节拍中断;C为时钟节拍任务;D为系统状态发送任务;E为串口接收中断,接收上位机下发的指令;F为系统消息队列;G为电机运动任务,负责闭环控制,1ms发送一次指令至驱动器。
对于系统代码执行时间的测量,μC/OS-III提供了简单且精确的函数OS-TS-GET(),此函数可以记下当前处理器的时间戳。在需要测量的代码前后记录下时间戳,二者的值之差为处理器在这段时间使用了多少个时钟周期,对于本文使用的处理器,时钟周期为1/ 168000000s。将测量的时间通过串口返回到上位机,可以得到,A到B的中断响应时间为1μs左右,A到D的时间为5μs左右,C到D的任务切换时间为1μs左右,G任务代码执行时间为10μs左右。对于目前工业机器人中断响应不超过500μs的需求,本控制系统能在10μs内执行完中断服务并使能相关任务,完全满足需求。对于1ms的伺服控制周期来说,本系统10μs内便能发送四路电机的速度指令,每路电机运动的时间差可以忽略,可认为电机实现了同步运行。同时,在测试时,通过μC/OS-III内嵌测试功能得到的CPU使用率未超过5%,说明了MCU性能足以保证机器人正常运作,同时有足够能力运算更复杂的控制算法。
4 结束语
本文提出的工业机器人实时控制系统采用μC/ OS-III实时操作系统和单MCU结构,利用该实时操作系统API进行各个任务模块定义,通过实时内核的任务调度和中断处理为系统硬实时性提供了保障,通过MCU强大的运算功能保证了电机运行同步性。同时整个软件系统采用标准C语言进行编程,方便用户添加删除模块,具有可拓展型和开放性。
[1]陈曦,余超,彭鑫,等.基于DSP的四轴台式工业机器人控制器的研究与设计[J].湖南理工学院学报(自然科学版),2012,25(3):67-68,88.
[2]蓝培钦.码垛机器人控制器系统软件的设计和研究[D].上海:上海交通大学,2010.
[3]Kagermann H,W Lukas,W Wahlster.Industrie 4.0:Mitdem Internet der Dinge auf dem Weg zur 4.industriellen Revolution[J].VDI nachrichten,2011.13.
[4]http://www.kuka-robotics.com/china/zh/products/controllers/kr-c4/
[5]自动化变得简单化—库卡发布新一代机器人产品[J].中国包装工业,2011(9):70,72.
[6]张凤霞.集成VxWorks和Windows的中间件VxWin[J].今日科苑,2007(02):55.
[7]陈友东,王田苗,魏洪兴.工业机器人嵌入式控制系统的研制[J].机器人技术与应用,2010(5):10-13.
[8]张广立,付莹,杨汝清,等.基于Windows NT的开放式机器人实时控制系统[J].上海交通大学学报,2003(5):724-728.
[9]张明勇.基于Windows/RTX的码垛机器人控制系统软件设计[D].上海:上海交通大学,2013.
[10]刘志伟.四轴工业机器人嵌入式运动控制器的设计[D].哈尔滨:哈尔滨工业大学,2012.
[11]Labrosse J J.μC/OS-III:The Real-Time Kernel and the Texas Instruments Stellaris MCUs[M].Micrium Press,2010.
(编辑 赵蓉)
An Industrial Robot Embedded Real-Time Control System Based onμC/OS-III
HE Ming-chao,CAO Qi-xin,LENG Chun-tao
(Research Institute of Robotics,School of Mechanical Engineering,Shanghai Jiaotong University,Shanghai 200240,China)
A robot real-time control system based onμC/OS-III is developed in order to follow the tendency of industrial robot control system and to give domestic controller manufacturer a new way to develop new controllers.The system uses only one Cortex-M 4 MCU to provide enough computing power and communication interfaces.The software system is developed in modules;each module has its own priority.Using μC/OS-III's powerful task management function to guarantee the system's real-time characteristic.User can modify the system's function and algorithm conveniently usingμC/OS-III's APIs and ANSIC.The system has good openness and expandability.The control system can meet the real-time requirements of industrial robot through experiments.
μC/OS-III;robot control system;real-time
TH166;TG659
A
1001-2265(2015)06-0049-04 DOI:10.13462/j.cnki.mmtamt.2015.06.014
2014-08-23
上海市科学技术委员会科研计划项目(12111101002)
何明超(1990—),男,广东高州人,上海交通大学硕士研究生,研究方向为工业机器人运动控制,(E-mail)hmcsuperls@126.com。