您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于FPGA的伺服驱动高精度位置反馈研究
基于FPGA的伺服驱动高精度位置反馈研究潘宇皮佑国摘要:伺服驱动向CNC反馈进给伺服系统的位置量时,由于电机编码器脉冲量到CNC脉冲量的转换存在量化误差,多个周期就存在积累误差。本文提出一种以CNC脉冲当量的一半为量尺的方法,以减法代替出发得到反馈脉冲量和误差,保证了每一周期的反馈量小于一个脉冲当量。在每一次计算电机编码器测得的位置量时考虑误差,从而保证了积累误差小于一个CNC脉冲当量,实现了高精度位置反馈利用Actel公司的软件LibroIDE及其产品APA400对该方案进行了仿真和实验,并给出了仿真、实验结果。关键词:FPGA;高精度位置反馈;量化误差,积累误差0引言在数字位置伺服系统中,CNC的位置和速度设定指令常以脉冲形式给出,以脉冲数量来表示伺服轴的进给位置,频率表示进给速度。将进给脉冲量折算到伺服轴的位移的比例称为电子齿轮比,它与机床的螺距有关。在间接位置闭环的系统中,进给轴位置和速度反馈,常利用安装在电机轴上的旋转式光电编码器来测量,并将其转换成与给定脉冲当量相同的量反馈给CNC,以实现对位置、速度的监控以及位置、速度运行轨迹等的显示。CNC脉冲当量与光电编码器的脉冲当量的比值称为分频比,也有文章称为分周比。图1分频比功能示意图如图1所示[1],CNC、电机和编码器、机械减速器、丝杆都是独立的功能部件,因此电子齿轮比FGK和分频比DFK为因机床不同而不同,而在机床安装时在CNC上设定。实际运行中从电机编码器到CNC脉冲的转换就存在量化误差,即编码器的脉冲量除以分频比可能为小数。每次转换的量化误差又会产生积累误差。如何保证此每次转换的量化误差小于一个脉冲,且在持续分频的过程中累积误差也小于一个脉冲当量,是高性能数控伺服驱动必须解决的问题。有人利用整数分频来合成,控制整数分频器的分频比按一定规则变化,以此在效果上达到小数分频,但容易出现毛刺,而且不同的小数分频时误差出现的形式和位置也不尽相同,对于小数位数越多的小数分频,此方法对硬件资源的要求就越来越高【2】【3】【4】。本文尝试提出一种新的方法,姑且称为丈量法。其基本思想是,对于一个采样周期内编码器的脉冲增量,用半个CNC脉冲对应的编码器脉冲量作为量尺,将丈量次数除2后作为反馈脉冲量,并将余差留待下次考虑,从而实现小数分频,并且保证了对误差的要求。本文的结构是先介绍丈量法原理,然后说明程序实现的步骤,接着给出在FPGA中实现的实例,并且给出仿真。1丈量法原理设CNC通信周期1t内编码器增量为1n,周期2t内编码器增量为2n,如图2所示。图2丈量法误差示意图1t周期内,1n和DFK满足如下关系式:1111.......22eNKnKnDFDF(1)式中,1N为整数商,1e为余数。规定1N为奇数的时候多发半个脉冲,则有反馈脉冲量N和反馈脉冲量误差E满足:)(21)(2{1111为奇数为偶数NNNNN(2))(1/)2((1/2{1111为奇数为偶数)NKeKNKeEDFDFDF(3)2t周期内,编码器的增量2n需要考虑上一次遗留的余数进行调整:为奇数)(为偶数112112'22/)({NeKnNennDF(4)按照此递推关系:在第it周期内,编码器的增量考虑1it次遗留的误差进行调整:为奇数)(为偶数1111'2/)({iiDFiiiiiNeKnNenn(5)则在it周期内,余数ie、N、E为:)/2('DFiiKnMODe(6)DFiiKenN/)(2'(7))(1/)2((1/2{为奇数为偶数)iDFiDFiDFiNKeKNKeE(8)由此可见,第it周期的计算中,已经考虑上一次遗留误差,所以算法的积累误差均不超过一个脉冲。2程序实现第一步:计算采样周期it内的编码器增量in。在绝对式编码器里面,in为当前位置信号与上次位置信号之差,正负号代表电机旋转方向。如果是增量式编码器,可以利用计数器对周期内的脉冲量进行计数,并且通过脉冲的相位判断方向。第二步:求反馈脉冲次数N与余数ie。因为小数分频比一般都在FPGA或者CPLD里面计算,所以需要考虑硬件资源的要求。以FPGA为例,首先,FPGA处理不了小数,另外,即使是做整数的除法,也非常费力耗时。为此,编程实现丈量法的时候,可以考虑用减法代替除法求N。并且可以把计算用到的数字,根据DFK的位数z,乘上z10,全部化为整数计算。以本论文的实验平台为例:读数时钟为5M,电机最高转速为3000p/min,编码器分辨率为1131072P,1072.13DFK,按照最高转速,周期内最大编码器增量MAXn为:131072051*60min/3000*1310721MPPnMAX(9)最大反馈脉冲MAXN为:10131072100001072.13MAXMAXMAXnnN(10)因此,在周期it内,最多占用10次时钟周期做10次减法,即可完成丈量法的计算,相对做除法来说,更加方便快捷。同时,13107210000*DFK避免了对小数的计算。第三步:发送脉冲与方向信号。此步骤可以根据CNC的要求,设定反馈脉冲的宽度和占空比,保证在此周期里面脉冲能够发送完毕。在实际的编程中,应该加入对上述三步骤的保护,只有上一个步骤结束以后,下一个步骤才会开始,这样可以避免因为不同步骤使用同一个参数而产生的未知错误。3FPGA实现分频比功能在FPGA中可以利用下面三个模块来实现,其原理图如图3所示:三个模块分别是:读取位置信号模块DS,小数分频比实现模块DF,正交序列生成模块OSG。读取位置信号模块DS根据BISS传输协议[4]从绝对式编码器发过来的50位数据包code50中读出17位的地址编码code17,锁存并提供给DF模块。小数分频比实现模块DF对17位的地址编码code17进行方向判断以及小数分频,产生方向信号DIR和分频以后的脉冲PUL,提供给状态机模块OSG。状态机模块OSG对方向信号和分频过后的脉冲进行处理,利用输入脉冲沿触发内部状态机进行状态转换,根据输入的方向信号判断要跳转的状态,从而产生两列相差90°的正交差分脉冲序列'A和'B,反馈给CNC。根据程序结构图,采用VHDL语言,在Actel公司的LIBRO8.6软件中编写程序,创建原理图如下:图4FPGA程序原理图4仿真实验研究4.1分频比功能仿真因为DS模块的输入是50位的串行编码,不便于仿真,且此部分程序较为简单,本文未提供仿真结果;另外OSG模块的详细介绍以及仿真,在参考文献[1]中有详尽描述,此处只给出了DF模块的仿真。在DF模块的仿真中,特别考虑了换向、抖动、最大转速、最小转速等情况,仿真图如图4:OSGDFDSCode50Code17Code17PULDIRDIR’PUL’A’B’图3分频比功能的原理框图图4DS模块仿真如图,第4、5、7、8、10周期模拟换向,此时DIR方向根据CODE的值发生了变化;第6、10周期模拟电机抖动,因为余数RESIDUE没有超过131072,所以即使CODE发生了变化,也没有脉冲输出,CODE发生抖动的现象在使用高分辨率编码器的时候很明显,这里得到很好的解决;第9个周期模拟电机最大转速,即一个周期最大输出10个脉冲的现象,可见当前设置留有较多裕量,完全能够满足一个周期里面完成三个步骤,即使出现50%以上的峰值,也还是能够准确响应;最低转速显然为周期内无脉冲输出,与抖动类似,不再赘叙。另外,从图上还可以看出,脉冲输出并没有均匀分布,这是因为本实验平台的CNC对接收的脉冲并无此要求,如果要在要求脉冲均匀分布的应用场合,可以在程序的第三步骤对输出脉冲进行设置。4.2工作时序除第一个周期对变量进行清零以外,从第二个周期开始,每个周期执行三个步骤。程序里面用ACTIVE_1、ACTIVE_2、ACTIVE_3控制对应步骤,如ACTIVE_2=1表示程序正在运行第二步骤,第二步骤结束时,ACTIVE_2=0并且ACITVE_3=1,激活第三步骤。图5采样周期内步骤工作图此程序目前已在实际应用平台上面准确、稳定运行。5结论在高精度位置伺服系统中采用丈量法(减法)代替分频(除法),得到反馈脉冲的整数和误差,从而保证了两列脉冲量分频转换的量化误差小于一个脉冲当量。在后续电机编码器增量计算中计入上一次误差,从而消除前次误差的积累,保证了积累误差也小于一个脉冲当量,实现了该精度的位置反馈。参考文献:[1]张士雄,皮佑国.基于FPGA的伺服驱动器分周比设计与实现[J].现代电子技术.2009,(13):113-115.[2]毛为勇,祁中洋,王兰.基于FPGA的任意小数分频器的设计[J].桂林航天工业高等专科学校学报.2009,(1):30-32.[3]白莹杰,杜建铭,罗一星.基于FPGA的脉冲分频技术研究[J].微计算机应用.2010,(31):67-71.[4]BISSinterfacespecifications[5]安川电机.∑—Ⅲ系列SGM/SGDS用户手册[z].2006.
本文标题:基于FPGA的伺服驱动高精度位置反馈研究
链接地址:https://www.777doc.com/doc-2569626 .html