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.

CCS/TMDSHVMTRINSPIN: Motor jerk and instability near base rpm Motorware

Part Number: TMDSHVMTRINSPIN
Other Parts Discussed in Thread: MOTORWARE

Tool/software: Code Composer Studio

Hi,

I am using motorware 15 stack , a resolver feedback ( using a ti resolver to digital conversion kit ) with a PMSM as my setup. I am using Lab5a with resolver electrical angle through SPI. This setup was working well .

When I ramped motor rpm near to base rpm ( around 6000rpm at 400Vdc without field weakening), I have noticed that the motor is producing a jerk with a higher negative current ( around -250Adc). Few rpms before  that point the motor is starting to produce a hum and then producing the jerk with negative current. At that time inverter IGBT drivers are getting trip.

Have anyone of you experienced this ? what should be the courses for this and how can I solve this?

Thanks 

  • Hello,
    Concerned experts have been notified of this query.
    Note that TI US office is closed today so please expect a delayed response.


    Regards
    Himanshu
  • 1. Please make sure that the angle offset calibration has been done for the resolver, and the delay time of SPI communication is short enough for high speed running.

    2. Please check if the input voltage is higher enough for the high speed of the motor, add the following codes to updateGlobalVariables_motor() if it didn't have such codes, to check if the gMotorVars.Vs is close to _IQ(0.5) or higher than this value. If yes, that means the input voltage is not enough high for high speed running. You have to increase the input voltage or implement the field weakening control.

    // read Vd and Vq vectors per units
    gMotorVars.Vd = CTRL_getVd_out_pu(ctrlHandle);
    gMotorVars.Vq = CTRL_getVq_out_pu(ctrlHandle);

    // calculate vector Vs in per units
    gMotorVars.Vs = _IQsqrt(_IQmpy(gMotorVars.Vd, gMotorVars.Vd) + _IQmpy(gMotorVars.Vq, gMotorVars.Vq));

    3. Please check the PI regulator of Id and Iq, to speed if the feedback value is always higher or lower than the reference value, and tune the gains of both regulators.
  • Hi Yanmin,

    Seems like these jerks are occurring around Vs equals 1. Seems once the Vs reaches to 1, amount of current (negative current) pass to battery. Is there any way to avoid that? To avoid that transient boundary, Is there any method to keep Vs below 1 ( may be 0.8) without injecting negative d axis current in terms of technical side or firmware side?
  • When I do some experiment on this, I noticed that Vs and the motor voltage V line to line is not liner. Is this expected result or should Vs and motor voltage in a liner relation? 

    I kept Vs constant by injecting negative d axis currents to get the readings.

    Bus voltage was 64Vdc

  • Yanmin,

    ""check if the gMotorVars.Vs is close to _IQ(0.5) or higher than this value. If yes, that means the input voltage is not enough high for high speed running. You have to increase the input voltage or implement the field weakening control.""

    Seems like in my motor Vs is getting more than _IQ(0.5). Is there anyways to keep that below _IQ(0.5) without injecting negative d axis current. And actually what happens when Vs reaches to _IQ(0.5) ?
  • Hi Yanmin,

    Could sorted out Vs limiting by changing USER_MAX_VS_MAG_PU which is setting outMax to the PID run. And waiting for answers for other two questions. Regarding graph and the explanation on operating gMotorVars.Vs is close to _IQ(0.5) as you mentioned.

  • 1. Increase the dc bus voltage.

    2. Or increase the USER_MAX_VS_MAG_PU, and refer to lab10a to implement the over-modulation.

    Both cases, need to tune the gains of speed PI regulator for high speed.