《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于DSP和FPGA的多轴运动控制系统设计
基于DSP和FPGA的多轴运动控制系统设计
来源:电子技术应用2013年第3期
马汉波,颜钢锋
浙江大学 电气工程学院,浙江 杭州310027
摘要: 传统的机器人运动控制器都是采用PC+运动控制卡的方法,成本较高。提出了一种基于DSP和FPGA的通用型运动控制系统,大大降低了系统成本。利用FPGA内部生成的双端口RAM作为DSP与上位机之间的缓冲区,同时采取串行转并行的策略,简化了系统的布线。在DSP上实现了直线与圆弧插补算法以及逆运动学的求解,并进行了仿真。仿真结果表明,系统能够按照预定轨迹运动,同时各轴的速度变化也较平稳。
中图分类号: TP242.2
文献标识码: A
文章编号: 0258-7998(2013)03-0034-03
Multi-axis motion control system based on DSP and FPGA
Ma Hanbo,Yan Gangfeng
College of Electrical Engineering,Zhejiang University,Hangzhou 310027,China
Abstract: Traditional motion controllers for robots make use of PC and motion control board, which cost much. This article presents a generic motion control system,which saves cost. DPRAM implemented in FPGA is used to transmit data between DSP and upper computer. FPGA also converts data from serial to parallel and simplify the routing of board. The algorithm of curve interpolation and inverse kinematics is simulated on DSP. The result shows that this system works properly and the speed of each axis changes smoothly.
Key words : multi-axis motion control;DSP;DPRAM;interpolation

    工业机器人的控制系统是其核心主体,控制算法的好坏直接关系到整个机器人的运动效果。最早的机器人多采用封闭式的结构,即每个厂家针对自己的机器人开发了专用的控制系统,且系统的接口没有开放给用户,不具有通用性,给以后的扩展和升级造成了很大的困难[1]。因此,如何使机器人控制系统能够很方便地进行重构,在从一套控制系统换成另一套控制系统时,尽可能少做改动[2],已经成为目前一个研究的热门方向。对于这种开放式系统,目前比较主流的构架是PC+DSP运动控制卡。PC主要负责整个系统的管理以及人机交互界面的运行,DSP运动控制卡则实现插补算法和对伺服驱动器的操作。这种方法的优点是可以利用现成的运动控制卡。但是,这些板卡的价格一般都较高,而且附带了许多针对数控的功能模式,同时,它们还必须搭载PC环境,这对需要考虑成本和灵活性的情况不适用。因此,本文提出了一种基于浮点数DSP的多轴机器人控制系统解决方案,为系统的小型化和廉价化提供了可能,具有很高的实用价值。

1 系统硬件设计
1.1 总体架构

    系统设计的难点在于逆运动学求解和插补算法的实时处理。为此,系统选用了具有快速计算能力的DSP处理芯片TMS320F28335作为核心单元。该处理器是TMS320C28X系列浮点DSP控制器,具有32位浮点处理单元,相对于单片机和ARM而言,在处理器结构和指令系统方面都针对数学运算进行了优化,特别适合于机器人复杂的控制算法。
    另外,运动控制系统还需要连接伺服控制器来控制各关节的电机,以实现机器人的高精度定位。一般伺服控制器都提供了大量的I/O信号,如速度控制信号、异常报警信号、禁止信号等。通常,机器人的每个轴都需要单独的伺服控制器,系统必须具有数百路I/O口来控制电机。考虑到DSP的I/O口数量十分有限,系统搭载了一块FPGA进行底层的逻辑操作。这里采用的是Altera公司Cyclone II系列的EP2C5Q208,该芯片能够提供142路的I/O口,内部还有大量的逻辑单元,可以满足系统要求。针对这种构思,给出系统的原理框图如图1所示。

 

 

1.3 DSP与上位机(ARM)数据的交换
    运动控制系统的指令是由ARM给出的,需要一种快速的数据交换机制。常规的通信方法有两种。第一种是ARM通过串行总线的方式直接将数据传送给DSP。由于机器人控制指令包含空间位置和姿态,一般都较长,如果采用直接传输的方式,其准确性和同步性很难保证。第二种是采用双端口RAM的方法,利用两套完全独立的数据线、地址线和读写控制线,允许ARM和DSP同时对该存储器的不同单元进行访问。但是,外扩的双端口RAM需要大量的地址线和数据线,对电路板的布局提出了很高的要求,同时芯片也消耗了大量的I/O口,这对系统的扩展是不利的。
    本系统采用的方案是利用FPGA来存储机器人运动控制指令。EP2C5Q208芯片内部存在大量的M4K内存单元,利用Altera的IP核可以将这些内存单元配置成双端口RAM。同时,利用FPGA强大的逻辑能力,可以实现串行与并行之间的转换。
1.4 伺服驱动器控制电路
    对于多轴运动控制系统,每一轴都需要连接伺服控制器。伺服控制器的调速通常为方向加脉冲的方式。即用一路信号的方向来表示正转和反转;另一路信号每发出一个脉冲,伺服电机旋转一拍。常见的伺服控制器控制电压为24 V,它们和FPGA进行通信时必须进行电压转换。考虑到还需要对数字芯片的I/O口进行保护,因此采用了光耦隔离电路,其接口电路如图3所示。

  
    有了前三轴的角度,可以很方便地计算后三轴的转角[4]。由于TMS320F28335配备了支持浮点的寄存器和流水线,所以所有的运算都可以在浮点环境下进行。只要利用TI自带的浮点库,即可在DSP上实现机器人的逆运动学求解。经过实际测算,由DSP求逆解计算所引起的末端轨迹偏差在0.1 mm以内,精度可以满足要求。
2.2 插补算法
    本系统主要完成直线和圆弧插补功能。即利用曲线上两端点(直线)或三点(圆)的位姿矩阵,针对运行速度和插补周期,得到运行路径上各点的姿态位置。
    具体的算法是利用几何的方法直接求取曲线上点的坐标作为该点机器人末端的位置。末端姿态则采用线性化的方法,把曲线首端和尾端两点的姿态向量差根据当前速度均匀地匹配到插补的每一步[5]。速度控制采用S曲线加减速的方法,能够使速度和加速度曲线都平滑过渡,减小机械冲击[6]。在两条曲线交界处,速度的方向会有瞬变,进而产生很大的加速度,对结构造成冲击。对此,每次需要读取两条指令,通过判断两条曲线的夹角来计算得到拐角处的速度。若设系统最大加速度为Amax,则有如下计算公式:
    
    可见该运动控制器已经能够很好地实现简单路径以及其组合的行走,并可以实现两段路径之间的平滑过渡。此时各关节的角加速度如图5所示。

    由此可见,系统能够按照预定的轨迹运行,并且各轴的关节速度都平稳变化。利用CCS软件还可以观察执行一次插补所需要的时间。实际测量得到的结果是:直线插补部分消耗时钟周期15 761个,圆弧插补部分则需要17 591个时钟周期。由于DSP的时钟频率为150 MHz,因此最长需要的插补时间是117 μs,小于0.2 ms。而若采用一般的PC+运动控制卡的方法,每一次插补所需时间则需要分成两部分:一部分是插补算法本身所消耗的时间,另一部分是从上位机通过总线传送给DSP的时间。这两项都需要大量的时间。而且由于带Windows操作系统的PC机实现精确计时的能力是很弱的,因此一般的做法都是预先计算出多步的数据,然后一次性地放在运动控制卡的缓存中,让运动控制卡定时取数。这样又会给速度的实时控制带来很大的困难。
    因此,本系统所采用的构架利用DSP进行插补运算,不但节约了缓存设备容量,而且不需要中间的传输环节,对系统的实时性有很大的提高。
    本系统以浮点数DSP芯片TMS320F28335为核心,以EP2C5Q208 FPGA为辅助器件,实现了多轴机器人的运动控制器,整个系统具有小型化、成本低、实时性好的特点,有很大的实际意义。
参考文献
[1] 谈世哲,梅志千,杨汝清.基于DSP的工业机器人控制器的设计与实现[J].机器人,2002,24(2):134-139.
[2] 赵春红,秦现生,唐虹.基于PC的开放式数控系统研究[J].机械科学与技术,2005,24(9):1108-1113.
[3] 蔡自兴.机器人学基础[M].北京:机械工业出版社,2009.
[4] SPONG M W,HUTCHINSON S,VIDYASAGAR M.Robot dynamics and ntrol[M].Wiley,2005:85-92.
[5] 叶伯生.机器人空间三点圆弧功能的实现[J].华中科技大学学报,2007,5(8):5-8.
[6] 张得礼,周来水.数控加工运动的平滑处理[J].航空学报,2006,1(1):125-130.

此内容为AET网站原创,未经授权禁止转载。