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.

TMS320F28379D: Field weekening implementation in dual axis drive

Part Number: TMS320F28379D

Hi 

Is field weekening implemented in the sensors dual axis drive project?

We would like to implement wild weekening in the speedloop is that's possible.

In spraco3 I see you have it present, but i don't see the logic in the project source:

Thanks!

  • Hello,

    Due to US holiday, please expect a response by 20th February.

    Thanks & Regards,

    Sinchita

  • Is field weekening implemented in the sensors dual axis drive project?

    Yes. You can implement the FW in the sensors dual axis drive project. You may refer to the description in the documentation below.

    Universal Project and Lab User’s Guide: https://www.ti.com/lit/spruj26

  • Thanks yanming i will have a look and get back to you for any clarifications

  • Hi Yanming, i had a look at the universal lab project and made a very basic field weakening controller, which i plan to add it to the speed loop.

    Could you have a look at it and let me know if i'm on the right track..

    float32_t runFWC(float32_t mechTheta, float32_t speedRef)
    {
        //speedRef is the normalized speed reference.
        //mechTheta is the normalized mechanical angle got from the encoder.
    
        float32_t idRef = 0.0f;
        float32_t angle_rad = 2 * PI * mechTheta;
        float32_t cos_theta = __cospuf32(angle_rad);
        float32_t sin_theta = __sinpuf32(angle_rad);
    
        if (fabs(speedRef) > 1.0f) // Apply field weakening only if the speed reference is greater than base speed
        {
            // Field Weakening Control Logic
            // Adjust idRef based on mechTheta and speedRef
            if (speedRef > 0.0f)
            {
                // Clockwise rotation
                idRef = -speedRef * cos_theta; // Adjust idRef based on speedRef and cosine of angle
            }
            else if (speedRef < 0.0f)
            {
                // Anti-clockwise rotation
                idRef = -speedRef * sin_theta; // Adjust idRef based on speedRef and sine of angle
            }
        }
    
        return idRef;
    }

  • Not correct. This angle is not the electrical or mechanical angle of the rotor, it's the current vector angle.

  • Thanks for the clarification , How is the current vector calculated?, Correct me if i'm wrong but is this how we calculate the current vector angle:

    1. Run the clarke (a,b, c to I-alpha. I-beta)

    2.Run the park transformations using I-alpha. I-beta and rotor angle to get Id and Iq.

    3. Calculating atan() if id and iq give the vector angle?

    I was looking at the dual axis  FOC block diagram: What is OmegaR (Wr) ? is this the speed feedback? I notice the same is going into the field weakening block. So the inputs for the wield weakening block are the speed reference and speed feedback and the output is the Id current. I am trying to establish a basic skeliton of the fieldweakening function.

  • To be simplify, you may inject a constant negative current d-axis according to the dc-bus voltage and required speed.

    Or you can refer to the Universal Motor Control Lab to calculate the angle of the current vector for field weakening control.