How to achieve blending smooth motion control in single axis control?

We are now using C++ single axis motion command(such as axsPosCmd) to achieve the position control with SDK in ctrlX core by Motion APP.

For example, when there are three position movement with three velocity in single axis, we know it can be done by sending three motion command (axsPosCmd) to motion APP in buffer mode. But in this mode, the velocity will reduce to 0 from one positioning to next positioning like the graph showed below:

We want to achieve blending smooth velocity change from one positioning to next positioning,like the below graph:

And if we use axsPosCmd in non-buffer mode, the velocity will directly change to current positioning command without last command finished, this is not what we want to achieve either.

Also, if we send the non-buffer axsPosCmd by self-design program which is cyclic reading the Ipo position, the position accuracy is not as good as we expect, there will be position error in velocity change timing due to program scan delay.

So how can we achieve the accurate continuous positioning with velocity smooth changing in ctrlX motion APP?

 

Best reply by CodeShepherd

You are totally right. Sorry for that, I just used some standard values for my tests and can confirm your behavior.

It seems that blending of buffered commands for single axis is not possible at the moment. I will have an discussion  with our R&D and suggest to read out the position cyclically and send new movement command unbuffered accordingly.

View original
6 replies