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: Motorware 17 Default VsRef

Part Number: TMS320F28069F
Other Parts Discussed in Thread: MOTORWARE

Greetings,

I've designed a custom motor controller which runs great, and I've been using Lab 4 for current-mode control with great success.

Today, I switched over to a lower Kv motor (to draw less current to reach my max RPM), and of course as expected I've hit the "RPM barrier" where I need to implement either field weakening or over-modulation.

I currently have my USER_MAX_VS_MAG_PU set as 0.5, but then I noticed in the MOTOR_Vars_INIT of main.h, the default value of gMotorVars.VsRef is set as _IQ(0.8 * USER_MAX_VS_MAG_PU).

Can you explain the inclusion of this 0.8 scale factor?  Is it arbitrary just to leave a "safety margin", or is this a necessary value?  Is it catastrophic for me to increase this to 1.0?

Thanks!

Chris 

  • For lab 16&17, please refer to user.h which a description about USER_MAX_VS_MAG_PU. The maximum USER_MAX_VS_MAG_PU is 0.6666 ( means 2/3). Often, we set the maximum USER_MAX_VS_MAG_PU to 0.5 for a pure sine waveform control, and set gMotorVars.VsRef to _IQ(0.8 * USER_MAX_VS_MAG_PU) for leaving a margin to enable field weakening control. You can set USER_MAX_VS_MAG_PU to other value which is less than 0.5.
  • Yanming,

    Thanks for your reply.  I understand the use of overmodulation for the most part, but what I wanted to know specifically is the importance of the 0.8 multiplier.

    As an example, could I run Lab 4 (which has no overmodulation), setting my USER_MAX_VS_MAG_PU to 0.5, but could I then change my gMotorVars.VsRef to _IQ(1.0* USER_MAX_VS_MAG_PU) if I don't plan to use field weakening?

  • You are right. You can set to any value is less than or equal to 0.5 if you didn't use field weakening as Lab09. The 0.8*USER_MAX_VS_MAG_PU value means the threshold of Vs for field weakening in lab09.
  • Yanming,

    Thanks for all of your useful feedback. Since in this current application I will not be using field weakening or overmodulation, I will set my Vsref to 0.5.

    However, I do have another test I want to do where I will use field weakening.  Can you explain why 0.8*USER_MAX_VS_MAG_PU is necessary for field weakening?  Couldn't I still use a 0.5 Vsref maximum even during field weakening?

    Thanks!

    Chris

  • You can change 0.8*USER_MAX_VS_MAG_PU to other values, like N*USER_MAX_VS_MAG_PU, and N<1.0. If you wants to use FWC algorithm in motorWare, you have to set the VsRef<0.5 to enable a delta between VsRef and Vs to implement FWC.
  • Thanks so much for all your help Yanming!
  • Hi,Yanming:
    If you wants to use FWC algorithm in motorWare, you have to set the VsRef<0.5 to enable a delta between VsRef and Vs to implement FWC.
    As you sad,is there any reference about the VsRef ?why VsRef <0.5?how to calculate the VsRef?
  • Hi,Luo yanming:
    You can set USER_MAX_VS_MAG_PU to other value which is less than 0.5.
    In my motorware. the user.h define the USER_MAX_VS_MAG_PU to 1.0. not 0.6666 ,not 0.5.
    In the main.h set gMotorVars.VsRef to _IQ(0.9 * USER_MAX_VS_MAG_PU). now I want to use FW control.which one should I change?change USER_MAX_VS_MAG_PU?or change gMotorVars.VsRef ?

    Below is motorware user.h code:
    //! \brief Set USER_MAX_VS_MAG = 1.0 for a pure sinewave with a peak at SQRT(3)/2 = 86.6% duty cycle. No current reconstruction is needed for this scenario.
    //! \brief Set USER_MAX_VS_MAG = 2/SQRT(3) = 1.1547 for a pure sinewave with a peak at 100% duty cycle. Current reconstruction will be needed for this scenario (Lab10a-x).
    //! \brief Set USER_MAX_VS_MAG = 4/3 = 1.3333 to create a trapezoidal voltage waveform. Current reconstruction will be needed for this scenario (Lab10a-x).
    //! \brief For space vector over-modulation, see lab 10 for details on system requirements that will allow the SVM generator to go all the way to trapezoidal.
    #define USER_MAX_VS_MAG_PU (1.0) // Set to 1.0 if a current reconstruction technique is not used. Look at the module svgen_current in lab10a-x for more info.
  • Your setting is correct for your motorware is a old version which pwm mode is different than the latest motorware version. You need to set the VsRef is less than USER_MAX_VS_MAG_PU if you want to use FWC.