当前位置:文档之家› 圆弧加减速插补算法

圆弧加减速插补算法

机电工程学院数控加工技术课程设计——插补算法实现学号:S311077006专业:机械工程学生:胡晓锋任课教师:霞副教授2011年4月基于PC的圆弧曲线加减速算法实现插补算法一直以来就是数控系统中的核心技术。

从数控系统的原理来说,插补的本质问题就是对任意曲线进行分解,成为若干段微小的曲线,当对曲线的分解达到无穷级时,每一段曲线便成为微小的直线段。

然后利用与相应微小曲线相类似的直线段代替,通过控制刀具按直线段行走进行加工,完成为整个曲线的插补运算加工。

实际问题中不可能对任意曲线的分解达到无穷,因此总是存在相应的误差。

然而在实际运用中对误差的容忍度有限,因此只需在满足精度的情况下进行曲线的分解。

对曲线的分解过程即是将其坐标点进行密化,不但要保证精度,还需要在极短的时间完成。

受现代技术的限制,这一过程目前还存在一定的问题。

由此而产生的对插补算法的研究也一直没有停止过,从经典的逐点比较法到现在的自由曲面直接插补法,各种算法层出不穷。

本次对圆弧的插补算法是基于PC技术的算法,利用MATLAB软件编写相应的插补程序,实现对插补轨迹的模拟与分析。

一、问题描述本次设计针对圆弧曲线进行插补,采用加减速的方式完成刀具的行走过程。

根据数据采样插补原理,实现数控轨迹的密化。

本次插补的难点在于对刀具行走轨迹的自动加减速进行控制,由控制器发出相应指令,当刀具以不同速度运行到不同位置时,能够根据当前的状态判断下一个插补周期需要的状态,从而连续平滑的完成插补过程。

二、速度曲线的数学表达式刀具在进行插补时的速度应该是一个加速-匀速-减速的过程,各个过程与时间的关系应该由相应的加速度来控制。

因此曲线的形状呈现一定的抛物线形。

另初始进给速度为F1,末端进给速度为F2,指令速度为F,当前速度为V,减速距离为S,当前距离为CS,n为插补周期个数,t为当前时刻。

则速度的数学表达式如下:(F1<F)&&(CS>S),起始时刀具加速运动。

F1<F/2,加速度为2=;a tnF1>=F/2,加速度为a=(F1>=F)&&(CS>10),刀具做匀速运动。

(F1>=F)&&(CS<S),刀具做减速运动。

V<4F2,加速度为a=V>=F/2,加速度为2=。

a tn其速度曲线如图2.1所示。

图2.1 圆弧插补速度曲线三、插补轨迹的数学表达式本次插补对象为圆弧,因此其数学表达式为222+=X Y R(3-1) 这里对圆弧第一象限部分进行插补,利用MATLAB软件进行图形绘制,这里令圆直径为50,其M函数如下:x1=50;y1=0;x2=0;y2=50; r=50;i=0:pi/20:1/2*pi plot(r*cos(i),r*sin(i)); 其圆弧轨迹如图3.1所示。

图3.1 圆弧轨迹四、 插补原理设被插补圆弧如图4.1所示,其半径为R ,圆心位于坐标原点O ,端点为A 和C 。

根据采样插补原理,圆弧插补的任务是,沿给定的圆弧轨迹在两端点之间进行坐标密化,并使插补点之间的距离i L∆满足速度和精度要求。

根据图中关系,位于圆弧轨迹上的插补点坐标可按下式求得:cos sin i ii ix R y R θθ== (4-1)这样,根据进给方向、进给速度和精度要求控制i θ的增加或减少,即可控制懂点沿圆弧轨迹逆时针或顺时针运动,从而实现逆圆或顺圆插补。

图4.1 圆弧插补原理由于式(4-1)就是圆弧的参数方程,因此可确保其计算的插补点位于圆弧指令轨迹上。

剩下的问题是,如何使插补速度和逼近误差满足要求,为此采取以下措施。

(1)速度控制由图3可知,两相邻插补点对应的位置角有以下关系:1i i i θθθ-=+∆(4-2)式中i θ∆为步距角(插补直线段i L ∆对应的圆心角)。

如果对步距角进行控制,使其满足60000i ii L F TR Rθ∆∆∆≈= (4-3)式中i F 为进给速度(/min mm ); T ∆为插补周期(ms )。

则可使插补误差的运动速度满足给定的进给速度i F 。

(2)误差控制为满足误差的要求,可按给定的允许误差对iθ∆进行约束控制,使其最大值满足max θ∆=(4-4)式中e 为所允许的最大径向误差。

这样,实际运行过程中各种若max i θθ∆<∆,则按式(4-3)求出的i θ∆进行插补运算,否则按max i θθ∆=∆进行插补运算。

因为式(4-4)的计算可在预处理阶段完成,所以上述误差控制不会影响插补的实时性。

五、 柔性加减速控制为充分利用机床的有效工作行程,要求机床运动具有极短的加减速过渡过程。

而仅从时间上去考虑缩短过渡过程,而不对机床的加减速动态过程进行合理的控制,必将给击穿钢结构带来很大的冲击。

为解决问题,一方面要求数控系统能因机而异,另一方面需在控制系统中采用特殊方法来实现这种动态规律。

显然,传统数控系统采用的固定加减速控制方法是无法实现这一要求的。

为此采用一种可根据任意曲线对数控机床的运动进行自动加减速控制的方法。

这种方法将自动加减速控制有传统的固定模式推向新的柔性模式,为有效提高数控机床的动态性能探索出一条新的途径。

在数控系统软件中,设计一条通用的与加减速数据库容无关的通道,由其独立完成加减速计算和轨迹控制。

该方法的实现原理图如图5.1所示。

图5.1 柔性加减速控制原理图1、柔性自动加速控制设给定的加速曲线如图5.2所示,现将其作为样板以数表形式存放于加减速曲线库中。

图中,d f为加速过程进给速度总该变量(样板速度差),d t 为加速过程所需时间(样板加速时间)。

根据加速曲线数表实现加速控制的过程如下: 根据加速开始前的进给速度F1,加速过程结束后进给速度F2,求出加速过程速度差21D F F F =-,并据此计算出实际速度差与样板速度差的比值21D F F F =-(5-1)根据加速开始前到当前时刻所经过的插补周期个数n ,计算出查表时间(T ∆为采样时周期/n t Tn K =∆(5-2)根据n t 差加速曲线表可得样板速度增量n f。

由此可计算出经过n 个插补周期后实际速度的该变量n n F f K ∆=(5-3)进一步,经求出的n 周期速度该变量nF ∆代入下式,求出当前插补周期的实际进给速度1i n F F F =+∆(5-4)最后,根据所求得的iF 计算当前采样周期中插补直线的长度,并据此进行归集计算,即可实现满足图5.3所示曲线要求的自动加速控制。

图5.2自动加速曲线 图5.3 自动减速曲线2、自动减速控制设给定的减速曲线如图5.3所示,如同加速控制一样将去作为样板以数表的形式存放于加减速曲线库中。

根据加速曲线数表实现自动减速控制的过程如下:同加速过程一样,减速过程速度差为12D F F F =-。

按照与加速控制相同的过程,求出查表时间n t,并查减速曲线表得样板速度增量n f,由此可计算出经过n 个插补周期后实际速度的改变量n D n F F f K ∆=-(5-5)进一步,将求出的n 周期改变量nF ∆代入下式,求出当前插补周期的实际进给速度1i n F F F =-∆(5-6)最后,根据iF 计算当前插补周期中插补直线段的长度,并据此进行轨迹计算,即可实现满足图5.4所示曲线要求的自动减速控制。

对于自动减速控制,减速前还需要预测减速点,以决定何时开始减速。

确定减速点的依据是减速距离s ,其计算公式为:21212()2d d d dF F F F s s t F f f --=+(5-7)式中d t为样板减速时间; d s 为样板减速距离。

样板减速距离d s可通过下式以离线方式预先求出,并存储于加减速数据库中。

1()dmt d i i s f t dt f t ==≈∆∑⎰(5-8)式中if 为样板减速曲线()f t 的离散取值;m 为样板减速曲线离散点总数;t ∆为竖直几分的时间增量。

六、 程序流程图插补程序流程图如图6.1所示图6.1 程序流程图七、代码插补程序部分代码如下:clear allv1=input('输入起始速度')v2=input('输入末端速度')x1=100;y1=0;x2=0;y2=100;R=100;x=x1;y=y1;X=[x];Y=[y];T=0.01;t=0;N=[t];v0=30;v=v1;V=[v];a_max=10;a=0;A=[a];rad=0;status=1;if (v2>v0)&&((v2-v0)>(a_max/2)) %距离判断res_s=(v0+v2)/2*((v2-v0)/a_max+1/2);elseres_s=(v0+v2)*sqrt((v2-v0)/a_max/2);endif (v2<v0)&&(v0-v2)>(a_max/2)res_s=(v0+v2)/2*((v0-v2)/a_max+1/2);elseres_s=(v0+v2)*sqrt((v0-v2)/a_max/2);endif v2==v0res_s=0;endc_s=R*pi/2;while rad<(pi/2)while c_s>res_st=t+T;switch statuscase 1if v1<v0 %加速if (v0-v1)<=(1/2*a_max)if (v-v1)<(v0-v)ap=a;a=2*a_max*t;a1=a; t1=t;elseap=a;a=a1-2*a_max*(t-t1);endvp=v;v=v+1/2*(a+ap)*T;if (v>v0)a=0;v=v0;endelseif (v0-v)>(1/4*a_max)if a<a_maxap=a;a=2*a_max*t;vp=v;v=v+1/2*(a+ap)*T;elsea=a_max;vp=v;v=v+a*T;enda2=a;t2=t;elseap=a;a=a2-2*a_max*(t-t2);vp=v;v=v+1/2*(a+ap)*T;if (v>v0)a=0;v=v0;endendendendif v1>v0 %减速if (v1-v0)<=(1/2*a_max)if (v1-v)<(v-v0) ap=a;a=-2*a_max*t;a1=a;t1=t;elseap=a;a=a1+2*a_max*(t-t1);endvp=v;v=v+1/2*(a+ap)*T;if (v<v0)a=0;v=v0;endelseif (v-v0)>(1/4*a_max)if a>(-a_max) ap=a;a=-2*a_max*t;vp=v;v=v+1/2*(a+ap)*T;elsea=-a_max;vp=v;v=v+a*T;enda2=a;t2=t;elseap=a;a=a2+2*a_max*(t-t2);vp=v;v=v+1/2*(a+ap)*T;if (v<v0)a=0;v=v0;endendendendendrad=rad+p_rad;x=R*cos(rad);y=sqrt(R*R-x*x);c_s=R*(pi/2-rad);X=[X x];Y=[Y y];V=[V v];A=[A a];N=[N t];t3=t;endx=x2;y=y2;X=[X x];Y=[Y y];plot(N,V,'r')figureplot(X,Y,'g')figureplot(N,A,'b')八、结果分析在MATLAB程序窗口输入以上命令并点击运行之后,输入相应的参数,可得到以下数据:速度曲线、加速度曲线、圆弧轨迹。

相关主题