点击蓝字 关注伺服与运动控制
运动控制器多轴插补运动指令的使用
![43e27fb32065fcbd64bb798f5cdfce5a.gif](https://i-blog.csdnimg.cn/blog_migrate/6e5a54793239862d1f4ddb6e044bc98d.gif)
以下是图文详解
本节内容主要分为三大部分:插补运动、轨迹前瞻以及SP速度指令。一
插补运动
插补是机床数控系统依照一定方法确定刀具运动轨迹的过程,插补是一个实时进行的数据密化的过程,不论是何种插补算法,运算原理基本相同,其作用都是根据给定的信息进行数据计算,不断计算出参与插补运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。
(一)插补原理
插补最常见的两种方式是直线插补和圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,将规划轴映射到相应的机台坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。
插补运动指令会存入运动缓冲区,再依次从运动缓冲区中取出指令执行,直到插补运动全部执行完。
1.直线插补
直线插补方式中,两点间的插补沿着直线的点群来逼近。首先假设在实际轮廓起始点处沿X方向走一小段(给一个脉冲当量轴走一段固定距离),发现终点在实际轮廓的下方,则下一条线段沿Y方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿Y方向走一小段,直到在实际轮廓上方以后,再向X方向走一小段,依此类推,直到到达轮廓终点为止。这样实际轮廓是由一段段的折线拼接而成,虽然是折线,但每一段插补线段在精度允许范围内非常小,那么此段折线还是可以近似看做一条直线段,这就是直线插补。
正运动控制器采用硬件插补,插补精度在一个脉冲内,所以轨迹放大依然平滑。
假设轴需要在在XY平面上从点(X0,Y0)运动到点(X1,Y1),其直线插补的加工过程如下图1所示。
图1
给轴发送一个脉冲运动的距离由电机的特性决定,不同的轴单个脉冲运动距离有所不同。
2.圆弧插补
圆弧插补与直线插补类似,给出两端点间的插补数字信息,以一定的算法计算出逼近实际圆弧的点群,控制轴沿这些点运动,加工出圆弧曲线。圆弧插补可以是平面圆弧(至少两个轴),还可以是空间圆弧(至少三个轴)。假设轴需要在XY平面第一象限走一段逆圆弧,圆心为起点,其圆弧插补的加工过程如下图2所示。
图2
控制器的空间圆弧插补功能是根据当前点和圆弧指令参数设置的终点和中间点(或圆心),由三个点确定圆弧,并实现空间圆弧插补运动,坐标为三维坐标,至少需要三个轴分别沿X轴、Y轴和Z轴运动。
(二)插补运动参数计算
1.二轴直线插补
轴0和轴1两轴参与直线插补运动,如下图3,二轴直线插补运动从平面的A点运动到B点,XY轴同时启动,并同时到达终点,设置轴0的运动距离为∆X,轴1的运动距离为∆Y,主轴是BASE的第一个轴(此时主轴为轴0),插补运动参数采用主轴的参数。
若插补主轴运动速度为S(主轴轴0的设置速度),各个轴的实际速度为主轴的分速度,不等于S,此时:
插补运动的距离:X=[(∆X)2+(∆Y)2]½
轴0实际速度:S0=S×∆X/X
轴1实际速度:S1=S×∆Y/X
2.三轴直线插补
轴0、轴1和轴2三轴参与直线插补运动,如下图4,3轴直线插补运动从A点运动到B点,XYZ轴同时启动,并同时到达终点,设置轴0的运动距离为∆X,轴1的运动距离为∆Y,轴2的运动距离为∆Z。
若插补主轴轴0的运动速度为S,各个轴的实际速度为主轴的分速度,不等于S,此时:
插补运动距离为X=[(∆X)2+(∆Y)2+(∆Z)2]½
轴0实际速度:S0=S×∆X/X
轴1实际速度:S1=S×∆Y/X
轴2实际速度:S1=S×∆Z/X
(三)插补运动相关指令
1.插补运动指令分类
在相对运动指令的基础上加上不同的后缀之后,便具有不同的特点。
1)相对运动指令:插补运动的距离参数为与当前插补起点的相对距离。例如MOVE,MOVECIRC。
2)绝对运动指令:插补运动的距离参数为相对于原点的绝对距离,在相对运动指令后方加上ABS后缀。例如MOVEABS,MOVECIRCABS。
3)SP运动指令:带SP的指令运动速度采用FORCE_SPEED、ENDMOVE_SPEED、STARMOVE_SPEED参数运动,不带SP的运动指令,如上面两类,指令运动速度采用SPEED参数,SP运动指令在相对运动指令或绝对运动指令后方加上SP后缀。例如MOVESP,MOVEABSSP。
三类运动的区别采用下方例子展开说明。
A.相对运动例子:
RAPIDSTOP(2)WAIT IDLE(0)WAIT IDLE(1)BASE(0,1)DPOS=0,0ATYPE=1,1UNITS=100,100SPEED=100,100 '运动速度ACCEL=1000,1000DECEL=1000,1000FORCE_SPEED=150,150 'SP指令速度SRAMP=100,100 'S曲线MERGE=ONTRIGGER '自动触发示波器MOVE(200,150) '第一段终点(200,150)MOVE(100,120) '第二段终点(300,270)
B.绝对运动例子:
RAPIDSTOP(2)WAIT IDLE(0)WAIT IDLE(1)BASE(0,1)DPOS=0,0ATYPE=1,1UNITS=100,100SPEED=100,100 '运动速度ACCEL=1000,1000DECEL=1000,1000FORCE_SPEED=150,150 'SP指令速度SRAMP=100,100 'S曲线MERGE=ONTRIGGER '自动触发示波器MOVEABS(200,150) '第一段MOVEABS(100,120) '第二段运动到绝对位置(100,120)
C.SP运动指令例子:
RAPIDSTOP(2)WAIT IDLE(0)WAIT IDLE(1)BASE(0,1)DPOS=0,0ATYPE=1,1UNITS=100,100SPEED=100,100 '运动速度ACCEL=1000,1000DECEL=1000,1000FORCE_SPEED=150,150 'SP指令速度SRAMP=100,100 'S曲线MERGE=ONTRIGGER '自动触发示波器MOVE(200,150) '第一段相对运动,速度100MOVESP(10