正运动技术
正运动技术
精准24码全年无错版
EN
精准24码全年无错版
精准24码全年无错版

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

运动缓冲在精密激光加工中的应用



   背景介绍   

在全球科技快速发展的浪潮下,半导体行业作为关键的技术领域,始终处于创新与变革的前言。同时对于实时性的要求也在不断提高。

例如激光加工技术在半导体行业的应用中,对于激光切割的速度和精度也作出了更高的要求。而运动缓冲则是一个可以快速提高实时性的有效手段。

激光加工.png
本文主要通过使用正运动激光振镜运动控制器ZMC408SCAN-V22介绍运动缓冲相关原理及其在激光加工中的应用。
接线图.png



 ZMC408SCAN-V22硬件介绍 

ZMC408SCAN-V22是正运动技术推出的高性能双振镜运动控制器,集成了2个百兆以太网口,支持EtherCAT、EtherNET、CAN、RS232、RS485、24路通用数字输入、20路通用数字输出、2路通用模拟量输出、2路通用模拟量输入、4个本地差分脉冲轴接口、1个MPG手轮编码器接口、2个带反馈振镜接口、1个LASER激光专用接口、1个FIBER激光器接口。开放式系统框图如下所示:

激光.png

ZMC408SCAN-V22总线控制器支持EtherCAT总线连接,支持最快500μs的刷新周期,支持最多达16轴运动控制,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等;采用优化的网络通讯协议可以实现实时的运动控制。

ZMC408SCAN-V22.png

ZMC408SCAN-V22通过CAN、EtherCAT总线可以连接各个扩展模块,从而扩展数字量、模拟量或运动轴。可以在Windows,Linux,Mac,Android,Wince各种操作系统下开发,提供vc,c#,vb.net,labview等各种环境的dll库。上位机软件编程参考《ZMotion PC函数库编程手册》。
API.png




 运动缓冲原理 

在运行运动指令时,控制器提供了一个缓冲区来保存进入运动缓冲的运动缓冲队列。运动指令存到运动缓冲区,在缓冲区里取出指令再执行,省略了程序扫描的时间,大大提升了实时性,同时也使得程序能正常向下扫描,不会堵塞。
ZMotion运动控制器具有多级的运动缓冲,并且遵循先进先出原则。当运动缓冲开启的时候,程序在扫描识别到程序任务的第一条运动指令时,将运动指令分配到指定轴的运动缓冲区,电机开始运动,此时程序继续向下扫描到第二条运动指令时,再往运动缓冲区中存,在不断扫描存入运动指令的同时,从运动缓冲区中依次取出运动指令执行。
运动缓冲原理参考下图:

1.MTYPE,NTYPE分别是当前运行的运动指令类型和MTYPE后面的第一条指令类型。

2.任意一段程序的运动指令都可以进入任意轴的运动缓冲区,由轴号指定。

3.每个轴的运动缓冲区都是独立的,互不干扰。

运动缓冲.png

如下图:当运动缓冲区还有空间,运动指令就会进入运动缓冲区。然后可以通过MOVE_MARK设置标识,表示下一条要调用的运动指令的MARK标号,这个标号会和运动指令一起写入运动缓冲。等指令执行完成后,则退出运动缓冲区,之前的下一条指令变成正在运动指令,循环往复,直到缓冲区没有指令去执行。
运动缓冲指令.png
缓冲多条运动指令时,为了判断当前运动执行到哪一条,提供MOVE_MARK运动标号和MOVE_CURMARK当前运动标号指令。
MOVE_MARK运动标号每扫描一条运动指令+1;

MOVE_CURMARK指令为当前运动的标号,提示当前运动到第几条运动指令,所有运动完成后为-1。

当前运动完成后会自动执行运动缓冲区内的下一条运动。运动指令全部执行完后,运动缓冲区为空,或者使用CANCEL/RAPIDSTOP指令清空运动缓冲区。


扩展说明



上图中的FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED指令属于SP运动指令。
SP指令也属于运动指令,使用SP运动指令(如MOVESP、MOVECIRCSP等直接在运动指令后方加上SP)时,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED会随SP运动指令写入运动缓存区。
SP运动指令与运动指令的区别:
MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。具体见下图:
SP运动指令与运动指令区别.png




 运动缓冲在激光加工中的应用 

通过上面的介绍,大家对运动缓冲应该有了基本的认识,下面我们来介绍运动缓冲在激光加工中的应用。

在激光处理的应用场景中,运动控制系统不仅需要解决机床的轴向运动问题,而且还必须准确控制激光输出。

例如激光功率,焦点,运动速度,辅助气体,材料吸收等,都需要运动控制系统执行操作和输出。对于激光束的运动轨迹控制,它必须非常准确。保证任何数据参数都不会丢失。否则,工件的处理无法正常完成。工件的边缘将产生毛刺,更严重可能导致工件损坏。

下图为模拟激光加工工艺的轨迹,通过运动缓冲可最大程度保证运动到固定点开光、关光的精确性。

正运动激光控制使能、出光等控制都是通过通用的IO输出指令进行控制。

以开光操作为例:必须等待轴空移到设定的开光位置后才能控制输出口开光,所以必须使用MOVE_OP运动缓冲输出指令而不是使用OP普通输出指令,运动缓冲使得该轴前面其他运动指令执行完毕同时到达开光点才执行开光操作,保证了运动的时序。

开光操作.png

如下图:开始刻蚀图形时,执行空移到起点位置、开光、直线、调光等操作,这些指令都会依次放入运动缓冲区,按照先进先出的顺序执行。

运动缓冲在激光加工中的应用.png

在激光加工应用场景中,采用插补缓冲中控制激光器的方式不仅可以保证运动时序,还可以通过MOVE_PWM或者MOVE_AOUT等运动缓冲指令调节激光器的输出功率控制激光器出光的强弱,从而满足更多的工艺需求和提高加工的效果。




 运动缓冲在激光加工应用场景示例 

使用该例程需选择带SCAN的控制器型号。(本文以ZMC408SCAN-V22为例)
正运动SCAN系列运动控制器不仅可以对电机进行控制,同时还可以对激光振镜进行运动控制,来完成振镜的定位和插补运动,并且在运动过程中可以实现激光器控制、IO控制、DA控制、PWM控制等工艺操作,同时振镜轴与电机轴之间也可以做插补轨迹运动。(注:带SCAN的控制器才能设置轴类型为21)

1.MOVESCANABS(pos1[,pos2] [,pos3]…) - 振镜直线运动指令。

(1)pos1:第一个轴的运动坐标,绝对位置

(2)pos2:下一个轴的运动坐标,绝对位置

2.MSCANCIRCABS(end1,end2,centre1,centre2,direction) - 振镜圆心画弧指令。

(1)end1:终点第一个轴运动坐标,绝对位置

(2)end2:终点第二个轴运动坐标,绝对位置

(3)centre1:圆心第一个轴运动坐标,绝对位置

(4)centre2:圆心第二个轴运动坐标,绝对位置

(5)direction:0-逆时针,1-顺时针

例程中其他指令介绍见《激光振镜控制编程手册》(资料联系正运动工作人员获取)

RAPIDSTOP(2) '清除缓冲区
WAIT IDLE
'1,初始部分,设置振镜轴参数,开启激光使能等等的初始化操作
BASE(4,5) '选择振镜轴,振镜X轴4,振镜Y轴5
ATYPE = 21,21 '设置振镜轴类型
UNITS = 1000,1000 '设置振镜轴脉冲当量
MERGE = ON '开启连续插补
AXIS_ZSET = 3 '开启精准输出
'拐角延时参数设置
CORNER_MODE = 2 '设置拐角模式
DECEL_ANGLE = 60 * (PI/180) '设置起始弧度0-60不处理60-90等比减速
STOP_ANGLE = 90 * (PI/180) '设置停止弧度大于90延时
LASER_SET(1,1) '设置能量并口
MOVE_OP(49,ON) '打开激光器急停信号(根据实际情况设置)
MOVE_OP(47,ON) '打开使能
'2,功率设置(功率设置可以多次穿插在运动中间,实现不同图层的操作)
MOVE_OP(46,OFF) '设置拐角延时(单位 us)
ZSMOOTH = 500
MOVE_AOUT(3,128) '设置功率(50% 0 - 255)
MOVE_PWM(11,0.5,60000) '功率锁存信号(Fiber 激光器处于锁存模式下使用)
MOVE_OP(46,ON)
'3,标刻图形
FORCE_SPEED = 1000 '设置空移速度 1000Units/s
MOVESCANABS(50,0) '空移到起点
MOVE_OP(44,ON) '开光
MOVESCANABS(150,0)
MOVE_PWM(11,0.5,50000) '调光(画圆弧时速度比直线慢,有能量堆积,需要降频)
MSCANCIRCABS(150,-100,150,-50,1)
MOVE_PWM(11,0.5,60000) '调光(圆弧结束恢复原来的频率)
MOVESCANABS(100,-100)
MOVE_OP(44,OFF) '关光
'4,结束部分
MOVESCANABS(0,0) '振镜回零
WAIT IDLE
MOVE_DELAY(0.1,1) '结束延时
位置及输出波形图.png

位置及输出波形图

速度及输出波形图.png
速度及输出波形图
XY模式图.png
XY模式图




 普通输出与运动缓冲中输出 

在编写程序过程中,通常会使用OP指令操作输出口的打开或者关闭,与此同时也提供了MOVE_OP运动缓冲输出指令,这两种指令区别如下:

1.普通输出指令程序扫描到该行指令便执行输出。

2.运动缓冲中输出指令在程序扫描之后,将其存入运动缓冲区,运动缓冲区按先进先出的顺序依次取出指令执行,直到取出该输出指令时才会执行输出。例如在激光应用场景中,如果不使用运动缓冲,当扫描到上一条运动指令,就会出现还没运动完毕,程序就扫描到输出指令,这时就会立刻执行输出,导致实际开关光的位置不是在我们预想的点位位置执行。

下面通过例子帮助理解两种输出的区别。
RAPIDSTOP(2) '停止所有轴
WAIT IDLE(0) '等待轴0停止
BASE(0) '选择轴0
DPOS=0 '轴0坐标偏移至0
UNITS=100 '脉冲当量
SPEED=100 '速度
ACCEL=1000 '加速度
DECEL=1000 '减速度
TRIGGER '触发示波器采样
OP(0,3,$0) '关闭输出口0-3
DELAY(1000) '延时
MOVE(100) '直线插补相对距离100
MOVE_OP(1,ON) '运动缓冲中输出
OP(0,ON) '普通输出

例子运行效果:延时1s后,程序扫描到OP指令,输出口0立即执行输出。

MOVE_OP把IO操作指令填入运动缓冲区,所以在运行完MOVE(100)之后,输出口1才输出。

运行效果.png




 运动缓冲区堵塞 

每个轴的运动缓冲空间是有限的,当扫描太多运动指令放入运动缓冲区时,多级运动缓冲区全部被塞满,如果程序继续扫描到更多的运动指令,程序也会被堵塞,直到运动指令依次完成并退出,运动缓冲区有了空位,运动指令才会继续进入运动缓冲区。

例:以ZMC408CE控制器为例,默认为4096个运动缓冲,下图例程中显示该控制器的运动缓冲区最多能存493条圆弧插补指令,下载程序后打印i的值为492,表示当前FOR循环并未执行完,程序堵塞了。

1.png

下图中,当从运动缓冲区取出部分运动指令执行之后,缓冲区有了空间,FOR循环继续执行,并存入运动指令到运动缓冲区。指令执行退出运动缓冲区后,只要运动缓冲区的空间足够,新的运动指令则会继续一条一条往运动缓冲区中存入。

2.png

每个轴的运动缓冲都是独立的,互不干扰,且缓冲区大小相同,通过指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某个轴的剩余可用缓冲区的个数。

ZMC4系列运动控制器每个轴可支持多达4096段运动缓冲(不同型号的控制器缓冲个数有区别,具体情况参见控制器《用户手册》说明或使用?*max打印查看),可以手动设置LIMIT_BUFFERED运动缓冲限制。

不同的运动指令占用的缓冲空间是不同的,越复杂的运动占用的运动缓冲空间越多。

如下表所示:MTYPE为1表示MOVE直线插补指令,MTYPE为2表示MOVEABS直线插补指令(绝对)。MTYPE为3表示MHELICAL螺旋插补指令,MTYPE为4表示MOVECIRC圆弧插补指令。

运动控制.png

例如:ZMC408CE控制器,运动缓冲区大小为4096,缓冲区一次性可缓冲的MOVE直线插补指令和MOVECIRC圆弧插补指令个数是不同的。可参考下图:

注:插补运动缓冲在主轴的运动缓冲区。

插补运动缓冲.png

为了让大家更好理解运动缓冲区的概念,本例将轴的运动缓冲区可缓冲运动指令个数限制为3(LIMIT_BUFFERED=3)。LIMIT_BUFFERED的作用是限定运动缓冲个数,不能超过控制器的最大值。(可通过?*max查看控制器运动缓冲个数最大值)

如下例:例子中共有四条MOVE运动指令,但是运动缓冲区最多只能装3条直线插补指令。MOVE(60,40)占用轴0的MTYPE,轴0还能缓冲2个运动指令,轴0剩余缓冲数为0。此时运动缓冲区满,那么在MOVE(60,40)执行完之前MOVE(60,50)是无法进入运动缓冲区的。

RAPIDSTOP(2)    '停止所有轴   
WAIT IDLE(0)    '等待轴0停止
WAIT IDLE(1)    '等待轴1停止
BASE(0,1)        '选择轴0,轴1
ATYPE=1,1        '设置轴类型
DPOS=0,0         '轴0轴1坐标偏移至0
UNITS=100,100    '设置脉冲当量
SPEED=100,100    '设置速度
ACCEL=1000,1000  '设置加速度
DECEL=1000,1000  '设置减速度
MERGE=ON         '开启连续插补
TRIGGER          '触发示波器采样
LIMIT_BUFFERED=3 '轴0/1运动缓冲区可缓冲运动指令个数设置为3
MOVE(60,40)     '进入MTYPE,Buffer0
MOVE(70,50)     '进入NTYPE,Buffer1
MOVE(50,40)     'Buffer2
MOVE(60,50)     '缓冲区满,暂不进入
?"轴0当前缓冲指令个数="MOVES_BUFFERED(0)   '结果2
?"轴0剩余缓冲区个数="REMAIN_BUFFER(1) AXIS(0) '结果0
?"轴1剩余缓冲区个数="REMAIN_BUFFER(1) AXIS(1) '结果3
END
如下图:等MOVE(60,40)运动完成,MOVE(60,50)才能进轴0的运动缓冲区。

运动缓冲示意图.png

插补运动缓冲在主轴轴0里,故轴1的运动缓冲区是没有指令的,轴1剩余缓冲大小为3。每条MOVE指令占用一个缓冲空间。

示波器波形如下:

示波器波形图.png




 其他运动缓冲指令 

下表为部分常见的运动缓冲指令,如需了解更多可参考《RTBasic编程手册》。

常见的运动缓冲指令.png


教学视频可点击→“运动缓存在精密激光加工中的应用”查看。

本次,正运动技术运动缓冲在精密加工中的应用,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

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

二维码.png


正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等

邮箱留言

Copyright © 2013 精准24码全年无错版 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by 运动控制器-运动控制卡

在线咨询