多轴插补运动控制

一、基本概述

     数控技术一般以标准的格式对程序段进行描述,例如程序段“N15 G02 Xlo Y25 120 JOF125 LF”就规定了一个以(10,25)为起点,在X-Y平面上以150mm/min的进给速度顺时针加工一个半径为20mm的整圆的过程。程序段只提供了有限的提示性信息(例如起点、终点和插补方式等),数控装置需要在加工过程中,根据这些提示并运用一定的算法,自动地在有限坐标点之间生成一系列的中间点坐标数据,并使刀具及时地沿着这些实时发生的坐标数据运动,这个边计算边执行的逼近过程就称为插补(interpolation)。上述程序段中的准备功能G02就指定了该程序段的执行要采用顺时针方向的圆弧插补。
     插补是一个实时进行的数据密化的过程,不论是何种插补算法,运算原理基本相同,其作用都是根据给定的信息进行数字计算,不断计算出参与运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动,由此,轨迹插补与坐标轴位置伺服控制是运动控制系统的两个主要环节。
     插补运算是轨迹控制中最重要的计算任务,而插补计算又必须是实时的,即必须在有限的时间内完成计算任务。因此除了要保证插补计算的精度外,还要求算法简单,一般采用迭代算法,这样可避免三角函数计算,同时减少乘除及开方运算,它的运算速度直接影响运动系统的控制速度,而插补计算精度又影响整个运动系统的精度,人们一直在努力探求计算速度快同时计算精度又高的插补方法。
     目前普遍应用的插补算法分为两大类:一是脉冲增量插补,另一是数据采样插补。下面主要介绍运动轨迹的插补原理,分别就这两大类中的一种典型的具体方法来描绘出插补的完整过程,包括插补方法及终点判别。

二、插补原理

     插补最常见的两种方式是直线插补和圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,将规划轴映射到相应的机台坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。
     插补运动指令会存入运动缓冲区,再依次从运动缓冲区中取出指令执行,直到插补运动全部执行完。

1. 直线插补原理

     直线插补方式中,两点间的插补沿着直线的点群来逼近。首先假设在实际轮廓起始点处沿X方向走一小段(给一个脉冲当量轴走一段固定距离),发现终点在实际轮廓的下方,则下一条线段沿Y方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿Y方向走一小段,直到在实际轮廓上方以后,再向X方向走一小段,依此类推,直到到达轮廓终点为止。这样实际轮廓是由一段段的折线拼接而成,虽然是折线,但每一段插补线段在精度允许范围内非常小,那么此段折线还是可以近似看做一条直线段,这就是直线插补。
     正运动控制器采用硬件插补,插补精度在一个脉冲内,所以轨迹放大依然平滑。假设轴需要在在XY平面上从点(X0,Y0)运动到点(X1,Y1),其直线插补的加工过程如下图所示。

给轴发送一个脉冲运动的距离由电机的特性决定,不同的轴单个脉冲运动距离有所不同。

2. 圆弧插补原理

     圆弧插补与直线插补类似,给出两端点间的插补数字信息,以一定的算法计算出逼近实际圆弧的点群,控制轴沿这些点运动,加工出圆弧曲线。圆弧插补可以是平面圆弧(至少两个轴),还可以是空间圆弧(至少三个轴)。假设轴需要在XY平面第一象限走一段逆圆弧,圆心为起点,其圆弧插补的加工过程如下图所示。

     控制器的空间圆弧插补功能是根据当前点和圆弧指令参数设置的终点和中间点(或圆心),由三个点确定圆弧,并实现空间圆弧插补运动,坐标为三维坐标,至少需要三个轴分别沿X轴、Y轴和Z轴运动。

三、插补运动参数计算

1. 二轴直线插补

     轴0和轴1两轴参与直线插补运动,如下图,二轴直线插补运动从平面的A点运动到B点,XY轴同时启动,并同时到达终点,设置轴0的运动距离为 \(\Delta{X}\) ,轴1的运动距离为 \(\Delta{Y}\) ,主轴是BASE的第一个轴(此时主轴为轴0),插补运动参数采用主轴的参数。

若插补主轴运动速度为 \(S\) (主轴轴0的设置速度),各个轴的实际速度为主轴的分速度,不等于 \(S\),此时:

  • 插补运动的距离:\(X=\sqrt{\Delta{X}^2+\Delta{Y}^2}\)
  • 轴0实际平均速度:\(S0=S×\Delta{X}/X\)
  • 轴1实际平均速度:\(S1=S×\Delta{Y}/X\)

2. 三轴直线插补

     轴0、轴1和轴2三轴参与直线插补运动,如下图所示,3轴直线插补运动从A点运动到B点,XYZ轴同时启动,并同时到达终点,设置轴0的运动距离为 \(\Delta{X}\) ,轴1的运动距离为 \(\Delta{Y}\) ,轴2的运动距离为 \(\Delta{Z}\)

若插补主轴轴0的运动速度为S,各个轴的实际速度为主轴的分速度,不等于S,此时:

  • 插补运动距离: \(X=\sqrt{\Delta{X}^2+\Delta{Y}^2+\Delta{Z}^2}\)
  • 轴0实际速度:\(S0=S×\Delta{X}/X\)
  • 轴1实际速度:\(S1=S×\Delta{Y}/X\)
  • 轴2实际速度:\(S2=S×\Delta{Z}/X\)

四、插补运动相关指令

插补运动指令分类
在相对运动指令的基础上加上不同的后缀之后,便具有不同的特点。

  1. 相对运动指令:插补运动的距离参数为与当前插补起点的相对距离。例如MOVE,MOVECIRC。
  2. 绝对运动指令:插补运动的距离参数为相对于原点的绝对距离,在相对运动指令后方加上ABS后缀。例如MOVEABS,MOVECIRCABS。
  3. SP运动指令:带SP的指令运动速度采用FORCE_SPEED、ENDMOVE_SPEED、STARMOVE_SPEED参数运动,不带SP的运动指令,如上面两类,指令运动速度采用SPEED参数,SP运动指令在相对运动指令或绝对运动指令后方加上SP后缀。例如MOVESP,MOVEABSSP。

例子1:二轴直线插补

语法:MOVE(distance1 [,distance2 [,distance3 [,distance4...]]])
参数:

  • distance1 终点坐标;
  • distance2 终点坐标;

用例:

RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1) '选择轴0,轴1
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
SRAMP=100,100 'S曲线
MERGE=ON '开启连续插补
TRIGGER '自动触发示波器
DPOS=100,0 '坐标偏移
MOVE(-50,100) '第一段相对运动
MOVE(-100,0) '第二段相对运动
MOVE(-50,-100) '第三段相对运动
MOVE(50,-100) '第四段相对运动
MOVE(100,0) '第五段相对运动
MOVE(50,100) '第六段相对运动

直线插补合成轨迹如下:起点和终点均为(100,0),逆时针加工。

例子2:二轴圆弧插补

语法:MOVECIRC(end1, end2, centre1, centre2, direction)
参数:

  • (end1, end2)终点坐标;
  • ( centre1, centre2)圆心坐标;
  • direction方向:0-逆时针,1-顺时针。

用例:

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)

圆弧插补合成轨迹如下图:上方相对运动指令和绝对运动指令的运动轨迹相同。

例子3:二轴椭圆插补

语法: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 '自动触发示波器

椭圆插补合成轨迹如下图:

例子4:三轴空间圆弧

语法:MSPHERICAL(end1,end2,end3,centre1,centre2,centre3,mode[,distance4][,distance5])
参数:

  • (end1, end2, end3)第二个点坐标;
  • (centre1, centre2, centre3)第三个点坐标;
  • mode:指定前面两个坐标点的意义:
    • 0:当前点,中间点,终点三点定圆弧 end指定圆弧终点,centre指定圆弧的中间点
    • 1:当前点,圆心,终点定圆弧 走最短的圆弧 end指定圆弧终点,centre指定圆弧的圆心
    • 2:当前点,中间点,终点三点定整圆 end指定圆弧终点,centre指定圆弧的中间点
    • 3:当前点,圆心,终点定整圆 先走最短的圆弧,再继续走完整圆 end指定圆弧终点,centre指定圆弧的圆心
  • distane4:第四轴螺旋的功能,指定第4轴的相对距离,此轴不参与速度计算
  • distane5:第五轴螺旋的功能,指定第5轴的相对距离,此轴不参与速度计算

用例:

BASE(0,1,2)
ATYPE=1,1,1 '设为脉冲轴类型
UNITS=100,100,100
DPOS=0,0,0
SPEED=100,100,100 '主轴速度
ACCEL=1000 ,1000,1000 '主轴加速度
DECEL=1000 ,1000,1000
  1. Mode0[当前点,中间点,终点三点定圆弧]:MSPHERICAL(120,160,400,240,320,300,0) '终点(120,160,400),中间点(240,320,300)

  2. Mode1[当前点,圆心,终点定圆弧,走最短的圆弧]:MSPHERICAL(120,160,400,120,160,150,1) '终点(120,160,400),圆心(120,160,150)

  3. Mode2[当前点,中间点,终点三点定整圆]:MSPHERICAL(120,160,400,240,320,300,2) '终点(120,160,400),中间点(240,320,300)

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

五、轨迹前瞻

1. 基本概念

     在实际加工过程中,为追求加工效率会开启连续插补,运动轨迹的拐角处若不减速,当拐角较大时,会对机台造成较大冲击,影响加工精度。若关闭连续插补,使拐角处减速为0,虽然保护了机台,但是加工效率受到了较大影响,所以提供了前瞻指令,使在拐角处自动判断是否将拐角速度降到一个合理的值,既不会影响加工精度又能提高加工的速度,这就是轨迹前瞻功能的作用。
     运动控制器的轨迹前瞻可以根据用户的运动路径自动计算出平滑的速度规划,减少机台的冲击,从而提高加工精度。自动分析在运动缓冲区的指令轨迹将会出现的拐点,并依据用户设置的拐角条件,自动计算拐角处的运动速度,也会依据用户设定的最大加速度值计算速度规划,使任何加减速过程中的加减速都不超过ACCEL和DECEL的值,防止对机械部分产生破坏冲击力。

2. 轨迹前瞻和普通插补对比

使用轨迹前瞻和不使用轨迹前瞻的速度规划情况:
假设运动轨迹如下,走一个长方形轨迹,分为四段直线插补运动。

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

模式二: 模式一条件下,关闭连续插补,得出的主轴速度随时间变化的曲线如下,每走完一段直线后便减速到0再开始第二段直线运动,加工效率不高。

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

3. 轨迹前瞻相关指令

Reference

  1. ZMotion运动控制器多轴插补运动指令的使用
  2. 插补代码参考
posted @ 2022-10-31 17:25  小淼博客  阅读(3001)  评论(0编辑  收藏  举报

大家转载请注明出处!谢谢! 在这里要感谢GISPALAB实验室的各位老师和学长学姐的帮助!谢谢~