正运动技术快速入门 | 篇十七:运动控制器多轴插补运动指令的使用

供稿:深圳市正运动技术有限公司

  • 关键词:正运动技术,运动控制器,插补运动指令
  • 摘要:插补是机床数控系统依照一定方法确定刀具运动轨迹的过程,插补是一个实时进行的数据密化的过程,不论是何种插补算法,运算原理基本相同,其作用都是根据给定的信息进行数据计算,不断计算出参与插补运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。

本节内容主要分为三大部分:插补运动、轨迹前瞻以及SP速度指令。


一插补运动


插补是机床数控系统依照一定方法确定刀具运动轨迹的过程,插补是一个实时进行的数据密化的过程,不论是何种插补算法,运算原理基本相同,其作用都是根据给定的信息进行数据计算,不断计算出参与插补运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。


(一)插补原理

插补最常见的两种方式是直线插补和圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,将规划轴映射到相应的机台坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。


插补运动指令会存入运动缓冲区,再依次从运动缓冲区中取出指令执行,直到插补运动全部执行完。


1.直线插补

直线插补方式中,两点间的插补沿着直线的点群来逼近。首先假设在实际轮廓起始点处沿X方向走一小段(给一个脉冲当量轴走一段固定距离),发现终点在实际轮廓的下方,则下一条线段沿Y方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿Y方向走一小段,直到在实际轮廓上方以后,再向X方向走一小段,依此类推,直到到达轮廓终点为止。这样实际轮廓是由一段段的折线拼接而成,虽然是折线,但每一段插补线段在精度允许范围内非常小,那么此段折线还是可以近似看做一条直线段,这就是直线插补。


正运动控制器采用硬件插补,插补精度在一个脉冲内,所以轨迹放大依然平滑。


假设轴需要在在XY平面上从点(X0,Y0)运动到点(X1,Y1),其直线插补的加工过程如下图1所示。


image.png

图1


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


2.圆弧插补

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


image.png

图2


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


(二)插补运动参数计算

1.二轴直线插补

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


image.png

图3


若插补主轴运动速度为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。


image.png


图4


若插补主轴轴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)

image.png

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)


image.png


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

image.png

2.插补运动指令

image.png

均以相对运动指令为例。 


① MOVE——直线插补

单轴直线运动或多轴直线插补运动,相对运动距离。绝对运动使用MOVEABS指令,SP运动使用MOVESP指令。


插补运动参数采用主轴参数,插补运动缓冲在主轴的运动缓冲区。


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


例子:二轴直线插补


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),逆时针加工。


image.png

图10


② 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)

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


image.png


图11

③ MHELICAL——圆心螺旋

圆心螺旋插补,相对运动。BASE第一轴和第二轴进行圆弧插补,第三轴进行螺旋,相对于起始点。绝对运动MHELICALABS指令,使用自定义速度的连续插补运动可以使用SP后缀的指令。


可完整螺旋一圈,从Z方向看为一整圆。


语法:MHELICAL(end1,end2,centre1,centre2,direction,distance3,[mode])


(end1, end2)终点坐标;( centre1, centre2)圆心坐标;direction方向:0-逆时针,1-顺时针;distance3:第三个轴运动距离


mode:第三轴的速度计算


描述

0(缺省)第三轴参与插补速度计算

1第三轴不参与插补速度计算


例子:


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

image.png


④ 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,顺时针画整椭圆,不进行螺旋。


image.png


B.椭圆同时螺旋


MECLIPSE(0,0,100,0,1,100,50,200)   '中心(100,0),终点(0,0),半短轴50,半长轴100,顺时针画整椭圆,同时螺旋。


image.png

image.png

⑤ MSPHERICAL——空间圆弧

空间圆弧插补运动,相对运动,空间圆弧起点为当前点,第二、第三个点由指令指定。绝对运动使用MSPHERICALABS指令,自定义速度的连续插补运动可以使用SP后缀的指令。


语法: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

模式0:当前点,中间点,终点三点定圆弧


MSPHERICAL(120,160,400,240,320,300,0)   '终点(120,160,400),中间点(240,320,300)


image.png


mode 1:当前点,圆心,终点定圆弧,走最短的圆弧


MSPHERICAL(120,160,400,120,160,150,1)     '终点(120,160,400),圆心(120,160,150)


image.png


mode 2:当前点,中间点,终点三点定整圆


MSPHERICAL(120,160,400,240,320,300,2)   '终点(120,160,400),中间点(240,320,300)


image.png


mode 3:当前点,圆心,终点定整圆


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


image.png


⑥ MOVESPIRAL——渐开线圆弧

渐开线圆弧插补运动,相对运动,可选螺旋。


当前点和圆心的距离确定起始半径,当起始半径0时角度无法确定,直接从0角度开始。


无绝对运动指令,自定义速度的连续插补运动可以使用SP后缀的指令。


语法:MOVESPIRAL(centre1,centre2,circles,pitch[,distance3][,distance4])


( centre1, centre2)圆心坐标


circles:要旋转的圈数,可以为小数圈,负数表示顺时针,每圈终点位置为起点和圆心连线上的一点,见例二


pitch:每圈的扩散距离,可以为负


distance3:第3轴螺旋的功能,指定第3轴的相对距离,此轴不参与速度计算


distance4:第4轴螺旋的功能,指定第4轴的相对距离,此轴不参与速度计算


例子:


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

TRIGGER              '自动触发示波器

例一:从原点开始扩散


MOVESPIRAL(0,0,2.5,30)  '此时以起始位置为中心,逆时针旋转2.5圈,每圈扩散30。


image.png

例二:圆心(50,50),逆时针扩散


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


image.png


例三:圆心(50,50),顺时针扩散


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

image.png


例四:圆心(100,100),逆时针扩散并螺旋


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


image.png


二轨迹前瞻


(一)轨迹前瞻的作用

在实际加工过程中,为追求加工效率会开启连续插补,运动轨迹的拐角处若不减速,当拐角较大时,会对机台造成较大冲击,影响加工精度。若关闭连续插补,使拐角处减速为0,虽然保护了机台,但是加工效率受到了较大影响,所以提供了前瞻指令,使在拐角处自动判断是否将拐角速度降到一个合理的值,既不会影响加工精度又能提高加工的速度,这就是轨迹前瞻功能的作用。


运动控制器的轨迹前瞻可以根据用户的运动路径自动计算出平滑的速度规划,减少机台的冲击,从而提高加工精度。自动分析在运动缓冲区的指令轨迹将会出现的拐点,并依据用户设置的拐角条件,自动计算拐角处的运动速度,也会依据用户设定的最大加速度值计算速度规划,使任何加减速过程中的加减速都不超过ACCEL和DECEL的值,防止对机械部分产生破坏冲击力。


使用轨迹前瞻和不使用轨迹前瞻的速度规划情况:


假设运动轨迹如下,走一个长方形轨迹,分为四段直线插补运动。


image.png


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


image.png

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


image.png


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


image.png


(二)轨迹前瞻相关指令

image.png


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。


减速角度是指电机的参考角度相对上一条运动的变化值。如下图30。


image.png


图30


此角度值不是实际轨迹的角度,是换算到电机变换的角度,此角度值仅为参考。


下一插补运动轨迹处于下方时取绝对值。


直线与圆弧相连时按照圆弧的切线方向计算角度。


4.FULL_SP_RADIUS -- 限速半径


小圆限速的最大圆弧半径,单位是UNITS,配合CONER_MODE指令使用。


当圆弧半径大于FULL_SP_RADIUS时,速度是用户程序指定的速度值,当半径小于FULL_SP_RADIUS时,控制器会按比例减小速度。


实际运行速度VP_SPEED = FORCE_SPEED*radius/FULL_SP_RADIUS。


设置自动倒角时为倒角的参考半径。


5.ZSMOOTH -- 倒角半径


参考倒角半径,配合CONER_MODE指令使用。


根据拐角角度自动计算实际拐角半径大小,超过路径时限制为50%。


90°时拐角半径为设置值。


6.MERGE -- 连续插补


MERGE=0N/OFF,设为ON开启连续插补,多段插补运动的之间速度连续,不发生减速;设为OFF关闭连续插补,上一条插补运动执行完减速为0后再开始运行下一条插补运动。


7.FORCE_SPEED -- 减速参考


SP运动指令参考速度,CONER_MODE指令限速参考。


(三)轨迹前瞻应用例程

1.CORNER_MODE =2自动拐角减速

例子:不使用轨迹前瞻的速度规划


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    '开启连续插补

TRIGGER        '自动触发示波器

MOVE(100,0)      '第一段

MOVE(0,100)      '第二段,运动角度大于90°

MOVE(70,80)     '第三段,运动角度接近45°

MOVE(80,60)     '第四段,运动角度小于15°

合成插补轨迹,如图31:


image.png


图31


各轴的速度曲线,如图32:


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

image.png


图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            '启动拐角减速

DECEL_ANGLE = 15 * (PI/180)         '设置开始减速角度

STOP_ANGLE = 45 * (PI/180)            '设置结束减速角度

FORCE_SPEED=100     '等比减速时起作用

TRIGGER              '自动触发示波器

MOVE(100,0)

MOVE(0,100)           '运动角度大于45°,完全减速

MOVE(70,80)         '运动角度处于15°~45°,等比减速

MOVE(80,60)          '运动角度小于15°,不减速

各轴的速度曲线,如图33:


电机运动角度变化过大时自动限制拐角处的速度。


image.png


图33


应用场合:不改变运动轨迹,仅在拐角处自动判断是否减速,一般用于改善机台抖动的问题,对轨迹精度有要求,对速度要求没那么快的场合。


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)

运动轨迹,如图34: 


image.png


图34

速度曲线,如图35:第一段圆弧半径为50,小于60,小圆限速参数生效,第一段圆弧的速度=FORCE_SPEED*radius/FULL_SP_RADIUS=120*50/60=100。第二段圆弧的半径为100,大于60,小圆限速不生效,故速度为SPEED=200。 


image.png


图35


应用场合:一般应用在圆弧加工,根据圆弧半径计算当前圆弧的限制速度。


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自动计算

合成轨迹,如图36:


image.png

图36


不使用倒角,如图37:CORNER_MODE=0


image.png

适用场合:自动倒角会改变轨迹,不会降低速度,所以一般应用在对速度要求快,对轨迹精度要求不高的场合。


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)

运动轨迹,如图38:


image.png


图38


速度曲线,如图39:


image.png

图39


三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不起作用。


image.png


图40

正运动技术运动控制器多轴插补运动指令的使用就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。


本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

发布时间:2021年6月25日 10:17  人气:   审核编辑(王静 )
更多内容请访问(深圳市正运动技术有限公司
相关链接

我有需求