1 緩沖區(qū)輔助運動方法:
用戶的主插補運動的插補數(shù)據(jù)應(yīng)該放在FIFO0中。
FIFO0的插補運動可以被中斷(通過調(diào)用GT_Stop()指令),中斷后可以進(jìn)行輔助 FIFO1 的插補運動,輔助 FIFO1 的插補運動完成后,需要將坐標(biāo)系位置恢復(fù)到FIFO0 主運動被打斷的位置,之后FIFO0 可從斷點處繼續(xù)恢復(fù)原來的運動。
由于主緩沖區(qū)可以放置插補運動指令(如GT_LnXY)、緩沖區(qū)延時指令、緩沖區(qū)IO指令等,下面針對不同指令,在指令執(zhí)行過程中暫停主緩沖區(qū)。
//主緩沖區(qū)運動
sRtn = GT_CrdClear(1, 0);//清空主緩沖區(qū)
sRtn = GT_LnXY(1,5000,5000,10,1,0,0);//第一條插補指令
sRtn = GT_BufDelay(1, 8000, 0);//第一條延時指令
sRtn = GT_BufDelay(1, 3000, 0);//第二條延時指令
sRtn = GT_BufIO(1,MC_GPO,1<<(1-1),0,0);//輸出IO指令
sRtn = GT_BufDelay(1, 3000, 0);//第三條延時指令
sRtn = GT_LnXY(1,10000,10000,10,1,0,0);//第二條插補指令
//輔助緩沖區(qū)運動
sRtn = GT_LnXY(1,15000,25000,10,1,0,0);//第一條插補指令
2 當(dāng)前正在執(zhí)行插補運動指令
如果當(dāng)前正在執(zhí)行插補指令,調(diào)用主緩沖區(qū)暫停指令后,緩沖區(qū)立即停止運動,且可以記錄當(dāng)前斷點位置,后續(xù)執(zhí)行完輔助緩沖區(qū)后,從該斷點位置繼續(xù)執(zhí)行主緩沖區(qū)。例如,執(zhí)行第一條插補指令,在位置為(X=2000,Y=2000)處暫停主緩沖區(qū)運動,那么后續(xù)恢復(fù)主緩沖區(qū)運動則繼續(xù)從該位置運動。
3 當(dāng)前正在執(zhí)行延時指令
如果當(dāng)前正在執(zhí)行緩沖區(qū)延時指令,調(diào)用主緩沖區(qū)暫停指令時,這條延時指令將失效。
a 如果這條延時指令后面是插補運動指令,那么啟動輔助緩沖區(qū)運動時,直接執(zhí)行輔助緩沖區(qū)運動;
b 如果這條延時指令后面是延時指令,那么啟動輔助緩沖區(qū)運動時,會先執(zhí)行延時指令,再執(zhí)行輔助緩沖區(qū)運動,例如:第一條延時指令執(zhí)行到(例如3s),暫停主運動,那么8s的延時不再起作用,啟動輔助運動,則第二條延時指令先執(zhí)行再執(zhí)行輔助運動;
c 如果第一條延時指令后面是輸出IO指令,當(dāng)?shù)谝粭l延時指令執(zhí)行到中間(例如3s),暫停主運動,那么輸出IO指令會被執(zhí)行,啟動輔助運動后直接進(jìn)入輔助運動。