Changing velocity and acceleration during a move

For performance reasons we want to consolidate two sequential moves into a single move. The first move is a small very slow move to “undock” and the second move is high speed. While this works it costs time for the unnecessary stop and start. I have done an initial implementation where there is a single move with low acceleration and maximum S-Curve, and with high deceleration. This works reasonably well but once we are past the undock range (about 2mm) it’s not going as fast as it could. So ideally once the initially movement reaches ~2mm I would like to dynamically increase the velocity and acceleration settings. I see commands for changing velocity in Multi-moves but not for single axis. I also see the triggerModify but that seems to be for slowing down and not for speeding things up. Is a PVx type move the only option? The PVx commands require a time which I would need to calculate which is undesirable.

You can change the velocity, acceleration, deceleration of a moveSCurve that is executing on the fly simply by calling the function again with different parameters.
e.g.

axis.MoveSCurve(20,1,1,1);
if(axis.ActualPositionGet()>2) {
axis.MoveScurve(20,5,5,5);
}

MoveSCurve()

1 Like

Cool, that is nice and simple!

Thanks.

1 Like