FPGA_ASIC-一种高精度运动控制器IP核设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种高精度运动控制器IP核设计与实现
闫永志 王宏 杨志家刘鹏
(中国科学院沈阳自动化研究所,辽宁 沈阳 110016)
(中国科学院研究生院,北京 100039)
摘 要:本文提出了一种运动控制器软IP的设计方案,该控制器可以控制4个轴的步进电机或数字伺服电机,可以进行各轴独立的定位控制、速度控制,也可任选2轴或3轴来进行直线、圆弧和位模式插补。文中介绍了其系统结构、基本功能和插补算法。设计最终形成软IP核,并在Xilinx公司的Vertex2系列FPGA 中予以实现和验证。
关键词:运动控制 插补 IP ASIC FPGA
中图法分类号: TN4文献标识码:A
Design and Implementation of High Precision Motion Controller IP
Yongzhi Yan1,2 Hong Wang1 Zhijia Yang1Peng Liu1
1( Shenyang Institute of Automation , Chinese Academy of Sciences, Liaoning Shenyang, 110016) 2( Graduate School of the Chinese Academy of Sciences, Beijing, 100039)
Abstract: This paper designs a motion controller soft IP, it can control 4 axes of either stepper motor or pulse type servo drivers for position, speed, and interpolation. Any 2 or 3 axes can be selected to perform linear, circular, and bit pattern interpolation. We describe structure, function and interpolation arithmetic of the motion controller. Finally, the montion controller soft IP is implemented and verified in Xilinx Vertex2 FPGA.
Key words:motion control interpolation IP ASIC FPGA
1引言
随着计算机、控制理论、微电子等技术的迅速发展,运动控制技术取得了巨大的进步,已成为推动新的产业革命的关键技术。简单地说,运动控制就是对机械运动部件的位置、速度等进行实时的控制管理,使其按照预期的运动轨迹和规定的运动参数进行运动[1]。早期的运动控制技术主要是伴随着数控技术、机器人技术和工厂自动化技术发展而来的。近年来,随着运动控制技术的不断进步和完善,运动控制器作为一个独立的工业自动化控制类产品,已经应用在越来越多的产业领域中。
目前基于PC(Personal Computer)总线的以DSP(Digital Signal Processing)或专用运动控制ASIC(Application Specific Integrated Circuit)作为核心的开放式运动控制技术已经成为主流。将PC 机的信息处理能力和开放式的特点与运动控制器的运动轨迹控制能力有机地结合在一起,具有信息处理能力强、开放程度高、运动轨迹控制准确、通用性好的特点[2]。本设计使用verilog硬件描述语言设计了一种带有通用的PC机总线接口的运动控制器软IP(Intellectual Property)核,并通过FPGA(Field Programmable Gate Array)予以实现和验证。 2系统结构和基本功能
本设计是一个用于实现4轴运动控制的控制器,通过这个控制器可以控制由步进电机或由数字脉冲型伺服电机驱动的4个轴的位置、速度和插补。该系统由5个部分组成,分别是(1)命令/数据处理模块(2)插补控制模块(3)4个轴的运动控制模块(4)中断信号发生模块(5)脉冲分配模块。图1为该运动控制器的系统结构图。
该运动控制器的主要功能如下:
(1)独立的四轴驱动:可以分别控制四个电机驱动轴的运动,四个轴的功能完全相同。
(2)驱动速度控制:驱动脉冲的输出速度可以从1PPS(Pulses Per Second)到4MPPS,每个驱动轴可以进行定速驱动、直线加/减速驱动、S曲线加/减速驱动。
(3)2轴/3轴直线插补驱动:可以选择4个轴中的任何2个或3个轴进行直线插补驱动。
(4)圆弧插补驱动:可以选择4个轴中的任何2个轴进行圆弧插补驱动。
(5)位模式插补驱动:可以选择4个轴中的任何2个或3个轴进行位模式插补驱动。这种插补的数据由上位PC机进行计算,并将结果写入运动控制器,使其在预置的驱动速度下连续输出插补脉冲,这样可以产生任何形状的插补曲线。
(6)16位上位机总线:通过此接口与上位PC机进行数据交换。
Figure 1 Structure of the motion controller
图1 系统结构
3插补模块的设计
该控制器是一个4轴运动控制器,它可以实现任意2轴或3轴的直线插补、任意2轴的圆弧插补和任意2轴或3轴的位模式插补。插补模块的核心部分是直线和圆弧的插补算法的设计,本设计中采用的是一种改进的最小偏差算法,该算法在已有的最小偏差理论[3][4][5][6]上加以改进使偏差公式计算简单、插补精度更高。
3.1直线插补算法
平面上第一象限内的任意直线,已知其起点和终点坐标,直线方程为y = kx的标准形
式。当k < 1时,对于直线上的点,其横坐标大于纵坐标。按朝着偏差减小方向运动的原则,动点的进给只有两种情况:一种是沿x方向进给一步,另一种是沿x,y方向同时进给一步。当k > 1时,对于直线上的点,其纵坐标大于横坐标。因此,动点的进给也有两种情况:一种是沿y方向进给一步;另一种是沿x,y方向同时进给一步。事实上,对于直线斜率k > 1的情况,可以通过将直线方程的x与y的位置互换,变换成x = 1/k×y的形式,使得直线斜率1/k < 1,所以只分析第一象限直线k < 1的情况。
如图2所示,直线OA在第一象限内,其方程y = kx,斜率k < 1。设OA直线上与加工动点P i (x i , y i)相对应的点为P’i (x i , y’i),则加工动点P i (x i , y i)与理想直线OA上对应点P’i (x i , y’i)的纵向偏差为△y = y i – y’i = y i – kx i。
Figure 2 Principle of linear interpolation arithmetic
图2 直线插补算法原理
令偏差判别函数F i =y i – kx i,则:
(1)当F i = y i – kx i> 0时,动点P在直线OA的上方,则向x方向进给一步,有:x i+1 = x i + 1,y i+1 = y i,新偏差F i+1 = y i+1 – kx i+1 = y i – k (x i + 1) = F i – k;