背景介紹
在全球科技快速發(fā)展的浪潮下,半導體行業(yè)作為關(guān)鍵的技術(shù)領(lǐng)域,始終處于創(chuàng)新與變革的前言。同時對于實時性的要求也在不斷提高。
例如激光加工技術(shù)在半導體行業(yè)的應(yīng)用中,對于激光切割的速度和精度也作出了更高的要求。而運動緩沖則是一個可以快速提高實時性的有效手段。

本文主要通過使用正運動激光振鏡運動控制器ZMC408SCAN-V22介紹運動緩沖相關(guān)原理及其在激光加工中的應(yīng)用。

ZMC408SCAN-V22硬件介紹
ZMC408SCAN-V22是正運動技術(shù)推出的高性能雙振鏡運動控制器,集成了2個百兆以太網(wǎng)口,支持EtherCAT、EtherNET、CAN、RS232、RS485、24路通用數(shù)字輸入、20路通用數(shù)字輸出、2路通用模擬量輸出、2路通用模擬量輸入、4個本地差分脈沖軸接口、1個MPG手輪編碼器接口、2個帶反饋振鏡接口、1個LASER激光專用接口、1個FIBER激光器接口。開放式系統(tǒng)框圖如下所示:

ZMC408SCAN-V22總線控制器支持EtherCAT總線連接,支持最快500μs的刷新周期,支持最多達16軸運動控制,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實現(xiàn)實時的運動控制。

ZMC408SCAN-V22通過CAN、EtherCAT總線可以連接各個擴展模塊,從而擴展數(shù)字量、模擬量或運動軸。可以在Windows,Linux,Mac,Android,Wince各種操作系統(tǒng)下開發(fā),提供vc,c#,vb.net,labview等各種環(huán)境的dll庫。上位機軟件編程參考《ZMotion PC函數(shù)庫編程手冊》。

運動緩沖原理
在運行運動指令時,控制器提供了一個緩沖區(qū)來保存進入運動緩沖的運動緩沖隊列。運動指令存到運動緩沖區(qū),在緩沖區(qū)里取出指令再執(zhí)行,省略了程序掃描的時間,大大提升了實時性,同時也使得程序能正常向下掃描,不會堵塞。
ZMotion運動控制器具有多級的運動緩沖,并且遵循先進先出原則。當運動緩沖開啟的時候,程序在掃描識別到程序任務(wù)的第一條運動指令時,將運動指令分配到指定軸的運動緩沖區(qū),電機開始運動,此時程序繼續(xù)向下掃描到第二條運動指令時,再往運動緩沖區(qū)中存,在不斷掃描存入運動指令的同時,從運動緩沖區(qū)中依次取出運動指令執(zhí)行。
運動緩沖原理參考下圖:
1.MTYPE,NTYPE分別是當前運行的運動指令類型和MTYPE后面的第一條指令類型。
2.任意一段程序的運動指令都可以進入任意軸的運動緩沖區(qū),由軸號指定。
3.每個軸的運動緩沖區(qū)都是獨立的,互不干擾。

如下圖:當運動緩沖區(qū)還有空間,運動指令就會進入運動緩沖區(qū)。然后可以通過MOVE_MARK設(shè)置標識,表示下一條要調(diào)用的運動指令的MARK標號,這個標號會和運動指令一起寫入運動緩沖。等指令執(zhí)行完成后,則退出運動緩沖區(qū),之前的下一條指令變成正在運動指令,循環(huán)往復,直到緩沖區(qū)沒有指令去執(zhí)行。

緩沖多條運動指令時,為了判斷當前運動執(zhí)行到哪一條,提供MOVE_MARK運動標號和MOVE_CURMARK當前運動標號指令。
MOVE_MARK運動標號每掃描一條運動指令+1;
MOVE_CURMARK指令為當前運動的標號,提示當前運動到第幾條運動指令,所有運動完成后為-1。
當前運動完成后會自動執(zhí)行運動緩沖區(qū)內(nèi)的下一條運動。運動指令全部執(zhí)行完后,運動緩沖區(qū)為空,或者使用CANCEL/RAPIDSTOP指令清空運動緩沖區(qū)。
擴展說明
上圖中的FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED指令屬于SP運動指令。
SP指令也屬于運動指令,使用SP運動指令(如MOVESP、MOVECIRCSP等直接在運動指令后方加上SP)時,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED會隨SP運動指令寫入運動緩存區(qū)。
SP運動指令與運動指令的區(qū)別:
MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。具體見下圖:

運動緩沖在激光加工中的應(yīng)用
通過上面的介紹,大家對運動緩沖應(yīng)該有了基本的認識,下面我們來介紹運動緩沖在激光加工中的應(yīng)用。
在激光處理的應(yīng)用場景中,運動控制系統(tǒng)不僅需要解決機床的軸向運動問題,而且還必須準確控制激光輸出。
例如激光功率,焦點,運動速度,輔助氣體,材料吸收等,都需要運動控制系統(tǒng)執(zhí)行操作和輸出。對于激光束的運動軌跡控制,它必須非常準確。保證任何數(shù)據(jù)參數(shù)都不會丟失。否則,工件的處理無法正常完成。工件的邊緣將產(chǎn)生毛刺,更嚴重可能導致工件損壞。
下圖為模擬激光加工工藝的軌跡,通過運動緩沖可最大程度保證運動到固定點開光、關(guān)光的精確性。
正運動激光控制使能、出光等控制都是通過通用的IO輸出指令進行控制。
以開光操作為例:必須等待軸空移到設(shè)定的開光位置后才能控制輸出口開光,所以必須使用MOVE_OP運動緩沖輸出指令而不是使用OP普通輸出指令,運動緩沖使得該軸前面其他運動指令執(zhí)行完畢同時到達開光點才執(zhí)行開光操作,保證了運動的時序。

如下圖:開始刻蝕圖形時,執(zhí)行空移到起點位置、開光、直線、調(diào)光等操作,這些指令都會依次放入運動緩沖區(qū),按照先進先出的順序執(zhí)行。

在激光加工應(yīng)用場景中,采用插補緩沖中控制激光器的方式不僅可以保證運動時序,還可以通過MOVE_PWM或者MOVE_AOUT等運動緩沖指令調(diào)節(jié)激光器的輸出功率控制激光器出光的強弱,從而滿足更多的工藝需求和提高加工的效果。
運動緩沖在激光加工應(yīng)用場景示例
使用該例程需選擇帶SCAN的控制器型號。(本文以ZMC408SCAN-V22為例)
正運動SCAN系列運動控制器不僅可以對電機進行控制,同時還可以對激光振鏡進行運動控制,來完成振鏡的定位和插補運動,并且在運動過程中可以實現(xiàn)激光器控制、IO控制、DA控制、PWM控制等工藝操作,同時振鏡軸與電機軸之間也可以做插補軌跡運動。(注:帶SCAN的控制器才能設(shè)置軸類型為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-順時針
例程中其他指令介紹見《激光振鏡控制編程手冊》(資料聯(lián)系正運動工作人員獲。
RAPIDSTOP(2) '清除緩沖區(qū)
WAIT IDLE
'1,初始部分,設(shè)置振鏡軸參數(shù),開啟激光使能等等的初始化操作
BASE(4,5) '選擇振鏡軸,振鏡X軸4,振鏡Y軸5
ATYPE = 21,21 '設(shè)置振鏡軸類型
UNITS = 1000,1000 '設(shè)置振鏡軸脈沖當量
MERGE = ON '開啟連續(xù)插補
AXIS_ZSET = 3 '開啟精準輸出
'拐角延時參數(shù)設(shè)置
CORNER_MODE = 2 '設(shè)置拐角模式
DECEL_ANGLE = 60 * (PI/180) '設(shè)置起始弧度0-60不處理60-90等比減速
STOP_ANGLE = 90 * (PI/180) '設(shè)置停止弧度大于90延時
LASER_SET(1,1) '設(shè)置能量并口
MOVE_OP(49,ON) '打開激光器急停信號(根據(jù)實際情況設(shè)置)
MOVE_OP(47,ON) '打開使能
'2,功率設(shè)置(功率設(shè)置可以多次穿插在運動中間,實現(xiàn)不同圖層的操作)
MOVE_OP(46,OFF) '設(shè)置拐角延時(單位 us)
ZSMOOTH = 500
MOVE_AOUT(3,128) '設(shè)置功率(50% 0 - 255)
MOVE_PWM(11,0.5,60000) '功率鎖存信號(Fiber 激光器處于鎖存模式下使用)
MOVE_OP(46,ON)
'3,標刻圖形
FORCE_SPEED = 1000 '設(shè)置空移速度 1000Units/s
MOVESCANABS(50,0) '空移到起點
MOVE_OP(44,ON) '開光
MOVESCANABS(150,0)
MOVE_PWM(11,0.5,50000) '調(diào)光(畫圓弧時速度比直線慢,有能量堆積,需要降頻)
MSCANCIRCABS(150,-100,150,-50,1)
MOVE_PWM(11,0.5,60000) '調(diào)光(圓弧結(jié)束恢復原來的頻率)
MOVESCANABS(100,-100)
MOVE_OP(44,OFF) '關(guān)光
'4,結(jié)束部分
MOVESCANABS(0,0) '振鏡回零
WAIT IDLE
MOVE_DELAY(0.1,1) '結(jié)束延時

位置及輸出波形圖

速度及輸出波形圖

XY模式圖
普通輸出與運動緩沖中輸出
在編寫程序過程中,通常會使用OP指令操作輸出口的打開或者關(guān)閉,與此同時也提供了MOVE_OP運動緩沖輸出指令,這兩種指令區(qū)別如下:
1.普通輸出指令程序掃描到該行指令便執(zhí)行輸出。
2.運動緩沖中輸出指令在程序掃描之后,將其存入運動緩沖區(qū),運動緩沖區(qū)按先進先出的順序依次取出指令執(zhí)行,直到取出該輸出指令時才會執(zhí)行輸出。例如在激光應(yīng)用場景中,如果不使用運動緩沖,當掃描到上一條運動指令,就會出現(xiàn)還沒運動完畢,程序就掃描到輸出指令,這時就會立刻執(zhí)行輸出,導致實際開關(guān)光的位置不是在我們預想的點位位置執(zhí)行。
下面通過例子幫助理解兩種輸出的區(qū)別。
RAPIDSTOP(2) '停止所有軸
WAIT IDLE(0) '等待軸0停止
BASE(0) '選擇軸0
DPOS=0 '軸0坐標偏移至0
UNITS=100 '脈沖當量
SPEED=100 '速度
ACCEL=1000 '加速度
DECEL=1000 '減速度
TRIGGER '觸發(fā)示波器采樣
OP(0,3,$0) '關(guān)閉輸出口0-3
DELAY(1000) '延時
MOVE(100) '直線插補相對距離100
MOVE_OP(1,ON) '運動緩沖中輸出
OP(0,ON) '普通輸出
例子運行效果:延時1s后,程序掃描到OP指令,輸出口0立即執(zhí)行輸出。
MOVE_OP把IO操作指令填入運動緩沖區(qū),所以在運行完MOVE(100)之后,輸出口1才輸出。

運動緩沖區(qū)堵塞
每個軸的運動緩沖空間是有限的,當掃描太多運動指令放入運動緩沖區(qū)時,多級運動緩沖區(qū)全部被塞滿,如果程序繼續(xù)掃描到更多的運動指令,程序也會被堵塞,直到運動指令依次完成并退出,運動緩沖區(qū)有了空位,運動指令才會繼續(xù)進入運動緩沖區(qū)。
例:以ZMC408CE控制器為例,默認為4096個運動緩沖,下圖例程中顯示該控制器的運動緩沖區(qū)最多能存493條圓弧插補指令,下載程序后打印i的值為492,表示當前FOR循環(huán)并未執(zhí)行完,程序堵塞了。

下圖中,當從運動緩沖區(qū)取出部分運動指令執(zhí)行之后,緩沖區(qū)有了空間,F(xiàn)OR循環(huán)繼續(xù)執(zhí)行,并存入運動指令到運動緩沖區(qū)。指令執(zhí)行退出運動緩沖區(qū)后,只要運動緩沖區(qū)的空間足夠,新的運動指令則會繼續(xù)一條一條往運動緩沖區(qū)中存入。

每個軸的運動緩沖都是獨立的,互不干擾,且緩沖區(qū)大小相同,通過指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某個軸的剩余可用緩沖區(qū)的個數(shù)。
ZMC4系列運動控制器每個軸可支持多達4096段運動緩沖(不同型號的控制器緩沖個數(shù)有區(qū)別,具體情況參見控制器《用戶手冊》說明或使用?*max打印查看),可以手動設(shè)置LIMIT_BUFFERED運動緩沖限制。
不同的運動指令占用的緩沖空間是不同的,越復雜的運動占用的運動緩沖空間越多。
如下表所示:MTYPE為1表示MOVE直線插補指令,MTYPE為2表示MOVEABS直線插補指令(絕對)。MTYPE為3表示MHELICAL螺旋插補指令,MTYPE為4表示MOVECIRC圓弧插補指令。

例如:ZMC408CE控制器,運動緩沖區(qū)大小為4096,緩沖區(qū)一次性可緩沖的MOVE直線插補指令和MOVECIRC圓弧插補指令個數(shù)是不同的?蓞⒖枷聢D:
注:插補運動緩沖在主軸的運動緩沖區(qū)。

為了讓大家更好理解運動緩沖區(qū)的概念,本例將軸的運動緩沖區(qū)可緩沖運動指令個數(shù)限制為3(LIMIT_BUFFERED=3)。LIMIT_BUFFERED的作用是限定運動緩沖個數(shù),不能超過控制器的最大值。(可通過?*max查看控制器運動緩沖個數(shù)最大值)
如下例:例子中共有四條MOVE運動指令,但是運動緩沖區(qū)最多只能裝3條直線插補指令。MOVE(60,40)占用軸0的MTYPE,軸0還能緩沖2個運動指令,軸0剩余緩沖數(shù)為0。此時運動緩沖區(qū)滿,那么在MOVE(60,40)執(zhí)行完之前MOVE(60,50)是無法進入運動緩沖區(qū)的。
RAPIDSTOP(2) '停止所有軸
WAIT IDLE(0) '等待軸0停止
WAIT IDLE(1) '等待軸1停止
BASE(0,1) '選擇軸0,軸1
ATYPE=1,1 '設(shè)置軸類型
DPOS=0,0 '軸0軸1坐標偏移至0
UNITS=100,100 '設(shè)置脈沖當量
SPEED=100,100 '設(shè)置速度
ACCEL=1000,1000 '設(shè)置加速度
DECEL=1000,1000 '設(shè)置減速度
MERGE=ON '開啟連續(xù)插補
TRIGGER '觸發(fā)示波器采樣
LIMIT_BUFFERED=3 '軸0/1運動緩沖區(qū)可緩沖運動指令個數(shù)設(shè)置為3
MOVE(60,40) '進入MTYPE,Buffer0
MOVE(70,50) '進入NTYPE,Buffer1
MOVE(50,40) 'Buffer2
MOVE(60,50) '緩沖區(qū)滿,暫不進入
?"軸0當前緩沖指令個數(shù)="MOVES_BUFFERED(0) '結(jié)果2
?"軸0剩余緩沖區(qū)個數(shù)="REMAIN_BUFFER(1) AXIS(0) '結(jié)果0
?"軸1剩余緩沖區(qū)個數(shù)="REMAIN_BUFFER(1) AXIS(1) '結(jié)果3
END
如下圖:等MOVE(60,40)運動完成,MOVE(60,50)才能進軸0的運動緩沖區(qū)。

插補運動緩沖在主軸軸0里,故軸1的運動緩沖區(qū)是沒有指令的,軸1剩余緩沖大小為3。每條MOVE指令占用一個緩沖空間。
示波器波形如下:

其他運動緩沖指令
下表為部分常見的運動緩沖指令,如需了解更多可參考《RTBasic編程手冊》。

教學視頻可點擊→“運動緩存在精密激光加工中的應(yīng)用”查看。
本次,正運動技術(shù)運動緩沖在精密加工中的應(yīng)用,就分享到這里。
更多精彩內(nèi)容請關(guān)注“正運動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。
本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學習,一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

正運動技術(shù)專注于運動控制技術(shù)研究和通用運動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運動控制核心技術(shù)和實時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統(tǒng)_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等。
|