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.

TMS320F28069M: lab 13b (Spintac motion with sensor) max speed question

Part Number: TMS320F28069M

Hello,

we have the maxon motor (1 pole pair) max at 8K RPM with encoder (500 lines), 100 KHz frequency for encoder.

using lab 2a (motor identification) we are able to identify motor parameters (very close to the motor spec), spin to max speed at 8 KRPM.

in lab 5d, (spintac sensorless speed control), we are able to spin motor up to 8 KRPM.

in lab 12b (spintac sensor speed control), we are able to spin motor up to * KRPM as well.  Looks like the speed ref is directly input to SpinTAC Velocity Control block.

now, on lab 13b, with spintac sensor position control, we are only able to spin to half the speed (e.g. 3.4 KRPM).

Looks like the SpinTAC Position Move block output a ref speed that is exhausted up to 3.47KRPM.

Since we were able to run lab 2a, 5d, 12b up to 8 KRPM, we think that our voltage supply and other parameters are ok.

can you please let us know what can potentially constraint the SpinTAC Position Move output ref speed?

Thanks and Best Regards,

Henry

  • 1. Make sure that the same user.h is used for lab12b and lab 13b.

    2. Make sure that setting the right position profile to enable the motor run up to the maximum speed you want. Like gMotorVars.PosStepInt_MRev and gMotorVars.MaxAccel_krpmps.

  • hi Yanming,

    yes, we have the same user.h between lab 12b and 13b.

    we set gMotorVars.PosStepInt_MRev to 1000 to ensure that the control loop has enough time to ramp to max speed.

    but still it does not.

    can you please let us know what else is missing?

    few weird thing that we noticed for this Maxon motor:

    1- USER_IQ_FULL_SCALE_FREQ_Hz is defined with EQP according to the formula: (USER_MOTOR_NUM_POLE_PAIRS/0.008) or Hz = (RPM * Poles) / 120.  In either case, the value comes out to be 133.33 Hz or 125 Hz.  This value seems to be too low for lab 13b to run.  we have to increase this value to like 200 or above.  we wonder why.

    2- inside ST_setupPosMove function, the max speed limit is defined by STPOSMOVE_setVelocityLimit(obj->posMoveHandle, _IQ24(USER_MOTOR_MAX_SPEED_KRPM * ST_SPEED_PU_PER_KRPM));.  

          //! \brief Defines the speed scale factor for the system
          //! \brief Compile time calculation for scale factor (ratio) used throughout the system
          #define ST_SPEED_PU_PER_KRPM (USER_MOTOR_NUM_POLE_PAIRS / (0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz))

    based on this define, it seems that it will never get to 8 KRPM defined for USER_MOTOR_MAX_SPEED_KRPM  because ST_SPEED_PU_PER_KRPM is like 0.5.  this is very confusion, can you please explain?

    Thanks,

    Henry

  • 1- USER_IQ_FULL_SCALE_FREQ_Hz is defined with EQP according to the formula: (USER_MOTOR_NUM_POLE_PAIRS/0.008) or Hz = (RPM * Poles) / 120.  In either case, the value comes out to be 133.33 Hz or 125 Hz.  This value seems to be too low for lab 13b to run.  we have to increase this value to like 200 or above.  we wonder why.

    You can increase this value directly. Seen like the lines of the encoder you used is too low to implement position/motion control to achieve a better performance.

  • hi Yanming,

    yes, we increased the USER_IQ_FULL_SCALE_FREQ_Hz  to make it run.  that is ok.

    but about the encoder line, i am not sure why 500 lines (2000 count per pulse) can limit the speed?

    in lab 12b, we used sensor + spintac velocity control and it works up to 8 KRPM.

    there is still something about Spintac position move control that are not mentioning in spec.

    can you please help us getting in contact with SpinTac?

    Regards,

    Henry

  • but about the encoder line, i am not sure why 500 lines (2000 count per pulse) can limit the speed?

    Not limit the speed, just affect the position control performance.

    can you please help us getting in contact with SpinTac?

    All of consents about SpinTAC we can provided you can find in the InstaSPIN-FOC and InstaSPIN-MOTION User's Guide

    You can check the variables in the current PI controller  to see if the torque current  is enough for high speed, and check the variables in st_obj objects to see if the reference velocity and feedback velocity is correct as you want. The issue could be the reference velocity is not the maximum speed.

  • Yanming,

    inside ST_setupPosMove function, the max speed limit is defined by STPOSMOVE_setVelocityLimit(obj->posMoveHandle, _IQ24(USER_MOTOR_MAX_SPEED_KRPM * ST_SPEED_PU_PER_KRPM));.  

          //! \brief Defines the speed scale factor for the system
          //! \brief Compile time calculation for scale factor (ratio) used throughout the system
          #define ST_SPEED_PU_PER_KRPM (USER_MOTOR_NUM_POLE_PAIRS / (0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz))

    based on this define, it seems that it will never get to 8 KRPM defined for USER_MOTOR_MAX_SPEED_KRPM  because ST_SPEED_PU_PER_KRPM is like 0.5.  this is very confusion, can you please explain?

    The InstaSpin document and user guide did not say anything about this.

    really appreciate your help.

    Thanks,

    Henry

  • You may check the related variables in the "st_obj" object, especially the "VelRef", "AccRef", "VelMax", "VelLim" and "AccLim"i n the related objects of "st_obj".  And also need to check if the speed is limited by the torque current.