TI中文支持网
TI专业的中文技术问题搜集分享网站

SpinTac MOVE 的重新规划问题

你好,我想问一下,我用lab 13c,用它的SpinTac Move来做位置闭环控制,例程里面只能先完成一个位置后,到IDLE状态时才能开始下一个位置。并不能打断目前的位置,直接运行新设置的位置;

所以我改了一下例程,添加如下代码:
if(STPOSMOVE_getStatus(stObj->posMoveHandle) == ST_MOVE_BUSY){
STPOSCTL_setEnable(stObj->posCtlHandle, false);
STPOSMOVE_setEnable(stObj->posMoveHandle, false);
STPOSMOVE_setVelocityStart(stObj->posMoveHandle, STPOSCONV_getVelocityFiltered(stObj->posConvHandle));
STPOSMOVE_setPositionStart_mrev(stObj->posMoveHandle, STPOSCONV_getPosition_mrev(stObj->posConvHandle));
}
这样就能直接打断目前正在运行的规划,直接从当前位置开始新的规划,但是这样有个问题,就是电机每次都是速度突降到0,然后从0速开始做规划,我明明已经设置VelStart为当前速度了啊,它应该以当前速度为初速度,来进行规划吧。

我的需求是,能够不停的打断当前的规划,并重新设定目标位置以及速度参数等,这个过程中电机不应该停转,应该是一个连续的过程,请问该怎么解决呢?谢谢!

user5188220:貌似是没法对cfg.VelStart进行赋值。。我设置了变量观察,发现这个VelStart不管在哪里改,都改不了,读出来还是0;这样正常吗?

你好,我想问一下,我用lab 13c,用它的SpinTac Move来做位置闭环控制,例程里面只能先完成一个位置后,到IDLE状态时才能开始下一个位置。并不能打断目前的位置,直接运行新设置的位置;

所以我改了一下例程,添加如下代码:
if(STPOSMOVE_getStatus(stObj->posMoveHandle) == ST_MOVE_BUSY){
STPOSCTL_setEnable(stObj->posCtlHandle, false);
STPOSMOVE_setEnable(stObj->posMoveHandle, false);
STPOSMOVE_setVelocityStart(stObj->posMoveHandle, STPOSCONV_getVelocityFiltered(stObj->posConvHandle));
STPOSMOVE_setPositionStart_mrev(stObj->posMoveHandle, STPOSCONV_getPosition_mrev(stObj->posConvHandle));
}
这样就能直接打断目前正在运行的规划,直接从当前位置开始新的规划,但是这样有个问题,就是电机每次都是速度突降到0,然后从0速开始做规划,我明明已经设置VelStart为当前速度了啊,它应该以当前速度为初速度,来进行规划吧。

我的需求是,能够不停的打断当前的规划,并重新设定目标位置以及速度参数等,这个过程中电机不应该停转,应该是一个连续的过程,请问该怎么解决呢?谢谢!

user5803177:

回复 user5188220:

if(STPOSMOVE_getStatus(stObj->posMoveHandle) == ST_MOVE_BUSY){
STPOSCTL_setEnable(stObj->posCtlHandle, false);
STPOSMOVE_setEnable(stObj->posMoveHandle, false);
STPOSMOVE_setVelocityStart(stObj->posMoveHandle, STPOSCONV_getVelocityFiltered(stObj->posConvHandle));
STPOSMOVE_setPositionStart_mrev(stObj->posMoveHandle, STPOSCONV_getPosition_mrev(stObj->posConvHandle));
}

请问你这段代码加在程序哪个函数下面?就只在13c下添加了这个几行代码吗?

赞(0)
未经允许不得转载:TI中文支持网 » SpinTac MOVE 的重新规划问题
分享到: 更多 (0)