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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

工业机器人嵌入式实时操纵系统

1操纵系统结构

工业机器人操纵系统是一个多任务并行并具有很高实时性的系统。当前主流操纵系统大致分为两种结构[10]。一是多处理器主从式的操纵系统。主机一般为IPC,使用INTEL的CPU,运行的是非实时操作系统,例如windows。在主CPU中主要运算一些非实时任务。从机可能是运动操纵卡或运动操纵器,负责执行伺服操纵等实时性高的任务,其CPU一般为嵌入式的DSP,负责复杂的信号处理和伺服操纵等运算,再加上FPGA芯片负责系统I/O信号处理。第二种系统结构是单处理器配合实时操作系统。在这种操纵器中,所有的任务都要在一个CPU上实行,这就对各个任务如何合理使用CPU时间提出了极大的要求。一开始的机器人多采纳单个处理器,但因为当时处理器性能不高,且不能运行实时操作系统,难以满足对机器人实时性以及复杂的伺服操纵的要求。所以随着时间的推移,多处理器结构占据了主流。近年来,嵌入式实时操作系统的进展给单机处理器完成机器人操纵任务提供了可能。通过实时操作系统对所有任务实行CPU时间分配,达到多任务并行处理的效果和极短的中断响应时间,能够达到机器人操纵需求。

操纵系统对输入数字信号的处理和伺服电机的操纵等都在μ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的伺服操纵周期来说,

相关文档
最新文档