1 缓冲区辅助运动方法:
用户的主插补运动的插补数据应该放在FIFO0中。
FIFO0的插补运动可以被中断(通过调用GT_Stop()指令),中断后可以进行辅助 FIFO1 的插补运动,辅助 FIFO1 的插补运动完成后,需要将坐标系位置恢复到FIFO0 主运动被打断的位置,之后FIFO0 可从断点处继续恢复原来的运动。
由于主缓冲区可以放置插补运动指令(如GT_LnXY)、缓冲区延时指令、缓冲区IO指令等,下面针对不同指令,在指令执行过程中暂停主缓冲区。
//主缓冲区运动
sRtn = GT_CrdClear(1, 0);//清空主缓冲区
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);//第二条插补指令
//辅助缓冲区运动
sRtn = GT_LnXY(1,15000,25000,10,1,0,0);//第一条插补指令
2 当前正在执行插补运动指令
如果当前正在执行插补指令,调用主缓冲区暂停指令后,缓冲区立即停止运动,且可以记录当前断点位置,后续执行完辅助缓冲区后,从该断点位置继续执行主缓冲区。例如,执行第一条插补指令,在位置为(X=2000,Y=2000)处暂停主缓冲区运动,那么后续恢复主缓冲区运动则继续从该位置运动。
3 当前正在执行延时指令
如果当前正在执行缓冲区延时指令,调用主缓冲区暂停指令时,这条延时指令将失效。
a 如果这条延时指令后面是插补运动指令,那么启动辅助缓冲区运动时,直接执行辅助缓冲区运动;
b 如果这条延时指令后面是延时指令,那么启动辅助缓冲区运动时,会先执行延时指令,再执行辅助缓冲区运动,例如:第一条延时指令执行到(例如3s),暂停主运动,那么8s的延时不再起作用,启动辅助运动,则第二条延时指令先执行再执行辅助运动;
c 如果第一条延时指令后面是输出IO指令,当第一条延时指令执行到中间(例如3s),暂停主运动,那么输出IO指令会被执行,启动辅助运动后直接进入辅助运动。