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.

Position Control Loop Oscillation Issue

We are working on a rapid prototype of electric actuator project. We followed TI's theory and samples to implement the FOC, SVPWM, and serial form of PID algorithms that drive a PMSM. The current control loop and velocity control loop work well, however, the position controller does not, actuator position oscillates significantly. What is unusual in this project is that we don't have LVDT transducer to measure actuator position, we compute actuator position based on resolver position with gear ratio. I wonder if this computed linear position causes the oscillation of position control loop. Is there anyone who had the experience in this approach? Your comments are greatly appreciated!

  • Hi Louis,

    Thank you for posting to the E2E forum.

    Are you using a TI motor driver part in your design?

  • Hi Pablo,

    Yes, we use TI's F28069 MCU but we don't use the ROM-based InstaSPIN library. We developed our own software following TI's theory and app notes.

    Thanks,

    Louis

  • Louis,

    But how is the PMSM being driven? are you using a motor driver or some other discrete solution for that?

  • We designed our own gate drive and power board using discrete MOSFET devices to drive the PMSM. The hardware works fine, the issue exists in the software or the position feedback approach.

    Thanks,

    Louis

  • Louis,

    Got it.

    I am personally not familiar with the F28069 MCU. I'm going to re-assign this thread to the C2000 team who will be more experienced to help you.

  • Louis,

    You mentioned that you are using position feedback from a resolver to close the position loop. I have some questions for you:

    1. Is there a physical resolver installed on the motor shaft (same motor you are trying to control)?
    2. What mechanism are you using to do resolver to digital conversion (RDC)?
    3. Sounds like the linear position is what you really trying to control and you do not have a direct sensor on that. How is the linear position being calculated? Is that just a linear relationship with the motor rotational position?

    Best regards,

    Han Zhang

  • Hi Han,

    Thank you for your support!

    1. Yes, the resolver is physically installed with the motor through a pair of gear.

    2. Yes, we use RDC to get motor position and velocity.

    3. We perform a homing calibration after powerup, then set the home location as the actuator position origin. Then the actuator linear position is calculated by the delta change of resolver position (radians) and resolver-to-actuator gear ratio. The calculation is updated in the current control loop every 50 us. The position control loop runs in 400 us interval, which reads the position command and feedback (the computed linear position) and passes them to a PI controller.

    If you have any other questions, please let me know.

    Thank you very much!

    Louis

  • Louis,

    What type of RDC chip are you using? What interface you reading the result from the RDC chip? What is the reading frequency from RDC and how frequent does the RDC update its result? What is the frequency of position loop update? Are these timings somewhat synchronous?

    One other question: are you closing the position loop with current loop as inner loop and Iq/torque as control signal? Then please be aware that position to torque is a second order system and normally requires a controller like PID to regulate.

    Regards,

    Han

  • Han,

    The RDC chip is AD2S1210 with SPI interface, it is read in the inner most current control loop at 20 kHz frequency, velocity control loop is run at 10 kHz frequency, and the position control loop is run at 2.5 kHz. The three control loops are based on one timer, so they are synchronized.

    Yes, the position control loop output serves the velocity command, the velocity control loop output serves the Iq command. Each control loop runs a common PI controller with their respective gains and limits. The common PID is in serial form with anti-windup term.

    Thanks,

    Louis

  • We found that the root cause was due to the sign in the velocity command from the position control loop, i.e., the position and velocity were out of phase. After changing the sign of velocity command, the position control loop runs stably. 

    Thanks,

    Louis