初级会员

- 积分
- 83
- 金钱
- 83
- 注册时间
- 2015-7-1
- 在线时间
- 11 小时
|
通过给定位移dis,时间t,加速度acc就能让电机自动运行,这样的算法看不懂,公式是根据哪类曲线推算出来,求大神解析一下:
unsigned char setTPath(int64_t dis,int64_t t,int acc)
{
treferencepos=getPosition();
t_destin=dis;
dis=1000*(dis-treferencepos);
t=10*t;
if(vel>0)
{
dec=-acc;
if(vel*t-vel*vel/acc/2>dis)
{
if(vel*vel/acc/2>dis)
dec=acc;
acc=-acc;
}
}
else
{
dec=acc;
if(vel*t+vel*vel/acc/2>dis)
{
acc=-acc;
}
else
{
if(vel*vel/acc/2<dis)
dec=-acc;
}
}
if(dec/acc==-1)
{
temp=t*t+2*vel*t/acc-4*dis/acc+3*vel*vel/acc/acc;
if(temp<0)return 1;
temp=sqrt(temp);
acctime=(t-vel/acc-temp)/2;
dectime=t-(acctime+vel/acc);
if(acctime>0&&dectime>acctime&&dectime<t)
;
else
{
acctime=(t-vel/acc+temp)/2;
dectime=t-(acctime+vel/acc);
if(acctime>0&&dectime>acctime&&dectime<t)
;
else
return 2;
}
}
else
{
acctime=(dis-vel*t-vel*vel/2/acc)/(vel+acc*t);
dectime=t+vel/acc+acctime;
}
return 0;
}
|
|