示例介紹: Set_move_speed(3200, 6400 );//設置插補矢量速度 Set_move_accel( 0.1 ); //設置加速時間 Start_move_xy(0, 6400, 6400 );//進行直線插補 If( Motion_done(0) == 0 || // 可以Wait_for_done,Wait_for_all之類函數 Motion_done(1) == 0 ) {//脈沖在輸出時,做其它事情 … do s.th } else {//脈沖輸出完畢 … next operator//無法執(zhí)行到此處 }
原因分析: 原因是庫函數故障(BUG), 當第一次運行時,速度寄存器未填入有效數據,具體原因未明。 Set_move_speed 設置多軸運動的矢量速度 Set_move_accel 設置多軸運動的矢量加速時間 Start_move_xy 讓指定卡號的第1,2軸以插補方式運動到指定位置 Move_xy 同Start_move_xy,需等待完成 Start_move_zu 讓指定卡號的第3,4軸以插補方式運動到指定位置 Move_zu 同Start_move_zu,需等待完成 Arc_xy 讓指定卡號的第1,2軸作圓弧運動,需等待完成 Arc_zu 讓指定卡號的第3,4軸作圓弧運動,需等待完成
附帶檢測函數: Wait_for_all 等待指定的多軸并完成 Wait_for_done 等待運動并完成 Motion_done 檢測當前運動狀態(tài)
故障現(xiàn)象: 當程序執(zhí)行到Motion_done等檢測函數時,發(fā)現(xiàn)它們無法返回完成的狀態(tài),原因不是檢測函數的故障。而是X,Y無法取得速度值,進而也無法完成指定的脈沖輸出,這就是為什么檢測函數返回不了脈沖輸出完成的狀態(tài)。此問題是庫函數的小毛病。
解決方法: Start_r_move(0,0,3200,6400,0.1);//驅動X軸,但其輸出脈沖為0個,不會損失位置 Start_move_xy(0, 6400, 6400 );//再次驅動,問題解決了。
|