快速入门 | 正运动技术运动控制器多轴插补运动指令的使用
一、插补运动
插补是机床数控系统依照一定方法确定刀具运动轨迹的过程,插补是一个实时进行的数据密化的过程,不论是何种插补算法,运算原理基本相同,其作用都是根据给定的信息进行数据计算,不断计算出参与插补运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。
(一)插补原理
插补最常见的两种方式是直线插补和圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,将规划轴映射到相应的机台坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。
插补运动指令会存入运动缓冲区,再依次从运动缓冲区中取出指令执行,直到插补运动全部执行完。
1.直线插补
直线插补方式中,两点间的插补沿着直线的点群来逼近。首先假设在实际轮廓起始点处沿X方向走一小段(给一个脉冲当量轴走一段固定距离),发现终点在实际轮廓的下方,则下一条线段沿Y方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿Y方向走一小段,直到在实际轮廓上方以后,再向X方向走一小段,依此类推,直到到达轮廓终点为止。这样实际轮廓是由一段段的折线拼接而成,虽然是折线,但每一段插补线段在精度允许范围内非常小,那么此段折线还是可以近似看做一条直线段,这就是直线插补。
正运动控制器采用硬件插补,插补精度在一个脉冲内,所以轨迹放大依然平滑。
假设轴需要在在XY平面上从点(X0,Y0)运动到点(X1,Y1),其直线插补的加工过程如下图所示。

控制器的空间圆弧插补功能是根据当前点和圆弧指令参数设置的终点和中间点(或圆心),由三个点确定圆弧,并实现空间圆弧插补运动,坐标为三维坐标,至少需要三个轴分别沿X轴、Y轴和Z轴运动。
(二)插补运动参数计算
1.二轴直线插补
轴0和轴1两轴参与直线插补运动,如下图,二轴直线插补运动从平面的A点运动到B点,XY轴同时启动,并同时到达终点,设置轴0的运动距离为∆X,轴1的运动距离为∆Y,主轴是BASE的第一个轴(此时主轴为轴0),插补运动参数采用主轴的参数。

若插补主轴轴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,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
FORCE_SPEED=150,150 'SP指令速度
SRAMP=100,100 'S曲线
MERGE=ON
TRIGGER '自动触发示波器
MOVE(200,150) '第一段终点(200,150)
MOVE(100,120) '第二段终点(300,270)

B.绝对运动例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
FORCE_SPEED=150,150 'SP指令速度
SRAMP=100,100 'S曲线
MERGE=ON
TRIGGER '自动触发示波器
MOVEABS(200,150) '第一段
MOVEABS(100,120) '第二段运动到绝对位置(100,120)

C.SP运动指令例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
FORCE_SPEED=150,150 'SP指令速度
SRAMP=100,100 'S曲线
MERGE=ON
TRIGGER '自动触发示波器
MOVE(200,150) '第一段相对运动,速度100
MOVESP(100,120) '第二段SP相对运动,速度150

2.插补运动指令

② MOVECIRC——起点、终点、圆心三点圆弧插补
两轴圆弧插补,起点、终点、圆心三点画弧,起点使用轴当前坐标,相对运动。绝对圆弧插补使用MOVECIRCABS指令。SP圆弧插补使用MOVECIRCSP指令。
MOVECIRC2指令使用当前点、中间点、终点画弧。
圆弧插补指令适用于二轴运动。
语法:MOVECIRC(end1, end2, centre1, centre2, direction)
(end1, end2)终点坐标;( centre1, centre2)圆心坐标;direction方向:0-逆时针,1-顺时针。
当起点坐标与终点坐标相同时,画出整圆。
圆弧相关的指令要保证给出的圆心和终点坐标与当前点一起可以正确的描述一段圆弧,否则会报错,无法画弧,错误码1006。
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
DPOS=0,0
SRAMP=100,100 'S曲线
MERGE=ON
TRIGGER '自动触发示波器
'相对运动参数,绝对运动使用MOVECIRCABS
MOVECIRC(100,0,50,0,1) '半径50顺时针画半圆,终点坐标(100,0),圆心坐标(50,0)
MOVECIRC(-200,0,-100,0,1) '半径100顺时针画半圆,终点坐标(-100,0),圆心坐标(0,0)
'绝对运动参数
MOVECIRCABS(100,0,50,0,1) '半径50顺时针画半圆,终点坐标(100,0)
MOVECIRCABS(-100,0,0,0,1) '半径100顺时针画半圆,终点坐标(-100,0),圆心坐标(0,0)
圆弧插补合成轨迹如下图:上方相对运动指令和绝对运动指令的运动轨迹相同。

例子:
BASE(0,1,2)
ATYPE=1,1,1 '设为脉冲轴类型
UNITS=100,100,100
SPEED=100,100,100 '主轴速度
ACCEL=1000 ,1000,1000 '主轴加速度
DECEL=1000 ,1000,1000
DPOS=0,0,0
MHELICAL(200,-200,200,0,1,100) '原点作为起点,中心(200,0),终点'(200,-200),顺时针,Z轴参与速度计算,运动100

④ MECLIPSE——椭圆
椭圆插补,可选螺旋,相对运动。BASE第一轴和第二轴进行椭圆插补,可选第三个轴同步螺旋。绝对运动使用MECLIPSEABS指令,自定义速度的连续插补运动可以使用SP后缀的指令。
可画整椭圆。只能画长轴(短轴)与X平行或垂直的椭圆。
语法:MECLIPSE (end1, end2, centre1, centre2, direction, adis, bdis[, end3])
(end1, end2)终点坐标;( centre1, centre2)中心坐标
direction方向:0-逆时针,1-顺时针
adis:第一轴的椭圆半径,半长轴或者半短轴均可
bdis:第二轴的椭圆半径,半长轴或者半短轴均可,半长轴和半短轴相等时自动为圆弧或螺旋
end3:第三个轴的运动距离,需要螺旋时填入
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0,1,2)
ATYPE=1,1,1 '设为脉冲轴类型
UNITS=100,100,100
SPEED=100,100,100 '主轴速度
ACCEL=1000 ,1000,1000 '主轴加速度
DECEL=1000 ,1000,1000
DPOS=0,0,0
TRIGGER '自动触发示波器
A.平面椭圆,不螺旋
MECLIPSE(0,0,100,0,1,100,50) '中心(100,0),终点(0,0),半短轴50,半长轴100,顺时针画整椭圆,不进行螺旋。


⑤ MSPHERICAL——空间圆弧
空间圆弧插补运动,相对运动,空间圆弧起点为当前点,第二、第三个点由指令指定。绝对运动使用MSPHERICALABS指令,自定义速度的连续插补运动可以使用SP后缀的指令。
语法:MSPHERICAL(end1,end2,end3,centre1,centre2,centre3,mode[,distance4][,distance5])
(end1, end2, end3)第二个点坐标;( centre1, centre2, centre3)第三个点坐标
mode:指定前面两个坐标点的意义

mode 1:当前点,圆心,终点定圆弧,走最短的圆弧
MSPHERICAL(120,160,400,120,160,150,1) '终点(120,160,400),圆心(120,160,150)

mode 3:当前点,圆心,终点定整圆
MSPHERICAL(120,160,400,120,160,150,3) '终点(120,160,400),圆心(120,160,150),先走最短的圆弧(红色部分),再走完整圆

例二:圆心(50,50),逆时针扩散
MOVESPIRAL (50,50,2.5,30) '起始半径50,以(50,50)为圆心,逆时针旋转2.5圈,每圈向外扩散30

例四:圆心(100,100),逆时针扩散并螺旋
MOVESPIRAL(100,100,2.5,30,100) '起始半径100,以(100,100)为圆心,逆时针旋转2.5圈,每圈向外扩散30,同时Z轴向上运动到100。

模式一:开启了连续插补后,得出的主轴速度随时间变化的曲线如下,主轴的速度是连续的,轨迹拐角处仍不减速,高速运行时拐角处冲击较大。

模式三:模式一条件下,开启连续插补,并设置了轨迹前瞻参数,得出的主轴速度随时间变化的曲线如下,拐角处按照一定的比例减速,加工效率比模式二高。

1.CORNER_MODE -- 拐角设置
轨迹前瞻的主要指令CORNER_MODE,用于拐角处的速度规划,常用的三种模式,根据加工的轨迹的实际要求选择不同的模式。
实际应用也可以多个模式同时使用,例如CORNER_MODE =2+8。
此参数是在插补运动指令调用前生效,一般在参数初始化中设置拐角模式。
CORNER_MODE=2 自动拐角减速
减速角度定义查看DECEL_ANGLE和STOP_ANGLE指令,根据减速角度是设置值判断拐角处是否减速。
减速拐角参考速度以FORCE_SPEED速度为参考,一定要设置合理的FORCE_SPEED。
CORNER_MODE=8 自动小圆限速
半径小于设置值时限速,大于限制值时不限速,限制速度按FORCE_SPEED,限速半径FULL_SP_RADIUS设置。
限速= FORCE_SPEED * 实际半径/FULL_SP_RADIUS 。
CORNER_MODE=32 自动倒角
在两条插补运动之间自动做倒角处理,倒角半径参考ZSMOOTH。
此倒角针对插补的所有轴。
2.DECEL_ANGLE -- 拐角减速开始
3.STOP_ANGLE -- 拐角减速结束
开始减速角度与结束减速角度的单位是弧度,配合CONER_MODE指令模式2使用。
角度转换弧度公式:角度值*(PI/180)
DECEL_ANGLE需要与STOP_ANGLE一起配合使用。设置时DECEL_ANGLE的值小于STOP_ANGLE。
当实际运动的角度小于DECEL_ANGLE时,不减速。
当实际运动的角度处于DECEL_ANGLE(上限)与STOP_ANGLE(下限)之间时才会等比减速。
当实际运动的角度大于STOP_ANGLE时,减速到0再开始下一段运动。
减速拐角参考速度以FORCE_SPEED强制速度为参考,一定要设置合理的FORCE_SPEED。
减速角度是指电机的参考角度相对上一条运动的变化值。如下图。

各轴的速度曲线,如图:
开启的连续插补,所以插补主轴的速度一直为VP_SPEED(0)=100,从下方曲线可以看出在拐角处轴0和轴1的加速度过大,远大于设置值500,这样就会给机台带来较大冲击。

应用场合:不改变运动轨迹,仅在拐角处自动判断是否减速,一般用于改善机台抖动的问题,对轨迹精度有要求,对速度要求没那么快的场合。
2.CORNER_MODE =8 小圆限速
示例:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=100,100
SPEED=200,200 '运动速度
ACCEL=500,500
DECEL=500,500
DPOS=0,0
SRAMP=100,100 'S曲线
MERGE=ON
CORNER_MODE=8 '启动小圆限速
FORCE_SPEED=120 '小圆限速参考速度
FULL_SP_RADIUS=60 '限速半径60
TRIGGER '自动触发示波器
MOVECIRC(100,0,50,0,1) '半径50顺时针画半圆,终点坐标(100,0),圆心坐标(50,0)
MOVECIRC(-200,0,-100,0,1) '半径100顺时针画半圆,终点坐标(-100,0),圆心坐标(0,0)
运动轨迹,如图:

应用场合:一般应用在圆弧加工,根据圆弧半径计算当前圆弧的限制速度。
3.CORNER_MODE =32 自动倒角
示例:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=500,500
DECEL=500,500
DPOS=0,0
SRAMP=100,100 'S曲线
MERGE=ON
CORNER_MODE=32 '启动倒角
ZSMOOTH = 10 '倒角参考半径
TRIGGER '自动触发示波器
MOVE(100,0) '第一段
MOVE(0,100) '第二段 ,90°,倒角半径10
MOVE(80,50) '第三段 ,夹角小于90°,倒角半径小于10自动计算
合成轨迹,如图:

适用场合:自动倒角会改变轨迹,不会降低速度,所以一般应用在对速度要求快,对轨迹精度要求不高的场合。
4.CORNER_MODE =2+8+32 多个位同时设置
示例:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=500,500
DECEL=500,500
DPOS=0,0
SRAMP=100,100 'S曲线
MERGE=ON '开启连续插补
CORNER_MODE=2+8+32 '启动3种拐角模式
DECEL_ANGLE = 15 * (PI/180) '设置开始减速角度
STOP_ANGLE = 45 * (PI/180) '设置结束减速角度
FULL_SP_RADIUS=60 '圆弧限速半径60
ZSMOOTH=10 '倒角参考半径10
FORCE_SPEED=100 '等比减速参考速度
TRIGGER '自动触发示波器
MOVE(100,0)
MOVE(0,100) '运动角度大于45°,完全减速
MOVE(70,80) '运动角度处于15°~45°,等比减速
MOVE(70,60) '运动角度小于15°,不减速
MOVECIRC(100,0,50,0,1) '半径50顺时针画半圆,终点坐标(100,0),圆心坐标(50,0)
运动轨迹,如图:

三、SP速度指令
(一)SP速度相关指令
FORCE_SPEED -- SP速度
STARTMOVE_SPEED -- SP运动开始速度
ENDMOVE_SPEED -- SP运动结束速度
单位均为UNITS/S,在使用SP运动指令中生效,会被SP运动指令带入运动缓冲区。
1.FORCE_SPEED——SP速度
自定义速度的SP运动的强制速度,使用了带SP的运动指令和轨迹前瞻时才生效。
如果要求进入本段的时候FORCE_SPEED已经降为对应的速度,请设置STARTMOVE_SPEED参数。
2.STARTMOVE_SPEED——SP运动开始速度
自定义速度的SP运动的开始速度,只有使用了带SP的运动指令才生效。SP运动起始速度小于STARTMOVE_SPEED时,STARTMOVE_SPEED无效。
不使用时请设置较大值。控制器默认值1000。
3.ENDMOVE_SPEED——SP运动结束速度
自定义速度的SP运动的结束速度,只有使用了带SP的运动指令才生效。后面没有运动指令时直接减速停止,ENDMOVE_SPEED无效。
不使用时请设置较大值。控制器默认值1000。
(二)SP速度指令使用例程
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1) '选择XY
DPOS = 0,0
MPOS = 0,0
ATYPE=1,1'脉冲方式步进或伺服
UNITS = 100,100'脉冲当量
SPEED = 100,100
ACCEL = 200,200
DECEL = 200,200
SRAMP=100,100 'S曲线
MERGE = ON '启动连续插补
TRIGGER
'第一段
FORCE_SPEED = 50 '第一段速度50
STARTMOVE_SPEED = 20 '第一段起始的速度20
ENDMOVE_SPEED = 10 '第一段结束的速度10
MOVESP(50,30)
'第二段
FORCE_SPEED = 60'第二段速度60
STARTMOVE_SPEED = 30 '第二段的起始速度30
ENDMOVE_SPEED = 40
MOVESP(50,50)
'第三段
FORCE_SPEED = 80'第三段速度80
STARTMOVE_SPEED = 30 '第三段的起始速度30
ENDMOVE_SPEED = 20
MOVESP(60,50)
END
速度变化曲线,如图40:从速度为0开始运动,第一段的STARTMOVE_SPEED = 20不起作用,第一段结束速度ENDMOVE_SPEED=10,表示速度降为10后第一段运动完成;第二段运动实际从速度10开始运动,到ENDMOVE_SPEED=40结束;第三段的起始速度STARTMOVE_SPEED=30,小于第二段结束速度40,第二段完成后速度会降到30,第三段完成后后面没有运动指令了,所以速度降为0,ENDMOVE_SPEED不起作用。

正运动技术运动控制器多轴插补运动指令的使用就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。
本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。