基于FPGA的SpTa自适应电机控制算法

2018-03-11 09:29王岩
科技资讯 2018年25期

王岩

摘 要:针对现有步进电机控制器的不足,设计一种基于FPGA(Field-Programmable Gate Array)的SpTa自适应电机控制算法。本算法通过简单的数学运算和极低的资源占用、利用FPGA并行执行的特点,实现了多轴同步运动、加减速过程加速度可调的自适应电机控制。使用SpTa算法實现加速度自适应的电机加减速运动,具有很好的实用性。

关键词:FPGA 电机控制算法 SpTa 多轴同步控制器

中图分类号:TP18 文献标识码:A 文章编号:1672-3791(2018)09(a)-0011-02

医疗设备、工业设备的运动控制系统中,需要多个步进电机同步多角度的运动,以实现复杂的多方位控制。步进电机的驱动控制常用的有PLC、MUC、FPGA等方式,其中PLC控制成本较高,不适合在低成本的方案中使用,单一MUC无法实现多电机的同步运动,FPGA的并行执行及低成本的特点能很好地实现在低成本方案中多电机的同步运动。

现有的电机控制技术主要通过加减速算法实现步进电机的平滑运动,加减速算法常用的有梯形加减速、S型加减速。梯形加减速算法加速和减速过程中加速度为一个常数,在FPGA上实现该算法的原理比较简单,但是该算法加速不平稳,冲量比较大,运行精度低。S型加减速算法加速和减速过程中加速度按照加加速、匀加速、减加速的过程完成整个变速过程,该算法加速平稳,冲量小,但是加速度时间比较长,在FPGA上实时计算加速过程的加速度计算量大,占用的FPGA资源比较大,耗时比较长,进而影响实时性。

根据FPGA芯片的特点及现有技术的不足,提出一种用于控制步进电机的基于FPGA的SpTa自适应控制算法。该算法在FPGA上使用简单的加、减、移位运算,使用很少的资源实现多个步进电机的同步平稳运动。该算法实现的电机控制可应用于实时性要求比较高的工业控制和自动化领域。

1 电机SpTa自适应算法原理

步进电机的整个运行过程包括空闲(停止)、加速阶段、匀速阶段、减速阶段,当遇到停止信号后,无论是在加速阶段还是匀速阶段,步进电机均需要以当前的速度按照设定的加速度进行减速,直到步进电机停止运动。其流程图如图1所示。

电机控制算法,常见的有梯形加速算法、抛物线加速算法、S型曲线加速算法。这些算法基本是以固定的曲线进行匹配加速,SpTa算法则是以时间计算为中心,根据时间来计算运动步数相关参数,它的做法是将步进电机的运动时间分割成若干个合适的时间片段,在每个时间片段计时达到后,它都将速度参数加到位置参数上,如果位置参数溢出,它就输出一个脉冲,控制步进电机运行一步,速度参数根据加速度参数和时间而改变,随着时间推移,速度参数越来越大,位置参数溢出频率越来越高,则步进电机的运行频率也越来越高。

基于SpTa算法的步进电机加速、匀速运动如图2所示,定义3个32bit的寄存器用于实现数据的累加及判断。在电机运动前,将3个寄存器复位清零,确保加速度和速度均是从零开始累加。

在速度v还未达到预设的Vo时,用于加速度累加的加法器在时间片段达到后对寄存器A的值和加速度值进行累加存入寄存器A中,同时对寄存器A的高12bit值(相当于将A右移20bit或者除以220)进行判断,32bit位置寄存器P主要用于判断速度的累加是否有溢出,通过该寄存器的高12bit是否有溢出来输出步进电机运动的脉冲。在一个时间片段触发到来时,将当前速度寄存器V与位置寄存器P相加,同时将值存储到位置寄存器P中。对位置寄存器P的高12bit进行判断,如果大于等于1,则认为数据溢出,此时产生一次步进电机运动的脉冲,同时将位置寄存器P的高12bit清零,并对电机运动步数进行累加。

根据FPGA芯片的并行运行的特点,“950ns时间片段加速过程”和“20ns时间片段加速过程”可以同时进行运算,且可以在步进电机未完成加速过程时,已经计算出减速过程需要运行的步数。通过这样的方式,可以实现加速和减速过程的加速度的不相同。对于未加入完成及进入减速过程时,此时仅仅需要按照减速过程执行即可。

2 本算法技术带来的有益效果

利用FPGA并行运行特点,结合SpTa算法,通过将算法优化,在FPGA上实现简单、资源占用低的高性能步进电机控制算法,实现了低成本高性能的控制方式。

实现加速和减速过程的加速度可调,可以实现慢速启动,快速停止,提高了灵活性。

利用FPGA并行可实现多个步进电机的同步控制

3 结语

利用FPGA并行运行特点,结合SpTa算法,通过将算法优化,在FPGA上实现简单、资源占用低的高性能步进电机控制算法,实现了低成本高性能的控制方式。

实现加速和减速过程的加速度可调,可以实现慢速启动,快速停止,提高了灵活性。利用FPGA并行可实现多个步进电机的同步控制。

参考文献

[1] 王邦继,刘庆想,周磊,等.步进电机速度曲线的设计与FPGA实现[J].微电机,2012,45(8):67-71.

[2] 张朝晖,陆玉昌,张钹.利用神经网络发现分类规则[J].计算机学报,1999,12(2):108-111.

[3] 陈文伟.决策支持系统及其开发[M].北京:清华大学出版社,2000:12-15.