美章网 资料文库 工业机器人嵌入式实时控制系统范文

工业机器人嵌入式实时控制系统范文

本站小编为你精心准备了工业机器人嵌入式实时控制系统参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

工业机器人嵌入式实时控制系统

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文件包含控制板上所有外设的初始化,这样用户才能使用这些外设来输出输入相应的信号。对用户代码,即软件结构的分析将在下一节进行。这样,系统软硬件架构都是具有模块化和开放性特征,便于修改和升级。

2控制系统软件结构

在实时操作系统中,需要把要完成的工作分为多个任务来实现。每个任务负责其中一部分工作,由μC/OS-III负责多任务的管理。每个任务都调用μC/OS-III的APIOSTaskCreate()来创建。创建一个任务时,系统为每个任务分配了一个任务控制块(TCB)、一个堆栈、一个优先级和其他一些重要参数。任务一般设计为无限循环类型任务,每个任务必须调用μC/OS-III的服务函数,使该任务进入等待某个事件的状态。机器人系统需要有中断处理,每个中断服务程序都按照μC/OS-III中中断函数进行定义。各个任务和中断服务程序间通过系统信号量OS_SEM和消息队列OS_Q等进行通信。利用实时操作系统的任务调度来实现任务的合理分配,满足系统硬实时性要求和多任务并行的要求。机器人控制系统会有很多中断请求,比如USART接收到数据、以太网控制器接收到数据帧、ADC转换器完成传感器信号转换等,这些外设会向系统请求中断,系统会在极短的时间内挂起当前运行的任务,进入中断服务程序。每个中断服务程序将给不同的任务信息,使等待该中断的任务进入运行态。整个控制系统软件是采用模块化的编写,用户可以很方便增减模块,修改软件功能。整个控制系统的软件结构如图2所示,每个矩形框代表一个模块。本文的控制系统软件是用一台四轴工业机器人的具体应用作为示范。由上图可知,软件在运行时,每个系统周期触发一次系统节拍中断,系统中断将使能系统状态监控、系统状态显示和增量编码器信号处理等任务。通信中断服务负责接收由示教器或者远程主机下发的数据帧,并交给任务定义代码进行数据帧的解析,从而得知用户希望机器人控制器进行的任务,如系统初始化、系统参数设置、原点复位、数据记录、手动示教和自动码垛等。轨迹规划任务负责对码垛机器人在抓取点和码垛点之间的运动轨迹进行规划,规划好的轨迹会发送给伺服控制任务,伺服控制任务负责四轴电机的闭环控制,使电机精确跟随规划好的轨迹进行运动。外部中断服务主要是响应数字输入口的信号变化,外部中断服务将触发报警任务、模式切换任务等。每个任务模块根据重要性不同分配不同的优先级。例如系统状态显示任务不需要很高的实时性,给予其较低的优先级;伺服控制任务是极其重要的任务,决定了机器人的运动速度和精度,给予其较高的优先级。机器人系统运行时出错必须急停,所以报警急停任务使用最高优先级。对于其他用途的工业机器人,系统软件结构与本文结构并无太大差别,用户自行增减任务和修改算法便可实现对不同机器人的控制。

3系统实时性分析和性能测试

对于工业机器人系统朝着更高的运行速度和精度发展的趋势,每个关节间电机运动的同步性、电机运动轨迹的精确性、对系统中断的响应速度都非常重要。这就意味着控制系统需要很高的实时性,系统软件必须对相关任务进行快速计算,并且任务之间的切换也要非常快。不同的任务被赋予不同的优先级,在每个系统周期内,先执行优先级高的任务,再执行优先级低的任务。一旦有中断服务程序,CPU正在执行的任务将被挂起,先执行完中断服务程序。如果中断服务程序使另一个更高优先级的任务进入就绪态,则先执行该任务,后执行被中断的任务。最后回到最低优先级任务。评定实时操作系统性能的好坏,具体指标通过任务切换时间、中断响应时间,任务执行时间等进行评定。在本文介绍的控制系统中,系统时钟节拍设定为为1ms,在一个系统节拍内,典型的软件执行时序如图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语言进行编程,方便用户添加删除模块,具有可拓展型和开放性。

作者:何明超 曹其新 冷春涛 单位:上海交通大学 机械与动力工程学院机器人所