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.

TMS320F280049C: InstaSPIN-FOC with TMDSHVMTRINSPIN

Part Number: TMS320F280049C
Other Parts Discussed in Thread: TMDSHVMTRINSPIN, C2000WARE

Hi TI team,

I'm debugging the motor control with TMDSHVMTRINSPIN in C2000Ware_MotorControl_SDK_4_00_00_00. However, there is an wired issue in lab4 (current close loop). The code's location will influence the value of oneOverDcBus_invV, which will jump between a very big vlue and 1/Vbus.  Further, the CMPA‘s value will not a constant value anymore. If I place this code to from line953 to line958, this issue will disappear. So is there any potential issue for the EST and the next labs? Why is like that?  

  

Another question is about lab5: motor ID. I have tried to start the identification, but failed. The following picture is the flag value and Ctrl/Est state. Could you please help to double check the right command to start motor ID. Looking forward to your reply! Thanks! 

Best regards,

Iris Liu

  • I'm attaching the pictures about the question1, the value jumps between 0.11 and 31415. 

  • Please monitor the "adcData.dcBus_V", seems like the issue could be from the dc bus voltage sampling value.

    Any other changes you did in the original lab? Lab 4 doesn't use the angle from the FAST (EST) for current closed-loop, this lab is just used to verify the current and voltage sensing.

  • Hi Yanming,

    See the following pitures:

    I have added breakpoints and run step into. The value"estOutputData.oneOverDcBus_invV" will change once run this code "EST_run(estHandle, &estInputData, &estOutputData)". Also, this issue disappear if I place the " estOutputData.oneOverDcBus_invV = 1.0/estInputData.dcBus_V" after the EST_run function. So I doubt if there any initialization or something in the black box. Would you please check this code?  In addition, why we give a constant value to a output register, instead of output it from the EST?  

    I have also read the code of universal_motorcontrol lab, there is no assignment statement to "estOutputData.oneOverDcBus_invV". Just a comparision.  

    About the question about lab5, hope your comments too. Thanks!

  • If you don't change anything in the original example, the estOutputData.oneOverDcBus_invV will be calculated by calling EST_run() in lab05 and the following labs.

    Please take a look at the InstaSPIN lab user's guide, don't add any load on the motor for identification, and set the correct identification variables value in the file of user.h according to the specification of the motor, to make sure the motor spin smoothly during Flux measurement and Ls identification states.

     #define USER_MOTOR_RES_EST_CURRENT     (2.0)                               // A - 10-30% of rated current of the motor

    #define USER_MOTOR_IND_EST_CURRENT     (-1.5)                             // A - 10-30% of rated current of the motor, just enough to enable rotation

    #define USER_MOTOR_MAX_CURRENT           (20.0)                               // A - 30~150% of rated current of the motor

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (40.0)                           // Hz - 10~30% rated frequency of the motor

  • Hi Yanming,

    Thanks for your reply. Yes, I have read the InstaSPIN lab user's guide. And send the start the motor ID command as the following step, but it didn't run smoothly ,see the final picture. It looks like the motor identification didn't start. Could you please help to check the correct command and your comments? Thanks!

  • Keep tuning the identification variables as mentioned above according to the spec. of the motor.

    What's the rated speed, current and power of the motor?

  • The rater speed: 3000rpm, Max current: 38A, rated power: 20kW, as the following picture. 

  • Hi Yanming,

    Customer face the issue that can not start the process of motor identification, 

    they follow the guide as below to set below two variables, no fault reported, but ctrlState is always stay at IDLE without process of RS, and LS identification,  I did the test with Launchpad, the result is the same and ctrlState is always stay at IDLE,

    My understanding is that when there is no fault reported, just set two parameters should start motor identification, no matter the result pass or fail.

    below are the parameters that set, any other parameters need to set to start motor identification?

  • Strong,

    You have to run the motor with a high voltage kit, and seems like the TI high voltage is still not enough to run this motor well since the rated voltage of the motor is 320VAC. The TI high voltage kit is better for a motor with a rated voltage that is lower than 200VAC. And the maximum current of the high voltage kit must be lower than 9.9A since its peak to peak current is only 19.8A.

    You may try to run the motor identifiction wihtout change any parameters in the original example except the following variables. The Rs should be identified in this lab anyway. If not, you may try to run the other small motor to verify the kit first.

     #define USER_MOTOR_RES_EST_CURRENT     (4.0)                               // A - 10-30% of rated current of the motor

    #define USER_MOTOR_IND_EST_CURRENT     (-3.5)                             // A - 10-30% of rated current of the motor, just enough to enable rotation

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (40.0)                           // Hz - 10~30% rated frequency of the motor

  • Hi Yanming,

    Thanks for your reply.

    we actually did not see the process of Rs identification, when set those two enable flag, 

    as there is no fault reported, my understanding is that even though the motor parameters or current/voltage based is set wrong, the state machine should move to Rs identification process, is my understanding correct? 

  • Strong,

    Yes if there is not any fault on hardware. Did you try to run the lab high voltage kit for the other small PMSM? What happens if try to identify the small motor?

    What's the switching and control frequency? Any changes in the lab codes except the motor parameters in the header file? Please check if motorVars.pwmISRCount increase.

  • Hi Yanming,

    motorVars.pwmISRCount is increasing, switching and control frequency is 16K, only do the hardware setting like voltage rate, current rate. 

    I have not test the motor with high voltage kit, I try to get a kit to have a test. 

  • Please try to run the code on TI EVM kit first to check if the issue is from s/w or h/w. You can try to run the lab03 and lab04 to verify the current and voltage sensing circuit if a customization board is using.