DMC3000控制卡由于硬件上的限制,最多只能實(shí)現(xiàn)三軸插補(bǔ)動(dòng)作.但有的客戶需要四軸插補(bǔ)動(dòng)作,常見(jiàn)的動(dòng)作為雙平臺(tái)相互動(dòng)作.即XY為一平臺(tái), ZU為一平臺(tái),并且此平臺(tái)具有某種互動(dòng)性,例如: 泡沫切割,定點(diǎn)跟蹤. 當(dāng)需要四軸插補(bǔ)函數(shù)時(shí),可以用軟件算法來(lái)完成,再調(diào)用多軸同時(shí)啟動(dòng)的函數(shù),具體實(shí)現(xiàn)如下:
int MoveINP4( long x, long y, long z, long u, long start, long speed, long accel, long decel ) { long len = sqrt( x*x + y*y + z*z + u*u ); if( len < 1 ) return 0; static struct MultiMoveData axis[4]; static double k=0; axis[I].Pos = x; axis[1].Pos = y; axis[2].Pos=z;axis[3].Pos=u; for( int I(0); I<4; I++) { k = double(axis[I].Pos)/double(len);//計(jì)算一個(gè)比例 axis[I].Axis = I; axis[I].TS = 1; //以下根據(jù)比例計(jì)算速度曲線 axis[I].StrVel = start*k; axis[I].MaxVel= speed*k; axis[I].Acc = accel*k; axis[I].Dec = decel*k; axis[I].Jerk = 1; } d3000_start_multi_move(4, axis );//同時(shí)啟動(dòng)多軸運(yùn)動(dòng) }
利用以上方法,可以進(jìn)行更多的插補(bǔ),但要注意一點(diǎn)的是,要有多軸同時(shí)啟動(dòng)的函數(shù),若不能同時(shí)啟動(dòng),則插補(bǔ)在較高速情況下,會(huì)使路徑錯(cuò)位.
|