This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

InstaSpin Motion Acceleration/Deceleration and Max Velocity

In lab12b, I have some issues with the velocity that it runs at. If I set the acceleration/deceleration to 75.0 krpmps, jerk to 400.0 krpmps2 using trapezoidal control, when I set the velocity to 3.0 krpm, and run say 1000 steps, it runs at about 2.99 krpm, which is great. However; if I lower the acceleration/deceleration to 0.2 krpmps it only accelerates to a velocity of 1.21 krpm. I tried increasing the number of steps, but still only reaches 1.21 krpm, just holds that velocity for longer. Why does it not reach my maximum velocity? Is there a limit on the time during which is accelerates/decelerates?

Mark St. Lawrence

  • Mark,

    In order to expand the configurable range of the position profile generator, we had to make some design trade-offs.  The chief one being if you set a position step greater than 1.0 pu position (defined as USER_IQ_FULL_SCALE_FREQ_Hz / USER_MOTOR_NUM_POLE_PAIRS), we will extend the velocity hold state of the profile in order to get to the goal position.  This was done in order to work within the fixed-point realm and to maintain precision.  Prior to making this trade-off our maximum position step was limited to 1 pu position, which is typically 125 mechanical revolutions.  

    I hope this helps answer your questions.

  • Mark,

    Let me explain a little deeper what is going on.  The profile generator can accept position steps greater than our definition of 1 pu (USER_IQ_FULL_SCALE_FREQ_Hz / USER_MOTOR_NUM_POLE_PAIRS).  In order for us to avoid overflow and underflow when doing these profile calculations, we had to limit the acceleration & deceleration periods to only take place within 0.5 pu each.  This means that once the motor reaches 0.5 pu during a movement, it will stop accelerating and will hold that velocity until it needs to decelerate.

    This PPT should help explain as well: 5518.ST_PosMove Extension Explination.pptx.

    There are some workarounds:

    1. You could opt to use a different profile generator for your system.
      1. If you choose to use a different profile generator, you would need to provide the references to SpinTAC Position Control (see the function ST_runPosCtl)
    2. You could modify the application
      1. It could run at a lower speed
      2. It could accelerate faster
    3. You could run SpinTAC Position Move in the position controlled velocity profile mode (see Lab 13e) and manually tell it to decelerate when you are close to your goal position.
    I hope this helps explain a little better about how this algorithm works.