DMC3000控制卡由于硬件上的限制,最多只能实现三轴插补动作.但有的客户需要四轴插补动作,常见的动作为双平台相互动作.即XY为一平台, ZU为一平台,并且此平台具有某种互动性,例如: 泡沫切割,定点跟踪. 当需要四轴插补函数时,可以用软件算法来完成,再调用多轴同时启动的函数,具体实现如下:
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);//计算一个比例 axis[I].Axis = I; axis[I].TS = 1; //以下根据比例计算速度曲线 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 );//同时启动多轴运动 }
利用以上方法,可以进行更多的插补,但要注意一点的是,要有多轴同时启动的函数,若不能同时启动,则插补在较高速情况下,会使路径错位.
|