第一篇:步进电机三轴联动的快速加减速算法研究
步进电机三轴联动的快速加减速算法研究
摘要:加减速控制是数控系统的关键技术,对提高数控系统的精度及速度有重要的意义。提出了一种步进电机三轴联动的快速加减速算法--动态查表法,该算法结合DDA 插补算法,可以用普通的单片机实现多种加减速曲线的运动控制,具有运算速度快、精度高等优点。引言
步进电机具有快速启停能力强、精度高、转速容易控制的特点。但是,步进电动机应避免转动速率的突变,而且从停止到开始转动有一个较低的起动频率,随后才可以平缓地过渡到较高的转速。相应地在步进电机制动时,也应该平缓过渡。如果由于启动和停止控制不当,步进电机会出现启动时抖动和停止时过冲的现象,从面影响系统的控制精度[1][2][3]。为避免这种情况的发生,要对步进电机进行加减速控制。加减速控制是数控系统的关键技术,对提高数控系统的精度及速度有重要的意义。加减速控制也得到了广泛的研究与应用。
目前国内外步进电机加减速控制曲线主要包括三种[4]:直线型加减速速度曲线(也称为梯形曲线)、指数型加减速曲线、S 型加减速曲线。控制算法主要有查表法和插补迭代法。查表法的原理是设置一张时间间隔表,表中的每一项都对应一个转速,时间间隔按一定的规律变化 [1]。插补迭代法的原理是根据前一步的基准点速度和加、减、匀速状态来确定当前步的基准点速度[4][5]。
这两种控制算法都有各自的适用范围,查表法适用于单轴的加减速控制,具有算法简单、快速的特点,但不能适用于多轴联动。插补迭代算法适用于高精度的控制,算法复杂,对处理器的要求较高,一般需要用到DSP 等高档处理器[4]。本文结合两种算法的优点,设计了一种“动态查表法”来实现三轴联动的快速加减速算法。动态查表法即有查表法简单、快速的特点,又能够用一般的单片机来实现高精度的多轴联动加减速控制。动态查表法
根据线性插补原理,各插补轴的位移与速度比相等。在加减速过程中,各插补轴的速度、加速度分别与合成的速度、加速度对应成比例[5]。当对合成速度按某种加减速方法进行加减速时,各插补轴在保证空间轨迹的同时,也应按相同的加减速方法进行加减速。查表法具有简单、快速的特点,但查表法必须事先确定一张加减速的速度表格,不能按比例应用到多轴联动的场合。本文的思路是结合数字积分法,在加工某条线段前先按比例快速计算好相应的速度表格,再用查表法来完成加减速控制,即“动态查表法”。
数字积分法,也称 DDA(Digital Differential Analyzer),它是建立在数字积分器基础上的一种插补算法,其最大特点是易于实现多坐标插补联动[6]。每一轴设置一个累加器,三轴联动需要设置三个累加器,每进行一次插补,对三个累加器分别累加。哪一轴的累加器有溢出则该轴延迟一个定时周期进给一步(注:本文中的“进给一步”代表发一次脉冲的高电平或低电平,两次“进给一步”代表一个完整的脉冲)。在实际应用中,会设定一个较大的整数N,一般是2m,本文设置的是0x8000,即215。当累加超过该数时,视为溢出。相应的,根据单片机的定时周期,加工速度将折算成两个整数用于实际的插补运算,一个整数是n,代表过n 个定时周期进给一步,另一个是dn,代表累加数,当dn 累加到达N 时,延迟一个定时周期进给一步。则:
V 代表的是指定的加工速度,做加减速控制的加速过程需要将速度从起跳速度按照一定的曲线加速到V,减速过程需要将速度从V 再减到起跳速度。
本文设计了一系列速度档位,最低档位就是起跳速度,然后逐步增加到V,每档速度同时对应一个脉冲数组,及走过多少脉冲后切换到另外一个速度档位。脉冲与速度构成的曲线可以是梯形曲线、指数型加减速曲线或S 型加减速曲线。每个速度档位都按照相同的比例缩小速度V,三轴都按照相同的比例,就满足了线性插补原理,可以在保证空间轨迹的同时,各轴按照相同的加减速方法进行加减速。但计算速度档位必须在加工线段前进行,而且不能有除法运算,否则一般的单片机难以达到实时性的要求。按一定的比例缩小V 必须用到除法,要避免除法运算就只能采用移位运算来代替。由式(1)~(3)可知,k 与V 成反比,而n 和dn 分别对应k 的整数和小数部分。假设要得到Vp/q 对应的n 和dn,其中p、q 都是自然数且p 本文设计的速度档位因子分别是:1/16, 1/8, 1/4, 2/5,1/2, 2/3, 4/5, 8/9, 共八个档位。对精度要求高的还可以设置更多的档位。确定速度档位因子后,就可以通过一系列的移位指令来计算Vp/q 对应的n 和dn,以4/5 为例:计算步骤如下: n=ctrlDatas[i].n5;/⁄ctrlDatas[i].n 是给定速度对应的n,5 也可以用左移位+加法代替 ns[j]=n>>2;//ns[j]是每个速度档位对应的n,>>2 代表除以4 dns[j]=(ctrlDatas[i].dn5)>>2;/⁄dns[j]是每个速度档位对应的dn dns[j]=dns[j]+((n & 0x3)<<13);//将n 的余数补充到dn ns[j]+=dns[j]>>15;//将dn 对应的整数部分补充到n dns[j]=dns[j] & 0x7FFF;//取余数 可见通过一系列的位运算和加法运算实现了各速度档位的计算,而且精度非常高。实验证明,常规的单片机完全可以达到实时性的要求。动态查表算法描述 动态查表算法有两部分,一是加工前计算各档位速度vc,另一个是实时的加减速控制rtvc。 下面分别描述。 3.1 算法vc,用于加工线段前的预处理,计算各轴各档位速度对应的n 和dn: (1)求最长轴所在的索引longestIndex。本文将三轴分别编号成0,1,2,分别代表XYZ三轴,最长加工轴代表该轴加工速度最快,以该轴为基准进行加减速,其他轴同步按比例进行加减速 (2)如果最长加工轴的加工脉冲小于系统指定脉冲,以系统指定的低速进行加工,清除加减速标志,不进行加减速控制。算法结束,否则转第(3)步 (3)如果某轴的速度低于指定速度,该轴不进行加减速控制,全部按照指定速度进行加工。算法结束,否则转第(4)步 (4)按照第2 节的速度档位划分及移位算法计算各轴各档位速度对应的n 和dn。算法结束3.2 算法rtvc,用于实时加减速控制,根据发出脉冲计数进行相应的加减速控制: (1)如果有加速标志,代表还需要进行加速控制,转第(2)步,否则转第(5)步 (2)如果最长加工轴的加工脉冲超过某档位对应的脉冲数,转第(3)步,否则转第(5)步 (3)如果达到最大档位,代表已经完成加速,设置各轴实时n 和dn 为指定正常加工速度V 对应的n 和dn,清除加速标志,转第(5)步。否则转第(4)步 (4)设置各轴实时n 和dn 为对应加速档位速度对应的n 和dn (5)如果有减速标志,代表需要进行减速控制,转第(6)步,否则算法结束 (6)计算最长加工轴距离加工终点还有多少脉冲pulse (7)如果pulse 小于某档位对应的脉冲数,转第(8)步,否则算法结束 (8)如果达到最大档位,代表已经完成减速,清除减速标志,算法结束,否则转第(9)步 (9)设置各轴实时n 和dn 为对应减速档位速度对应的n 和dn。 算法结束算法 rtvc 的流程图如图1 所示,算法vc 的流程图省略。 算法 vc 只需要在加工某线段前执行一次,而算法rtvc 用于实时加减速控制,需要在单片机的主循环里面反复调用,但由于调用rtvc 前速度表格已经计算好,只需查表即可,因此算法的实时性非常好。 在实际的加工程序中,除了增加以上两个算法之外,还是按照常规的DDA 算法进行积分插补,按照常规判断加工终点到达等等,不再赘述。总结 动态查表法用到的表格有两个,一个是切换各档位速度需要走过的脉冲,另一个的各轴各档位速度对应的n 和dn。后一个表格是动态计算生成的。调整前一个表格可以实现不同的加减速曲线,因此动态查表法可以实现各种加减速曲线,根据实际加工情况自由选择,而不需要增加算法复杂度。同时,计算各档位速度对应的n 和dn 只需要进行一系列的位运算和加法运算,一般的单片机即可达到良好的实时性。 动态查表法已经在数控点胶机上得到了很好的应用,实践表明,用一般的ARM 芯片完全满足了实时性和高精度的要求。动态查表法同样可以应用到其他多轴联动运动控制场合。 本项目目前出于市场推广阶段,已经创造经济效益100 多万元。 作者创新点:本文设计的步进电机三轴联动快速加减速算法-动态查表法还没有文献记载,属作者原创。该算法可以实现不同的加减速曲线,具有简单高效的特点,用普通的单片机即可达到良好的实时性。