本发明涉及三次多项式s曲线加减速的加加速度递归计算限制方法,属于数控技术领域。
背景技术:
数控技术中使用s曲线加减速方式能够有效地减小振动。三次多项式s曲线加减速的速度曲线为三次,加速度为二次曲线,加加速度为直线形式,能够保证加加速度没有阶跃。但三次多项式s曲线加减速方式的特征中有其固有的局限,即加速度与加加速度数值从0增加,在加速或减速的中间达到最大值,在加速与减速的末尾再减小到0,如图1a~图1f所示。
本文中加速度使用a表示,加加速度使用jerk表示。
图1a~图1f中,加速或减速的整体时间越短,a变化率就越大,jerk的最大值也会越大。如果jerk的最大值太大,则加减速过程同样产生振动,与直线加减速没有区别。因此改变a的变化率太大的加减速过程,减小jerk的最大值可有效减小加减速过程的振动,使三次多项式s曲线加减速方式真正起到降低振动的作用。
对于一个固定长度的程序段来说,三次多项式s曲线加减速减小jerk最大值的方法是减小a最大值的数值,使加速或减速的时间延长,但a减小的数值与jerk最大值减小的数值并不是线性关系,因此不能使用固定的公式一步计算得到。
技术实现要素:
有鉴于此,本发明的目的是提供三次多项式s曲线加减速的加加速度递归计算限制方法,以给出一种使用配置的最大jerk来限制a最大值的方法,从而控制加加速度jerk,解决现有技术中存在的三次多项式s曲线加减速过程无法控制加加速度jerk的问题。
为达到上述目的,本发明采用如下技术方案:三次多项式s曲线加减速的加加速度递归计算限制方法,包括以下步骤:
(1)设定最大加加速度jerk限制数值,递归计算的最大次数n、每次加速度a减小的百分比、当前程序段信息;
(2)确定速度曲线形式,在选择的速度曲线中加速度变化时间最短的阶段计算最大加加速度jerk;判断当前是否满足递归计算终止条件,满足则结束递归计算,否则执行下一步;
(3)按照每次a减小的百分比设定方式减小a,返回步骤(2)。
所述当前程序段信息包括程序段长度、加速度a的初始数值、起始速度vstart、末尾速度vend、最大速度vm。
所述每次a减小的百分比根据需要进行设定。
每次a减小的百分比可变:选择多个阶段,每个阶段包括多次递归并且各阶段分别设定a减小的百分比。
所述当前程序段信息由程序段在加减速过程中实时信息设置:程序段长度为当前程序段剩余的未移动的长度,a的初始数值为当前程序段构造时设定的加速度的数值,起始速度vstart与末尾速度vend为当前程序段通过速度规划给出的速度,最大速度vm为编程进给率与进给率倍率的乘积。
所述确定速度曲线形式具体为根据当前程序段信息判断满足下列哪种形式:
第1种形式,只有加速阶段的判定条件是:
vend2-vstart2=4/3*a*l
第2种形式,有匀速阶段的判定条件是:
(3*(vend2+vstart2)-4*a*l)/6>vm2
第3种形式,有加速与减速阶段,但没有匀速阶段的判定条件是:
vend2-vstart2<4/3*a*l并且(3*(vend2+vstart2)-4*a*l)/6<=vm2
判定条件中a为当前递归计算中当前递归次数按照a减小的百分比减小之后的数值,l为当前程序段长度;vstart为起始速度,vend为末尾速度,vm为最大速度。
所述在选择的速度曲线中加速度变化时间最短的阶段计算最大加加速度jerk,包括以下步骤:
当速度曲线为第一种形式时,选取vstart到vend的加速阶段进行jerk约束计算:jerk=4/3*a2/(vend-vstart);
当速度曲线为第二种形式时,选取vm到vend的减速阶段进行jerk约束计算,jerk=4/3*a2/(vm-vend);
当速度曲线为第三种形式时,选取vm’到vend的减速阶段进行jerk约束计算,jerk=4/3*a2/(vm'-vend),其中,
vstart为起始速度,vend为末尾速度,vm为最大速度。
所述判断当前是否满足递归计算终止条件:
一是使用当前的a计算得到的jerk数值小于或等于最大jerk限制数值,二是递归计算次数到达n次;满足至少一个条件时结束递归计算。
根据a的变化速度曲线改变,数控系统根据速度曲线进行加减速控制。
本发明具有以下有益效果及优点:
一是递归计算过程简便。加加速度jerk的计算方法相同,使用递归调用传递不同的a等参数数值即可计算出新的jerk数值,调用过程简便。
二是能有效利用系统配置的加速度。计算过程中加速度a的数值逐次减小,递归计算停止时可取得满足条件的极大数值,使加减速过程即满足jerk约束,又不至于太慢。
附图说明
图1a是三次多项式s曲线加减速的加速过程的速度曲线;
图1b是三次多项式s曲线加减速的减速过程的速度曲线;
图1c是三次多项式s曲线加减速的加速过程的加速度曲线;
图1d是三次多项式s曲线加减速的减速过程的加速度曲线;
图1e是三次多项式s曲线加减速的加速过程的加加速度曲线;
图1f是三次多项式s曲线加减速的减速过程的加加速度曲线;
图2是本发明方法的整体流程图;
图3a是三次多项式s曲线加减速的速度曲线形式一;
图3b是三次多项式s曲线加减速的速度曲线形式二;
图3c是三次多项式s曲线加减速的速度曲线形式三。
图4a是三次多项式s曲线加减速的速度曲线形式四;
图4b是三次多项式s曲线加减速的速度曲线形式五;
图4c是三次多项式s曲线加减速的速度曲线形式六。
图4d是三次多项式s曲线加减速的速度曲线形式七。
具体实施方式
下面结合附图对本发明方法作进一步详细说明。
如图2所示,本发明方法包括以下步骤:
(1)给出最大jerk限制数值,递归计算的最大次数n、每次a减小的百分比、当前程序段信息(包括程序段长度、a的初始数值、起始速度vstart、末尾速度vend、最大速度vm。)
(2)判断当前是否满足递归计算终止条件:一是使用当前的a计算得到的jerk数值小于或等于最大jerk限制数值,二是递归计算次数到达n次。满足条件时递归返回
(3)不满足递归计算终止条件时按照每次a减小的百分比设定方式减小a,进入下一次递归计算
本发明方法中步骤(1)给出最大jerk限制数值,递归计算的最大次数n、每次a减小的百分比、当前程序段信息(包括程序段长度、a的初始数值、起始速度vstart、末尾速度vend、最大速度vm)具体过程如下:
最大jerk限制数值使用配置的数值;
递归计算的最大次数n根据需要进行设定,本发明中设定为15;
每次a减小的百分比根据需要进行设定,本发明中前10次每次减小10%,后5次每次减小2%,到达第15次时还未满足最大jerk限制,将a设定为初始数值的1%,结束递归计算;
当前程序段信息由程序段在加减速过程中实时信息设置:程序段长度为当前程序段剩余的未移动的长度,a的初始数值为当前程序段构造时设定的加速度的数值,起始速度vstart与末尾速度vend为当前程序段通过速度规划给出的速度,最大速度vm为编程进给率与进给率倍率的乘积。
本发明方法的步骤(2)判断当前是否满足递归计算终止条件:一是使用当前的a计算得到的jerk数值小于或等于最大jerk限制数值,二是递归计算次数到达n次。满足条件时递归返回具体过程如下:
21)确定速度曲线形式,选择速度曲线中加速度变化时间最短的阶段,即速度变化最小的阶段:
速度曲线形式与当前程序段信息以及调整后的a有关,图3a~图3c与图4a~图4d列出了常见的几种形式。以起始速度vstart小于末尾速度vend为例,加加速度jerk限制针对的速度曲线形式如图3a~图3c所示有3种:只有加速阶段(图3a)、有加速与减速阶段没有匀速阶段(图3b)、有加速匀速与减速三个阶段(图3c);在三种曲线形式中,速度变化最小的阶段分别为:加速阶段、减速阶段、减速阶段,以下是三种形式的判定条件
第1种形式只有加速阶段的判定条件是:
vend2-vstart2=4/3*a*l
第2种形式有匀速阶段的判定条件是:
(3*(vend2+vstart2)-4*a*l)/6>vm2
第3种形式有加速与减速阶段,但没有匀速阶段的判定条件是:
vend2-vstart2<4/3*a*l并且(3*(vend2+vstart2)-4*a*l)/6<=vm2
判定条件中a为当前递归计算中当前递归次数按照a减小的百分比减小之后的数值,l为当前程序段长度。
第1种形式选取vstart到vend的加速阶段进行jerk约束计算,第2种形式选取vm到vend的减速阶段进行jerk约束计算,第3种形式选取vm’到vend的减速阶段进行jerk约束计算,其中vm’由如下公式进行计算:
22)使用当前的a计算jerk,判断当前是否满足递归计算终止条件,满足条件时递归返回。以起始速度vstart小于末尾速度vend为例三种速度曲线形式jerk的计算公式分别为:
jerk=4/3*a2/(vend-vstart)
jerk=4/3*a2/(vm-vend)
jerk=4/3*a2/(vm'-vend)
判断计算得到的jerk是否小于等于最大jerk限制数值,若满足条则结束递归返回,若不满足再判断是否到达第n次(本发明中n=15),若到达则递归返回(本发明中到达第15次时计算得到的jerk还大于最大jerk限制数值,将a设置为初始数值的1%之后递归返回),当递归返回时,使用递归计算得到的a作为参数构造速度曲线,则速度曲线的jerk不会超出配置的最大jerk限制数值。否则进入步骤(3)。
本发明方法的步骤(3)不满足递归计算终止条件时按照每次a减小的百分比设定方式减小a,进入下一次递归计算具体过程如下:
根据当前的次数n减小a的数值,前10次每次减小初始数值的10%,后5次每次减小初始数值的2%,同时将当前的次数n加1,进入步骤(2)。
当速度曲线形式为只有加速(图3a)或只有减速(图4a)阶段时,需使用减小后的a重新计算vend。以起始速度vstart小于末尾速度vend为例,当曲线形式为第一种时(如图3a所示只有加速阶段),在进入步骤(2)之前需使用减小后的a重新计算vend,计算公式为
公式中a为根据当前的次数n减小之后数值,l为当前程序段长度。