1引言
运动控制卡是一种基于工业PC机、用于各种运动控制场合(包括位移、速度、加速度等)的上位控制单元,而插补模块是运动控制单元不可缺少的。本文所设计的基于PCI总线的DSP运动控制卡,可完成数控系统中实时性要求较高的插补、位置控制、实现数控系统中多轴联动的插补计算、位置控制等功能。传统的插补器一般都具有直线和圆弧的插补功能,使用不同算法处理直线、圆弧、螺旋线运动。使用这种方法并非所有的控制特征被编程到每种插补类型,而添加一种新的插补类型需要大幅度改动软件结构。而该DSP运动控制卡的插补器采用基于非均匀有理B样条NURBS的通用插补器,把所有编程的插补类型转换为公共的数学表达式,使所有的功能不依赖于编程类型。通用插补器是一种能准确表达曲率的插补模型,能够精确表达出各种曲线、曲面的轨迹。基于NURBS原理的通用插补器模型包含任何曲线、曲面,所有传统的插补类型(直线、圆弧)也不例外,克服了传统插补器的缺点,提高了控制精度。
2运动控制卡的硬件设计
运动控制卡的硬件设计基于PCI总线规范,采用DSP和FPGA的结合,再配以其它辅助电路,可适用于各种PC机及其兼容机系统,其硬件方框图如图1所示,以下分别介绍图1中各芯片功能及其在该硬件电路中的作用。
核心处理器DSP:TMS320LF2407a是TI公司专为电机控制和其他控制系统设计的DSP[1]。主要完成位置速度PID控制,插补迭代运算,开关量输入和输出以及程序和数据存储和上下机的通信。
模拟量控制电路:将速度信号数字量用数据线接4路12位数模转换芯片DAC7625,将数字信号转换为-10~10V的模拟信号,输出接模拟信号输入的电机伺服驱动模块。
反馈电路:在大多数运动系统中,采用光电编码器作为闭环控制的反馈元件。光电编码器输出的是两组相位相差90°的脉冲信号A和B, 先将信号差分整形以消除干扰信号的影响,然后对A、B两相信号进行四倍频,同时进行鉴相确定出DIR,根据DIR对四倍频的脉冲进行加计数或减计数。计数器和位置捕捉寄存器均为32位,DSP可对其进行读取或清零。
通讯电路:通过PCI接口从模式3.3V芯片PLX9030和双口RAM芯片70V24与PC机的PCI总线相连,可以进行高速数据传输。其中双口RAM70V24作为上下机交换数据公共缓冲区。70V24芯片具有8个异步仲裁标志位,更好地保证双方对数据的准确操作。另外,使用FPGA芯片FLEX10KA来实现PLX9030对双口RAM70V24的时序转换。
开关量电路:包括通用16/16通用I/O点、能使4个电机输出,4个轴左右的极限输入和原点中断输入。
3运动控制卡的插补计算
数控系统中插补的作用是读取用户程序经解释器解释之后的位置指令,由轨迹的起点、终点、轨迹的类型、轨迹的方向,计算出轨迹运动的各个中间点坐标。插补程序在每一个插补周期算出坐标轴在一个周期中的位置增量,由此位置增量算出坐标轴相应的指令位置,作为位置闭环控制系统的输入[2]。该DSP运动控制卡中,设计一种基于NURBS原理的通用插补器,下面简要说明NURBS的原理。
一条曲线的形状由控制点的位置决定,在任意时刻t,曲线的位置为各个控制点加权平均值。离控制点越近,加权值越大,反之越小。一条K 次NURBS 曲线可以表示为一分段有理多项式矢函数:
其中,Bi(i= 0,1,…,n)为控制点, 每个控制点附有一个权因子Wi(i=0,1,…,n),首末权因子W0,Wn>0,其余Wi≥0,Ni,k为K次规范B样条基函数.
U=[u0,u1,…,un+k+1]称为节点矢量。以三次NURBS曲线为例,即k=3时,第i段曲线可以写成下列矩阵形式:
其中 ,
由于控制顶点及权因子均已知,则Y0、Y1、Y2、Y3、Y0’、Y1’、Y2’、Y3’与参数无关,可在插补计算之前预先算出,插补计算时只需计算插补变化量Δt,从而大大加快了计算速度。
在参数空间,曲线上插补点的参数可由二阶泰勒级数表示为:
ti+1= ti+T·t`+(T2/2)·t(2)+O(T2) (3)
其中,T为插补周期,t`,t(2)分别为参数对t的一阶和二阶导数。若以一阶差分代替微分,将
代入公式(3),整理可得参数快速递推公式,用以预估新插补点的参数:
i+1=2.5ti-2ti-1+0.5ti-2 (4)
基于上述算法可进一步推导NURBS插补的误差,加减速控制等算法,从而完善运动控制卡的NURBS插补运算功能。
插补子程序流程如图三所示,具体插补过程包括以下几个步骤:
1) 设定参数初始值,在选取t2点时,需要对插补步长进行预算,在满足弓高误差、进给速度、进给加速度的约束 条件时才可采用、否则需进行校正。
2) 预估插补参数,得出预估参数后需取t的整数部分来确定取哪一段曲线的Y系数数组,这里0≤ti≤n,若ti超出n则说明该曲线已到尽头 这时插补参数应取为n,取第n-1段曲线的Y参数数组,实际插补参数取值为1。
3) 根据预估插补参数计算预估插补点Fi+1,预估插补步长Li。
4) 求期望步长,需要先分别根据弓高误差、进给速度、进给加速度的约束条件算出各自步长,然后取其最小值即为期望步长。
5) 根据希望步长计算插补偏差,判断插补偏差是否符合精度要求,若符合则该插补点即为所求,否则需对其进行校正。
6) 确定符合要求的插补参数后,计算新插补点,并算出各轴增量。
当运动控制系统的精度要求较高时,仅根据进给速度及插补周期生成插补轨迹是不够的, 需要进一步对步长进行调整,方法是在插补中实时监控插补弓高误差的大小,当误差在允许误差范围内时,仍按瞬时进给速度计算进给步长Li,若误差超出了允许范围,则按允许误差求取约束插补步长。此外,为了获得更好的速度稳定性,应直接以弦长速度为控制目标,为了满足式(2) 的新插补点Fi+1,本文采用基于参数递推预估与校正的参数曲线插补算法,它不仅计算速度快,而且可避免其他插补算法所需的曲线求导等复杂计算。
4结束语
NURBS曲线插补具有极大的优越性,程序量小,实时性高[3],但是由于NURBS
曲线所具有的有理形式分段参数方程使曲线的轨迹及其导数、曲率等计算异常繁琐,因而需要通过适当的插补预处理,运用基于预估与校正的插补策略以及合理的近似计算等措施,有效地简化了插补过程中的轨迹计算,避免了对曲线的直接求导和曲率半径等复杂计算,确保了插补算法的良好实时性。
根据上述算法,在上位机用VC++实现上层控制,通过PCI总线和双口RAM芯片与DSP交换数据,用DSP语言实现下层插补算法,利用DSP的高速运算能力和和实时信号处理能力,在芯片粘片机的运用中取得了良好的效果,使该运动控制卡能够满足运动控制系统中高速高精度的要求。