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.

Overmodulation question : Spike on ACIM current

Other Parts Discussed in Thread: MOTORWARE, TMDSHVMTRINSPIN

Hi,

I'm trying to use overmodulation on an ACIM project.
I'm using the following configuration:
- Custom board based on HvKit_rev1p1 / TMS320F28027FPTT
- Motoware 15
- Lab10a
- ACIM motor Motovario TBS80D4 1.1kW (please find motor parameter below)
- This test is run at low voltage on a DC power supply (80 Vdc) with current limitation.
- The motor is free running at 465rpm with VsMax = 0.5
- The motor is free running at 540rpm with VsMax = 0.5774

#elif (USER_MOTOR == TecMotion_ACIM_TBS80D4)             	// Name must match the motor #define
#define USER_MOTOR_TYPE                 MOTOR_Type_Induction// Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)
#define USER_MOTOR_NUM_POLE_PAIRS       (2)                 // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only
#define USER_MOTOR_Rr                   (1.3)           	// Identified phase to neutral in a Y equivalent circuit (Ohms, float)
#define USER_MOTOR_Rs                   (2.16)           	// Identified phase to neutral in a Y equivalent circuit (Ohms, float)
#define USER_MOTOR_Ls_d                 (0.0185)         	// For Induction, Identified average stator inductance  (Henry, float)
#define USER_MOTOR_Ls_q                 (0.0185)      		// For Induction, Identified average stator inductance  (Henry, float)
#define USER_MOTOR_RATED_FLUX           (0.8165*230.0/50.0) // sqrt(2/3)* Rated V (line-line) / Rated Freq (Hz)
#define USER_MOTOR_MAGNETIZING_CURRENT  (2.3)           		// Identified magnetizing current for induction motors, else NULL
#define USER_MOTOR_RES_EST_CURRENT      (1.5)               // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
#define USER_MOTOR_IND_EST_CURRENT      (NULL)              // not used for induction
#define USER_MOTOR_MAX_CURRENT          (4.0)                // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
#define USER_MOTOR_FLUX_EST_FREQ_Hz     (5.0)               // During Motor ID, maximum commanded speed (Hz, float). Should always use 5 Hz for Induction.


#define USER_PWM_FREQ_kHz                (4.0) 				//30.0 Example, 8.0 - 30.0 KHz typical; 45-80 KHz may be required for very low inductance, high speed motors

This configuration works with no issue until I increase gMotorVars.OverModulation around the value 0.61.
With this value sometime a "spike" appear always exactly on top of phase U current waveform (see zoom window below).
At the beginning I suspect the bootstrap capacitor to not be able to handle long pulses when the overmodulation enter in the trapezoidal phase.

Channel 1: PWMHU.
Channel 2: Output Current on phase U.

This capture show a zoom when the spike appear, I notice the PWMHU signal contain large pulse at that time compared to a "normal" waveform (check next scope capture below).


This capture show a zoom on a "normal" waveform.

When I increase slightly the gMotorVars.OverModulation around the value 0.625 I can observe the same kind of spike on top of the phase V and W.
On the following capture, most of the spikes are on top of U phase (Channel 2 => Blue). Some spikes appears on top of V or W but less often (V phase => channel 1 => Yellow).

Because I suspect my custom hardware, I checked on the HvKit_rev1p1 and obtain the same behaviour with the kit.
On both hardware I'm able to run a brushless motor (the brushless motor is also running faster with the same voltage) on the full range of overmodulation (up to 0.67).

As described by Linley Rawlins in this tread https://e2e.ti.com/support/microcontrollers/c2000/f/902/t/499389 I tried to change:

- gCmpOffset value around the 1µs value
- svgencurrent.Minwith value around the 2µs value

But I didn't find any real improvement.

Do you have any idea of what happening?

thank you for your help,
Best regards,
Paul 

  • Paul,
    I was recently helping someone else with their ACI motor and saw the exact same thing.

    I can't test this until next week, but can you try with MotorWare v14? If you don't have this previously installed you can download form this topic:
    e2e.ti.com/.../510058

    in MW v15 (carried over in MW 16) we changed the SVGENCURRENT slightly and modified the description of the modulation index (where we used to use 1.0 we now in v15/16 use 0.5; 1.33 is now 0.67)

    Let's see if this makes any improvement.
  • Chris,
    I will try with MotorWare V14, but it seem the link in the other topic is no more active.
    I don't already have it because I start to work with Instaspin last december :-)
  • Chris,

    I found the same behavior with Motorware V14:

    I've install Motoware V14, make the change for my custom hardware and add the motor parameter.
    It's running fine (no acoustic noise) up to 1.19 in gMotorVars.OverModulation, but I still have large spike if I put 1.2 in gMotorVars.OverModulation.

    Channel 1 => PWMHU
    Channel 2 => Phase U Current 

    With a value of 1.19 in gMotorVars.OverModulation even if there is no acoustic noise, I can see on the current waveform a very small overshoot with the same kind of pulse in the PWMHU signal.

    I can easily reproduce this on my configuration let me know if there is something else to check on that issue.
    I must reach the max speed on those large fast flexible doors.

    Best regards,
    Paul

  • how high did you try setting
    svgencurrent.MinWidth

    ?

    try 3.0 or 3.5

    I didn't see a huge effect on the motor I was using with TMDSHVMTRINSPIN but it does help on some low voltage motors/kits.

    We're going to have to investigate this one a bit more...
  • Hi Chris,

    I came back to MW 15 lab10a and did the following tests:

    1/ As suggested I push svgencurrent.MinWidth variable from less than 2µs up to 3.5µs.
    There is not a huge effect on the motor, with my setup the best result  is with 2.8µs which allows to set 0.62 in gMotorVars.OverModulation.
    So it didn't solve the issue. Do you have a setup to reproduce this in your office?

    I must go back to my customer office to make a new test with overmodulation, I'm wondering if it is safe to run in pure sinus with a overmodulation limited to 0.5774. 

    2/ I tried the biggest PM motor (Allan Bradley automation 5.4kW, 4000rpm max) I have in the office with the same configuration except the motor itself.

    With the same DC voltage, this motor rpm is closed to the motovario TBS80D4 ACIM, but this PM has 4 poles pair (so a faster electric field) instead of 2 on the ACIM.


    #elif (USER_MOTOR == Rockwell_MPL_B540K_MK22AA) // Allan bradley automation / Rockwell #define USER_MOTOR_TYPE MOTOR_Type_Pm #define USER_MOTOR_NUM_POLE_PAIRS (4) #define USER_MOTOR_Rr (NULL) #define USER_MOTOR_Rs (0.5632) #define USER_MOTOR_Ls_d (0.0075476) #define USER_MOTOR_Ls_q (0.0075476) #define USER_MOTOR_RATED_FLUX (1.251433) #define USER_MOTOR_MAGNETIZING_CURRENT (NULL) #define USER_MOTOR_RES_EST_CURRENT (1.0) #define USER_MOTOR_IND_EST_CURRENT (-1.0) #define USER_MOTOR_MAX_CURRENT (20.0) #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) #define USER_PWM_FREQ_kHz (4.0) //30.0 Example, 8.0 - 30.0 KHz typical; 45-80 KHz may be required for very low inductance, high speed motors

    This PM run really smooth on the full range of overmodulation with lab10a:
    - The motor is free running at 482rpm with VsMax = 0.5
    - The motor is free running at 559rpm with VsMax = 0.5774
    - The motor is free running at 600rpm with VsMax = 0.67

    I will try at a lower Vdc voltage to have the same electrical field frequency.

    Scope capture at VsMax = 0.67.
    Channel 1 Yellow => PWMHU
    Channel 2 blue => Current on phase U 

    Scope capture at VsMax = 0.5774.
    Channel 1 Yellow => PWMHU
    Channel 2 blue => Current on phase U 

    Scope capture at VsMax = 0.5
    Channel 1 Yellow => PWMHU
    Channel 2 blue => Current on phase U 

  • "Do you have a setup to reproduce this in your office?"
    Yes, but I haven't run previous MW versions. I may do that today to look at over-modulation performance.

    "I must go back to my customer office to make a new test with overmodulation, I'm wondering if it is safe to run in pure sinus with a overmodulation limited to 0.5774. "

    I believe so.
  • Paul,
    When you ran the ID for your induction motor were you using 230Vac input to your hardware?
  • Hi Chris,

    To be honest, because this motor was one of the first I identified when I started with InstaSpin on TI HvKit, I cannot remember if I did it at low voltage or on main (230Vac here). So I played again the ID process with my custom board supplied with 230Vac. The result seem to be close to what I have in the "user.h" file.

    I will check later if this parameter change the Overmodulation around 0.62.

    Best regards,
    Paul 

    #elif (USER_MOTOR == TecMotion_ACIM_TBS80D4)             	// Name must match the motor #define
    #define USER_MOTOR_TYPE                 MOTOR_Type_Induction// Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)
    #define USER_MOTOR_NUM_POLE_PAIRS       (2)                 // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only
    #define USER_MOTOR_Rr                   (1.3)           	// Identified phase to neutral in a Y equivalent circuit (Ohms, float)
    #define USER_MOTOR_Rs                   (2.16)           	// Identified phase to neutral in a Y equivalent circuit (Ohms, float)
    #define USER_MOTOR_Ls_d                 (0.0185)         	// For Induction, Identified average stator inductance  (Henry, float)
    #define USER_MOTOR_Ls_q                 (0.0185)      		// For Induction, Identified average stator inductance  (Henry, float)
    #define USER_MOTOR_RATED_FLUX           (0.8165*230.0/50.0) // sqrt(2/3)* Rated V (line-line) / Rated Freq (Hz)
    #define USER_MOTOR_MAGNETIZING_CURRENT  (2.3)           		// Identified magnetizing current for induction motors, else NULL
    #define USER_MOTOR_RES_EST_CURRENT      (1.5)               // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
    #define USER_MOTOR_IND_EST_CURRENT      (NULL)              // not used for induction
    #define USER_MOTOR_MAX_CURRENT          (4.0)                // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (5.0)               // During Motor ID, maximum commanded speed (Hz, float). Should always use 5 Hz for Induction.
    
    
    #define USER_PWM_FREQ_kHz                (4.0) 				//30.0 Example, 8.0 - 30.0 KHz typical; 45-80 KHz may be required for very low inductance, high speed motors
    

  • your rated flux is 3.75 V/Hz, but notice in the GUI you are only showing 2.42 V/Hz. Do you see the same when running the motor?
    You ID'd 2.13 A for magnetizing current. I would certainly lower to at least that level.
  • Hi Chris,

    Yes when the motor is running I see:

    - 2.12 V/Hz at nominal speed and light load.
    - 2.7 V/Hz at nominal speed and motor loaded near nominal electric power.

    I lower the magnetizing current to 2.13A as found during ID.

    By the end of this week a will do a new test in real condition and an overmodulation limited to 0.5774, I hope to reach the expected speed.
    Any news on your side on this issue ?

    Best regards,
    Paul

    PS: I already saw that you are out of the office for some days.

  • Paul,
    We haven't been able to identify why we can't go to full over-modulation on these motors. It has to do with the sample window in the over-modulation range. We have it on the list to investigate. For now you need to keep the modulation limited to the highest stable you can (probably 0.59 best case).
    -Chris
  • Hi Chris,

    I did tests on a real config with an over modulation limited to 0.5774, my setup works fine with no issue.
    But in order to reach a top speed closed to the customer commercial variable speed drive I discover that over modulation was not high enough. I add some field weakening at high speed with pretty good result.
    The problem is I don't know how much magnetizing current I should subtract to get the max from the motor. Do you have an idea on that ?

    Best regards,
    Paul

     

  • If you enable PowerWarp it will reduce the magnetizing current to the minimum required to reach the target speed with the existing load. I would use that to find out the required field weakening.

    you could use PowerWarp enabled in your system, but it lowers the dynamic response of the system, meaning that when a load is applied it takes some time to build the magnetizing current field back up, so it's not appropriate for all applications. Depends on how dynamic the load.
  • Hi,

    I performed a test with the modified overmodulation algorithm of MotorWare 17.

    1/ When I compare MW15 Vs MW17 with Lab10a on the same test setup (TI HVkit + Motovario TBS80D4 ACIM on a DC power supply limited @80V 1Amp, this setup should be similar to what I did several month ago at the beginning of that post), but I cannot see a real difference between MW15 & MW17.
    I still have current spike with the same gMotorVars.OverModulation value (around 0.61 or 0.62).

    2/ After several tests I discover that the Kp of PI Id / Iq current controller has a large impact on the current spikes I observe the ACIM output current.
    I'm able to push the overmodulation to the max value 0.6666, if Kp is small enough.
    In the following waveform, this is one phase current on the ACIM at startup. The low speed is in full sinus mode and and the end of the waveform the system works in 0.6666 overmodulation range.

    My question to TI InstaSpin dev team is about the workaround I did:
    Is it possible that the current regulator Kp (I just used the automatically compute value with the labs) is to high in overmodulation range?
    Did you observe or reproduce the same behavior on your side?
    Any other idea on that issue?

    Best regards,
    Paul

  • Paul,

    timely, I was just replying to the private message you sent me. Your fix by decreasing the current control gains is correct.

    We confirmed MW17 OVM by using HV_Kit and ACIM and had good results. We have two pieces of guidance for OVM.

    1)      Decreasing current PI gains about half and below. Some current distortions at OVM range can be seen even with the new OVM (it depends on motor’s characteristic) and it can make the current controller unstable. So decreased current gains will help system’s stability.  

    2)      PWM and the control frequency have to be same for getting the right trig point with HAL_setTrigger(). In other words, USER_NUM_PWM_TICKS_PER_ISR_TICK  should be (1) for OVM mode..