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.

Max Duty Cycle, Over Modulation, GUI vs. MotorWare projects

Other Parts Discussed in Thread: MOTORWARE, DRV8312, TMDSHVMTRINSPIN

Hello Chris,

Today my GUI Composer works in my computer (with Windows 7 OS)! So strange... Anyway, I am glad.

About field weakening, below are my answers and report:

"Did you change this to allow more than 2A of field weakening when using the GUI?"
No, the value was -2A.

"What value of Id did you use in the GUI to achieve max speed? What value of Id in the MotorWare project?"

For Id reference, I used -2 A for both (GUI and Motorware).

Are you using the same bus supply voltage when working with both projects?
Yes, the supply voltages were the same for both

For maximum duty cycle:
SVM Modulation in GUI was 1.15 [Max Duty Cycle, 1.15 default]
In Motorware, it was #define USER_MAX_DUTY_CYCLE        (1.309401076758503)

My report:
I tried today with 1.15 for Max Duty Cycle in Motorware project and the motor could run more than its maximum RPM (I ran it to be 1850RPM).

So what is wrong with value 1.309401076758503 for max duty cycle?

Below are the screenshoots from GUI and Motorware with max duty cycle = 1.15 and the motor ran at speed 1850 RPM.

Thanks for the support!

  • Maria,

    Are you saying that with MotorWare v09 the motor goes faster with a max duty cycle of 1.15 than with 1.30? 

    With Id_ref the same?

  • No, what I am saying is my motor can run faster than its max RPM (the max is 1725 RPM) with 1.15 without any choking.

    When I used 1.30, my motor choked and I stopped it because I was afraid that my motor would be broken.

  • Maria

    In the project used for the GUI code the range of the max duty cycle is different than on MotorWare. In the GUI screenshot you are using the old 1.15 and notice you have -0.91A of field weakening. 

    In the MotorWare project if you are using 1.15 it isn't equivalent to the GUI, it is larger by several %, meaning you will get more voltage and higher speed. Also note you ate applying -0.27A of field weakening. 

    I am not surprised that the speeds from these two are the same. 

    With the same amount of field weakening you should see equivalent speed from GUI 2.0 and MotorWare 1.309

    I'm not sure if that answered your question or not...

  • Hello Chris,

    Yes, I noticed that the Id of field weakening were different for Motorware and GUI when I set the same speed (1850 RPM). From your explanation, now I know that this because the levels they used are different.

    I put -2A as max current for both in Motorware and GUI, and these Id ref were automatically changed when I set the speed.

    My question is, I expected that if we put bigger value for duty cycle the higher speed we could reach, or not?

    Because when I put 1.309 in #define USER_MAX_DUTY_CYCLE, the motor could not be driven well to reach its maximum speed.

    I haven't tried yet to put 2.0 value for duty cycle in GUI composer to compare it, maybe I will do it today.

    Thanks!

  • MotorWare with 1.309 should give the same max speed as GUI with duty cycle 2.0

    Please tell me if this is not the case. 

    I can test this out myself late this week. 

  • Hello Chris, thanks for your time.

    I have tried field weakening in GUI Composer with 2.00 as Max Duty Cycle value and my motor can run more than 1725 RPM (I ran it into 1850 RPM).The max negative Id was stayed the same (2.0 A). And for this speed, the Id Reference was changed automatically (-0.93) as shown below.

    I also tried field weakening example project (Lab 9) of Motorware with #define USER_MAX_DUTY_CYCLE        (1.309), and #define USER_MAX_NEGATIVE_ID_REF_CURRENT_A     (-2.0).

    And my motor could not run more than 1650 RPM. When I put 1700 RPM as speed reference, my motor started choking.

    So in my case, the results were different. Any ideas?

  • Maria,

    Before you turn on field weakening and with the Id_ref still at 0, what are the mac speeds you can reach with each? I really it would be nice to know in torque mode so the speed loop is taken out of the equation, but not totally necessary. 

  • Hello Chris,

    For Motorware, the maximum speed without turning on field weakening is around 1.62 krpm.

    This is the same if I turn on field weakening and with Id_ref still at 0, the max speed is around 1.62 krpm. Above this speed, Id_ref is not 0 anymore.

    For GUI Composer, the maximum speed without turning on auto field weakening is around 1.58 krpm.

    This is not the same if I turn on auto field weakening and with Id_ref still at 0, the max speed is around 655 rpm.

    Above this speed, Id_ref is not 0 anymore. You can see the figures below.

    This is for 655 RPM with Auto Field Weakening ON, and 2.00 Max Duty Cycle. Id Reference is still 0.

    At 660 RPM with Auto Field Weakening ON, and 2.00 Max Duty Cycle, Id Reference is not 0 anymore.

  • Maria,

    "For Motorware, the maximum speed without turning on field weakening is around 1.62 krpm."

    ok.

    "This is the same if I turn on field weakening and with Id_ref still at 0, the max speed is around 1.62 krpm."

    Exactly as it should be

    "Above this speed, Id_ref is not 0 anymore."

    Correct, to go faster you will need to weaken by reducing (more negative) IdRef_A

    "For GUI Composer, the maximum speed without turning on auto field weakening is around 1.58 krpm."

    Ok, this is close and can be explained by the change in SVPWM, sampling, etc.

    "This is not the same if I turn on auto field weakening and with Id_ref still at 0, the max speed is around 655 rpm."

    When you turn on field weakening the speed drops from 1580 to 655? From your images it looks like you have set a new target of 655 or 660 RPM. You are not asking for max speed. Your target speeds are being met (655 RPM with no FW, 660 w/ FW) so the control system is happy.

    But if you were asking for higher speed that wasn't being met  my comments would be:  Is there a load on the motor? Recall that when field weakening you are attempting to gain speed by reducing the flux of the machine, which reduces torque. So you can only go faster if you still have enough torque for the load. If you are already near maximum load then the drop in torque will REDUCE your speed.

    "Above this speed, Id_ref is not 0 anymore. You can see the figures below."

    Your estimated is reaching your target. Increase your target RPM if you want to go faster.

     

  • Hello Chris,

    I thought you wanted to know what the max speed while Id_Ref = 0 is.

    So I tried with both field weakening ON and field weakening OFF.

    So that it was in GUI Composer, the max speed when Id_Ref still = 0 with field weakening ON, was 655 RPM (I found this by adjusting the speed target and seeing the Id_Ref whether it was still 0 or not).
    If I set the speed above 655 RPM (with field weakening ON), the Id_Ref is automatically changed (for your information, I didn't touch anything for this Id_Ref, I only adjusted the speed target).


    The pictures that I attached in previous message were for speed 655 RPM and 660 RPM with both field weakening ON to show you that Id_Ref was not 0 anymore above 655 RPM. So both of them with field weakening ON.

    The higher speed can be reached IF field weakening ON but Id_Ref is not 0 anymore.
    I have tried with speed 3000 RPM and the motor was still driven well (with field weakening ON).
    For your information, the motor has no load.

    When field weakening is OFF, the max speed (Id_Ref still 0) is around 1.58 krpm.
    Above this speed, the motor started to choke.

    Actually, I don't really understand what this comparison for.

    Because my original question was about:

    Why in Motorware, with field weakening ON, and Max Duty Cycle = 1.309, my motor could not reach its maximum speed (max speed = 1725 RPM stated in the motor plate). With Max Duty Cycle = 1.15 in Motorware and with field weakening ON, my motor could reach higher than its maximum speed (higher than 1725 RPM).

    With higher max duty cycle (1.309 compared to 1.15), we should be able to reach higher speed, or not?

    And compared to GUI Composer, I have no problem to run my motor to be higher than its maximum speed.



    Thanks.

  • Maria,

    Max speed of 655 RPM is not correct if you can reach 1580 RPM without field weakening. You either have the poles / pole pairs set incorrect or the parameters are different in your system. Something is wrong.

    "Why in Motorware, with field weakening ON, and Max Duty Cycle = 1.309, my motor could not reach its maximum speed (max speed = 1725 RPM stated in the motor plate). "

    Assuming you have enough voltage and current from your power supply, you should be able to reach very close to the rated speed (1725) with field weakening OFF and Max Duty Cycle = 1.309

    "With Max Duty Cycle = 1.15 in Motorware and with field weakening ON, my motor could reach higher than its maximum speed (higher than 1725 RPM)."

    When field weakening is ON it will add -Id to try to reach the target speed.

    For the comparision between these two are you using the same proj_lab##.c?  Even though the field weakening can be set with just a flag, the proj_lab##.c MUST actually have the field weakening "set" function called in the updateGlobalVariables function.

    Ex:

    in lab9a.c the global variable update function has

      // set field weakening enable flag depending on user's input
      FW_setFlag_enableFw(fwHandle,gMotorVars.Flag_enableFieldWeakening);

    but in lab2a.c this does not exist

    This means in both you can change the gMotorVars.Flag_enableFieldWeakening variable, but only in lab9a.c will it actually do anything.

    "With higher max duty cycle (1.309 compared to 1.15), we should be able to reach higher speed, or not?"

    Yes, duty cycle of 1.309 allows slightly higher voltage bus usage than 1.15, so you should reach higher speeds.

     

  • Hello Chris,

    I used the same project labs for field weakening ON and OFF (project labs 9a).

    It is then strange that in my case for Motorware, I can reach higher speed than 1725 RPM if I put max duty cycle 1.15 but I can not reach higher speed than 1725 RPM if I put max duty cycle 1.309.

    Have you tried this again?

    Btw, I have holiday until next Monday so I will not be able to give any update.

    Thanks for your attention.

  • Maria,

    I just ran some tests with DRV8312 and the included motor. No load.

    I used lab10a first (which includes the ability to change the max modulation from the expressions view)

    Max Duty = 1.3094
    Max RPM =  ~6380

    Max Duty = 1.15
    Max RPM = ~6070

    Max Duty = 1.0
    Max RPM = ~5290

    as expected.

    I then tried lab09a and only made the change to Max Duty in user.h

    Max Duty = 1.3094
    Max RPM =  ~6380

    Max Duty = 1.15
    Max RPM = ~6080

    Max Duty = 1.0
    Max RPM = ~5300

    as expected

    and just for fun I used lab4a to just run torque mode, and I include this line from lab10a at around line 265

    CTRL_setMaxDutyCycle(ctrlHandle,gMotorVars.OverModulation);

    so that I could change the max limit w/o recompiling.

    Max Duty = 1.3094
    Max RPM =  ~6420 (

    Max Duty = 1.15
    Max RPM = ~6090

    Max Duty = 1.0
    Max RPM = ~5300

    as expected

    Everything is working as expected with the SVPWM modulation on the PM/BLDC motors.

     

  • Hello Chris, thank you for your time to try it.

    Seems that it work well for PM/BLDC motors. How about Induction Motor?

    I use TMDSHVMTRINSPIN and Marathon motor (HVACIMTR).

    If you have time, can you try it too? Sorry to bother you.

    Thanks a lot!

  • I will see if I have time tomorrow, Maria.

    If for some reason it doesn't work for an induction motor I would say there is probably something wrong elsewhere with the system (parameters ID'd, controller tuning, etc).  Nothing special in the induction motor as far as the SVPWM and max duty cycle.