理论教育 进给加减速的实现方法

进给加减速的实现方法

时间:2023-06-17 理论教育 版权反馈
【摘要】:传统的梯形加减速方法需预先确定出加速区、匀速区及减速区等各区段的运动位移量,但是,在实际插值时由于给定的进给偌率,以及NC代码段间速度的变化,这些位移量往往不能事先精确给出。后文进行的加工实验证明了本方法的可行性和正确性。图5-5 梯形加减速处理过程

进给加减速的实现方法

传统的梯形加减速方法需预先确定出加速区、匀速区及减速区等各区段的运动位移量,但是,在实际插值时由于给定的进给偌率,以及NC代码段间速度的变化,这些位移量往往不能事先精确给出。本书给出一种适合于Open-CNC系统的加减速算法,这种方法的核心思想是在每个插值周期中,系统均实时刷新当前运行速度,并确定当前NC代码段中余下的待运行位移量Lift,就可确定本插值周期的插值步长LT。这种方法在软件数控系统中能极大地简化运算过程,提高系统运行效率。后文进行的加工实验证明了本方法的可行性和正确性。具体的实现方法及过程如下:

首先从数据内存区取出本段NC代码的命令速度Vcom、当前速度Vcur、终点速度Vend加速度值a,判断当前的加减速状态,若为Send,表明插值已完成,则令插值步长LT=0,VneW=0,然后退出加减速过程。否则,算出NTLest等相关值,接下来进行相关处理。

Lift≤(Vend+aTT,则说明当前NC代码段在本插值周期内即可运行完,置加减速状态标志为Send,令插值步长LTLift。但是在这种状况下,对速度的处理又分为两种情况:

1)VcurVend,说明目前还处于加速状态下,但是没有加速到终点速度Vend,就已经运行到终点Pend了。则为了使段间加减速保持平稳,应使系统在当前插值周期的目标速度VneWVcur,而不是VneWVend;接下来系统更新VneW,以备下一个NC代码段使用。

2)VcurVend,系统目前处于匀速或减速状态下,应使当前插值周期的目标速度VneWVend

Lift>(Vend+aTT,则说明当前NC代码段还需经过若干个插值周期才可运行完,但是在这种状况下,对速度的处理又可分为三种情况:

1)VcurVcom,巨LiftLest,则系统处于减速状态,置Sdst(下一个插值周期判断处于相同运动状态的条件为VcurVcom,巨Sdst),并令VneWVcur-aT;另外还要修正一下,若算得VneWVend,则使VneWVend。接下来计算插值步长:LTVneWT;为了防止“超程”,即运动到目标点以外,还应校验一下,若LTLift,则将Lift赋值LT,并更新VneWLift/T,并置Send

按以上方法计算插值步长,会遇到一种特殊情况:若插值的是最后一段NC代码,即Vend=0,按以上方法给VneW赋值时,会出现VneW=0的情况,则算得的插值步长也为0,会产生“失步”现象,即没有运动到目标点就停止不前了。不过,这种现象发生时,会有Lest=0。所以,应当再增加一个判断,当LiftLest时,令VneWVcur即可。(www.daowen.com)

2)VcurVcom,则为减速运行非最后一段数控代码,置Sdrn,巨令VneWVcur-aT;另外还要修正一下,若算得VneWVcom,则使VneWVcom。同样,插值步长LTVneWT

按以上方法计算插值步长,也可能会遇到一种特殊情况:系统已运行到本段NC代码的终点(目标点)Pend,但是速度还没有减到目标速度Vend,此时LTLift。为了在运行下一段NC代码时,系统保持平稳状态,需调整VneWLift/T,并重算LTLift,此时本段NC代码运行完毕,置Send

3)若以上两种条件不满足,剩下的状态就是加速了。显然,应该使VneWVcur+aT,并置Sacc。当然,还需要判断一下VneW是否已经超过命令速度,若VneW>Vcom,则令VneWVcom,并置SeVe。插值步长LTVneWT

按以上方法计算插值步长,也可能会到一种特殊情况:系统已运行到本段NC代码的终点(目标点)Pend,但是速度还没有增加到目标速度Vend,此时LTLift。为了运行下一段NC代码时,系统保持平稳状态,需调整VneWLift/T,并重算LTLift,此时本段NC代码运行完毕,置Send

以上各步骤结束后均更新保存VneW值及加减速状态S,最后返回LT值。计算过程如图5-5所示(图中斜体宇为注释的内容)。

978-7-111-42574-8-Chapter05-14.jpg

图5-5 梯形加减速处理过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈