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