APP下载

打磨机器人控制器的软件系统设计

2021-11-19游玮崔云从方华杰方明

机器人技术与应用 2021年3期
关键词:内核中断串口

游玮 崔云从 方华杰 方明

(1埃夫特智能装备股份有限公司,安徽芜湖,241000;2 香港中文大学,香港,999077)

0 引言

近年,科技进步不断推动机器人技术的快速发展[1-2]。机器人控制器是机器人的重要组成部分,在很大程度上影响着机器人的发展[3-4]。

传统经济型工业机器人的控制器具有成本高、功耗大等缺点[5-6],不适合中小型移动机器人[7-8]。针对上述问题,本文设计了一种底层控制系统软件,经调教,能满足埃夫特品牌所有机器人控制器运算能力强、实时性好等要求,且具有占用内存小、模块化设计等优点。

1 系统方案设计

底层软件设计的主要工作是编写相关硬件驱动。驱动包括示教盒与主控制器两部分,基于实时性要求不同,两者分别采用uc/os和linux操作系统。示教盒与控制器关系,如图1所示。

图1 示教盒软件与控制器软件关系图

2 Boot Loader设计

Boot Loader作用是引导加载内核程序。由于RS232串口传输速度慢,不适合大文件下载,而Uboot具有基于TFTP协议的以太网下载模式,极大提高了下载速度,因此选择Uboot作为Boot loader。在启动Uboot时,需要设置参数、传输文件和PC主机通信。示教盒的启动流程如图2所示。

图2 示教盒核心板软件启动流程图

3 内核驱动设计

内核驱动是软件底层核心部分,用户调用驱动程序控制硬件,硬件利用程序进行反馈。控制器包含CAN、RS232、RS485、AD和DA通信总线,各总线需要相应驱动程序。

3.1 RS232驱动

本文提出用RS232C,该通信标准于1969年由美国电子工业联合会发布,其通信形式分为零Modem和Modem两种。本文采用零Modem与计算机串口通信,传输距离15m,波特率195200bps。AM3517有4个串口,其中前三路UART接口的IRQ(中断)指向MPU系统,第四路UART不具有IRQ(中断)功能,不作为实时串口使用。AM3517串口功能模块具体线路如图3所示。

图3 AM3517串口功能模块

RS232驱动模块分为初始化、发送数据、中断接收函数三个部分。初始化函数第一步为设置串口,例如设定中断号、优先级和服务子程序等;第二步至第六步分别为清空寄存器,关闭FIFO,设置波特率,设置EFR寄存器,接收中断,设置EFR转为正常模式。接收函数指中断服务子函数,发送函数将数据写入寄存器里,通过判断语句进行判断,结合AM3517手册,初始化函数框架图如图4所示。

图4 初始化函数框架图

3.2 RS485驱动

选用RS485接口可以显著提高RS232的传输速度,具有传输距离长、稳定性好的优点。为满足AM3517对于485接口的需求,本文将MAX3485芯片转成RS485通信格式,使用RS232进行驱动,如图5所示。

图5 485转换电路

3.3 CAN驱动

CPK(CAN Protocol Kernel)接收消息,接收控制单元选择信息储存位置。控制单元通过检查信息状态、标识符和面具(mask)决定邮箱地址,将信息过滤在第一个邮箱。管理单元通过网络计数器。控制信息的传输与接收。在规定时间内,若没有接收信息将产生报警。

AM3517的CAN总线通信原理如图6所示。

图6 CAN总线控制图

CPU将数据存储并发送邮箱,RAM读取数据和标识符后,若TRSn被设置,信息将按优先级发送。优先级由寄存器(CANMCF)中TPL位决定。CPU完成数据读取后,将中断CPU接收信息。比较mask与标识符,若相等,则RAM将接收标识符、控制位以及数据字节;反之,则不会存储。CPU读取数据后,RMPn将被重置。

3.4 SPI驱动

AD/DA的芯片通过SPI(Serial Peripheral Interface)总线与AM3517通信,且SPI属于串行总线式协议,故通过调用AD与DA中的驱动即可实现目标要求。主机将时钟信号发送给从机,可进行同步化处理。

3.5 驱动测试

即通过RS232驱动测试函数。外部发送RS232数据给控制器,系统读取后,根据ServerStub.c文件的指令列表,选择执行Comm.c文件函数,最后通过rs232.文件函数,将数据发送给外部232接收器。该函数由判断和功能句两部分组成,具体关系如图7所示。

图7 测试函数

在图7中,{“ts232”,(CommFunc) testRS232,(CommFuncHelp) WeldTestHelp}为指令列表函数,主要对Comm.c文件函数起选择作用。void testRS232(int argc,char *argv[],int whichUart)为执行函数,通过判断是否进入1通道RS232测试。count=Rs232_1_GetStr(testbuffer_1)函数可以获取外部发送到232中的缓存数据。Rs232_1_SendStr(testbuffer_1)函数将数据发送给外部232接收器。

3.6 内核设计

uc/os是开源系统,便于开发人员下载源码,具有执行效率高、占用空间小、实时性和扩展性强等特点。基于uc/os系统,本文根据机器人相关要求设计内核。内核启动流程主要包括汇编启动程序、系统初始化、Main程序初始化和任务分配运行四个部分,如图8所示。

图8 内核启动流程图

在图8中,汇编启动程序引导内核运行启动、中断向量表及跳转主程序;系统初始化指对板级系统设置,如系统时钟等;Main程序初始化则是初始化各个设备驱动;任务分配运行由任务分配初始化与任务运行两部分组成,具体如图9、图10所示。

在图9中,SYS_TASK负责根文件、内存变量、机器人相关变量的初始化、读取配置文件、判断示教盒有无且决定是否通信;WatchprocessorTASK负责串口监视,执行当前工作状态;接收串口命令和打印信息;InterpTASK进行插值和计算目标位置,在手动关节插补体现;AnalyzeTASK负责示教模式下的自动计算运行位置;PlcSecondTASK通过PLC处理I/O口信息;ServoProcessorTASK处理伺服反馈信息。

图9 任务启动流程及优先级

基于时间片轮番调度法,任务运行模块对初始化任务按优先级调度。任务进入就绪状态后,通过任务调度运行。其中,若有中断或其他任务进入,则执行相应程序。指定时间或反馈信息到达后,暂停任务继续执行。同时,也可在运行中删除任务,让其进入休眠状态。任务转换如图10所示。

图10 任务转换图

4 结论

本文针对打磨机器人对控制器运算能力强、实时性好等要求,设计机器人控制器软件系统,再根据系统总体方案,分别对Boot Loader设计和内核驱动进行设计,并对内核驱动进行详细说明。本文设计的机器人控制器软件系统,可用于经济型打磨机器人,对其他品牌产品具有一定参考性。

猜你喜欢

内核中断串口
强化『高新』内核 打造农业『硅谷』
浅谈AB PLC串口跟RFID传感器的通讯应用
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
微生物内核 生态型农资
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索