DIY编程器网

标题: 基于DSP的伺服运动控制器研究与开发 [打印本页]

作者: liyf    时间: 2012-1-27 14:07
标题: 基于DSP的伺服运动控制器研究与开发

                      1 引 言
  运动控制器是数控机床、机器人等一类机电一体化设备中常用的核心运动控制部件。现代数控技术对运动控制系统的开放性、实时性、加工速度和精确度等性能指标提出了越来越高的要求。随着集成电路技术、微电子技术、计算机技术不断发展,运动控制器已经从以单片机、微处理器和专用芯片作为核心的运动控制器发展到基于PC机平台的以数字信号处理器(DSP)和复杂可编程逻辑器件(CPLD)作为核心处理器的协处理架构的开放式运动控制器。这种将P C机的信息处理能力和开放式的特点与运动控制器很强的运动轨迹控制能力有机地结合在一起,具有信息处理能力强、开放程度高、运动轨迹控制准确和通用性好的特点。这种模式在一个统一的人机对话平台上,通过DSP算法和CPLD配置进行适当的调整来实现不同的硬件功能模块,可以方便地和多种类型的驱动器进行连接。因此现在基于PC的新一代运动控制器成为控制系统的主流和发展方向。
  本文开发的开放式运动控制器以PC机为平台,完成坐标变换、轨迹规划、粗插补运算等控制指令的设置和发送,同时可以实时显示当前伺服系统的运动位置、速度和电机状态等参数。运动控制器以DSP芯片作为核心处理器,完成数据处理和控制算法、进行保护中断的处理,通过PCI或USB总线与PC机实时通讯。CPLD芯片作为协处理器完成编码信号的采集,鉴相处理,对脉冲和模拟量进行配置和输出,把DSP处理过的控制数据经过内部转换送到外部设备,并管理DSP和各种外部设备的接口。该运动控制器可以完成非匀速比同步运动控制,支持NURBS插补,并提供了丰富的动态链接库函数。
  2 运动控制器工作原理和硬件构成
  该控制器可实现四路编码器反馈和电机控制,其核心是TI公司的TMS320LF2407数字信号处理芯片和ALTERA 公司的MAX 7000S系列CPLD器件EPM7128SLC84。控制器的硬件结构如图1所示。DSP完成与上位机的实时通讯,对伺服电机速度和位置的精确控制,电机状态监测和外部信号检测等功能。双口SRAM(DUAL-PORT STATIC RAM)不仅提供控制器与上位机的通讯接口,而且还为运动轨迹控制提供了足够的缓冲区。由于一片DSP只提供两组正交编码脉冲(QEP)电路,对于多于两个电机的控制器,若用多片DSP不仅会造成DSP资源的浪费,而且还会增加由于协调DSP之间的工作而产生的难度,因此这里我们用CPLD来提供另外两组正交编码脉冲电路,对速度、位置进行采样,同时用CPLD提供高速稳定的其它逻辑控制电路。
  




  位置环的计算公式为:



为第n个采样时刻的累积误差值;Vt为当前目标速度;Kvff为速度前馈增益;At为当前目标加速度;Kvff为加速度前馈增益;Kp、Ki、Kd分别为比例、微分和积分增益。
  4 Matlab仿真及结果分析
  基于KLD-200二维数控平台进行仿真。平台由两个Panasonic公司的MSMA012A 1E伺服电机及配套的MSDA013A1A驱动器进行控制。电机最高转速为3000RPM,功率1 00W,增量式编码器,2500P/r,丝杠导程为4mm/r。取Kp=100、Ki=12、Kd=2进行仿真。Y轴电机速度曲线与余弦曲线类似,跟随误差曲线如图3所示。无前馈情况下电机跟随误差从开始的63个脉冲在0.137秒后上升到114个脉冲,随后作类似余弦曲线的变化。引入前馈后,跟随误差从开始的63个脉冲迅速上升到109个脉冲,然后逐渐下降,在大约0.2秒后稳定在±2个脉冲之间。可见,速度和加速度前馈大大减小了系统的跟随误差。利用自己开发的运动控制器对数控平台反复进行控制实验,效果良好。梯形曲线控制实验中,设定加速度为10rev/s2,目标速度300RPM,位移120mm。到达目标速度后,驱动器显示的电机速度波动范围在±2RPM之间。利用VC的OnTimer()函数实时获取位置信息并进行显示,可以看出,到位后的最大超调量约为5~10个脉冲,稳态误差在±2个脉冲之内,小于1mm。
  





  5 结束语
  本运动控制采用基于DSP和CPLD的硬件方案充分发挥了DSP芯片实时高效的处理能力,系统设计合理,可以实现变传动比的电子齿轮和多轴插补功能。控制器采用了基于速度和加速度前馈的PID调节和NURBS插补等先进理论,实验和仿真结果表明,该运动控制器实时性好,控制精确度高,跟随误差小,理论跟随误差小于2个脉冲,位置控制误差小于1mm,可以满足高速高精度加工的要求。
            




欢迎光临 DIY编程器网 (http://www.diybcq.com/) Powered by Discuz! X3.2