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.

TMS320F28069F-Q1: InstaSPIN-FOC Full identification of PMSM motors

Part Number: TMS320F28069F-Q1
Other Parts Discussed in Thread: MOTORWARE

We use TMS320F28069F-Q1 control board to control a new delta connected permanent magnet synchronous motor. The motor parameters are as follows

Stator Resistancephase to phase):1.017mΩ;Stator Inductance (phase to phase5.7uH

Maxspeed5000rpmNumber of Pole Pairs7Rated current350AThe open circuit back EMF@5000rpm21VDC Bus Voltage28V

We running full identification of PMSM motorsThe parameters related to the identification process are set as follows;

MotorType:1

MotPolePairs:7

MotMagnetizingCurrent:0

MotResEstCurrent:40

MotIndEstCurrent:10

MotorMaxCurrent:200

MotorFluxEstFreqHz:90

Overcurrent value of motor phase:240

When the identification of the state resistance is executed, The motor phase current exceeds “Overcurrent value of motor phase” threshold(The actual phase line current reaches 400A). Identification process stop. We reduce "motresestcurrent", The same overcurrent fault occurs in EST_ State_ RampUp.

We want to know the cause of the failure and what improvements should be made

Thank you very much!!

  • Please follow the steps to change the example labs and verify the current and voltage signals of the hardware board before run the lab02a/b/c since you are using your own board. Make sure that the current and voltage sampling works well.

    1. Change the PWM and ADC configuration in hal.c refer to the guide, motorware_hal_tutorial.pdf.

    C:\ti\motorware\motorware_1_01_00_18\docs\tutorials

     

    2. Set correct parameters based on the hardware board in user.h

    #define USER_IQ_FULL_SCALE_VOLTAGE_V           (xx)

    #define USER_VOLTAGE_FILTER_POLE_Hz               (xx)

    #define USER_ADC_FULL_SCALE_VOLTAGE_V       (xx)

    #define USER_IQ_FULL_SCALE_CURRENT_A           (xx)

    #define USER_ADC_FULL_SCALE_CURRENT_A       (xx)

     

    3. make sure that the sign of the current coefficient in HAL_readAdcData() in hal.h matches the current sensing circuit. Refer to chapter 5.2.2 Current Feedback Polarity in InstaSPIN user's guide (SPRUHJ1, https://www.ti.com/lit/spruhj1) to set the sign of the current scale factor.

     

    static inline void HAL_readAdcData(HAL_Handle handle,HAL_AdcData_t *pAdcData)

    {

       _iq current_sf = (+/-)HAL_getCurrentScaleFactor(handle);

    }

     

    4. Follow the instaSPIN lab guide to use lab01b and lab01c to verify your own hardware since you are not using the TI EVM kits and then run the subsequent labs.

     

    5. Using the lab02b or lab02c and tuning the identification variables parameter below to identify the motor parameters, and use the identified parameters to run the motor if the current and voltage sensing signals are verified and good.

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

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

    #define USER_MOTOR_MAX_CURRENT            (5.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

  • The parameters based on the hardware board in user.h are set as follows

    #define USER_IQ_FULL_SCALE_VOLTAGE_V           (40.0)//

    #define USER_VOLTAGE_FILTER_POLE_Hz               (1033.2)// USER_ADC_FULL_SCALE_VOLTAGE_V       (39.3)//

    #define USER_IQ_FULL_SCALE_CURRENT_A           (157.0)//

    #define USER_ADC_FULL_SCALE_CURRENT_A       (1500.0)//

    The identification variables parameter below:

    #define USER_MOTOR_RES_EST_CURRENT      (40.0)    

     #define USER_MOTOR_IND_EST_CURRENT      (-10.0)                            

    #define USER_MOTOR_MAX_CURRENT            (90.0)                           

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (90.0)                         

    When identify the motor parameters, The motor phase current still exceeds “Overcurrent value of motor phase” threshold.

    By the way,The PWM frequency is 10kHz,and The current sensor is LEM hc5fw600-s sp1, we The motor phase lines pass through the current sensor .A few days ago ,The motor and the control board are connected through a section of wire,The identification can work ,But we found that the three-phase current of the motor is unbalanced. The resistance of the wire is 2.182m Ω,that is biger than the motor resistance,so we removed the wire.Now The identification can not work.

  • As mentioned above, please try to run the lab01b and lab01c to make sure that the current and voltage sensing are correct for motor control.

    And which estimation state reported the error with over current? Did you monitor the current with an oscilloscope?

  • We  make sure that the current and voltage sensing are correct。

    “ USER_MOTOR_RES_EST_CURRENT      (40.0) ”Rs  estimation state reported the error with overcurrent,

     “ USER_MOTOR_RES_EST_CURRENT      (30.0 ),“EST_ State_ RampUp”estimation state reported the error with overcurrent,

    In these two processes, the oscilloscope is used to measure that the U and V phase currents are out of control, and the amplitude can reach 400A。

    If "u“ USER_MOTOR_RES_EST_CURRENT      (20.0 )", the motor speed is too low to complete the identification during LS identification。

    And also we replaced a motor and the controller can work normally

  • And also we replaced a motor and the controller can work normally

    Is the motor same type and model? Any load on the identification motor? Why the USER_MOTOR_RES_EST_CURRENT is so high? What's the rated current of your motor?

  • Hi Yanming Luo

    Thank you very much for your reply!

    The motor is not same typeand same model,The parameters are as follows:

    Item MOTOR-A( cannot be identified) MOTOR-B( cann be identified)
    Stator type Skewed Slot Straight slot
    Rotor type Outer rotor SPMSM Inner rotor SPMSM
    Stator Winding type Y
    Rated voltage(V) 28 28
    MAX- speed(rpm) 5000 1600
    Pole of Pairs 7 4
    Rated power(kW) 8 2
    Rated current(Arms) 350 100
  • You should use lab02c to identify and run the motor A since it's a low inductance and high speed motor.

    Don't add any load on the motor when try to identify the motor parameters. And try to tune the identification variables below with different values.

    #define USER_MOTOR_RES_EST_CURRENT      (20.0)    

     #define USER_MOTOR_IND_EST_CURRENT      (-10.0)                            

    #define USER_MOTOR_MAX_CURRENT            (200.0)                           

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (90.0)